30#ifndef ESP32_CRYPTO_PROVIDER_H
31#define ESP32_CRYPTO_PROVIDER_H
33#include "CW_CryptoProvider.h"
76 bool sha256(
const uint8_t* data,
size_t len, uint8_t* out)
override;
90 bool sha512(
const uint8_t* data,
size_t len, uint8_t* out)
override;
111 uint16_t
aesCbcEncrypt(
const uint8_t* in, uint16_t len, uint8_t* out,
112 const uint8_t* key, uint8_t keyLen,
113 uint8_t* iv,
bool bitPadding)
override;
133 uint16_t
aesCbcDecrypt(uint8_t* in, uint16_t len, uint8_t* out,
134 const uint8_t* key, uint8_t keyLen,
135 uint8_t* iv,
bool bitPadding)
override;
152 bool ecdh(
const uint8_t* pubKey,
const uint8_t* privKey,
153 uint8_t* secret, CW_Curve curve)
override;
171 bool makeKey(uint8_t* pubKey, uint8_t* privKey,
172 CW_Curve curve)
override;
190 bool random(uint8_t* dest,
unsigned size)
override;
208 bool ecdsaVerify(
const uint8_t* pubKey64,
const uint8_t* hash,
209 size_t hashLen,
const uint8_t* sig,
210 CW_Curve curve)
override;
CW_CryptoProvider backed by mbedTLS and the ESP32 hardware TRNG.
bool ecdh(const uint8_t *pubKey, const uint8_t *privKey, uint8_t *secret, CW_Curve curve) override
Compute an ECDH shared secret.
bool makeKey(uint8_t *pubKey, uint8_t *privKey, CW_Curve curve) override
Generate an ephemeral EC key pair.
bool random(uint8_t *dest, unsigned size) override
Fill a buffer with cryptographically random bytes.
~ESP32CryptoProvider() override
Default destructor.
bool ecdsaVerify(const uint8_t *pubKey64, const uint8_t *hash, size_t hashLen, const uint8_t *sig, CW_Curve curve) override
Verify an ECDSA signature.
uint16_t aesCbcDecrypt(uint8_t *in, uint16_t len, uint8_t *out, const uint8_t *key, uint8_t keyLen, uint8_t *iv, bool bitPadding) override
Decrypt a buffer with AES-CBC.
bool sha512(const uint8_t *data, size_t len, uint8_t *out) override
Compute SHA-512 over a contiguous buffer.
bool sha256(const uint8_t *data, size_t len, uint8_t *out) override
Compute SHA-256 over a contiguous buffer.
uint16_t aesCbcEncrypt(const uint8_t *in, uint16_t len, uint8_t *out, const uint8_t *key, uint8_t keyLen, uint8_t *iv, bool bitPadding) override
Encrypt a buffer with AES-CBC.