RSAPSS#
RSASSA-PSS as defined in RFC 8017.
API Reference#
#include "Hacl_RSAPSS.h"
-
uint64_t *Hacl_RSAPSS_new_rsapss_load_skey(uint32_t modBits, uint32_t eBits, uint32_t dBits, uint8_t *nb, uint8_t *eb, uint8_t *db)#
Load a secret key from key parts.
- Parameters:
modBits – Count of bits in modulus (
n).eBits – Count of bits in
evalue.dBits – Count of bits in
dvalue.nb – Pointer to
ceil(modBits / 8)bytes where the modulus (n), in big-endian byte order, is read from.eb – Pointer to
ceil(modBits / 8)bytes where theevalue, in big-endian byte order, is read from.db – Pointer to
ceil(modBits / 8)bytes where thedvalue, in big-endian byte order, is read from.
- Returns:
Returns an allocated secret key upon success, otherwise,
NULLif key part arguments are invalid or memory allocation fails. Note: caller must take care tofree()the created key.
-
uint64_t *Hacl_RSAPSS_new_rsapss_load_pkey(uint32_t modBits, uint32_t eBits, uint8_t *nb, uint8_t *eb)#
Load a public key from key parts.
- Parameters:
modBits – Count of bits in modulus (
n).eBits – Count of bits in
evalue.nb – Pointer to
ceil(modBits / 8)bytes where the modulus (n), in big-endian byte order, is read from.eb – Pointer to
ceil(modBits / 8)bytes where theevalue, in big-endian byte order, is read from.
- Returns:
Returns an allocated public key upon success, otherwise,
NULLif key part arguments are invalid or memory allocation fails. Note: caller must take care tofree()the created key.
-
bool Hacl_RSAPSS_rsapss_sign(Spec_Hash_Definitions_hash_alg a, uint32_t modBits, uint32_t eBits, uint32_t dBits, uint64_t *skey, uint32_t saltLen, uint8_t *salt, uint32_t msgLen, uint8_t *msg, uint8_t *sgnt)#
Sign a message
msgand write the signature tosgnt.- Parameters:
a – Hash algorithm to use. Allowed values for
aare …Spec_Hash_Definitions_SHA2_256,
Spec_Hash_Definitions_SHA2_384, and
Spec_Hash_Definitions_SHA2_512.
modBits – Count of bits in the modulus (
n).eBits – Count of bits in
evalue.dBits – Count of bits in
dvalue.skey – Pointer to secret key created by
Hacl_RSAPSS_new_rsapss_load_skey.saltLen – Length of salt.
salt – Pointer to
saltLenbytes where the salt is read from.msgLen – Length of message.
msg – Pointer to
msgLenbytes where the message is read from.sgnt – Pointer to
ceil(modBits / 8)bytes where the signature is written to.
- Returns:
Returns true if and only if signing was successful.
-
bool Hacl_RSAPSS_rsapss_verify(Spec_Hash_Definitions_hash_alg a, uint32_t modBits, uint32_t eBits, uint64_t *pkey, uint32_t saltLen, uint32_t sgntLen, uint8_t *sgnt, uint32_t msgLen, uint8_t *msg)#
Verify the signature
sgntof a messagemsg.- Parameters:
a – Hash algorithm to use. Allowed values for
aare …Spec_Hash_Definitions_SHA2_256,
Spec_Hash_Definitions_SHA2_384, and
Spec_Hash_Definitions_SHA2_512.
modBits – Count of bits in the modulus (
n).eBits – Count of bits in
evalue.pkey – Pointer to public key created by
Hacl_RSAPSS_new_rsapss_load_pkey.saltLen – Length of salt.
sgntLen – Length of signature.
sgnt – Pointer to
sgntLenbytes where the signature is read from.msgLen – Length of message.
msg – Pointer to
msgLenbytes where the message is read from.
- Returns:
Returns true if and only if the signature is valid.
-
bool Hacl_RSAPSS_rsapss_skey_sign(Spec_Hash_Definitions_hash_alg a, uint32_t modBits, uint32_t eBits, uint32_t dBits, uint8_t *nb, uint8_t *eb, uint8_t *db, uint32_t saltLen, uint8_t *salt, uint32_t msgLen, uint8_t *msg, uint8_t *sgnt)#
Sign a message
msgand write the signature tosgnt.- Parameters:
a – Hash algorithm to use. Allowed values for
aare …Spec_Hash_Definitions_SHA2_256,
Spec_Hash_Definitions_SHA2_384, and
Spec_Hash_Definitions_SHA2_512.
modBits – Count of bits in the modulus (
n).eBits – Count of bits in
evalue.dBits – Count of bits in
dvalue.nb – Pointer to
ceil(modBits / 8)bytes where the modulus (n), in big-endian byte order, is read from.eb – Pointer to
ceil(modBits / 8)bytes where theevalue, in big-endian byte order, is read from.db – Pointer to
ceil(modBits / 8)bytes where thedvalue, in big-endian byte order, is read from.saltLen – Length of salt.
salt – Pointer to
saltLenbytes where the salt is read from.msgLen – Length of message.
msg – Pointer to
msgLenbytes where the message is read from.sgnt – Pointer to
ceil(modBits / 8)bytes where the signature is written to.
- Returns:
Returns true if and only if signing was successful.
-
bool Hacl_RSAPSS_rsapss_pkey_verify(Spec_Hash_Definitions_hash_alg a, uint32_t modBits, uint32_t eBits, uint8_t *nb, uint8_t *eb, uint32_t saltLen, uint32_t sgntLen, uint8_t *sgnt, uint32_t msgLen, uint8_t *msg)#
Verify the signature
sgntof a messagemsg.- Parameters:
a – Hash algorithm to use. Allowed values for
aare …Spec_Hash_Definitions_SHA2_256,
Spec_Hash_Definitions_SHA2_384, and
Spec_Hash_Definitions_SHA2_512.
modBits – Count of bits in the modulus (
n).eBits – Count of bits in
evalue.nb – Pointer to
ceil(modBits / 8)bytes where the modulus (n), in big-endian byte order, is read from.eb – Pointer to
ceil(modBits / 8)bytes where theevalue, in big-endian byte order, is read from.saltLen – Length of salt.
sgntLen – Length of signature.
sgnt – Pointer to
sgntLenbytes where the signature is read from.msgLen – Length of message.
msg – Pointer to
msgLenbytes where the message is read from.
- Returns:
Returns true if and only if the signature is valid.