Aller au contenu
ecdsa.com
WebCrypto crypto.subtle.importKeyWebCrypto

Message d’erreur

DataError: Data provided to an operation does not meet requirements

C’est le nom de la DOMException, DataError, qu’il faut tester ; le texte du message varie selon l’environnement d’exécution. Firefox et Safari affichent la phrase générique ci-dessus ; Chrome laisse souvent le message vide ou indique la raison (« The imported EC key specifies a different curve than requested ») ; Node affiche « Invalid keyData » ou une raison précise, comme « Named curve mismatch ».

WebCrypto crypto.subtle.importKey — browsers & Node

Ce que cela signifie

importKey (ou unwrapKey) a rejeté les octets de la clé : ils ne peuvent pas être analysés selon le format que vous avez déclaré, ou leur contenu contredit les paramètres de l’algorithme (mauvaise courbe, champs JWK incohérents). C’est l’équivalent WebCrypto de « ces octets ne sont pas la clé que vous annoncez ». L’erreur est levée avant la création de tout objet clé.

Pourquoi cela se produit

Comment corriger l’erreur

  1. 1.

    Convertir correctement PEM → ArrayBuffer

    Retirez les lignes d’armure, décodez le corps en base64 et choisissez le format d’après le libellé PEM : PUBLIC KEY → spki, PRIVATE KEY → pkcs8.

    js
    function pemToArrayBuffer(pem) {
      const b64 = pem.replace(/-----[^-]+-----/g, "").replace(/\s+/g, "");
      return Uint8Array.from(atob(b64), (c) => c.charCodeAt(0)).buffer;
    }
    
    const key = await crypto.subtle.importKey(
      "spki", pemToArrayBuffer(publicKeyPem),
      { name: "ECDSA", namedCurve: "P-256" },
      false, ["verify"],
    );
  2. 2.

    Privilégier JWK quand la clé est déjà en JSON

    Les points de terminaison JWKS servent déjà des objets prêts pour WebCrypto : aucune conversion binaire, et le crv accompagne la clé.

    js
    const key = await crypto.subtle.importKey(
      "jwk", jwk,
      { name: "ECDSA", namedCurve: jwk.crv },
      false, ["verify"],
    );
  3. 3.

    Vérifier ce que sont réellement les octets

    Collez la clé dans le décodeur de certificats ou le vérificateur de signatures ci-dessous : tous deux analysent SPKI/PKCS#8/JWK localement et indiquent la courbe et le type de clé réels, ce qui révèle généralement l’incohérence immédiatement.

Erreurs associées

Parcourir toute la base de données des erreurs de signature