UNPKG

@polkadot/keyring

Version:
23 lines (22 loc) 1.04 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.encodePair = encodePair; const util_1 = require("@polkadot/util"); const util_crypto_1 = require("@polkadot/util-crypto"); const defaults_js_1 = require("./defaults.js"); /** * Encode a pair with the latest generation format (generation 3) **/ function encodePair({ publicKey, secretKey }, passphrase) { if (!secretKey) { throw new Error('Expected a valid secretKey to be passed to encode'); } const encoded = (0, util_1.u8aConcat)(defaults_js_1.PAIR_HDR, secretKey, defaults_js_1.PAIR_DIV, publicKey); if (!passphrase) { return encoded; } // this is only for generation 3 (previous generations are only handled in decoding) const { params, password, salt } = (0, util_crypto_1.scryptEncode)(passphrase); const { encrypted, nonce } = (0, util_crypto_1.naclEncrypt)(encoded, password.subarray(0, 32)); return (0, util_1.u8aConcat)((0, util_crypto_1.scryptToU8a)(salt, params), nonce, encrypted); }