-const createHmac = require('create-hmac');
const StellarBase = require('stellar-base');
+const edHd = require('ed25519-hd-key');
window.stellarUtil = {
-
- HARDENED_OFFSET: 0x80000000,
- ED25519_CURVE: 'ed25519 seed',
-
- replaceDerive: (val) => val.replace("'", ''),
-
- getMasterKeyFromSeed: function (seed) {
- const hmac = createHmac('sha512', this.ED25519_CURVE);
- const I = hmac.update(Buffer.from(seed, 'hex')).digest();
- const IL = I.slice(0, 32);
- const IR = I.slice(32);
- return {
- key: IL,
- chainCode: IR,
- };
+ getKeypair: function (path, seed) {
+ const result = edHd.derivePath(path, seed);
+ return StellarBase.Keypair.fromRawEd25519Seed(result.key);
},
-
- CKDPriv: ({key, chainCode}, index) => {
- const indexBuffer = Buffer.allocUnsafe(4);
- indexBuffer.writeUInt32BE(index, 0);
- const data = Buffer.concat([Buffer.alloc(1, 0), key, indexBuffer]);
- const I = createHmac('sha512', chainCode)
- .update(data)
- .digest();
- const IL = I.slice(0, 32);
- const IR = I.slice(32);
- return {
- key: IL,
- chainCode: IR,
- };
+ dummyNetwork: {
+ bip32: {public: 0, private: 0},
+ messagePrefix: '',
+ pubKeyHash: 0,
+ scriptHash: 0,
+ wif: 0,
},
-
- derivePath: function (path, seed) {
-
- const {key, chainCode} = this.getMasterKeyFromSeed(seed);
- const segments = path
- .split('/')
- .slice(1)
- .map(this.replaceDerive)
- .map(el => parseInt(el, 10));
- const result = segments.reduce((parentKeys, segment) => this.CKDPriv(parentKeys, segment + this.HARDENED_OFFSET), {key, chainCode});
- return StellarBase.Keypair.fromRawEd25519Seed(result.key);
- }
}