У меня есть закрытый ключ 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"]
);
}
Как мне получить открытый ключ из этого закрытого ключа?