Clause
← Gesamte Dokumentation

Das englische Original wurde seit dieser Übersetzung geändert, daher können Teile davon veraltet sein. Auf Englisch lesen

Übersetzt aus dem englischen Original · 1e3a39c8-dirty · 2026-10-26

public_key

Clauses Anwendung public_key besteht aus zwei Teilen: den ASN.1-Modulen, die die PKIX- und PKCS-Typen kodieren und dekodieren und die clau aus den Spezifikationen in library/public_key/asn1/ generiert, zusammen mit dem Header library/public_key/include/public_key.hrl, sowie dem Modul public_key, das die Exporte von OTP 29 besitzt: Sein DER- und PEM-Codec sowie Schlüssel und Signaturen sind implementiert; die Validierung löst weiterhin {not_implemented, Name, Arity} aus (Bestandsverzeichnis).

Spezifikationen

library/public_key/asn1/ enthält die Module, die OTPs public_key kompiliert, unter denselben Namen:

QuelleModule
RFC 5912 (PKIX, ASN.1 von 2009)AlgorithmInformation-2009, AttributeCertificateVersion1-2009, EnrollmentMessageSyntax-2009, PKCS-10, PKIX-CommonTypes-2009, PKIX-X400Address-2009, PKIX1-PSS-OAEP-Algorithms-2009, PKIX1Explicit-2009, PKIX1Implicit-2009, PKIXAlgs-2009, PKIXAttributeCertificate-2009, PKIXCRMF-2009
RFC 5911 (CMS und S/MIME)CryptographicMessageSyntax-2009, CryptographicMessageSyntaxAlgorithms-2009, CMSAesRsaesOaep-2009, SecureMimeMessageV3dot1-2009
RFC 5915, 5958, 8017, 8018, 8410, 9629, 9654, 9810, 9814, 9881, 9935ECPrivateKey, AsymmetricKeyPackageModuleV1, PKCS-1, PKCS5v2-0, Safecurves-pkix-18, KEMAlgorithmInformation-2023, OCSP-2024-08, PKIXCMP-2023, SLH-DSA-Module-2024, X509-ML-DSA-2025, X509-ML-KEM-2025
Für Clause geschriebenOTP-PKIX und OTP-PKIX-Relaxed (die OTPCertificate-Formen), DSS (DSAPrivateKey), PKCS-3 (DHParameter), RFC5639 (Brainpool-Kurvenkennungen), PKCS-FRAME.set.asn (AsymmetricKeyPackageModuleV1 mit PKCS5v2-0)

Jedes RFC-Modul ist der Codebestandteil seines RFC mit dem BSD-Hinweis des IETF Trust; der Modultext ist unverändert, außer wo OTPs Modul abweicht. Diese Änderungen sind am Dateianfang aufgeführt (PKCS-1, PKCS5v2-0, ECPrivateKey, PKIX1Explicit-2009, PKIXAlgs-2009, PKIXCMP-2023). Die Module generieren dieselben Erlang-Module und Header wie OTPs Spezifikationen.

Generierte Module

Der Build führt clau --generate-asn1 mit OTPs Optionen (ber, der, noobj) für die Spezifikationen aus und schreibt die Module ('OTP-PKIX', 'PKIX1Explicit-2009', ...) nach library-asn1/public_key/ im Build-Verzeichnis, einem zweiten Bibliothekswurzelverzeichnis nach library/ (Bibliothek): Nennt ein Programm eines davon, wird es wie jedes Bibliotheksmodul in seinen Stapel kompiliert. Wie bei OTP sind die von PKCS-FRAME zusammengeführten Module (AsymmetricKeyPackageModuleV1, PKCS5v2-0) keine eigenständigen Module. Ihre Kodierungen, Dekodierungen und records entsprechen denen von asn1ct (ASN.1); OTPs exklusive Dekodierungsfunktionen aus asn1config (decode_TBSCert_exclusive/1) werden nicht generiert.

-include_lib("public_key/include/public_key.hrl") wird auf Clauses Header aufgelöst, sofern ein Projekt keine eigene Anwendung public_key nennt. Er definiert die records und Makros aus OTPs Header: Die meisten sind die von den Spezifikationen generierten records und Werte, die übrigen die von public_key selbst angelegten records ('Certificate' in seiner Form vor 2009, 'ECPoint', die ML-DSA-, ML-KEM- und SLH-DSA-Schlüssel, #cert{}) und die darin genannten Objektkennungen. Der Referenztest public_key_records prüft die Felder und Standardwerte jedes records sowie den Wert jedes Makros gegen OTPs Header; public_key_asn1 dekodiert und kodiert Zertifikate, Schlüssel und Parameter über die generierten Module.

Funktionen

public_key (mit public_key.app und einer asn1.app für die Anwendung, von der es abhängt) leitet seine Codec-Funktionen an clause_public_key_codec weiter, das public_key.hrl einbindet; die record-Durchläufe und Objektkennungstabellen von OTPs pubkey_translation und pubkey_cert_records sind Laufzeit-Builtins (öffentliche Schlüssel).

Der Referenztest public_key_codec vergleicht all dies mit OTP, einschließlich des PEM-Texts verschlüsselter Einträge.

Schlüssel und Signaturen

clause_public_key_keys wandelt Schlüssel-records wie OTP in die Schlüssellisten von crypto um und ruft es auf:

Schlüsselcrypto-Algorithmus
#'RSAPrivateKey'{} (alle CRT-Komponenten oder nur [E, N, D]), {RSAKey, PssParams}; #'RSAPublicKey'{}rsa
#'DSAPrivateKey'{}; {Y, #'Dss-Parms'{}}dss
#'ECPrivateKey'{} mit benannten oder expliziten Parametern; {#'ECPoint'{}, Params}ecdsa
Ed25519/Ed448 #'ECPrivateKey'{}, {ed_pri, Curve, Pub, Priv}; {#'ECPoint'{}, {namedCurve, Oid}}, {ed_pub, Curve, Key}eddsa
#'ML-DSAPrivateKey'{} (Seed, andernfalls expandierter Schlüssel), #'SLH-DSAPrivateKey'{}; ihre öffentlichen Schlüsselder Parametersatz
Eine map mit sign_fun oder encrypt_fundie fun wird aufgerufen

OTPs Eigenheiten bleiben erhalten: Ein von generate_key/1 erzeugter ML-DSA-Schlüssel hat einen leeren Seed, mit dem crypto das Signieren verweigert; ein privater DSA-Schlüssel kann nicht verifizieren; bei expliziten Kurven über Primkörpern scheitert die Dekodierung ihrer Primzahl. Der Referenztest public_key_keys vergleicht deterministische Signaturen (RSA PKCS #1, EdDSA, Zertifikate), Verschlüsselung, Schlüsselvereinbarung, Typen, Hashes und Gruppenauswahl mit OTP.