twonly-app-dependencies/hashlib/test/compare/compare_blake2b512_test.dart
2026-02-07 23:12:41 +01:00

109 lines
3.3 KiB
Dart

// Copyright (c) 2023, Sudipto Chandra
// All rights reserved. Check LICENSE file for details.
// ignore_for_file: library_annotations
@Tags(['vm-only'])
import 'package:hashlib/codecs.dart';
import 'package:hashlib/hashlib.dart';
import 'package:hashlib/random.dart';
import 'package:pointycastle/digests/blake2b.dart' as pc_blake2b;
import 'package:test/test.dart';
void main() {
group('blake2b512 comparison', () {
test('with pointycastle', () {
for (int i = 0; i < 100; ++i) {
final data = randomBytes(i);
final out1 = blake2b512.convert(data).hex();
final out2 = toHex(
pc_blake2b.Blake2bDigest(digestSize: 64).process(data),
);
expect(out1, equals(out2), reason: 'size: $i');
}
});
test('with pointycastle with key', () {
final key = randomBytes(16);
for (int i = 0; i < 100; ++i) {
final data = randomBytes(i);
final out1 = blake2b512.mac.by(key).convert(data).hex();
final out2 = toHex(
pc_blake2b.Blake2bDigest(digestSize: 64, key: key).process(data),
);
expect(out1, equals(out2), reason: 'size: $i');
}
});
test('with pointycastle with salt', () {
final salt = randomBytes(16);
for (int i = 0; i < 100; ++i) {
final data = randomBytes(i);
final out1 = Blake2b(64, salt: salt).convert(data).hex();
final out2 = toHex(
pc_blake2b.Blake2bDigest(digestSize: 64, salt: salt).process(data),
);
expect(out1, equals(out2), reason: 'size: $i');
}
});
test('with pointycastle with personalization', () {
final personalization = randomBytes(16);
for (int i = 0; i < 100; ++i) {
final data = randomBytes(i);
final out1 = Blake2b(
64,
aad: personalization,
).convert(data).hex();
final out2 = toHex(
pc_blake2b.Blake2bDigest(
digestSize: 64,
personalization: personalization,
).process(data),
);
expect(out1, equals(out2), reason: 'size: $i');
}
});
test('with pointycastle with salt and personalization', () {
final salt = randomBytes(16);
final personalization = randomBytes(16);
for (int i = 0; i < 100; ++i) {
final data = randomBytes(i);
final out1 = Blake2b(
64,
salt: salt,
aad: personalization,
).convert(data).hex();
final out2 = toHex(
pc_blake2b.Blake2bDigest(
digestSize: 64,
salt: salt,
personalization: personalization,
).process(data),
);
expect(out1, equals(out2), reason: 'size: $i');
}
});
test('with pointycastle with key, salt and personalization', () {
final key = randomBytes(16);
final salt = randomBytes(16);
final aad = randomBytes(16);
for (int i = 0; i < 100; ++i) {
final data = randomBytes(i);
final out1 = Blake2b(64).mac.by(key, salt: salt, aad: aad).hex(data);
final out2 = toHex(
pc_blake2b.Blake2bDigest(
digestSize: 64,
key: key,
salt: salt,
personalization: aad,
).process(data),
);
expect(out1, equals(out2), reason: 'size: $i');
}
});
});
}