![]() |
nRF Connect SDK API 3.4.99
|
| psa_status_t cracen_hybrid_verify | ( | const struct cracen_hybrid_verify_ml_dsa * | ml_dsa, |
| const struct cracen_hybrid_verify_ecdsa * | ecdsa, | ||
| const uint8_t * | message, | ||
| size_t | message_length ) |
#include <cracen_psa_hybrid_verify.h>
Verify an ML-DSA and an ECDSA signature over the same message.
Both signatures must cover message and both must be valid.
message is read twice: once to compute the ECDSA digest and once inside the ML-DSA verification, with the PKE running in between. The caller must not modify it for the duration of the call, or the two signatures can end up verifying different content while this still reports success.
Nothing binds the ECDSA and the ML-DSA public keys to each other. A domain separator in message binds the message to a specific use, not the two keys to a single identity; a caller that needs the keys bound must do so itself, for example with a certificate or transcript that names both.
| ::PSA_SUCCESS | Both signatures are valid. |
| ::PSA_ERROR_INVALID_SIGNATURE | At least one signature is invalid. |
| Other | PSA status codes on invalid arguments and internal errors. The ECDSA status is returned when both components fail. |