14
14
* limitations under the License.
15
15
*/
16
16
17
- import { expect } from 'chai' ;
18
- import { PublicAccount } from '../../../src/model/account/PublicAccount' ;
19
- import { NetworkType } from '../../../src/model/blockchain/NetworkType' ;
17
+ import { expect } from 'chai' ;
18
+ import { PublicAccount } from '../../../src/model/account/PublicAccount' ;
19
+ import { NetworkType } from '../../../src/model/blockchain/NetworkType' ;
20
20
21
21
describe ( 'PublicAccount' , ( ) => {
22
22
const publicKey = 'b4f12e7c9f6946091e2cb8b6d3a12b50d17ccbbf646386ea27ce2946a7423dcf' ;
@@ -27,3 +27,73 @@ describe('PublicAccount', () => {
27
27
expect ( publicAccount . address . plain ( ) ) . to . be . equal ( 'SARNASAS2BIAB6LMFA3FPMGBPGIJGK6IJETM3ZSP' ) ;
28
28
} ) ;
29
29
} ) ;
30
+
31
+ describe ( 'Signature verification' , ( ) => {
32
+ it ( 'Can verify a signature' , ( ) => {
33
+ // Arrange:'
34
+ const signerPublicAccount = PublicAccount . createFromPublicKey (
35
+ '1464953393CE96A08ABA6184601FD08864E910696B060FF7064474726E666CA8' ,
36
+ NetworkType . MIJIN_TEST ) ;
37
+ const data = 'I am so so so awesome as always' ;
38
+ const signature = '2092660F5BD4AE832B2E290F34A76B41506EE473B02FD7FD468B32C80C945CF60A0D60D005FA9B2DB3AD3212F8028C1449D3DCF81C9FAB3EB4975A7409D8D802' ; // tslint:disable-line
39
+
40
+ // Act & Assert:
41
+ expect ( signerPublicAccount . verifySignature ( data , signature ) ) . to . be . true ;
42
+ } ) ;
43
+
44
+ it ( 'Throw error if signature has invalid length' , ( ) => {
45
+ // Arrange:
46
+ const signerPublicAccount = PublicAccount . createFromPublicKey ( '22816F825B4CACEA334723D51297D8582332D8B875A5829908AAE85831ABB508' ,
47
+ NetworkType . MIJIN_TEST ) ;
48
+ const data = 'I am so so so awesome as always' ;
49
+ const signature = 'B01DCA6484026C2ECDF3C822E64DEAAFC15EBCCE337EEE209C28513CB5351CDED8863A8E7B855CD471B55C91FAE611C5486' ; // tslint:disable-line
50
+
51
+ // Act & Assert:
52
+ expect ( ( ) => { signerPublicAccount . verifySignature ( data , signature ) ; } ) . to . throw ( 'Signature length is incorrect' ) ;
53
+ } ) ;
54
+
55
+ it ( 'Throw error if signature is not strictly hexadecimal' , ( ) => {
56
+ // Arrange:
57
+ const signerPublicAccount = PublicAccount . createFromPublicKey ( '22816F825B4CACEA334723D51297D8582332D8B875A5829908AAE85831ABB508' ,
58
+ NetworkType . MIJIN_TEST ) ;
59
+ const data = 'I am so so so awesome as always' ;
60
+ const signature = 'B01DCA6484026C2ECDF3C822E64DEAAFC15EBCCE337EEE209C28513CB5351CDED8863A8E7B855CD471B55C91FAE611C548625C9A5916A555A24F72F35a1wwwww' ; // tslint:disable-line
61
+
62
+ // Act & Assert:
63
+ expect ( ( ) => { signerPublicAccount . verifySignature ( data , signature ) ; } )
64
+ . to . throw ( 'Signature must be hexadecimal only' ) ;
65
+ } ) ;
66
+
67
+ it ( 'Return false if wrong public key provided' , ( ) => {
68
+ // Arrange:
69
+ const signerPublicAccount = PublicAccount . createFromPublicKey ( '12816F825B4CACEA334723D51297D8582332D8B875A5829908AAE85831ABB509' ,
70
+ NetworkType . MIJIN_TEST ) ;
71
+ const data = 'I am so so so awesome as always' ;
72
+ const signature = 'B01DCA6484026C2ECDF3C822E64DEAAFC15EBCCE337EEE209C28513CB5351CDED8863A8E7B855CD471B55C91FAE611C548625C9A5916A555A24F72F3526FA508' ; // tslint:disable-line
73
+
74
+ // Act & Assert:
75
+ expect ( signerPublicAccount . verifySignature ( data , signature ) ) . to . be . false ;
76
+ } ) ;
77
+
78
+ it ( 'Return false if data is not corresponding to signature provided' , ( ) => {
79
+ // Arrange:
80
+ const signerPublicAccount = PublicAccount . createFromPublicKey ( '22816F825B4CACEA334723D51297D8582332D8B875A5829908AAE85831ABB508' ,
81
+ NetworkType . MIJIN_TEST ) ;
82
+ const data = 'I am awesome as always' ;
83
+ const signature = 'B01DCA6484026C2ECDF3C822E64DEAAFC15EBCCE337EEE209C28513CB5351CDED8863A8E7B855CD471B55C91FAE611C548625C9A5916A555A24F72F3526FA508' ; // tslint:disable-line
84
+
85
+ // Act & Assert:
86
+ expect ( signerPublicAccount . verifySignature ( data , signature ) ) . to . be . false ;
87
+ } ) ;
88
+
89
+ it ( 'Return false if signature is not corresponding to data provided' , ( ) => {
90
+ // Arrange:
91
+ const signerPublicAccount = PublicAccount . createFromPublicKey ( '22816F825B4CACEA334723D51297D8582332D8B875A5829908AAE85831ABB508' ,
92
+ NetworkType . MIJIN_TEST ) ;
93
+ const data = 'I am so so so awesome as always' ;
94
+ const signature = 'A01DCA6484026C2ECDF3C822E64DEAAFC15EBCCE337EEE209C28513CB5351CDED8863A8E7B855CD471B55C91FAE611C548625C9A5916A555A24F72F3526FA509' ; // tslint:disable-line
95
+
96
+ // Act & Assert:
97
+ expect ( signerPublicAccount . verifySignature ( data , signature ) ) . to . be . false ;
98
+ } ) ;
99
+ } ) ;
0 commit comments