diff --git a/CHANGELOG.md b/CHANGELOG.md index 2ec8c92..4a8c563 100644 --- a/CHANGELOG.md +++ b/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 diff --git a/lib/src/argon2_ffi_base.dart b/lib/src/argon2_ffi_base.dart index abba463..f57ab58 100644 --- a/lib/src/argon2_ffi_base.dart +++ b/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 argon2Async(Argon2Arguments args); diff --git a/lib/src/argon2_ffi_impl.dart b/lib/src/argon2_ffi_impl.dart index 7fe257a..8369d5b 100644 --- a/lib/src/argon2_ffi_impl.dart +++ b/lib/src/argon2_ffi_impl.dart @@ -40,9 +40,16 @@ typedef Argon2Hash = Pointer 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); diff --git a/lib/src/argon2_ffi_noop.dart b/lib/src/argon2_ffi_noop.dart index 4caeee8..ac032b9 100644 --- a/lib/src/argon2_ffi_noop.dart +++ b/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) { diff --git a/pubspec.lock b/pubspec.lock index 429c181..2aacb19 100644 --- a/pubspec.lock +++ b/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" diff --git a/pubspec.yaml b/pubspec.yaml index 96cfd90..68ff2e3 100644 --- a/pubspec.yaml +++ b/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"