9 #ifndef NDN_SECURITY_ECC_H_ 10 #define NDN_SECURITY_ECC_H_ 12 #include "../ndn-error-code.h" 38 uint8_t* output_value, uint32_t output_max_size,
40 uint8_t ecdsa_type, uint32_t* output_used_size);
42 const uint8_t* sig_value, uint32_t sig_size,
49 uint8_t curve_type, uint8_t* output,
50 uint32_t output_size);
130 const uint8_t* key_value, uint32_t key_size);
144 uint32_t key_size, uint8_t curve_type, uint32_t key_id)
160 const uint8_t* key_value, uint32_t key_size);
174 uint32_t key_size, uint8_t curve_type, uint32_t key_id)
201 uint8_t curve_type, uint32_t key_id);
214 uint8_t curve_type, uint8_t* output, uint32_t output_size);
233 uint8_t* output_value, uint32_t output_max_size,
235 uint8_t ecdsa_type, uint32_t* output_used_size);
249 const uint8_t* sig_value, uint32_t sig_size,
258 #endif // NDN_SECURITY_ECC_H_ ndn_ecc_get_pub_key_value_impl get_pub_key_value
Definition: ndn-lite-ecc.h:58
int(* ndn_rng_impl)(uint8_t *dest, unsigned size)
ndn_rng_impl type
Definition: ndn-lite-rng.h:30
ndn_ecc_make_key_impl make_key
Definition: ndn-lite-ecc.h:62
uint32_t key_id
The KEY ID of current key.
Definition: ndn-lite-ecc.h:91
const uint8_t *(* ndn_ecc_get_pub_key_value_impl)(const abstract_ecc_pub_key_t *pub_key)
Definition: ndn-lite-ecc.h:31
ndn_ecc_dh_shared_secret_impl dh_shared_secret
Definition: ndn-lite-ecc.h:63
int ndn_ecdsa_sign(const uint8_t *input_value, uint32_t input_size, uint8_t *output_value, uint32_t output_max_size, const ndn_ecc_prv_t *ecc_prv_key, uint8_t ecdsa_type, uint32_t *output_used_size)
Sign a buffer using ECDSA algorithm.
Definition: ndn-lite-ecc.c:79
The structure to represent the backend implementation.
Definition: ndn-lite-ecc.h:55
uint32_t ndn_ecc_get_prv_key_size(const ndn_ecc_prv_t *prv_key)
Get private key size in unit of byte.
Definition: ndn-lite-ecc.c:28
The structure to keep an ECC private key.
Definition: ndn-lite-ecc.h:86
abstract_ecc_pub_key_t abs_key
Definition: ndn-lite-ecc.h:72
Definition: ndn-lite-default-ecc-impl.h:23
uint32_t key_id
The KEY ID of current key.
Definition: ndn-lite-ecc.h:76
ndn_ecc_load_pub_key_impl load_pub_key
Definition: ndn-lite-ecc.h:59
uint8_t key_value[NDN_SEC_ECC_MAX_PRIVATE_KEY_SIZE]
Definition: ndn-lite-default-ecc-impl.h:24
ndn_ecc_set_rng_impl set_rng
Definition: ndn-lite-ecc.h:61
int(* ndn_ecc_load_prv_key_impl)(abstract_ecc_prv_key_t *prv_key, const uint8_t *key_value, uint32_t key_size)
Definition: ndn-lite-ecc.h:34
int ndn_ecc_set_rng(ndn_rng_impl rng)
Set RNG function for backend implementation library, which need this to perform non-deterministic sig...
Definition: ndn-lite-ecc.c:54
int ndn_ecc_load_prv_key(ndn_ecc_prv_t *prv_key, const uint8_t *key_value, uint32_t key_size)
Load in-memory key bits into an NDN private key.
Definition: ndn-lite-ecc.c:47
int(* ndn_ecdsa_verify_impl)(const uint8_t *payload_value, uint32_t payload_size, const uint8_t *sig_value, uint32_t sig_size, const abstract_ecc_pub_key_t *pub_key, uint8_t ecdsa_type)
Definition: ndn-lite-ecc.h:41
uint32_t ndn_ecc_get_pub_key_size(const ndn_ecc_pub_t *pub_key)
Get public key size in unit of byte.
Definition: ndn-lite-ecc.c:22
ndn_ecc_get_prv_key_size_impl get_prv_key_size
Definition: ndn-lite-ecc.h:57
int(* ndn_ecc_dh_shared_secret_impl)(const abstract_ecc_pub_key_t *ecc_pub, const abstract_ecc_prv_key_t *ecc_prv, uint8_t curve_type, uint8_t *output, uint32_t output_size)
Definition: ndn-lite-ecc.h:47
static int ndn_ecc_prv_init(ndn_ecc_prv_t *ecc_prv, const uint8_t *key_value, uint32_t key_size, uint8_t curve_type, uint32_t key_id)
Initialize an ECC private key.
Definition: ndn-lite-ecc.h:173
struct ndn_ecc_pub ndn_ecc_pub_t
The structure to keep an ECC public key.
int ndn_ecc_load_pub_key(ndn_ecc_pub_t *pub_key, const uint8_t *key_value, uint32_t key_size)
Load in-memory key bits into an NDN public key.
Definition: ndn-lite-ecc.c:40
ndn_ecc_backend_t * ndn_ecc_get_backend(void)
Definition: ndn-lite-ecc.c:16
int ndn_ecc_make_key(ndn_ecc_pub_t *ecc_pub, ndn_ecc_prv_t *ecc_prv, uint8_t curve_type, uint32_t key_id)
Generate an ECC key pair with specific curve type and key id.
Definition: ndn-lite-ecc.c:60
Definition: ndn-lite-default-ecc-impl.h:18
uint32_t key_size
Definition: ndn-lite-default-ecc-impl.h:25
uint8_t curve_type
The curve type of current key.
Definition: ndn-lite-ecc.h:80
abstract_ecc_prv_key_t abs_key
Definition: ndn-lite-ecc.h:87
int(* ndn_ecc_set_rng_impl)(ndn_rng_impl rng)
Definition: ndn-lite-ecc.h:36
int(* ndn_ecc_make_key_impl)(abstract_ecc_pub_key_t *pub_key, abstract_ecc_prv_key_t *prv_key, uint8_t curve_type)
Definition: ndn-lite-ecc.h:44
int(* ndn_ecc_load_pub_key_impl)(abstract_ecc_pub_key_t *pub_key, const uint8_t *key_value, uint32_t key_size)
Definition: ndn-lite-ecc.h:32
struct ndn_ecc_prv ndn_ecc_prv_t
The structure to keep an ECC private key.
struct ndn_ecc_backend ndn_ecc_backend_t
The structure to represent the backend implementation.
int(* ndn_ecdsa_sign_impl)(const uint8_t *payload_value, uint32_t payload_size, uint8_t *output_value, uint32_t output_max_size, const abstract_ecc_prv_key_t *prv_key, uint8_t ecdsa_type, uint32_t *output_used_size)
Definition: ndn-lite-ecc.h:37
static int ndn_ecc_pub_init(ndn_ecc_pub_t *ecc_pub, const uint8_t *key_value, uint32_t key_size, uint8_t curve_type, uint32_t key_id)
Initialize an ECC public key.
Definition: ndn-lite-ecc.h:143
ndn_ecdsa_sign_impl ecdsa_sign
Definition: ndn-lite-ecc.h:64
uint32_t(* ndn_ecc_get_pub_key_size_impl)(const abstract_ecc_pub_key_t *pub_key)
The APIs that are supposed to be implemented by the backend.
Definition: ndn-lite-ecc.h:29
int ndn_ecc_dh_shared_secret(const ndn_ecc_pub_t *ecc_pub, const ndn_ecc_prv_t *ecc_prv, uint8_t curve_type, uint8_t *output, uint32_t output_size)
Negotiate a shared secret wih given ECC public and private keys via ECDH.
Definition: ndn-lite-ecc.c:71
ndn_ecdsa_verify_impl ecdsa_verify
Definition: ndn-lite-ecc.h:65
ndn_ecc_get_pub_key_size_impl get_pub_key_size
Definition: ndn-lite-ecc.h:56
uint32_t(* ndn_ecc_get_prv_key_size_impl)(const abstract_ecc_prv_key_t *prv_key)
Definition: ndn-lite-ecc.h:30
ndn_ecc_load_prv_key_impl load_prv_key
Definition: ndn-lite-ecc.h:60
uint8_t curve_type
The curve type of current key.
Definition: ndn-lite-ecc.h:95
The structure to keep an ECC public key.
Definition: ndn-lite-ecc.h:71
const uint8_t * ndn_ecc_get_pub_key_value(const ndn_ecc_pub_t *pub_key)
Get public key bytes.
Definition: ndn-lite-ecc.c:34
int ndn_ecdsa_verify(const uint8_t *input_value, uint32_t input_size, const uint8_t *sig_value, uint32_t sig_size, const ndn_ecc_pub_t *ecc_pub_key, uint8_t ecdsa_type)
Verify an ECDSA signature in ASN.1 DER format.
Definition: ndn-lite-ecc.c:95