@@ -18,6 +18,7 @@ import { WalletAlgorithm } from '../../model/wallet/WalletAlgorithm';
18
18
import { Convert as convert } from '../format/Convert' ;
19
19
import { KeyPair } from './KeyPair' ;
20
20
import * as utility from './Utilities' ;
21
+ import { SignSchema } from './SignSchema' ;
21
22
const CryptoJS = require ( 'crypto-js' ) ;
22
23
export class Crypto {
23
24
/**
@@ -218,16 +219,16 @@ export class Crypto {
218
219
* @param {string } msg - A text message
219
220
* @param {Uint8Array } iv - An initialization vector
220
221
* @param {Uint8Array } salt - A salt
221
- *
222
+ * @param { SignSchema } signSchema The Sign Schema. (KECCAK_REVERSED_KEY / SHA3)
222
223
* @return {string } - The encoded message
223
224
*/
224
- public static _encode = function ( senderPriv , recipientPub , msg , iv , salt ) {
225
+ public static _encode = ( senderPriv , recipientPub , msg , iv , salt , signSchema : SignSchema = SignSchema . SHA3 ) => {
225
226
// Errors
226
227
if ( ! senderPriv || ! recipientPub || ! msg || ! iv || ! salt ) { throw new Error ( 'Missing argument !' ) ; }
227
228
// Processing
228
- const keyPair = KeyPair . createKeyPairFromPrivateKeyString ( senderPriv ) ;
229
+ const keyPair = KeyPair . createKeyPairFromPrivateKeyString ( senderPriv , signSchema ) ;
229
230
const pk = convert . hexToUint8 ( recipientPub ) ;
230
- const encKey = utility . ua2words ( KeyPair . deriveSharedKey ( keyPair , pk , salt ) , 32 ) ;
231
+ const encKey = utility . ua2words ( KeyPair . deriveSharedKey ( keyPair , pk , salt , signSchema ) , 32 ) ;
231
232
const encIv = {
232
233
iv : utility . ua2words ( iv , 16 ) ,
233
234
} ;
@@ -243,16 +244,16 @@ export class Crypto {
243
244
* @param {string } senderPriv - A sender private key
244
245
* @param {string } recipientPub - A recipient public key
245
246
* @param {string } msg - A text message
246
- *
247
+ * @param { SignSchema } signSchema The Sign Schema. (KECCAK_REVERSED_KEY / SHA3)
247
248
* @return {string } - The encoded message
248
249
*/
249
- public static encode = ( senderPriv , recipientPub , msg ) => {
250
+ public static encode = ( senderPriv , recipientPub , msg , signSchema : SignSchema = SignSchema . SHA3 ) => {
250
251
// Errors
251
252
if ( ! senderPriv || ! recipientPub || ! msg ) { throw new Error ( 'Missing argument !' ) ; }
252
253
// Processing
253
254
const iv = Crypto . randomBytes ( 16 ) ;
254
255
const salt = Crypto . randomBytes ( 32 ) ;
255
- const encoded = Crypto . _encode ( senderPriv , recipientPub , msg , iv , salt ) ;
256
+ const encoded = Crypto . _encode ( senderPriv , recipientPub , msg , iv , salt , signSchema ) ;
256
257
// Result
257
258
return encoded ;
258
259
}
@@ -263,16 +264,16 @@ export class Crypto {
263
264
* @param {string } recipientPrivate - A recipient private key
264
265
* @param {string } senderPublic - A sender public key
265
266
* @param {Uint8Array } _payload - An encrypted message payload in bytes
266
- *
267
+ * @param { SignSchema } signSchema The Sign Schema. (KECCAK_REVERSED_KEY / SHA3)
267
268
* @return {string } - The decoded payload as hex
268
269
*/
269
- public static _decode = ( recipientPrivate , senderPublic , payload , iv , salt ) => {
270
+ public static _decode = ( recipientPrivate , senderPublic , payload , iv , salt , signSchema : SignSchema = SignSchema . SHA3 ) => {
270
271
// Error
271
272
if ( ! recipientPrivate || ! senderPublic || ! payload ) { throw new Error ( 'Missing argument !' ) ; }
272
273
// Processing
273
- const keyPair = KeyPair . createKeyPairFromPrivateKeyString ( recipientPrivate ) ;
274
+ const keyPair = KeyPair . createKeyPairFromPrivateKeyString ( recipientPrivate , signSchema ) ;
274
275
const pk = convert . hexToUint8 ( senderPublic ) ;
275
- const encKey = utility . ua2words ( KeyPair . deriveSharedKey ( keyPair , pk , salt ) , 32 ) ;
276
+ const encKey = utility . ua2words ( KeyPair . deriveSharedKey ( keyPair , pk , salt , signSchema ) , 32 ) ;
276
277
const encIv = {
277
278
iv : utility . ua2words ( iv , 16 ) ,
278
279
} ;
@@ -290,18 +291,18 @@ export class Crypto {
290
291
* @param {string } recipientPrivate - A recipient private key
291
292
* @param {string } senderPublic - A sender public key
292
293
* @param {string } _payload - An encrypted message payload
293
- *
294
+ * @param { SignSchema } signSchema The Sign Schema. (KECCAK_REVERSED_KEY / SHA3)
294
295
* @return {string } - The decoded payload as hex
295
296
*/
296
- public static decode = ( recipientPrivate , senderPublic , _payload ) => {
297
+ public static decode = ( recipientPrivate , senderPublic , _payload , signSchema : SignSchema = SignSchema . SHA3 ) => {
297
298
// Error
298
299
if ( ! recipientPrivate || ! senderPublic || ! _payload ) { throw new Error ( 'Missing argument !' ) ; }
299
300
// Processing
300
301
const binPayload = convert . hexToUint8 ( _payload ) ;
301
302
const payload = new Uint8Array ( binPayload . buffer , 48 ) ;
302
303
const salt = new Uint8Array ( binPayload . buffer , 0 , 32 ) ;
303
304
const iv = new Uint8Array ( binPayload . buffer , 32 , 16 ) ;
304
- const decoded = Crypto . _decode ( recipientPrivate , senderPublic , payload , iv , salt ) ;
305
+ const decoded = Crypto . _decode ( recipientPrivate , senderPublic , payload , iv , salt , signSchema ) ;
305
306
return decoded ;
306
307
}
307
308
0 commit comments