JWK ⇄ PEM nøglekonverter
Konverter kryptografiske nøgler mellem JWK- og PEM-format ved hjælp af den rigtige Web Crypto API, afkod algoritme/kurve/størrelse, og beregn RFC 7638 JWK-thumbprint.
Resultat
JSON-webnøgler (JWK) og PEM-kodede nøgler vises i flæng på tværs af JWT-biblioteker, TLS-værktøjer og OAuth/OIDC-konfiguration, men at konvertere mellem de to manuelt betyder base64-afkodning af DER-strukturer eller omformatering af JSON - let at få subtilt forkert. Dette værktøj udfører konverteringen med browserens rigtige Web Crypto API i stedet for tekstmanipulation: en indsat PEM-blok importeres med crypto.subtle.importKey('spki'|'pkcs8', ...) og re-eksporteres som JWK med exportKey('jwk', ...); en indsat JWK importeres med importKey('jwk', ...) og re-eksporteres som SPKI eller PKCS8 DER, derefter pakket ind i den korrekte PEM-header. Fordi browseren selv validerer og afkoder nøglematerialet, fejler en forkert udformet nøgle eller et forkert algoritmevalg højlydt i stedet for lydløst at producere skrald.
Understøttede algoritmer er RSA (RSASSA-PKCS1-v1_5), EC på P-256/P-384/P-521 kurverne, og - hvor browseren implementerer dem - Ed25519 og X25519. Browserunderstøttelse af Ed25519/X25519 i Web Crypto er stadig inkonsekvent på tværs af motorer, så i stedet for at gætte fra brugeragentstrengen, kører værktøjet en faktisk crypto.subtle.generateKey()-probe for den valgte kurve og fortæller dig tydeligt, om den ikke understøttes her, i stedet for at returnere et fremstillet resultat.
Hver konvertering afkoder også nøglens rigtige metadata: for RSA-nøgler, modulbitlængden og hash-algoritmen direkte fra CryptoKey-objektet; for EC- og OKP-taster, den navngivne kurve; og for hver nøgle, RFC 7638 JWK thumbprint — en SHA-256 hash af JWK's påkrævede medlemmer serialiseret i streng leksikografisk rækkefølge (e/kty/n for RSA, crv/kty/x/y for EC, crv/kty/x for OKP/Ed25519/X25519/X25). Dette tommelfingeraftryk er, hvad mange systemer bruger som en nøgles "kid"-id, og at få medlemsrækkefølgen forkert producerer en helt anden hash, hvilket er præcis den slags fejl, en håndrullet implementering er tilbøjelig til.
Fordi alt kører gennem crypto.subtle i din egen browserfane, forlader privat nøglemateriale aldrig din enhed – der er ingen server, ingen upload og intet eksternt API-kald involveret på noget tidspunkt i konverteringen.