2023-12-13 13:21:29 +01:00
|
|
|
#pragma once
|
|
|
|
|
|
|
|
#include "relay/interface/CryptoSource.h"
|
|
|
|
#include "ESP32NoiseSource.h"
|
|
|
|
|
2024-02-10 11:31:10 +01:00
|
|
|
class ESP32CryptoSource: public CryptoSource {
|
2023-12-13 13:21:29 +01:00
|
|
|
|
|
|
|
public:
|
|
|
|
|
|
|
|
ESP32CryptoSource(const char* rngInitTag);
|
|
|
|
|
|
|
|
bool isAvailable() override {
|
|
|
|
return true;
|
|
|
|
}
|
|
|
|
|
|
|
|
/**
|
|
|
|
* @brief Create a new random private key
|
|
|
|
*
|
|
|
|
* @param key The output buffer where the key will be stored
|
|
|
|
* @return true The key was created
|
|
|
|
* @return false The key could not be created
|
|
|
|
*/
|
|
|
|
bool createPrivateKey(PrivateKey* key) override;
|
|
|
|
|
|
|
|
/**
|
|
|
|
* @brief Create a the public key corresponding to a private key
|
|
|
|
*
|
|
|
|
* @param privateKey The private key to use
|
|
|
|
* @param publicKey The output buffer where the public key will be stored
|
|
|
|
* @return true The key was created
|
|
|
|
* @return false The key could not be created
|
|
|
|
*/
|
|
|
|
bool createPublicKey(const PrivateKey* privateKey, PublicKey* publicKey) override;
|
|
|
|
|
|
|
|
/**
|
|
|
|
* @brief Sign a message
|
|
|
|
*
|
|
|
|
* @param message The message payload to include in the message
|
|
|
|
* @param length The length of the payload
|
|
|
|
* @param signature The output buffer where the signature is written
|
|
|
|
* @return true The signature was created
|
|
|
|
* @return false The signature creation failed
|
|
|
|
*/
|
|
|
|
bool sign(const uint8_t *message, uint16_t length, Signature* signature, const PrivateKey* privateKey, const PublicKey* publicKey) override;
|
|
|
|
|
|
|
|
/**
|
|
|
|
* @brief Verify a message
|
|
|
|
*
|
|
|
|
* @param signature The message signature
|
|
|
|
* @param publicKey The public key with which the message was signed
|
|
|
|
* @param message The pointer to the message data
|
|
|
|
* @param length The length of the message
|
|
|
|
* @return true The signature is valid
|
|
|
|
* @return false The signature is invalid
|
|
|
|
*/
|
|
|
|
bool
|
|
|
|
verify(const Signature* signature, const PublicKey* publicKey, const void *message, uint16_t length) override;
|
|
|
|
|
|
|
|
private:
|
|
|
|
|
|
|
|
ESP32NoiseSource noise{};
|
|
|
|
};
|