XRPLF / xrpl.js

A JavaScript/TypeScript API for interacting with the XRP Ledger in Node.js and the browser
https://xrpl.org/
1.2k stars 512 forks source link

how to get secret from privatekey #929

Closed elvis-hp closed 5 years ago

elvis-hp commented 6 years ago

Hi, I have some code to get privatekey from 12 mnemonic. So I don't know how to get secret? The ripple-lib use secret to submit a payment. Thank you so much!

    const bip39 = require("bip39");
    const bip32 = require("ripple-bip32");
     var keypairs = require('ripple-keypairs');

      const seed = bip39.mnemonicToSeed(mnemonic); 
       const m = bip32.fromSeedBuffer(seed)

      let masterXprv = m.toBase58();
      console.log(masterXprv)

      let derived = m.derivePath('m/44'/144'/0'/0/0');

      let xprv = derived.toBase58();
      console.log(xprv)

      // xpub
      let xpub = derived.neutered().toBase58()
      console.log(xpub);

      let address = derived.getAddress();      

      const srcpair = derived.keyPair.getKeyPairs();
     // let secret = keypairs.generateSeed({entropy: new Buffer(seed, 'hex')}); => not right!!!!
      srcpair.address = keypairs.deriveAddress(srcpair.publicKey);  
      let privateKey = srcpair.privateKey; 
MarkusTeufelberger commented 6 years ago

Deriving an AccountSecret from a private key is not possible.

This article explains it in more detail: https://xrpcommunity.blog/keys-are-key-secret-keys-signing-transactions/

intelliot commented 5 years ago

When using ripple-lib to sign a transaction, provide a keypair object to use for signing. (Requires ripple-lib 0.20.0 (2018-04-09) or higher.) This allows you to submit a payment without using a secret. For details see:

https://developers.ripple.com/rippleapi-reference.html#sign