convert crypto.subtle.deriveKey result to hex string











up vote
0
down vote

favorite












according to bip39 standard, I want to get seed from mnemonic words in javascript.



I use this code:



function mnemonicToSeed(mnemonic,passphrase){
if (typeof passphrase != 'string') passphrase='';

window.crypto.subtle.importKey(
'raw',
stringToArrayBuffer(mnemonic),
{
name: 'PBKDF2',
},
false,
['deriveKey']
).then((importedKey) => {

crypto.subtle.deriveKey({
name: "PBKDF2",
salt: stringToArrayBuffer('mnemonic'+passphrase),
iterations: 2048,
hash: { name: 'SHA-512' }
},
importedKey,
{
name: 'HMAC',
hash: 'SHA-512',
length: 512
},
true,
['sign']
).then(function(derivedKey) {
console.log('derivedKey: '+derivedKey);

});
});

}


but at last result of console.log('derivedKey: '+derivedKey); is this:



derivedKey: [object CryptoKey]


now how convert derivedKey to its corresponding seed as hex string ?










share|improve this question


























    up vote
    0
    down vote

    favorite












    according to bip39 standard, I want to get seed from mnemonic words in javascript.



    I use this code:



    function mnemonicToSeed(mnemonic,passphrase){
    if (typeof passphrase != 'string') passphrase='';

    window.crypto.subtle.importKey(
    'raw',
    stringToArrayBuffer(mnemonic),
    {
    name: 'PBKDF2',
    },
    false,
    ['deriveKey']
    ).then((importedKey) => {

    crypto.subtle.deriveKey({
    name: "PBKDF2",
    salt: stringToArrayBuffer('mnemonic'+passphrase),
    iterations: 2048,
    hash: { name: 'SHA-512' }
    },
    importedKey,
    {
    name: 'HMAC',
    hash: 'SHA-512',
    length: 512
    },
    true,
    ['sign']
    ).then(function(derivedKey) {
    console.log('derivedKey: '+derivedKey);

    });
    });

    }


    but at last result of console.log('derivedKey: '+derivedKey); is this:



    derivedKey: [object CryptoKey]


    now how convert derivedKey to its corresponding seed as hex string ?










    share|improve this question
























      up vote
      0
      down vote

      favorite









      up vote
      0
      down vote

      favorite











      according to bip39 standard, I want to get seed from mnemonic words in javascript.



      I use this code:



      function mnemonicToSeed(mnemonic,passphrase){
      if (typeof passphrase != 'string') passphrase='';

      window.crypto.subtle.importKey(
      'raw',
      stringToArrayBuffer(mnemonic),
      {
      name: 'PBKDF2',
      },
      false,
      ['deriveKey']
      ).then((importedKey) => {

      crypto.subtle.deriveKey({
      name: "PBKDF2",
      salt: stringToArrayBuffer('mnemonic'+passphrase),
      iterations: 2048,
      hash: { name: 'SHA-512' }
      },
      importedKey,
      {
      name: 'HMAC',
      hash: 'SHA-512',
      length: 512
      },
      true,
      ['sign']
      ).then(function(derivedKey) {
      console.log('derivedKey: '+derivedKey);

      });
      });

      }


      but at last result of console.log('derivedKey: '+derivedKey); is this:



      derivedKey: [object CryptoKey]


      now how convert derivedKey to its corresponding seed as hex string ?










      share|improve this question













      according to bip39 standard, I want to get seed from mnemonic words in javascript.



      I use this code:



      function mnemonicToSeed(mnemonic,passphrase){
      if (typeof passphrase != 'string') passphrase='';

      window.crypto.subtle.importKey(
      'raw',
      stringToArrayBuffer(mnemonic),
      {
      name: 'PBKDF2',
      },
      false,
      ['deriveKey']
      ).then((importedKey) => {

      crypto.subtle.deriveKey({
      name: "PBKDF2",
      salt: stringToArrayBuffer('mnemonic'+passphrase),
      iterations: 2048,
      hash: { name: 'SHA-512' }
      },
      importedKey,
      {
      name: 'HMAC',
      hash: 'SHA-512',
      length: 512
      },
      true,
      ['sign']
      ).then(function(derivedKey) {
      console.log('derivedKey: '+derivedKey);

      });
      });

      }


      but at last result of console.log('derivedKey: '+derivedKey); is this:



      derivedKey: [object CryptoKey]


      now how convert derivedKey to its corresponding seed as hex string ?







      javascript cryptography






      share|improve this question













      share|improve this question











      share|improve this question




      share|improve this question










      asked 2 days ago









      saeid ezzati

      162215




      162215
























          1 Answer
          1






          active

          oldest

          votes

















          up vote
          0
          down vote













          finally I found that with crypto.subtle.exportKey I can get result of CryptoKey as ArrayBuffer



          window.crypto.subtle.importKey(
          'raw',
          stringToArrayBuffer(mnemonic),
          {
          name: 'PBKDF2',
          },
          false,
          ['deriveKey']
          ).then((importedKey) => {

          crypto.subtle.deriveKey({
          name: "PBKDF2",
          salt: stringToArrayBuffer('mnemonic'+passphrase),
          iterations: 2048,
          hash: { name: 'SHA-512' }
          },
          importedKey,
          {
          name: 'HMAC',
          hash: 'SHA-512',
          length: 512
          },
          true,
          ['sign']
          ).then(function(derivedKey) {

          crypto.subtle.exportKey('raw',derivedKey).then((exportedKey) => {
          console.log(convertArrayBufferToHexaDecimal(exportedKey));
          });

          });
          })

          function convertArrayBufferToHexaDecimal(buffer)
          {
          var data_view = new DataView(buffer)
          var iii, len, hex = '', c;

          for(iii = 0, len = data_view.byteLength; iii < len; iii += 1)
          {
          c = data_view.getUint8(iii).toString(16);
          if(c.length < 2)
          {
          c = '0' + c;
          }

          hex += c;
          }

          return hex;
          }





          share|improve this answer























            Your Answer






            StackExchange.ifUsing("editor", function () {
            StackExchange.using("externalEditor", function () {
            StackExchange.using("snippets", function () {
            StackExchange.snippets.init();
            });
            });
            }, "code-snippets");

            StackExchange.ready(function() {
            var channelOptions = {
            tags: "".split(" "),
            id: "1"
            };
            initTagRenderer("".split(" "), "".split(" "), channelOptions);

            StackExchange.using("externalEditor", function() {
            // Have to fire editor after snippets, if snippets enabled
            if (StackExchange.settings.snippets.snippetsEnabled) {
            StackExchange.using("snippets", function() {
            createEditor();
            });
            }
            else {
            createEditor();
            }
            });

            function createEditor() {
            StackExchange.prepareEditor({
            heartbeatType: 'answer',
            convertImagesToLinks: true,
            noModals: true,
            showLowRepImageUploadWarning: true,
            reputationToPostImages: 10,
            bindNavPrevention: true,
            postfix: "",
            imageUploader: {
            brandingHtml: "Powered by u003ca class="icon-imgur-white" href="https://imgur.com/"u003eu003c/au003e",
            contentPolicyHtml: "User contributions licensed under u003ca href="https://creativecommons.org/licenses/by-sa/3.0/"u003ecc by-sa 3.0 with attribution requiredu003c/au003e u003ca href="https://stackoverflow.com/legal/content-policy"u003e(content policy)u003c/au003e",
            allowUrls: true
            },
            onDemand: true,
            discardSelector: ".discard-answer"
            ,immediatelyShowMarkdownHelp:true
            });


            }
            });














             

            draft saved


            draft discarded


















            StackExchange.ready(
            function () {
            StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f53238462%2fconvert-crypto-subtle-derivekey-result-to-hex-string%23new-answer', 'question_page');
            }
            );

            Post as a guest
































            1 Answer
            1






            active

            oldest

            votes








            1 Answer
            1






            active

            oldest

            votes









            active

            oldest

            votes






            active

            oldest

            votes








            up vote
            0
            down vote













            finally I found that with crypto.subtle.exportKey I can get result of CryptoKey as ArrayBuffer



            window.crypto.subtle.importKey(
            'raw',
            stringToArrayBuffer(mnemonic),
            {
            name: 'PBKDF2',
            },
            false,
            ['deriveKey']
            ).then((importedKey) => {

            crypto.subtle.deriveKey({
            name: "PBKDF2",
            salt: stringToArrayBuffer('mnemonic'+passphrase),
            iterations: 2048,
            hash: { name: 'SHA-512' }
            },
            importedKey,
            {
            name: 'HMAC',
            hash: 'SHA-512',
            length: 512
            },
            true,
            ['sign']
            ).then(function(derivedKey) {

            crypto.subtle.exportKey('raw',derivedKey).then((exportedKey) => {
            console.log(convertArrayBufferToHexaDecimal(exportedKey));
            });

            });
            })

            function convertArrayBufferToHexaDecimal(buffer)
            {
            var data_view = new DataView(buffer)
            var iii, len, hex = '', c;

            for(iii = 0, len = data_view.byteLength; iii < len; iii += 1)
            {
            c = data_view.getUint8(iii).toString(16);
            if(c.length < 2)
            {
            c = '0' + c;
            }

            hex += c;
            }

            return hex;
            }





            share|improve this answer



























              up vote
              0
              down vote













              finally I found that with crypto.subtle.exportKey I can get result of CryptoKey as ArrayBuffer



              window.crypto.subtle.importKey(
              'raw',
              stringToArrayBuffer(mnemonic),
              {
              name: 'PBKDF2',
              },
              false,
              ['deriveKey']
              ).then((importedKey) => {

              crypto.subtle.deriveKey({
              name: "PBKDF2",
              salt: stringToArrayBuffer('mnemonic'+passphrase),
              iterations: 2048,
              hash: { name: 'SHA-512' }
              },
              importedKey,
              {
              name: 'HMAC',
              hash: 'SHA-512',
              length: 512
              },
              true,
              ['sign']
              ).then(function(derivedKey) {

              crypto.subtle.exportKey('raw',derivedKey).then((exportedKey) => {
              console.log(convertArrayBufferToHexaDecimal(exportedKey));
              });

              });
              })

              function convertArrayBufferToHexaDecimal(buffer)
              {
              var data_view = new DataView(buffer)
              var iii, len, hex = '', c;

              for(iii = 0, len = data_view.byteLength; iii < len; iii += 1)
              {
              c = data_view.getUint8(iii).toString(16);
              if(c.length < 2)
              {
              c = '0' + c;
              }

              hex += c;
              }

              return hex;
              }





              share|improve this answer

























                up vote
                0
                down vote










                up vote
                0
                down vote









                finally I found that with crypto.subtle.exportKey I can get result of CryptoKey as ArrayBuffer



                window.crypto.subtle.importKey(
                'raw',
                stringToArrayBuffer(mnemonic),
                {
                name: 'PBKDF2',
                },
                false,
                ['deriveKey']
                ).then((importedKey) => {

                crypto.subtle.deriveKey({
                name: "PBKDF2",
                salt: stringToArrayBuffer('mnemonic'+passphrase),
                iterations: 2048,
                hash: { name: 'SHA-512' }
                },
                importedKey,
                {
                name: 'HMAC',
                hash: 'SHA-512',
                length: 512
                },
                true,
                ['sign']
                ).then(function(derivedKey) {

                crypto.subtle.exportKey('raw',derivedKey).then((exportedKey) => {
                console.log(convertArrayBufferToHexaDecimal(exportedKey));
                });

                });
                })

                function convertArrayBufferToHexaDecimal(buffer)
                {
                var data_view = new DataView(buffer)
                var iii, len, hex = '', c;

                for(iii = 0, len = data_view.byteLength; iii < len; iii += 1)
                {
                c = data_view.getUint8(iii).toString(16);
                if(c.length < 2)
                {
                c = '0' + c;
                }

                hex += c;
                }

                return hex;
                }





                share|improve this answer














                finally I found that with crypto.subtle.exportKey I can get result of CryptoKey as ArrayBuffer



                window.crypto.subtle.importKey(
                'raw',
                stringToArrayBuffer(mnemonic),
                {
                name: 'PBKDF2',
                },
                false,
                ['deriveKey']
                ).then((importedKey) => {

                crypto.subtle.deriveKey({
                name: "PBKDF2",
                salt: stringToArrayBuffer('mnemonic'+passphrase),
                iterations: 2048,
                hash: { name: 'SHA-512' }
                },
                importedKey,
                {
                name: 'HMAC',
                hash: 'SHA-512',
                length: 512
                },
                true,
                ['sign']
                ).then(function(derivedKey) {

                crypto.subtle.exportKey('raw',derivedKey).then((exportedKey) => {
                console.log(convertArrayBufferToHexaDecimal(exportedKey));
                });

                });
                })

                function convertArrayBufferToHexaDecimal(buffer)
                {
                var data_view = new DataView(buffer)
                var iii, len, hex = '', c;

                for(iii = 0, len = data_view.byteLength; iii < len; iii += 1)
                {
                c = data_view.getUint8(iii).toString(16);
                if(c.length < 2)
                {
                c = '0' + c;
                }

                hex += c;
                }

                return hex;
                }






                share|improve this answer














                share|improve this answer



                share|improve this answer








                edited yesterday

























                answered yesterday









                saeid ezzati

                162215




                162215






























                     

                    draft saved


                    draft discarded



















































                     


                    draft saved


                    draft discarded














                    StackExchange.ready(
                    function () {
                    StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f53238462%2fconvert-crypto-subtle-derivekey-result-to-hex-string%23new-answer', 'question_page');
                    }
                    );

                    Post as a guest




















































































                    Popular posts from this blog

                    Florida Star v. B. J. F.

                    Danny Elfman

                    Retrieve a Users Dashboard in Tumblr with R and TumblR. Oauth Issues