@@ -29,23 +29,29 @@ function getSequence(api, address) {
2929
3030}
3131
32- function generateToken ( key , secret ) {
33- var secret = secret ;
34- var token ;
35- if ( ! secret ) {
36- secret = cryptoo . randomBytes ( AESKeyLength / 2 ) . toString ( 'hex' ) ;
37- var keypair = keypairs . deriveKeypair ( key ) ;
38- token = crypto . eciesEncrypt ( secret , keypair . publicKey ) ;
39- } else {
40- token = crypto . eciesEncrypt ( secret , key ) ;
41- }
42- return token ;
32+ function generateToken ( key , secretIn ) {
33+ let symKey = secretIn ;
34+ let token ;
35+ const isUserPub = symKey ? true : false ;
36+ symKey = symKey ? symKey : cryptoo . randomBytes ( AESKeyLength / 2 ) . toString ( 'hex' ) ;
37+ if ( key === "gmAlg" || process . env . CRP_ALG === "gmAlg" ) {
38+ token = keypairs . gmAlgSm2Enc ( key , symKey ) ;
39+ } else {
40+ const userPub = isUserPub ? key : keypairs . deriveKeypair ( key ) . publicKey ;
41+ token = crypto . eciesEncrypt ( symKey , userPub ) ;
42+ }
43+ return token ;
4344}
4445
4546function decodeToken ( that , token ) {
46- var keypair = keypairs . deriveKeypair ( that . connect . secret ) ;
47- var secret = crypto . eciesDecrypt ( token , keypair . privateKey ) ;
48- return secret ;
47+ let symKey ;
48+ if ( that . connect . secret === "gmAlg" ) {
49+ symKey = keypairs . gmAlgSm2Dec ( that . connect . secret , token ) ;
50+ } else {
51+ let keypair = keypairs . deriveKeypair ( that . connect . secret ) ;
52+ symKey = crypto . eciesDecrypt ( token , keypair . privateKey ) ;
53+ }
54+ return symKey ;
4955}
5056
5157
@@ -215,12 +221,13 @@ function checkUserMatchPublicKey(user,publicKey){
215221 return true ;
216222 }
217223 var PUBLICKEY_LENGTH = 33 ;
224+ const GM_PUBLICKEY_LENGTH = 65 ;
218225 var ACCOUNT_PUBLIC = 35 ;
219- if ( publicKey . length != 2 * PUBLICKEY_LENGTH ) {
226+ if ( publicKey . length != 2 * PUBLICKEY_LENGTH || publicKey . length != 2 * GM_PUBLICKEY_LENGTH ) {
220227 var decoded = addressCodec . decode ( publicKey , ACCOUNT_PUBLIC ) ;
221- var decodedPublic = decoded . slice ( 1 , 1 + PUBLICKEY_LENGTH ) ;
228+ var decodedPublic = decoded . slice ( 1 , decoded . length - 4 ) ;
222229 publicKey = Bytes2HexString ( decodedPublic ) ;
223- }
230+ }
224231 var address = keypairs . deriveAddress ( publicKey )
225232 return user == address ;
226233}
0 commit comments