@@ -3,7 +3,7 @@ const ecc = require('eosjs-ecc');
33
44const { ec } = require ( 'elliptic' ) ;
55
6- const { Signature, PrivateKey, PublicKey } = require ( '../eosjs-key-conversions' ) ;
6+ const { Signature, PrivateKey, PublicKey, sha256 } = require ( '../eosjs-key-conversions' ) ;
77const {
88 JsSignatureProvider,
99} = require ( '../eosjs-jssig' ) ;
@@ -52,23 +52,25 @@ describe('JsSignatureProvider', () => {
5252 const ellipticHashedStringAsBuffer = Buffer . from ( ellipticEc . hash ( ) . update ( dataAsString ) . digest ( ) , 'hex' ) ;
5353 expect ( eccHashedString ) . toEqual ( ellipticHashedStringAsBuffer ) ;
5454
55- const eccSig = ecc . sign ( dataAsString , KPriv ) ;
56- const ellipticSig = KPrivElliptic . sign ( ellipticHashedStringAsBuffer ) ;
55+ const eccSig = ecc . sign ( dataAsString , KPriv , 'utf8' ) ;
56+ const ellipticSig = KPrivElliptic . sign ( ellipticHashedStringAsBuffer , 'utf8' ) ;
5757
58- const eccKPub = ecc . recover ( eccSig , dataAsString ) ;
58+ const eccKPub = ecc . recover ( eccSig , dataAsString , 'utf8' ) ;
5959 const ellipticRecoveredKPub = ellipticEc . recoverPubKey (
6060 ellipticHashedStringAsBuffer ,
6161 ellipticSig ,
62- ellipticSig . recoveryParam
62+ ellipticSig . recoveryParam ,
63+ 'utf8'
6364 ) ;
6465 const ellipticKPub = ellipticEc . keyFromPublic ( ellipticRecoveredKPub ) ;
6566 expect ( PublicKey . fromElliptic ( ellipticKPub , KeyType . k1 ) . toString ( ) ) . toEqual ( k1FormatPublicKeys [ idx ] ) ;
6667
67- const eccValid = ecc . verify ( eccSig , dataAsString , eccKPub ) ;
68+ const eccValid = ecc . verify ( eccSig , dataAsString , eccKPub , 'utf8' ) ;
6869 const ellipticValid = ellipticEc . verify (
6970 ellipticHashedStringAsBuffer ,
7071 ellipticSig ,
71- ellipticEc . keyFromPublic ( ellipticKPub )
72+ ellipticEc . keyFromPublic ( ellipticKPub ) ,
73+ 'utf8'
7274 ) ;
7375 expect ( eccValid ) . toEqual ( true ) ;
7476 expect ( ellipticValid ) . toEqual ( true ) ;
@@ -88,14 +90,15 @@ describe('JsSignatureProvider', () => {
8890 const ellipticHashedStringAsBuffer = Buffer . from ( ellipticEc . hash ( ) . update ( dataAsString ) . digest ( ) , 'hex' ) ;
8991 expect ( eccHashedString ) . toEqual ( ellipticHashedStringAsBuffer ) ;
9092
91- const eccSig = ecc . sign ( dataAsString , KPriv ) ;
93+ const eccSig = ecc . sign ( dataAsString , KPriv , 'utf8' ) ;
9294
9395 const ellipticSig = Signature . fromString ( eccSig ) . toElliptic ( ) ;
94- const recoveredKPub = ecc . recover ( eccSig , dataAsString ) ;
96+ const recoveredKPub = ecc . recover ( eccSig , dataAsString , 'utf8' ) ;
9597 const ellipticRecoveredKPub = ellipticEc . recoverPubKey (
9698 ellipticHashedStringAsBuffer ,
9799 ellipticSig ,
98- ellipticSig . recoveryParam
100+ ellipticSig . recoveryParam ,
101+ 'utf8'
99102 ) ;
100103
101104 const ellipticKPub = ellipticEc . keyFromPublic ( ellipticRecoveredKPub ) ;
@@ -105,7 +108,8 @@ describe('JsSignatureProvider', () => {
105108 const ellipticValid = ellipticEc . verify (
106109 ellipticHashedStringAsBuffer ,
107110 ellipticSig ,
108- ellipticEc . keyFromPublic ( ellipticKPub )
111+ ellipticEc . keyFromPublic ( ellipticKPub ) ,
112+ 'utf8'
109113 ) ;
110114 expect ( ellipticValid ) . toEqual ( true ) ;
111115 }
@@ -122,19 +126,67 @@ describe('JsSignatureProvider', () => {
122126
123127 const ellipticHashedStringAsBuffer = Buffer . from ( ellipticEc . hash ( ) . update ( dataAsString ) . digest ( ) , 'hex' ) ;
124128
125- const ellipticSig = KPrivElliptic . sign ( ellipticHashedStringAsBuffer ) ;
129+ const ellipticSig = KPrivElliptic . sign ( ellipticHashedStringAsBuffer , 'utf8' ) ;
126130 const ellipticSigAsString = Signature . fromElliptic ( ellipticSig , KeyType . k1 ) . toString ( ) ;
127131
128- const recoveredKPub = ecc . recover ( ellipticSigAsString , dataAsString ) ;
132+ const recoveredKPub = ecc . recover ( ellipticSigAsString , dataAsString , 'utf8' ) ;
129133 const ellipticRecoveredKPub = ellipticEc . recoverPubKey (
130134 ellipticHashedStringAsBuffer ,
131135 ellipticSig ,
132- ellipticSig . recoveryParam
136+ ellipticSig . recoveryParam ,
137+ 'utf8'
133138 ) ;
134139 const ellipticKPub = ellipticEc . keyFromPublic ( ellipticRecoveredKPub ) ;
135140 expect ( PublicKey . fromElliptic ( ellipticKPub , KeyType . k1 ) . toString ( ) ) . toEqual ( k1FormatPublicKeys [ idx ] ) ;
136141
137- const eccValid = ecc . verify ( ellipticSigAsString , dataAsString , recoveredKPub ) ;
142+ const eccValid = ecc . verify ( ellipticSigAsString , dataAsString , recoveredKPub , 'utf8' ) ;
143+ expect ( eccValid ) . toEqual ( true ) ;
144+ }
145+ } ) ;
146+
147+ it ( 'ensure eosjs verifies eosjs-ecc\'s Sigs' , ( ) => {
148+ for ( let idx = 0 ; idx < privateKeys . length ; idx ++ ) {
149+ const KPriv = privateKeys [ idx ] ;
150+ const privateKey = PrivateKey . fromString ( KPriv ) ;
151+
152+ const dataAsString = 'some string' ;
153+
154+ const eccHashedString = Buffer . from ( ecc . sha256 ( dataAsString ) , 'hex' ) ;
155+ const eosjsHashedStringAsBuffer = Buffer . from ( sha256 ( dataAsString ) , 'hex' ) ;
156+ expect ( eccHashedString ) . toEqual ( eosjsHashedStringAsBuffer ) ;
157+
158+ const eccSig = ecc . sign ( dataAsString , KPriv , 'utf8' ) ;
159+
160+ const eosjsSig = Signature . fromString ( eccSig ) ;
161+ const recoveredKPub = ecc . recover ( eccSig , dataAsString , 'utf8' ) ;
162+ const eosjsRecoveredKPub = eosjsSig . recover ( dataAsString , true , 'utf8' ) ;
163+
164+ expect ( eosjsRecoveredKPub . toLegacyString ( ) ) . toEqual ( recoveredKPub ) ;
165+ expect ( eosjsRecoveredKPub . toString ( ) ) . toEqual ( k1FormatPublicKeys [ idx ] ) ;
166+
167+ const eosjsValid = eosjsSig . verify ( dataAsString , eosjsRecoveredKPub , true , 'utf8' ) ;
168+ expect ( eosjsValid ) . toEqual ( true ) ;
169+ }
170+ } ) ;
171+
172+ it ( 'ensure ecc verifies eosjs\'s Sigs' , ( ) => {
173+ for ( let idx = 0 ; idx < privateKeys . length ; idx ++ ) {
174+ const KPriv = privateKeys [ idx ] ;
175+ const privateKey = PrivateKey . fromString ( KPriv ) ;
176+
177+ const dataAsString = 'some string' ;
178+
179+ const eosjsHashedStringAsBuffer = Buffer . from ( sha256 ( dataAsString ) , 'hex' ) ;
180+
181+ const eosjsSig = privateKey . sign ( eosjsHashedStringAsBuffer , false , 'utf8' ) ;
182+ const eosjsSigAsString = eosjsSig . toString ( ) ;
183+
184+ const recoveredKPub = ecc . recover ( eosjsSigAsString , dataAsString , 'utf8' ) ;
185+ const eosjsRecoveredKPub = eosjsSig . recover ( dataAsString , true , 'utf8' ) ;
186+ expect ( eosjsRecoveredKPub . toLegacyString ( ) ) . toEqual ( recoveredKPub ) ;
187+ expect ( eosjsRecoveredKPub . toString ( ) ) . toEqual ( k1FormatPublicKeys [ idx ] ) ;
188+
189+ const eccValid = ecc . verify ( eosjsSigAsString , dataAsString , recoveredKPub , 'utf8' ) ;
138190 expect ( eccValid ) . toEqual ( true ) ;
139191 }
140192 } ) ;
0 commit comments