9 #ifndef NDN_SECURITY_HMAC_H_ 10 #define NDN_SECURITY_HMAC_H_ 12 #include "../ndn-error-code.h" 34 uint8_t* hmac_result);
36 const uint8_t* input_value, uint32_t input_size,
37 const uint8_t* personalization, uint32_t personalization_size,
38 const uint8_t* seed_value, uint32_t seed_size,
39 const uint8_t* additional_value, uint32_t additional_size,
41 typedef int (*
ndn_hkdf_impl)(
const uint8_t* input_value, uint32_t input_size,
42 uint8_t* output_value, uint32_t output_size,
43 const uint8_t* seed_value, uint32_t seed_size);
45 uint8_t* output_value, uint32_t output_size,
46 const uint8_t* seed_value, uint32_t seed_size,
47 const uint8_t* additional_value, uint32_t additional_size);
98 const uint8_t* key_value, uint32_t key_size);
110 uint32_t key_size, uint32_t key_id)
113 hmac_key->
key_id = key_id;
124 uint8_t* hmac_result);
139 ndn_hmac_sign(
const uint8_t* input_value, uint32_t input_size,
140 uint8_t* output_value, uint32_t output_max_size,
142 uint32_t* output_used_size);
156 const uint8_t* sig_value, uint32_t sig_size,
175 const uint8_t* input_value, uint32_t input_size,
176 const uint8_t* personalization, uint32_t personalization_size,
177 const uint8_t* seed_value, uint32_t seed_size,
178 const uint8_t* additional_value, uint32_t additional_size,
193 ndn_hkdf(
const uint8_t* input_value, uint32_t input_size,
194 uint8_t* output_value, uint32_t output_size,
195 const uint8_t* seed_value, uint32_t seed_size);
211 ndn_hmacprng(
const uint8_t* input_value, uint32_t input_size,
212 uint8_t* output_value, uint32_t output_size,
213 const uint8_t* seed_value, uint32_t seed_size,
214 const uint8_t* additional_value, uint32_t additional_size);
220 #endif // NDN_SECURITY_HMAC_H_ int ndn_hkdf(const uint8_t *input_value, uint32_t input_size, uint8_t *output_value, uint32_t output_size, const uint8_t *seed_value, uint32_t seed_size)
Use HMAC-KDF (key derivation function) to generate a secure HMAC key.
Definition: ndn-lite-hmac.c:100
The structure to keep a HMAC key.
Definition: ndn-lite-hmac.h:65
ndn_hmac_sha256_impl hmac_sha256
Definition: ndn-lite-hmac.h:56
abstract_hmac_key_t abs_key
Definition: ndn-lite-hmac.h:66
uint32_t ndn_hmac_get_key_size(const ndn_hmac_key_t *hmac_key)
Get hmac key size in unit of byte.
Definition: ndn-lite-hmac.c:25
ndn_hmac_get_key_value_impl get_key_value
Definition: ndn-lite-hmac.h:54
uint32_t(* ndn_hmac_get_key_size_impl)(const abstract_hmac_key_t *hmac_key)
The APIs that are supposed to be implemented by the backend.
Definition: ndn-lite-hmac.h:28
int ndn_hmac_make_key(ndn_hmac_key_t *key, uint32_t key_id, const uint8_t *input_value, uint32_t input_size, const uint8_t *personalization, uint32_t personalization_size, const uint8_t *seed_value, uint32_t seed_size, const uint8_t *additional_value, uint32_t additional_size, uint32_t salt_size)
Generate a HMAC key with specific key size and key id.
Definition: ndn-lite-hmac.c:83
int(* ndn_hmacprng_impl)(const uint8_t *input_value, uint32_t input_size, uint8_t *output_value, uint32_t output_size, const uint8_t *seed_value, uint32_t seed_size, const uint8_t *additional_value, uint32_t additional_size)
Definition: ndn-lite-hmac.h:44
int ndn_hmac_load_key(ndn_hmac_key_t *hmac_key, const uint8_t *key_value, uint32_t key_size)
Load in-memory key bits into an NDN hmac key.
Definition: ndn-lite-hmac.c:37
int(* ndn_hmac_make_key_impl)(abstract_hmac_key_t *key, const uint8_t *input_value, uint32_t input_size, const uint8_t *personalization, uint32_t personalization_size, const uint8_t *seed_value, uint32_t seed_size, const uint8_t *additional_value, uint32_t additional_size, uint32_t salt_size)
Definition: ndn-lite-hmac.h:35
ndn_hmac_load_key_impl load_key
Definition: ndn-lite-hmac.h:55
const uint8_t *(* ndn_hmac_get_key_value_impl)(const abstract_hmac_key_t *hmac_key)
Definition: ndn-lite-hmac.h:29
uint32_t key_size
The key size of key bytes.
Definition: ndn-lite-default-hmac-impl.h:23
struct ndn_hmac_backend ndn_hmac_backend_t
The structure to represent the backend implementation.
int(* ndn_hmac_sha256_impl)(const void *payload, uint32_t payload_length, const abstract_hmac_key_t *hmac_key, uint8_t *hmac_result)
Definition: ndn-lite-hmac.h:32
int ndn_hmacprng(const uint8_t *input_value, uint32_t input_size, uint8_t *output_value, uint32_t output_size, const uint8_t *seed_value, uint32_t seed_size, const uint8_t *additional_value, uint32_t additional_size)
Use HMAC-PRNG algorithm to generate pseudo-random bytes.
Definition: ndn-lite-hmac.c:110
struct ndn_hmac_key ndn_hmac_key_t
The structure to keep a HMAC key.
int(* ndn_hmac_load_key_impl)(abstract_hmac_key_t *hmac_key, const uint8_t *key_value, uint32_t key_size)
Definition: ndn-lite-hmac.h:30
Definition: ndn-lite-default-hmac-impl.h:15
ndn_hmac_make_key_impl make_key
Definition: ndn-lite-hmac.h:57
ndn_hmac_backend_t * ndn_hmac_get_backend(void)
Definition: ndn-lite-hmac.c:19
static int ndn_hmac_key_init(ndn_hmac_key_t *hmac_key, const uint8_t *key_value, uint32_t key_size, uint32_t key_id)
Initialize a HMAC key.
Definition: ndn-lite-hmac.h:109
int ndn_hmac_sha256(const void *payload, uint32_t payload_length, const ndn_hmac_key_t *hmac_key, uint8_t *hmac_result)
Generate HMAC using sha256 digest algorithm.
Definition: ndn-lite-hmac.c:44
ndn_hmac_get_key_size_impl get_key_size
Definition: ndn-lite-hmac.h:53
ndn_hkdf_impl hkdf
Definition: ndn-lite-hmac.h:58
uint8_t key_value[32]
The key bytes buffer of current key.
Definition: ndn-lite-default-hmac-impl.h:19
int(* ndn_hkdf_impl)(const uint8_t *input_value, uint32_t input_size, uint8_t *output_value, uint32_t output_size, const uint8_t *seed_value, uint32_t seed_size)
Definition: ndn-lite-hmac.h:41
The structure to represent the backend implementation.
Definition: ndn-lite-hmac.h:52
const uint8_t * ndn_hmac_get_key_value(const ndn_hmac_key_t *hmac_key)
Get hmac key bytes.
Definition: ndn-lite-hmac.c:31
int ndn_hmac_sign(const uint8_t *input_value, uint32_t input_size, uint8_t *output_value, uint32_t output_max_size, const ndn_hmac_key_t *hmac_key, uint32_t *output_used_size)
Sign a buffer using HMAC algorithm.
Definition: ndn-lite-hmac.c:51
int ndn_hmac_verify(const uint8_t *input_value, uint32_t input_size, const uint8_t *sig_value, uint32_t sig_size, const ndn_hmac_key_t *hmac_key)
Verify a HMAC signature.
Definition: ndn-lite-hmac.c:67
uint32_t key_id
The KEY ID of current key.
Definition: ndn-lite-hmac.h:70
ndn_hmacprng_impl hmacprng
Definition: ndn-lite-hmac.h:59