From 46c25f3bb819ca32a06f39dddd788cf86215cc3c Mon Sep 17 00:00:00 2001 From: librelois <elois@ifee.fr> Date: Sun, 5 Apr 2020 19:24:10 +0200 Subject: [PATCH] [enh] scrypt: keypair generation use duniteroxyde instead of tweetnacl --- app/modules/keypair/lib/scrypt.ts | 27 ++++++++++----------------- 1 file changed, 10 insertions(+), 17 deletions(-) diff --git a/app/modules/keypair/lib/scrypt.ts b/app/modules/keypair/lib/scrypt.ts index 057b1a30d..0a348ad01 100644 --- a/app/modules/keypair/lib/scrypt.ts +++ b/app/modules/keypair/lib/scrypt.ts @@ -11,11 +11,8 @@ // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the // GNU Affero General Public License for more details. -import {Base58encode} from "../../../lib/common-libs/crypto/base58" -import {decodeBase64} from "../../../lib/common-libs/crypto/nacl-util" import * as crypto from 'crypto' - -const nacl = require('tweetnacl'); +import { KeyPairBuilder, seedToSecretKey } from 'duniteroxyde' const SEED_LENGTH = 32; // Length of the key @@ -29,20 +26,16 @@ const SEED_LENGTH = 32; // Length of the key * @return keyPair An object containing the public and private keys, base58 encoded. */ export const Scrypt = async (salt:string, key:string, N = 4096, r = 16, p = 1) => { - const keyBytes = await getScryptKey(key, salt, N, r, p) - const pair = nacl.sign.keyPair.fromSeed(keyBytes); - return { - pub: Base58encode(new Buffer(pair.publicKey, 'hex')), - sec: Base58encode(new Buffer(pair.secretKey, 'hex')) - }; -} - -const getScryptKey = async (key:string, salt:string, N:number, r:number, p:number) => { - const res:any = await new Promise((resolve, reject) => { - crypto.scrypt(key, salt, SEED_LENGTH, { N, r, p }, (err:any, res:Buffer) => { + const res: { pub: string, sec: string } = await new Promise((resolve, reject) => { + crypto.scrypt(key, salt, SEED_LENGTH, { N, r, p }, (err:any, seed:Buffer) => { if (err) return reject(err) - resolve(res) + const pair = KeyPairBuilder.fromSeed(seed); + resolve({ + pub: pair.getPublicKey(), + sec: seedToSecretKey(seed) + }) }) }) - return decodeBase64(res.toString("base64")) + + return res; } -- GitLab