5 #include "sw/device/silicon_creator/lib/ownership/ecdsa.h"
11 #include "sw/device/silicon_creator/lib/drivers/hmac.h"
13 #include "sw/device/silicon_creator/lib/otbn_boot_services.h"
14 #elif USE_CRYPTOC == 1
17 #include "sw/vendor/cryptoc/include/cryptoc/p256.h"
18 #include "sw/vendor/cryptoc/include/cryptoc/p256_ecdsa.h"
21 OT_WEAK void __assert_func(
const char *file,
int line,
const char *func,
28 #error "No ECDSA implementation for lib/ownership."
31 rom_error_t ecdsa_init(
void) {
33 return otbn_boot_app_load();
34 #elif USE_CRYPTOC == 1
44 rom_error_t error = otbn_boot_sigverify(pubkey, signature, digest, rr);
45 if (error != kErrorOk) {
49 #elif USE_CRYPTOC == 1
50 const p256_int *x = (
const p256_int *)&pubkey->data[0];
51 const p256_int *y = (
const p256_int *)&pubkey->data[8];
52 const p256_int *r = (
const p256_int *)&signature->data[0];
53 const p256_int *s = (
const p256_int *)&signature->data[8];
54 const p256_int *message = (
const p256_int *)&digest->digest;
56 int ok = p256_ecdsa_verify(x, y, message, r, s);
64 const void *message,
size_t message_len) {
66 hmac_sha256(message, message_len, &digest);
67 return ecdsa_verify_digest(pubkey, signature, &digest);