From ba4f8536a507fe76eb49836e3d35940d9673599f Mon Sep 17 00:00:00 2001 From: Herbert Poul Date: Wed, 15 Jul 2020 10:39:39 +0200 Subject: [PATCH] remove dependency on ffi_helper --- CHANGELOG.md | 4 ++++ lib/argon2_ffi_base.dart | 35 +++++++++++++++++++++++++---------- pubspec.lock | 25 ++----------------------- pubspec.yaml | 5 ++--- 4 files changed, 33 insertions(+), 36 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index ecb4816..6dc1f46 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,3 +1,7 @@ +## [0.1.2] + +* Remove dependency on ffi_helper. + ## [0.1.1] * On windows load plugin dll diff --git a/lib/argon2_ffi_base.dart b/lib/argon2_ffi_base.dart index 4f9dd6d..fab79f4 100644 --- a/lib/argon2_ffi_base.dart +++ b/lib/argon2_ffi_base.dart @@ -2,12 +2,10 @@ library argon2_ffi_base; import 'dart:convert'; import 'dart:ffi'; - import 'dart:io'; import 'dart:typed_data'; import 'package:ffi/ffi.dart'; -import 'package:ffi_helper/ffi_helper.dart'; // ignore_for_file: non_constant_identifier_names, @@ -87,8 +85,8 @@ abstract class Argon2Base extends Argon2 { @override Uint8List argon2(Argon2Arguments args) { - final keyArray = Uint8Array.fromTypedList(args.key); - final saltArray = Uint8Array.fromTypedList(args.salt); + final keyPtr = Uint8ArrayUtils.toPointer(args.key); + final saltPtr = Uint8ArrayUtils.toPointer(args.salt); // final saltArray = allocate(count: args.salt.length); // final saltList = saltArray.asTypedList(args.length); // saltList.setAll(0, args.salt); @@ -97,10 +95,10 @@ abstract class Argon2Base extends Argon2 { // _logger.fine('saltArray: ${ByteUtils.toHexList(saltArray.view)}'); final result = argon2hash( - keyArray.rawPtr, - keyArray.length, - saltArray.rawPtr, - saltArray.length, + keyPtr, + args.key.length, + saltPtr, + args.salt.length, args.memory, args.iterations, args.parallelism, @@ -109,8 +107,8 @@ abstract class Argon2Base extends Argon2 { args.version, ); - keyArray.free(); - saltArray.free(); + free(keyPtr); + free(saltPtr); // free(saltArray); final resultString = Utf8.fromUtf8(result); return base64.decode(resultString); @@ -121,3 +119,20 @@ abstract class Argon2Base extends Argon2 { return argon2(args); } } + +// from https://github.com/hanabi1224/flutter_native_extensions/blob/master/src/compression/dart_native_compression/lib/utils/uint8_list_utils.dart +class Uint8ArrayUtils { + static Uint8List fromPointer(Pointer ptr, int length) { + final view = ptr.asTypedList(length); + final builder = BytesBuilder(copy: false); + builder.add(view); + return builder.takeBytes(); + } + + static Pointer toPointer(Uint8List bytes) { + final ptr = allocate(count: bytes.length); + final byteList = ptr.asTypedList(bytes.length); + byteList.setAll(0, bytes); + return ptr.cast(); + } +} diff --git a/pubspec.lock b/pubspec.lock index 914432e..9c3716a 100644 --- a/pubspec.lock +++ b/pubspec.lock @@ -1,20 +1,6 @@ # Generated by pub # See https://dart.dev/tools/pub/glossary#lockfile packages: - async: - dependency: transitive - description: - name: async - url: "https://pub.dartlang.org" - source: hosted - version: "2.4.1" - collection: - dependency: transitive - description: - name: collection - url: "https://pub.dartlang.org" - source: hosted - version: "1.14.12" ffi: dependency: "direct main" description: @@ -22,26 +8,19 @@ packages: url: "https://pub.dartlang.org" source: hosted version: "0.1.3" - ffi_helper: - dependency: "direct main" - description: - name: ffi_helper - url: "https://pub.dartlang.org" - source: hosted - version: "1.4.0" meta: dependency: transitive description: name: meta url: "https://pub.dartlang.org" source: hosted - version: "1.1.8" + version: "1.2.2" pedantic: dependency: "direct dev" description: name: pedantic url: "https://pub.dartlang.org" source: hosted - version: "1.9.0" + version: "1.9.2" sdks: dart: ">=2.7.0 <3.0.0" diff --git a/pubspec.yaml b/pubspec.yaml index c0014d9..4687ed8 100644 --- a/pubspec.yaml +++ b/pubspec.yaml @@ -1,6 +1,6 @@ name: argon2_ffi_base description: Base package defining the interface for an Argon2 implementation. -version: 0.1.1 +version: 0.1.2 homepage: https://github.com/authpass/argon2_ffi_base environment: @@ -8,7 +8,6 @@ environment: dependencies: ffi: ^0.1.3 - ffi_helper: ^1.4.0 dev_dependencies: - pedantic: ^1.9.0 + pedantic: ^1.9.2