Zum Inhalt springen
ecdsa.com
WebCrypto crypto.subtle.importKeyWebCrypto

Fehlermeldung

DataError: Data provided to an operation does not meet requirements

Prüfe auf den DOMException-Namen DataError; der Meldungstext variiert je nach Laufzeitumgebung. Firefox und Safari zeigen den generischen Satz oben; Chrome lässt die Meldung oft leer oder nennt den Grund („The imported EC key specifies a different curve than requested“); Node gibt „Invalid keyData“ oder einen konkreten Grund wie „Named curve mismatch“ aus.

WebCrypto crypto.subtle.importKey — browsers & Node

Was der Fehler bedeutet

importKey (oder unwrapKey) hat die Schlüsselbytes abgelehnt: Die Bytes lassen sich nicht im angegebenen Format parsen, oder ihr Inhalt widerspricht den Algorithmusparametern (falsche Kurve, nicht zusammenpassende JWK-Felder). Es ist das WebCrypto-Gegenstück zu „diese Bytes sind nicht der Schlüssel, für den du sie ausgibst“ – ausgelöst, bevor überhaupt ein Schlüsselobjekt erzeugt wird.

Warum der Fehler auftritt

So behebst du den Fehler

  1. 1.

    PEM → ArrayBuffer korrekt konvertieren

    Entferne die Rahmenzeilen, dekodiere den Inhalt mit base64 und wähle das Format anhand des PEM-Labels: 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.

    JWK bevorzugen, wenn du Schlüsselmaterial als JSON hast

    JWKS-Endpunkte liefern bereits Objekte, die WebCrypto direkt verarbeiten kann – keine Binärkonvertierung, und crv reist mit dem Schlüssel mit.

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

    Prüfen, was die Bytes wirklich sind

    Füge den Schlüssel unten in den Zertifikats-Decoder oder in den Signatur-Verifier ein – beide parsen SPKI/PKCS#8/JWK lokal und melden die tatsächliche Kurve und den Schlüsseltyp, was die Abweichung meist sofort benennt.

Verwandte Fehler

Gesamte Signaturfehler-Datenbank durchsuchen