@@ -18,6 +18,7 @@ import { WalletAlgorithm } from '../../model/wallet/WalletAlgorithm';
1818import { Convert as convert } from '../format/Convert' ;
1919import { KeyPair } from './KeyPair' ;
2020import * as utility from './Utilities' ;
21+ import { SignSchema } from './SignSchema' ;
2122const CryptoJS = require ( 'crypto-js' ) ;
2223export class Crypto {
2324 /**
@@ -218,16 +219,16 @@ export class Crypto {
218219 * @param {string } msg - A text message
219220 * @param {Uint8Array } iv - An initialization vector
220221 * @param {Uint8Array } salt - A salt
221- *
222+ * @param { SignSchema } signSchema The Sign Schema. (KECCAK_REVERSED_KEY / SHA3)
222223 * @return {string } - The encoded message
223224 */
224- public static _encode = function ( senderPriv , recipientPub , msg , iv , salt ) {
225+ public static _encode = ( senderPriv , recipientPub , msg , iv , salt , signSchema : SignSchema = SignSchema . SHA3 ) => {
225226 // Errors
226227 if ( ! senderPriv || ! recipientPub || ! msg || ! iv || ! salt ) { throw new Error ( 'Missing argument !' ) ; }
227228 // Processing
228- const keyPair = KeyPair . createKeyPairFromPrivateKeyString ( senderPriv ) ;
229+ const keyPair = KeyPair . createKeyPairFromPrivateKeyString ( senderPriv , signSchema ) ;
229230 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 ) ;
231232 const encIv = {
232233 iv : utility . ua2words ( iv , 16 ) ,
233234 } ;
@@ -243,16 +244,16 @@ export class Crypto {
243244 * @param {string } senderPriv - A sender private key
244245 * @param {string } recipientPub - A recipient public key
245246 * @param {string } msg - A text message
246- *
247+ * @param { SignSchema } signSchema The Sign Schema. (KECCAK_REVERSED_KEY / SHA3)
247248 * @return {string } - The encoded message
248249 */
249- public static encode = ( senderPriv , recipientPub , msg ) => {
250+ public static encode = ( senderPriv , recipientPub , msg , signSchema : SignSchema = SignSchema . SHA3 ) => {
250251 // Errors
251252 if ( ! senderPriv || ! recipientPub || ! msg ) { throw new Error ( 'Missing argument !' ) ; }
252253 // Processing
253254 const iv = Crypto . randomBytes ( 16 ) ;
254255 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 ) ;
256257 // Result
257258 return encoded ;
258259 }
@@ -263,16 +264,16 @@ export class Crypto {
263264 * @param {string } recipientPrivate - A recipient private key
264265 * @param {string } senderPublic - A sender public key
265266 * @param {Uint8Array } _payload - An encrypted message payload in bytes
266- *
267+ * @param { SignSchema } signSchema The Sign Schema. (KECCAK_REVERSED_KEY / SHA3)
267268 * @return {string } - The decoded payload as hex
268269 */
269- public static _decode = ( recipientPrivate , senderPublic , payload , iv , salt ) => {
270+ public static _decode = ( recipientPrivate , senderPublic , payload , iv , salt , signSchema : SignSchema = SignSchema . SHA3 ) => {
270271 // Error
271272 if ( ! recipientPrivate || ! senderPublic || ! payload ) { throw new Error ( 'Missing argument !' ) ; }
272273 // Processing
273- const keyPair = KeyPair . createKeyPairFromPrivateKeyString ( recipientPrivate ) ;
274+ const keyPair = KeyPair . createKeyPairFromPrivateKeyString ( recipientPrivate , signSchema ) ;
274275 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 ) ;
276277 const encIv = {
277278 iv : utility . ua2words ( iv , 16 ) ,
278279 } ;
@@ -290,18 +291,18 @@ export class Crypto {
290291 * @param {string } recipientPrivate - A recipient private key
291292 * @param {string } senderPublic - A sender public key
292293 * @param {string } _payload - An encrypted message payload
293- *
294+ * @param { SignSchema } signSchema The Sign Schema. (KECCAK_REVERSED_KEY / SHA3)
294295 * @return {string } - The decoded payload as hex
295296 */
296- public static decode = ( recipientPrivate , senderPublic , _payload ) => {
297+ public static decode = ( recipientPrivate , senderPublic , _payload , signSchema : SignSchema = SignSchema . SHA3 ) => {
297298 // Error
298299 if ( ! recipientPrivate || ! senderPublic || ! _payload ) { throw new Error ( 'Missing argument !' ) ; }
299300 // Processing
300301 const binPayload = convert . hexToUint8 ( _payload ) ;
301302 const payload = new Uint8Array ( binPayload . buffer , 48 ) ;
302303 const salt = new Uint8Array ( binPayload . buffer , 0 , 32 ) ;
303304 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 ) ;
305306 return decoded ;
306307 }
307308
0 commit comments