40#ifndef MPDC_CERTIFICATE_H
41#define MPDC_CERTIFICATE_H
536#if defined(MPDC_DEBUG_TESTS_RUN)
548MPDC_EXPORT_API
bool mpdc_certificate_functions_test();
MPDC_EXPORT_API bool mpdc_certificate_child_message_verify(uint8_t *message, size_t *msglen, const uint8_t *signature, size_t siglen, const mpdc_child_certificate *child)
Verify a message signature using a child certificate.
Definition certificate.c:589
MPDC_EXPORT_API void mpdc_certificate_root_deserialize(mpdc_root_certificate *root, const uint8_t *input)
Deserialize a root certificate from a byte array.
Definition certificate.c:962
MPDC_EXPORT_API void mpdc_certificate_root_erase(mpdc_root_certificate *root)
Delete (erase) a root certificate.
Definition certificate.c:1081
MPDC_EXPORT_API bool mpdc_certificate_signature_verify_message(const uint8_t *message, size_t msglen, const uint8_t *signature, size_t siglen, const uint8_t *pubkey)
Verify a message signature using the asymmetric signature scheme.
Definition certificate.c:1304
MPDC_EXPORT_API void mpdc_certificate_root_hash(uint8_t *output, const mpdc_root_certificate *root)
Compute the cryptographic hash of a root certificate.
Definition certificate.c:1122
MPDC_EXPORT_API bool mpdc_certificate_root_struct_to_file(const char *fpath, const mpdc_root_certificate *root)
Write a root certificate structure to a file.
Definition certificate.c:1254
MPDC_EXPORT_API void mpdc_certificate_child_erase(mpdc_child_certificate *child)
Delete (erase) a child certificate.
Definition certificate.c:485
MPDC_EXPORT_API size_t mpdc_certificate_designation_encode(char *sdsg, mpdc_network_designations designation)
Encode the network-designation enumerator into a string.
Definition certificate.c:743
MPDC_EXPORT_API size_t mpdc_certificate_signature_sign_message(uint8_t *signature, const uint8_t *message, size_t msglen, const uint8_t *prikey)
Sign a message using the asymmetric signature scheme.
Definition certificate.c:1284
MPDC_EXPORT_API size_t mpdc_certificate_root_sign(mpdc_child_certificate *child, const mpdc_root_certificate *root, const uint8_t *rsigkey)
Sign a child certificate with the root certificate.
Definition certificate.c:1202
MPDC_EXPORT_API bool mpdc_certificate_root_file_to_struct(const char *fpath, mpdc_root_certificate *root)
Copy a serialized root certificate from a file into a root certificate structure.
Definition certificate.c:1096
MPDC_EXPORT_API void mpdc_certificate_child_hash(uint8_t *output, const mpdc_child_certificate *child)
Compute the cryptographic hash of a child certificate.
Definition certificate.c:529
MPDC_EXPORT_API bool mpdc_certificate_algorithm_enabled(mpdc_configuration_sets conf)
Test if the specified protocol-set is enabled on this system.
Definition certificate.c:154
MPDC_EXPORT_API void mpdc_certificate_signature_generate_keypair(mpdc_signature_keypair *keypair)
Generate and encode an asymmetric signature scheme keypair.
Definition certificate.c:1274
MPDC_EXPORT_API void mpdc_certificate_child_create(mpdc_child_certificate *child, const uint8_t *pubkey, const mpdc_certificate_expiration *expiration, const char *issuer, mpdc_network_designations designation)
Create a child certificate.
Definition certificate.c:213
MPDC_EXPORT_API bool mpdc_certificate_child_is_valid(const mpdc_child_certificate *child)
Test a child certificate for a valid format and expiration.
Definition certificate.c:557
MPDC_EXPORT_API bool mpdc_certificate_signature_hash_verify(const uint8_t *signature, size_t siglen, const uint8_t *message, size_t msglen, const mpdc_child_certificate *lcert)
Verify that a signature hash matches a computed message hash using a child certificate.
Definition certificate.c:639
MPDC_EXPORT_API void mpdc_certificate_expiration_set_seconds(mpdc_certificate_expiration *expiration, uint64_t start, uint64_t period)
Set the expiration seconds on a certificate expiration structure.
Definition certificate.c:797
MPDC_EXPORT_API bool mpdc_certificate_root_is_valid(const mpdc_root_certificate *root)
Validate a root certificate.
Definition certificate.c:1149
MPDC_EXPORT_API void mpdc_certificate_root_create(mpdc_root_certificate *root, const uint8_t *pubkey, const mpdc_certificate_expiration *expiration, const char *issuer)
Create a root certificate.
Definition certificate.c:878
MPDC_EXPORT_API bool mpdc_certificate_root_compare(const mpdc_root_certificate *a, const mpdc_root_certificate *b)
Compare two root certificates for equivalence.
Definition certificate.c:851
MPDC_EXPORT_API void mpdc_certificate_expiration_set_days(mpdc_certificate_expiration *expiration, uint16_t start, uint16_t duration)
Set the expiration days on a certificate expiration structure.
Definition certificate.c:786
MPDC_EXPORT_API bool mpdc_certificate_root_signature_verify(const mpdc_child_certificate *child, const mpdc_root_certificate *root)
Verify a child certificate against a root certificate.
Definition certificate.c:1224
MPDC_EXPORT_API void mpdc_certificate_child_copy(mpdc_child_certificate *output, const mpdc_child_certificate *input)
Copy a child certificate structure.
Definition certificate.c:194
MPDC_EXPORT_API void mpdc_certificate_child_deserialize(mpdc_child_certificate *child, const uint8_t *input)
Deserialize a child certificate from a byte array.
Definition certificate.c:315
MPDC_EXPORT_API void mpdc_certificate_child_serialize(uint8_t *output, const mpdc_child_certificate *child)
Serialize a child certificate into a contiguous byte array.
Definition certificate.c:610
MPDC_EXPORT_API mpdc_configuration_sets mpdc_certificate_algorithm_decode(const char *name)
Decode the string algorithm-set number to the enumerated representation.
Definition certificate.c:14
MPDC_EXPORT_API bool mpdc_certificate_root_decode(mpdc_root_certificate *root, const char *enck)
Decode a root certificate string into a certificate structure.
Definition certificate.c:896
MPDC_EXPORT_API bool mpdc_certificate_child_struct_to_file(const char *fpath, const mpdc_child_certificate *child)
Write a child certificate structure to a file.
Definition certificate.c:671
MPDC_EXPORT_API bool mpdc_certificate_child_are_equal(const mpdc_child_certificate *a, const mpdc_child_certificate *b)
Compare two child certificates for equivalence.
Definition certificate.c:161
MPDC_EXPORT_API bool mpdc_certificate_child_decode(mpdc_child_certificate *child, const char enck[MPDC_CHILD_CERTIFICATE_STRING_SIZE])
Decode a child certificate string into a certificate structure.
Definition certificate.c:233
MPDC_EXPORT_API void mpdc_certificate_algorithm_encode(char *name, mpdc_configuration_sets conf)
Encode the protocol-set enumerator into its string form.
Definition certificate.c:89
MPDC_EXPORT_API bool mpdc_certificate_child_file_to_struct(const char *fpath, mpdc_child_certificate *child)
Copy a serialized certificate from a file into a child certificate structure.
Definition certificate.c:503
MPDC_EXPORT_API mpdc_network_designations mpdc_certificate_designation_decode(const char *sdsg)
Decode the network-designation string to its enumerated representation.
Definition certificate.c:696
MPDC_EXPORT_API size_t mpdc_certificate_root_encode(char *enck, const mpdc_root_certificate *root)
Encode a public root certificate into a human-readable string.
Definition certificate.c:985
MPDC_EXPORT_API size_t mpdc_certificate_child_encode(char enck[MPDC_CHILD_CERTIFICATE_STRING_SIZE], const mpdc_child_certificate *child)
Encode a public child certificate into a human-readable string.
Definition certificate.c:344
MPDC_EXPORT_API size_t mpdc_certificate_message_hash_sign(uint8_t *signature, const uint8_t *sigkey, const uint8_t *message, size_t msglen)
Hash a message and sign the hash.
Definition certificate.c:829
MPDC_EXPORT_API bool mpdc_certificate_expiration_time_verify(const mpdc_certificate_expiration *expiration)
Verify the expiration time against the current UTC time.
Definition certificate.c:808
MPDC_EXPORT_API void mpdc_certificate_root_serialize(uint8_t *output, const mpdc_root_certificate *root)
Serialize a root certificate into a contiguous byte array.
Definition certificate.c:1179
MPDC Common Definitions and Protocol Configuration.
#define MPDC_CHILD_CERTIFICATE_STRING_SIZE
The encoded certificate string length.
Definition mpdc.h:304
mpdc_configuration_sets
The MPDC algorithm configuration sets.
Definition mpdc.h:1091
mpdc_network_designations
The MPDC device designation.
Definition mpdc.h:1114
The certificate expiration time structure.
Definition mpdc.h:1283
The child certificate structure.
Definition mpdc.h:1293
The root certificate structure.
Definition mpdc.h:1411
The MPDC asymmetric signature scheme key container.
Definition mpdc.h:1436