Skip to content

Commit

Permalink
tests: add recovery mnemonic tests
Browse files Browse the repository at this point in the history
  • Loading branch information
ethicnology committed Jun 6, 2024
1 parent 16116e3 commit 5d3e401
Showing 1 changed file with 66 additions and 0 deletions.
66 changes: 66 additions & 0 deletions test/slip39_test.dart
Original file line number Diff line number Diff line change
@@ -0,0 +1,66 @@
import 'dart:typed_data';

import 'package:convert/convert.dart';
import 'package:flutter_test/flutter_test.dart';
import 'package:slip39/slip39.dart';

void main() {
testWidgets('Test 2/5 without passphrase', (WidgetTester tester) async {
var scheme = [
for (var i = 0; i < 5; i++) [1, 1]
];
const inputSecret =
'fd43b5abd947c9a8c55416008840537ab40bde5ab6d315fbcad5938302f78ec6';
const threshold = 2;

final created = Slip39.from(
scheme,
masterSecret: Uint8List.fromList(hex.decode(inputSecret)),
passphrase: '',
threshold: threshold,
);

List<String> shares = [];
for (var i = 0; i < created.groupCount; i++) {
shares.addAll(created.fromPath('r/$i').mnemonics);
}

List<int> recovered = Slip39.recoverSecret(
[shares[0], shares[1]],
passphrase: '',
);

final outputSecret = hex.encode(recovered);
expect(inputSecret, outputSecret);
});

testWidgets('Test 3/5 without passphrase', (WidgetTester tester) async {
var scheme = [
for (var i = 0; i < 5; i++) [1, 1]
];
const inputSecret =
'99e0cda36055002ea4c60fcdbbe1d76beff3e7bcb421ab0db0fa1e034385f5c3';
const passphrase = 'azerty';
const threshold = 3;

final created = Slip39.from(
scheme,
masterSecret: Uint8List.fromList(hex.decode(inputSecret)),
passphrase: passphrase,
threshold: threshold,
);

List<String> shares = [];
for (var i = 0; i < created.groupCount; i++) {
shares.addAll(created.fromPath('r/$i').mnemonics);
}

final recovered = Slip39.recoverSecret(
[shares[0], shares[1], shares[4]],
passphrase: passphrase,
);

final outputSecret = hex.encode(recovered);
expect(inputSecret, outputSecret);
});
}

0 comments on commit 5d3e401

Please sign in to comment.