Получите открытый ключ из закрытого ключа, используя crypto.subtle - PullRequest
0 голосов
/ 29 сентября 2019

У меня есть закрытый ключ RSA pkcs8, который я использую в приложении для подписания запроса. Я хочу извлечь открытый ключ из этого закрытого ключа, используя javascript window.crypto.subtle без использования каких-либо внешних библиотек.

Способ, которым я импортирую свой закрытый ключ, соответствует документации тонкого шифрования

function str2ab(str) {
  const buf = new ArrayBuffer(str.length);
  const bufView = new Uint8Array(buf);
  for (let i = 0, strLen = str.length; i < strLen; i++) {
    bufView[i] = str.charCodeAt(i);
  }
  return buf;
}

function importPrivateKey(KEY) {
  const pemHeader = "-----BEGIN PRIVATE KEY-----";
  const pemFooter = "-----END PRIVATE KEY-----";
  const pemContents = KEY.substring(pemHeader.length, KEY.length - pemFooter.length);
  const binaryDerString = window.atob(pemContents);  
  const binaryDer = str2ab(binaryDerString);

  // return a CryptoKey object
  return window.crypto.subtle.importKey(
    "pkcs8",
    binaryDer,
    {
      name: "RSASSA-PKCS1-v1_5",
      modulusLength: 2048,
      publicExponent: new Uint8Array([1, 0, 1]),
      hash: "SHA-256",
    },
    true,
    ["sign"]
  );
}

Как мне получить открытый ключ из этого закрытого ключа?

...