From 3d255877561e30b5054057021047c74b458cc003 Mon Sep 17 00:00:00 2001 From: Richard Burkhardt Date: Tue, 27 Feb 2024 12:29:59 +0100 Subject: [PATCH 1/2] remove old js package and use js_interop instead --- lib/src/platform_check/node_crypto.dart | 13 +++++++++---- lib/src/platform_check/web.dart | 5 ++--- 2 files changed, 11 insertions(+), 7 deletions(-) diff --git a/lib/src/platform_check/node_crypto.dart b/lib/src/platform_check/node_crypto.dart index 36f6a377..b4e9bd57 100644 --- a/lib/src/platform_check/node_crypto.dart +++ b/lib/src/platform_check/node_crypto.dart @@ -1,12 +1,17 @@ /// Wrapper for needed NodeJS Crypto library function and require. -@JS() library nodecryto; -import 'package:js/js.dart'; +import 'dart:js_interop'; +import 'dart:js_interop_unsafe'; -external dynamic require(String id); +@JS() +external JSObject require(String id); @JS() +@staticInterop class NodeCrypto { - external randomFillSync(buf); + static JSAny randomFillSync(JSAny buf) { + final crypto = require('crypto'); + return crypto.callMethod('randomFillSync'.toJS, [buf].toJS); + } } diff --git a/lib/src/platform_check/web.dart b/lib/src/platform_check/web.dart index 3ce9e6c4..4e49c2af 100644 --- a/lib/src/platform_check/web.dart +++ b/lib/src/platform_check/web.dart @@ -1,8 +1,8 @@ @JS() +import 'dart:js_interop'; import 'dart:math'; import 'dart:typed_data'; -import 'package:js/js.dart'; import 'package:pointycastle/src/impl/entropy.dart'; import 'node_crypto.dart'; @@ -56,9 +56,8 @@ class _JsBuiltInEntropySource implements EntropySource { class _JsNodeEntropySource implements EntropySource { @override Uint8List getBytes(int len) { - final j = require('crypto') as NodeCrypto; var list = Uint8List(len); - j.randomFillSync(list); + NodeCrypto.randomFillSync(list.toJS); return list; } } From db6872721df67bf0bdb00c93cae0bf490ff0d0fc Mon Sep 17 00:00:00 2001 From: Richard Burkhardt Date: Tue, 19 Mar 2024 12:06:45 +0100 Subject: [PATCH 2/2] fix wrong conversion --- lib/src/platform_check/node_crypto.dart | 2 +- lib/src/platform_check/web.dart | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/lib/src/platform_check/node_crypto.dart b/lib/src/platform_check/node_crypto.dart index b4e9bd57..5f798a87 100644 --- a/lib/src/platform_check/node_crypto.dart +++ b/lib/src/platform_check/node_crypto.dart @@ -12,6 +12,6 @@ external JSObject require(String id); class NodeCrypto { static JSAny randomFillSync(JSAny buf) { final crypto = require('crypto'); - return crypto.callMethod('randomFillSync'.toJS, [buf].toJS); + return crypto.callMethod('randomFillSync'.toJS, buf); } } diff --git a/lib/src/platform_check/web.dart b/lib/src/platform_check/web.dart index 4e49c2af..59ef673f 100644 --- a/lib/src/platform_check/web.dart +++ b/lib/src/platform_check/web.dart @@ -57,7 +57,7 @@ class _JsNodeEntropySource implements EntropySource { @override Uint8List getBytes(int len) { var list = Uint8List(len); - NodeCrypto.randomFillSync(list.toJS); + NodeCrypto.randomFillSync(list.buffer.toJS); return list; } }