Mbed TLS 4 trasladó su criptografía a TF-PSA-Crypto y a la API PSA Crypto (psa_sign_message, psa_verify_message, psa_generate_key), la misma API que usa Trusted Firmware de Arm. Los datos de esta página se comprobaron con el paquete de Alpine 3.24.2, Mbed TLS 4.1.1 (la última versión del proyecto ya era la 4.2.0); las funciones disponibles dependen de la configuración de compilación, como en cualquier biblioteca para sistemas embebidos.
La codificación de la firma es lo que difiere del código derivado de OpenSSL: PSA devuelve la forma r‖s en bruto, 64 bytes en P-256, no DER. Las firmas destinadas a X.509, CMS o un verificador de OpenSSL deben envolverse en DER, y las firmas DER que llegan de esos interlocutores deben desenvolverse antes de psa_verify_message, que de lo contrario devuelve PSA_ERROR_INVALID_SIGNATURE, el mismo estado que con una firma falsificada o un blob de 3 bytes. Convierte las firmas con el conversor DER ⇄ en bruto.
Cada clave lleva una política con un único algoritmo permitido, así que la elección entre PSA_ALG_ECDSA (nonce aleatorio) y PSA_ALG_DETERMINISTIC_ECDSA (RFC 6979; el vector de prueba del RFC se reprodujo) se hace al crear la clave, como muestra el ejemplo. s no se normaliza y la verificación acepta high-S. psa_sign_hash firma un resumen calculado de antemano.
Esta compilación firmó y verificó con P-256, P-384, P-521, secp256k1 y las curvas Brainpool r1; P-224 no estaba disponible y se rechazó la generación de claves Ed25519 (PSA_ERROR_NOT_SUPPORTED). La compatibilidad poscuántica se limita a la verificación de LMS, un esquema de firma basada en hash (MBEDTLS_LMS_C); no hay tipo de clave ML-KEM ni ML-DSA, y el controlador experimental de ML-DSA de mldsa-native (TF_PSA_CRYPTO_PQCP_MLDSA_ENABLED) está comentado en la configuración de esta compilación. Las claves públicas se exportan como puntos SEC1 en formato sin comprimir mediante PSA y como DER SPKI mediante la capa pk.