Замена cryptico.js на WebCryptoAPI - как получить строку с открытым ключом? - PullRequest
0 голосов
/ 07 сентября 2018

Я надеюсь, что кто-то может помочь. Я использовал cryptico.js и генерировал ключи через:

var RSAkey = cryptico.generateRSAKey(passphrase, 512);
var publicKeyString = cryptico.publicKeyString(RSAkey);

Предоставление мне чистого доступа к открытому ключу, например: vnY5f+HVUQa2oBZKsb2LUgTlso/wtVsA5Ytqlr1RL13xVN81mnIHoL/5/8CKG4rQ/vQfnBAUBYfJzBQGeAXYnw==

Я перехожу на использование API WebCrypto, поскольку хочу использовать другой тип ключа:

promise_key = crypto.subtle.generateKey({name: "ECDSA", namedCurve: "P-256", hash: {name: "SHA-256"} }, true, ["sign", "verify"]);
promise_key.then(function(key) {
    private_key_object = key.privateKey;
    public_key_object = key.publicKey;
    console.log(key.publicKey);
});

Я хочу получить строку с открытым ключом, как и с cryptico, и я уверен, что делаю что-то очень глупое, но, похоже, не могу этого получить.

Я использовал crypto.subtle.exportKey с опциями 'spki', 'raw' и 'jwk', но без радости.

Даже если я использую RSA для генерации ключей вместо ECDSA, я все равно получаю то же самое.

Что я делаю не так, пожалуйста?

Большое спасибо

1 Ответ

0 голосов
/ 07 сентября 2018

Сам CryptoKey не доступен для просмотра через простой console.log. Сначала его необходимо преобразовать в нужный формат. Для этого вы можете использовать exportKey (если вы установили для extractable значение `true - что вы и сделали).

Вот несколько примеров.

...