Ошибка при импорте открытого ключа 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"
};
Другие вопросы по тегам