SubtleCrypto.exportKey с параметрами формата "spki" или "pkcs" всегда дает одинаковый результат в Chrome.

(async()=>{
    const keyPair = await window.crypto.subtle.generateKey({
        name: "RSA-OAEP",
        modulusLength: 4096,
        publicExponent: new Uint8Array([1, 0, 1]),
        hash: "SHA-256"
    }, true, ["encrypt", "decrypt"]);

    const exported = await window.crypto.subtle.exportKey("pkcs8", keyPair.privateKey)
    const jwk = await window.crypto.subtle.exportKey("jwk", keyPair.privateKey)
    console.log({exported,jwk})
}
)()

Я создал этот простой фрагмент для создания пар ключей RSA. Идея состоит в том, чтобы сначала создатьArrayBufferи использовать это для создания файла PEM с преобразованием строки позже. Когда я запускаю фрагмент несколько раз, экспортированные открытые / закрытые ключи всегда одинаковы, если я используюspki или pkcs8 форматы (которые приводят к ArrayBuffers) .

Когда я запускаю этот фрагмент на Chrome, результат для exported всегда [[Int8Array]]: Int8Array(2374) [48, -126, 9, 66, 2, 1, 0, 48,...]

Как ни странно, я не столкнулся с той же проблемой при экспорте с использованием jwk формат, поскольку он генерирует разные выходные данные при каждом генерации ключа (как и ожидалось).

Чтобы воспроизвести проблему, вы можете просто запустить это на своей консоли Chrome или создать фрагмент Chrome.

Дополнительная информация о создании и экспорте ключей: https://developer.mozilla.org/en-US/docs/Web/API/SubtleCrypto/exportKey

У меня еще не было возможности попробовать другой браузер, но мне интересно, является ли это ошибкой в ​​chrome/webkit?

Любые идеи приветствуются!

0 ответов

Другие вопросы по тегам