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]
* On windows load plugin dll

35
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<Uint8>(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<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
# 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"

5
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

Loading…
Cancel
Save