@@ -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