Skip to content

Commit 075ca67

Browse files
committed
Added more test vector unit tests
1 parent 815a9ef commit 075ca67

File tree

1 file changed

+59
-0
lines changed

1 file changed

+59
-0
lines changed

test/core/crypto/keyPair.spec.ts

Lines changed: 59 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -198,6 +198,65 @@ describe('key pair', () => {
198198
});
199199
});
200200

201+
/**
202+
* @see https://raw.githubusercontent.com/nemtech/test-vectors/master/1.test-keys-catapult.json
203+
*/
204+
describe('Catapult test vector - SHA3', () => {
205+
it('can extract from private key test vectors', () => {
206+
// Arrange:
207+
const Private_Key = [
208+
'575dbb3062267eff57c970a336ebbc8fbcfe12c5bd3ed7bc11eb0481d7704ced',
209+
'5b0e3fa5d3b49a79022d7c1e121ba1cbbf4db5821f47ab8c708ef88defc29bfe',
210+
'738ba9bb9110aea8f15caa353aca5653b4bdfca1db9f34d0efed2ce1325aeeda',
211+
'e8bf9bc0f35c12d8c8bf94dd3a8b5b4034f1063948e3cc5304e55e31aa4b95a6',
212+
'c325ea529674396db5675939e7988883d59a5fc17a28ca977e3ba85370232a83',
213+
];
214+
215+
const Expected_Public_Keys = [
216+
'BD8D3F8B7E1B3839C650F458234AB1FF87CDB1EDA36338D9E446E27D454717F2',
217+
'26821636A618FD524A3AB57276EFC36CAF787DF19EE00F60035CE376A18E8C47',
218+
'DFC7F40FC549AC8BB2EF097600103FF457A1D7DC5755D434474761459B030E6F',
219+
'96C7AB358EBB91104322C56435642BD939A77432286B229372987FC366EA319F',
220+
'9488CFB5D7D439213B11FA80C1B57E8A7AB7E41B64CBA18A89180D412C04915C',
221+
];
222+
223+
// Sanity:
224+
expect(Private_Key.length).equal(Expected_Public_Keys.length);
225+
226+
for (let i = 0; i < Private_Key.length; ++i) {
227+
// Arrange:
228+
const privateKeyHex = Private_Key[i];
229+
const expectedPublicKey = Expected_Public_Keys[i];
230+
231+
// Act:
232+
const keyPair = KeyPair.createKeyPairFromPrivateKeyString(privateKeyHex);
233+
234+
// Assert:
235+
const message = ` from ${privateKeyHex}`;
236+
expect(convert.uint8ToHex(keyPair.publicKey).toUpperCase(), `public ${message}`).equal(expectedPublicKey.toUpperCase());
237+
expect(convert.uint8ToHex(keyPair.privateKey).toUpperCase(), `private ${message}`).equal(privateKeyHex.toUpperCase());
238+
}
239+
});
240+
241+
it('cannot extract from invalid private key', () => {
242+
// Arrange:
243+
const invalidPrivateKeys = [
244+
'', // empty
245+
'53C659B47C176A70EB228DE5C0A0FF391282C96640C2A42CD5BBD0982176AB', // short
246+
'53C659B47C176A70EB228DE5C0A0FF391282C96640C2A42CD5BBD0982176AB1BBB', // long
247+
];
248+
249+
// Act:
250+
invalidPrivateKeys.forEach((privateKey) => {
251+
// Assert:
252+
expect(() => {
253+
KeyPair.createKeyPairFromPrivateKeyString(privateKey);
254+
}, `from ${privateKey}`)
255+
.to.throw('private key has unexpected size');
256+
});
257+
});
258+
});
259+
201260
describe('sign & verify- Test Vector', () => {
202261
/**
203262
* @see https://raw.githubusercontent.com/nemtech/test-vectors/master/2.test-sign-nis1.json

0 commit comments

Comments
 (0)