#javascript #export #private-key #ecdsa #subtlecrypto
#javascript #экспорт #закрытый ключ #ecdsa #subtlecrypto
Вопрос:
Я пытаюсь экспортировать закрытый ключ ECDSA (это, вероятно, относится и к ECDH), который я сгенерировал с помощью SubtleCrypto в JavaScript. Согласно MDN (да, это для importKey
, но это то место, на которое вы ссылаетесь со страницы для exportKey
), я могу использовать PKCS # 8 для этой цели, и поэтому я собрал следующий фрагмент кода, который стремится реализовать такой экспорт:
crypto.subtle.generateKey(
{
"name": "ECDSA",
"namedCurve": "P-256"
},
true,
["sign", "verify"]
).then(keys => {
crypto.subtle.exportKey("pkcs8", keys.privateKey)
.then(exported_key => {
console.log(exported_key)
})
})
Это работает в Chromium и GNOME Web (WebKit). В Firefox я получаю следующую ошибку, зарегистрированную на консоли:
Uncaught (in promise) DOMException: Operation is not supported
Это, по-видимому, происходит от последнего выражения, то есть призыва к exportKey
. Поддержка Firefox важна для меня и для того, над чем я работаю, поэтому я хотел бы разобраться в этом, и я полагаю, что скорее я делаю что-то неправильно, чем ошибка в Firefox, поэтому я думаю, что это лучше выяснить, чем просто сказать, что Firefox не поддерживается независимо.
Можно подумать, что это связано с тем, что Firefox не поддерживает экспорт ключей EC с помощью PKSC # 8, но, глядя на таблицу совместимости в MDN, кажется, что это не так, поскольку он помечен как поддерживаемый с версии 34 и далее, и нет никаких замечаний по реализации. Я отвлекся.
Что я могу здесь делать не так, и как я могу заставить это работать?
Комментарии:
1. Похоже, это открытая ошибка Firefox, ошибка 1133698 и D97857 .
2. обе ошибки теперь помечены как закрытые, и код в вопросе просто сработал для меня (firefox версии 94.0.1, chrome версии 96.0.4664.45)
3. Определенно неловкая ситуация. Как вы думаете, как с этим следует обращаться?