Skip to content

Commit 5943c9d

Browse files
authored
Merge pull request #12 from p3root/fix/bip32-encoding
fix big32 encoding + add unit tests
2 parents 0d05df7 + d6966c0 commit 5943c9d

File tree

2 files changed

+28
-0
lines changed

2 files changed

+28
-0
lines changed

lib/src/utils/ecurve.dart

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -234,6 +234,10 @@ Uint8List _encodeBigInt(BigInt number) {
234234
if (number > BigInt.zero) {
235235
rawSize = (number.bitLength + 7) >> 3;
236236
needsPaddingByte = ((number >> (rawSize - 1) * 8) & negativeFlag) == negativeFlag ? 1 : 0;
237+
238+
if (rawSize < 32) {
239+
needsPaddingByte = 1;
240+
}
237241
} else {
238242
needsPaddingByte = 0;
239243
rawSize = (number.bitLength + 8) >> 3;

test/ecc_test.dart

Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -26,4 +26,28 @@ void main() {
2626
ecc.sign(HEX.decode("b11d3d5e4ae12b89d5e3872ccc7d1f96d29b0ab888b67dccf1be5164b811cdbe"), HEX.decode("55b18e96ce3964ef2c81ad69249eca6d42682c11fbe525df6671fcbf0c2be902"));
2727
});
2828
});
29+
30+
group('Failing ecc test', () {
31+
test('Should fail with the third set of key-msg', () {
32+
var key, msg, sig;
33+
34+
key = 'f92ca9fe5f77afa489214a7ba2bd6b36d30dd4acdb55c70d1378b5c45c831820';
35+
msg = '045a7448dffff67c08023d16279c57c0bd16af6467580c183cc4672e768b8a77';
36+
37+
sig = ecc.sign(HEX.decode(msg), HEX.decode(key));
38+
print(HEX.encode(sig));
39+
40+
key = '8c39fb3d889b6be22850254dc7ce3247c559d9f968785d88251ee4457633e335';
41+
msg = '6ad99bc30926fd79cf5a977044088fd298a59728c5b0c1040713d3a8e1c1e69b';
42+
43+
sig = ecc.sign(HEX.decode(msg), HEX.decode(key));
44+
print(HEX.encode(sig));
45+
46+
key = '2de619ea940d31927e0a7bbd5ebf855ab66f488b94a65cf929a1eb70b54ec771';
47+
msg = 'd82a6db2583353856dd4dadc38cdb6373b092ea1f026fa04f03aa3c4e972454f';
48+
49+
sig = ecc.sign(HEX.decode(msg), HEX.decode(key));
50+
print(HEX.encode(sig));
51+
});
52+
});
2953
}

0 commit comments

Comments
 (0)