63 lines
1.9 KiB
C
63 lines
1.9 KiB
C
|
#pragma once
|
||
|
|
||
|
#include "relay/interface/CryptoSource.h"
|
||
|
#include "ESP32NoiseSource.h"
|
||
|
|
||
|
class ESP32CryptoSource: CryptoSource {
|
||
|
|
||
|
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{};
|
||
|
};
|