Browse Source

Some helper methods to distinguish ffi implementations from dart only implementations,etc.

master
Herbert Poul 4 years ago
parent
commit
c7368d185b
  1. 5
      CHANGELOG.md
  2. 9
      lib/src/argon2_ffi_base.dart
  3. 7
      lib/src/argon2_ffi_impl.dart
  4. 7
      lib/src/argon2_ffi_noop.dart
  5. 6
      pubspec.lock
  6. 10
      pubspec.yaml

5
CHANGELOG.md

@ -1,3 +1,8 @@
## 1.1.0
* Some helper methods to distinguish ffi implementations from dart only
implementations,etc.
## 1.0.0
* Nullsafety migration

9
lib/src/argon2_ffi_base.dart

@ -3,10 +3,19 @@ import 'dart:typed_data';
typedef ResolveLibrary = String Function(String baseName);
abstract class Argon2 {
const Argon2();
/// forces loading of dynamic library on MacOS instead of assuming
/// argon2 was statically linked. (ie. flutter usage, vs dart usage)
static bool resolveLibraryForceDynamic = false;
/// flag whether it is a native (ffi) implementation, or dart.
bool get isFfi;
/// whether this is actually implemented or throws [UnimplementedError]
/// (Currently on web platform).
bool get isImplemented;
Uint8List argon2(Argon2Arguments args);
Future<Uint8List> argon2Async(Argon2Arguments args);

7
lib/src/argon2_ffi_impl.dart

@ -40,9 +40,16 @@ typedef Argon2Hash = Pointer<Utf8> Function(
);
abstract class Argon2Base extends Argon2 {
const Argon2Base();
// @protected
Argon2Hash get argon2hash;
@override
bool get isFfi => true;
@override
bool get isImplemented => true;
@override
Uint8List argon2(Argon2Arguments args) {
final keyPtr = Uint8ArrayUtils.toPointer(args.key);

7
lib/src/argon2_ffi_noop.dart

@ -6,7 +6,12 @@ import 'package:argon2_ffi_base/src/argon2_ffi_base.dart';
/// from `argon2_ffi_impl.dart` is used.
class Argon2FfiFlutter extends Argon2 {
// ignore: avoid_unused_constructor_parameters
Argon2FfiFlutter({ResolveLibrary? resolveLibrary});
const Argon2FfiFlutter({ResolveLibrary? resolveLibrary});
@override
bool get isFfi => false;
@override
bool get isImplemented => false;
@override
Uint8List argon2(Argon2Arguments args) {

6
pubspec.lock

@ -7,14 +7,14 @@ packages:
name: ffi
url: "https://pub.dartlang.org"
source: hosted
version: "1.0.0"
version: "1.1.2"
logging:
dependency: "direct main"
description:
name: logging
url: "https://pub.dartlang.org"
source: hosted
version: "1.0.0"
version: "1.0.1"
path:
dependency: "direct main"
description:
@ -28,6 +28,6 @@ packages:
name: pedantic
url: "https://pub.dartlang.org"
source: hosted
version: "1.11.0"
version: "1.11.1"
sdks:
dart: ">=2.12.0 <3.0.0"

10
pubspec.yaml

@ -1,15 +1,15 @@
name: argon2_ffi_base
description: Base package defining the interface for an Argon2 implementation.
version: 1.0.0
version: 1.1.0
homepage: https://github.com/authpass/argon2_ffi_base
environment:
sdk: '>=2.12.0 <3.0.0'
dependencies:
ffi: ^1.0.0
logging: ^1.0.0
path: ^1.8.0
ffi: ">=1.0.0 <2.0.0"
logging: ">=1.0.0 <2.0.0"
path: ">=1.8.0 <2.0.0"
dev_dependencies:
pedantic: ^1.11.0
pedantic: ">=1.11.0 <2.0.0"

Loading…
Cancel
Save