Herbert Poul
5 years ago
3 changed files with 63 additions and 3 deletions
@ -0,0 +1,50 @@ |
|||||||
|
// ignore_for_file: non_constant_identifier_names |
||||||
|
|
||||||
|
//typedef HashStuff = Pointer<Utf8> Function(Pointer<Utf8> str); |
||||||
|
import 'dart:ffi'; |
||||||
|
import 'dart:io'; |
||||||
|
|
||||||
|
import 'package:ffi/ffi.dart'; |
||||||
|
import 'package:kdbx/kdbx.dart'; |
||||||
|
|
||||||
|
// TODO: This should be somehow combined with the test variant |
||||||
|
// which also loads the requierd dylib/so files. |
||||||
|
|
||||||
|
typedef Argon2HashNative = Pointer<Utf8> Function( |
||||||
|
Pointer<Uint8> key, |
||||||
|
IntPtr keyLen, |
||||||
|
Pointer<Uint8> salt, |
||||||
|
Uint64 saltlen, |
||||||
|
Uint32 m_cost, // memory cost |
||||||
|
Uint32 t_cost, // time cost (number iterations) |
||||||
|
Uint32 parallelism, |
||||||
|
IntPtr hashlen, |
||||||
|
Uint8 type, |
||||||
|
Uint32 version, |
||||||
|
); |
||||||
|
typedef Argon2Hash = Pointer<Utf8> Function( |
||||||
|
Pointer<Uint8> key, |
||||||
|
int keyLen, |
||||||
|
Pointer<Uint8> salt, |
||||||
|
int saltlen, |
||||||
|
int m_cost, // memory cost |
||||||
|
int t_cost, // time cost (number iterations) |
||||||
|
int parallelism, |
||||||
|
int hashlen, |
||||||
|
int type, |
||||||
|
int version, |
||||||
|
); |
||||||
|
|
||||||
|
class Argon2Test extends Argon2Base { |
||||||
|
Argon2Test() { |
||||||
|
final argon2lib = Platform.isMacOS |
||||||
|
? DynamicLibrary.open('libargon2_ffi.dylib') |
||||||
|
: DynamicLibrary.open('./libargon2_ffi.so'); |
||||||
|
argon2hash = argon2lib |
||||||
|
.lookup<NativeFunction<Argon2HashNative>>('hp_argon2_hash') |
||||||
|
.asFunction(); |
||||||
|
} |
||||||
|
|
||||||
|
@override |
||||||
|
Argon2Hash argon2hash; |
||||||
|
} |
Loading…
Reference in new issue