aboutsummaryrefslogtreecommitdiff
path: root/pw_crypto/public/pw_crypto/ecdsa.h
diff options
context:
space:
mode:
Diffstat (limited to 'pw_crypto/public/pw_crypto/ecdsa.h')
-rw-r--r--pw_crypto/public/pw_crypto/ecdsa.h41
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);