]> git.immae.eu Git - perso/Immae/Projets/Cryptomonnaies/BIP39.git/blobdiff - libs/stellar-util/stellar-util.js
adding xlm stellar
[perso/Immae/Projets/Cryptomonnaies/BIP39.git] / libs / stellar-util / stellar-util.js
index 1922d5c32513f83f7d34dfd15aac219eea62d87e..a95d78d0478f9186359a99a353ef00294d15f28e 100644 (file)
@@ -1,48 +1,9 @@
-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,
-        };
-    },
-
-    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,
-        };
-    },
-
-    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});
+    getKeypair: function (path, seed) {
+        const result = edHd.derivePath(path, seed);
         return StellarBase.Keypair.fromRawEd25519Seed(result.key);
     }
 }