@@ -16,7 +16,7 @@ describe('dappauth', function() {
1616 isEOA : true ,
1717 challenge : 'foo' ,
1818 challengeSign : 'foo' ,
19- signingKey : keyA ,
19+ signingKeys : [ keyA ] ,
2020 authAddr : utils . keyToAddress ( keyA ) ,
2121 mockContract : {
2222 authorizedKey : null ,
@@ -33,7 +33,7 @@ describe('dappauth', function() {
3333 isEOA : true ,
3434 challenge : 'foo' ,
3535 challengeSign : 'bar' ,
36- signingKey : keyA ,
36+ signingKeys : [ keyA ] ,
3737 authAddr : utils . keyToAddress ( keyA ) ,
3838 mockContract : {
3939 authorizedKey : ethUtil . privateToPublic ( keyC ) ,
@@ -49,7 +49,7 @@ describe('dappauth', function() {
4949 isEOA : true ,
5050 challenge : 'foo' ,
5151 challengeSign : 'foo' ,
52- signingKey : keyA ,
52+ signingKeys : [ keyA ] ,
5353 authAddr : utils . keyToAddress ( keyB ) ,
5454 mockContract : {
5555 authorizedKey : ethUtil . privateToPublic ( keyC ) ,
@@ -65,7 +65,7 @@ describe('dappauth', function() {
6565 isEOA : false ,
6666 challenge : 'foo' ,
6767 challengeSign : 'foo' ,
68- signingKey : keyB ,
68+ signingKeys : [ keyB ] ,
6969 authAddr : utils . keyToAddress ( keyA ) ,
7070 mockContract : {
7171 authorizedKey : ethUtil . privateToPublic ( keyB ) ,
@@ -75,13 +75,30 @@ describe('dappauth', function() {
7575 expectedAuthorizedSignerError : false ,
7676 expectedAuthorizedSigner : true ,
7777 } ,
78+ {
79+ title :
80+ 'Smart-contract wallets with a 1-of-2 (multi-sig) correct internal key should be authorized signers over their address' ,
81+ isEOA : false ,
82+ challenge : 'foo' ,
83+ challengeSign : 'foo' ,
84+ signingKeys : [ keyB , keyC ] ,
85+ authAddr : utils . keyToAddress ( keyA ) ,
86+ mockContract : {
87+ authorizedKey : ethUtil . privateToPublic ( keyB ) ,
88+ address : utils . keyToAddress ( keyA ) ,
89+ errorIsValidSignature : false ,
90+ } ,
91+ expectedAuthorizedSignerError : false ,
92+ expectedAuthorizedSigner : true ,
93+ } ,
94+
7895 {
7996 title :
8097 'Smart-contract wallets with a 1-of-1 incorrect internal key should NOT be authorized signers over their address' ,
8198 isEOA : false ,
8299 challenge : 'foo' ,
83100 challengeSign : 'foo' ,
84- signingKey : keyB ,
101+ signingKeys : [ keyB ] ,
85102 authAddr : utils . keyToAddress ( keyA ) ,
86103 mockContract : {
87104 authorizedKey : ethUtil . privateToPublic ( keyC ) ,
@@ -96,7 +113,7 @@ describe('dappauth', function() {
96113 isEOA : false ,
97114 challenge : 'foo' ,
98115 challengeSign : 'foo' ,
99- signingKey : keyB ,
116+ signingKeys : [ keyB ] ,
100117 authAddr : utils . keyToAddress ( keyA ) ,
101118 mockContract : {
102119 authorizedKey : ethUtil . privateToPublic ( keyB ) ,
@@ -118,18 +135,20 @@ describe('dappauth', function() {
118135 ? utils . signEOAPersonalMessage
119136 : utils . signERC1654PersonalMessage ;
120137
121- const signature = signatureFunc (
122- test . challengeSign ,
123- test . signingKey ,
124- test . authAddr ,
125- ) ;
138+ const signatures = `0x${ test . signingKeys
139+ . map ( ( signingKey ) =>
140+ ethUtil . stripHexPrefix (
141+ signatureFunc ( test . challengeSign , signingKey , test . authAddr ) ,
142+ ) ,
143+ )
144+ . join ( '' ) } `;
126145
127146 let isError = false ;
128147 let isAuthorizedSigner = false ;
129148 try {
130149 isAuthorizedSigner = await dappAuth . isAuthorizedSigner (
131150 test . challenge ,
132- signature ,
151+ signatures ,
133152 test . authAddr ,
134153 ) ;
135154 } catch ( error ) {
0 commit comments