diff options
Diffstat (limited to 'pw_crypto/public/pw_crypto/ecdsa.h')
-rw-r--r-- | pw_crypto/public/pw_crypto/ecdsa.h | 41 |
1 files changed, 29 insertions, 12 deletions
diff --git a/pw_crypto/public/pw_crypto/ecdsa.h b/pw_crypto/public/pw_crypto/ecdsa.h index 3aa3766b4..38326db1b 100644 --- a/pw_crypto/public/pw_crypto/ecdsa.h +++ b/pw_crypto/public/pw_crypto/ecdsa.h @@ -19,18 +19,35 @@ namespace pw::crypto::ecdsa { -// VerifyP256Signature verifies the `signature` of `digest` using `public_key`. -// -// `public_key` is a byte string in SEC 1 uncompressed form (0x04||X||Y), which -// is exactly 65 bytes. Compressed forms (02/03||X) *may* not be supported -// by some backends, e.g. Mbed TLS. -// -// `digest` is a raw byte string, truncated to 32 bytes. -// -// `signature` is a raw byte string (r||s) of exactly 64 bytes. -// -// Returns Status::OkStatus() for a successful verification, or an error Status -// otherwise. +/// Verifies the `signature` of `digest` using `public_key`. +/// +/// Example: +/// +/// @code{.cpp} +/// #include "pw_crypto/sha256.h" +/// +/// // Verify a digital signature signed with ECDSA over the NIST P256 curve. +/// std::byte digest[32]; +/// if (!pw::crypto::sha256::Hash(message, digest).ok()) { +/// // handle errors. +/// } +/// +/// if (!pw::crypto::ecdsa::VerifyP256Signature(public_key, digest, +/// signature).ok()) { +/// // handle errors. +/// } +/// @endcode +/// +/// @param[in] public_key A byte string in SEC 1 uncompressed form +/// ``(0x04||X||Y)``, which is exactly 65 bytes. Compressed forms +/// ``(02/03||X)`` *may* not be supported by some backends, e.g. Mbed TLS. +/// +/// @param[in] digest A raw byte string, truncated to 32 bytes. +/// +/// @param[in] signature A raw byte string ``(r||s)`` of exactly 64 bytes. +/// +/// @returns @pw_status{OK} for a successful verification, or an error +/// ``Status`` otherwise. Status VerifyP256Signature(ConstByteSpan public_key, ConstByteSpan digest, ConstByteSpan signature); |