Mbed TLS 4 hat seine Kryptografie in TF-PSA-Crypto und die PSA Crypto API verlagert (psa_sign_message, psa_verify_message, psa_generate_key), dieselbe API, die auch Trusted Firmware von Arm verwendet. Die Fakten auf dieser Seite wurden mit dem Paket aus Alpine 3.24.2 geprüft, Mbed TLS 4.1.1 (upstream war bereits 4.2.0 erschienen); wie bei jeder Embedded-Bibliothek hängt der Funktionsumfang von der Build-Konfiguration ab.
Bei der Kodierung der Signatur unterscheidet sich Mbed TLS von Code, der von OpenSSL abstammt: PSA liefert die rohe r‖s-Form, auf P-256 also 64 Byte, kein DER. Signaturen für X.509, CMS oder einen OpenSSL-Verifizierer müssen in DER verpackt werden, und DER-Signaturen von diesen Gegenstellen müssen vor psa_verify_message entpackt werden, sonst meldet die Funktion PSA_ERROR_INVALID_SIGNATURE – denselben Status wie für eine gefälschte Signatur oder einen 3-Byte-Blob. Konvertiere mit dem Konverter DER ⇄ Raw.
Jeder Schlüssel trägt eine Richtlinie mit genau einem zulässigen Algorithmus; die Wahl zwischen PSA_ALG_ECDSA (zufällige Nonce) und PSA_ALG_DETERMINISTIC_ECDSA (RFC 6979 – der Testvektor des RFC wurde reproduziert) fällt also beim Erzeugen des Schlüssels, wie das Beispiel zeigt. s wird nicht normalisiert, und die Prüfung akzeptiert High-S. psa_sign_hash signiert einen vorab berechneten Digest.
Dieser Build signierte und prüfte mit P-256, P-384, P-521, secp256k1 und den Brainpool-r1-Kurven; P-224 war nicht verfügbar, und das Erzeugen eines Ed25519-Schlüssels wurde abgelehnt (PSA_ERROR_NOT_SUPPORTED). Die Post-Quanten-Unterstützung beschränkt sich auf die Prüfung hashbasierter Signaturen mit LMS (MBEDTLS_LMS_C); einen Schlüsseltyp für ML-KEM oder ML-DSA gibt es nicht, und der experimentelle ML-DSA-Treiber aus mldsa-native (TF_PSA_CRYPTO_PQCP_MLDSA_ENABLED) ist in der Konfiguration dieses Builds auskommentiert. Öffentliche Schlüssel werden über PSA als unkomprimierte Punkte im SEC1-Format exportiert und über die Schicht pk als SPKI-DER.