twonly-app-dependencies/x25519/test/curve25519_test.dart
2025-12-07 16:10:41 +01:00

59 lines
1.6 KiB
Dart

import 'dart:typed_data';
import 'package:collection/collection.dart';
import 'package:x25519/x25519.dart';
import 'package:test/test.dart';
import 'package:hex/hex.dart';
import 'vectors_test.dart';
const expectedHex =
'89161fde887b2b53de549af483940106ecc114d6982daa98256de23bdf77661a';
void main() {
test('testX25519Basepoint', () {
var x = List<int>.filled(32, 0);
x[0] = 1;
for (var i = 0; i < 200; i++) {
x = X25519(x, basePoint);
}
assert(HEX.encode(x) == expectedHex);
});
test('testLowOrderPoints', () {
var scalar = List<int>.filled(ScalarSize, 0);
for (var i = 1; i < lowOrderPoints.length; i++) {
try {
var out = X25519(scalar, lowOrderPoints[i]);
fail('$i expect error, got $out');
// ignore: empty_catches
} on ArgumentError {}
}
});
test('testTestVectors', () {
for (var i = 0; i < testVectors.length; i++) {
var item = testVectors[i];
var got = List<int>.filled(ScalarSize, 0);
ScalarMult(got, item.input, item.base);
assert(ListEquality().equals(Uint8List.fromList(got), item.expect));
}
for (var i = 0; i < testVectors.length; i++) {
var item = testVectors[i];
var got = X25519(item.input, item.base);
assert(ListEquality().equals(got, item.expect));
}
});
test('testGenKeyAndX25519', () {
var aliceKeyPair = generateKeyPair();
var bobKeyPair = generateKeyPair();
var aliceSharedKey = X25519(aliceKeyPair.privateKey, bobKeyPair.publicKey);
var bobSharedKey = X25519(bobKeyPair.privateKey, aliceKeyPair.publicKey);
assert(ListEquality().equals(aliceSharedKey, bobSharedKey));
});
}