Browse Source

remove dependency on ffi_helper

master
Herbert Poul 5 years ago
parent
commit
ba4f8536a5
  1. 4
      CHANGELOG.md
  2. 35
      lib/argon2_ffi_base.dart
  3. 25
      pubspec.lock
  4. 5
      pubspec.yaml

4
CHANGELOG.md

@ -1,3 +1,7 @@
## [0.1.2]
* Remove dependency on ffi_helper.
## [0.1.1] ## [0.1.1]
* On windows load plugin dll * On windows load plugin dll

35
lib/argon2_ffi_base.dart

@ -2,12 +2,10 @@ library argon2_ffi_base;
import 'dart:convert'; import 'dart:convert';
import 'dart:ffi'; import 'dart:ffi';
import 'dart:io'; import 'dart:io';
import 'dart:typed_data'; import 'dart:typed_data';
import 'package:ffi/ffi.dart'; import 'package:ffi/ffi.dart';
import 'package:ffi_helper/ffi_helper.dart';
// ignore_for_file: non_constant_identifier_names, // ignore_for_file: non_constant_identifier_names,
@ -87,8 +85,8 @@ abstract class Argon2Base extends Argon2 {
@override @override
Uint8List argon2(Argon2Arguments args) { Uint8List argon2(Argon2Arguments args) {
final keyArray = Uint8Array.fromTypedList(args.key); final keyPtr = Uint8ArrayUtils.toPointer(args.key);
final saltArray = Uint8Array.fromTypedList(args.salt); final saltPtr = Uint8ArrayUtils.toPointer(args.salt);
// final saltArray = allocate<Uint8>(count: args.salt.length); // final saltArray = allocate<Uint8>(count: args.salt.length);
// final saltList = saltArray.asTypedList(args.length); // final saltList = saltArray.asTypedList(args.length);
// saltList.setAll(0, args.salt); // saltList.setAll(0, args.salt);
@ -97,10 +95,10 @@ abstract class Argon2Base extends Argon2 {
// _logger.fine('saltArray: ${ByteUtils.toHexList(saltArray.view)}'); // _logger.fine('saltArray: ${ByteUtils.toHexList(saltArray.view)}');
final result = argon2hash( final result = argon2hash(
keyArray.rawPtr, keyPtr,
keyArray.length, args.key.length,
saltArray.rawPtr, saltPtr,
saltArray.length, args.salt.length,
args.memory, args.memory,
args.iterations, args.iterations,
args.parallelism, args.parallelism,
@ -109,8 +107,8 @@ abstract class Argon2Base extends Argon2 {
args.version, args.version,
); );
keyArray.free(); free(keyPtr);
saltArray.free(); free(saltPtr);
// free(saltArray); // free(saltArray);
final resultString = Utf8.fromUtf8(result); final resultString = Utf8.fromUtf8(result);
return base64.decode(resultString); return base64.decode(resultString);
@ -121,3 +119,20 @@ abstract class Argon2Base extends Argon2 {
return argon2(args); 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<Uint8> ptr, int length) {
final view = ptr.asTypedList(length);
final builder = BytesBuilder(copy: false);
builder.add(view);
return builder.takeBytes();
}
static Pointer<Uint8> toPointer(Uint8List bytes) {
final ptr = allocate<Uint8>(count: bytes.length);
final byteList = ptr.asTypedList(bytes.length);
byteList.setAll(0, bytes);
return ptr.cast();
}
}

25
pubspec.lock

@ -1,20 +1,6 @@
# Generated by pub # Generated by pub
# See https://dart.dev/tools/pub/glossary#lockfile # See https://dart.dev/tools/pub/glossary#lockfile
packages: 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: ffi:
dependency: "direct main" dependency: "direct main"
description: description:
@ -22,26 +8,19 @@ packages:
url: "https://pub.dartlang.org" url: "https://pub.dartlang.org"
source: hosted source: hosted
version: "0.1.3" 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: meta:
dependency: transitive dependency: transitive
description: description:
name: meta name: meta
url: "https://pub.dartlang.org" url: "https://pub.dartlang.org"
source: hosted source: hosted
version: "1.1.8" version: "1.2.2"
pedantic: pedantic:
dependency: "direct dev" dependency: "direct dev"
description: description:
name: pedantic name: pedantic
url: "https://pub.dartlang.org" url: "https://pub.dartlang.org"
source: hosted source: hosted
version: "1.9.0" version: "1.9.2"
sdks: sdks:
dart: ">=2.7.0 <3.0.0" dart: ">=2.7.0 <3.0.0"

5
pubspec.yaml

@ -1,6 +1,6 @@
name: argon2_ffi_base name: argon2_ffi_base
description: Base package defining the interface for an Argon2 implementation. 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 homepage: https://github.com/authpass/argon2_ffi_base
environment: environment:
@ -8,7 +8,6 @@ environment:
dependencies: dependencies:
ffi: ^0.1.3 ffi: ^0.1.3
ffi_helper: ^1.4.0
dev_dependencies: dev_dependencies:
pedantic: ^1.9.0 pedantic: ^1.9.2

Loading…
Cancel
Save