1 #ifndef NDNPH_KEYCHAIN_HMAC_HPP
2 #define NDNPH_KEYCHAIN_HMAC_HPP
4 #include "../port/timingsafe/port.hpp"
17 explicit operator bool()
const {
18 return m_key !=
nullptr;
27 bool import(
const uint8_t* key,
size_t keyLen) {
36 ssize_t
sign(std::initializer_list<tlv::Value> chunks, uint8_t* sig)
const final {
37 bool ok = computeHmac(chunks, sig);
41 bool verify(std::initializer_list<tlv::Value> chunks,
const uint8_t* sig,
42 size_t sigLen)
const final {
44 return computeHmac(chunks, result) &&
49 bool computeHmac(std::initializer_list<tlv::Value> chunks, uint8_t* sig)
const {
50 if (m_key ==
nullptr) {
53 for (
const auto& chunk : chunks) {
54 m_key->update(chunk.begin(), chunk.size());
56 return m_key->final(sig);
60 mutable std::unique_ptr<port::HmacSha256> m_key;
HMAC-SHA256 algorithm, implemented with BearSSL.
Definition: sha256-bearssl.hpp:31
HMAC-SHA256 secret key.
Definition: hmac.hpp:14
size_t getMaxSigLen() const final
Definition: hmac.hpp:32
ssize_t sign(std::initializer_list< tlv::Value > chunks, uint8_t *sig) const final
Perform signing.
Definition: hmac.hpp:36
bool verify(std::initializer_list< tlv::Value > chunks, const uint8_t *sig, size_t sigLen) const final
Perform verification.
Definition: hmac.hpp:41
Definition: helper.hpp:64
Definition: helper.hpp:54
#define NDNPH_SHA256_LEN
SHA256 digest length.
Definition: common.hpp:34