Ошибка при импорте открытого ключа SubtleCrypto: указанное значение не может быть преобразовано в последовательность
Я пытаюсь импортировать открытый ключ в crypto.subtle и получаю загадочную ошибку (каламбур):
Неперехваченный (в обещании) TypeError: не удалось выполнить importKey для SubtleCrypto: указанное значение не может быть преобразовано в последовательность.
Вот мой ключ:
jPublicJWK = {
"crv":"P-256",
"key_ops":"verify",
"kty":"EC",
"x":"QcQI-5wvczyuzU0SWl91tdUWbG5RMYFdNrOCNHen-08",
"y":"sYVMwVF4ZO2-u0xPMyOXff7VoOQo6kdBv0IeEcnrYno",
"use":"sig"
}
И вот как я импортирую:
let jwkCryptoKey = await crypto.subtle.importKey(
"jwk",
jPublicJWK,
{
name: "ECDSA",
namedCurve: "P-256",
},
true,
["verify"]
);
Что я делаю неправильно?
1 ответ
Решение
По данным РФК,key_ops
это массив. "Его значение - это массив ключевых значений операции". Маленькое хитрое предложение, которое нельзя пропустить.
поскольку key_ops
не является обязательным, вы можете удалить его все вместе или поместить в массив:
jPublicJWK = {
"crv": "P-256",
"kty": "EC",
"key_ops": ["verify"],
"x": "NDeK5mTx7Tse16x4ipl1m6NYDkwLO-YBU_BUqEtOuIM",
"y": "9Q3XDebaKId0pmrPqVTTR__UnpBn2oxqY8nAlrTw_qU",
"use": "sig"
};