Skip to content
Snippets Groups Projects

[feat] oxyde scrypt

Closed Éloïs requested to merge oxyde-scrypt into dev
10 files
+ 64
48
Compare changes
  • Side-by-side
  • Inline

Files

+ 8
23
@@ -11,8 +11,7 @@
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
// GNU Affero General Public License for more details.
import * as crypto from "crypto";
import { KeyPairBuilder, seedToSecretKey } from "../../../../neon/lib";
import { KeyPairBuilder, scrypt, seedToSecretKey } from "../../../../neon/lib";
const SEED_LENGTH = 32; // Length of the key
@@ -20,7 +19,7 @@ const SEED_LENGTH = 32; // Length of the key
* Generates a new keypair object from salt + password strings.
* @param salt
* @param key
* @param N Scrypt parameter N. Defaults to 4096.
* @param log_n Scrypt parameter log n. Defaults to 12.
* @param r Scrypt parameter r. Defaults to 16.
* @param p Scrypt parameter p. Defaults to 1.
* @return keyPair An object containing the public and private keys, base58 encoded.
@@ -28,28 +27,14 @@ const SEED_LENGTH = 32; // Length of the key
export const Scrypt = async (
salt: string,
key: string,
N = 4096,
log_n = 12,
r = 16,
p = 1
) => {
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);
const pair = KeyPairBuilder.fromSeed(seed);
resolve({
pub: pair.getPublicKey(),
sec: seedToSecretKey(seed),
});
}
);
}
);
const seed = scrypt(salt, key, log_n, r, p);
return res;
return {
pub: KeyPairBuilder.fromSeed(seed).getPublicKey(),
sec: seedToSecretKey(seed),
};
};
Loading