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
e
value.dBits – Count of bits in
d
value.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 thee
value, in big-endian byte order, is read from.db – Pointer to
ceil(modBits / 8)
bytes where thed
value, in big-endian byte order, is read from.
- Returns:
Returns an allocated secret key upon success, otherwise,
NULL
if 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
e
value.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 thee
value, in big-endian byte order, is read from.
- Returns:
Returns an allocated public key upon success, otherwise,
NULL
if 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
msg
and write the signature tosgnt
.- Parameters:
a – Hash algorithm to use. Allowed values for
a
are …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
e
value.dBits – Count of bits in
d
value.skey – Pointer to secret key created by
Hacl_RSAPSS_new_rsapss_load_skey
.saltLen – Length of salt.
salt – Pointer to
saltLen
bytes where the salt is read from.msgLen – Length of message.
msg – Pointer to
msgLen
bytes 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
sgnt
of a messagemsg
.- Parameters:
a – Hash algorithm to use. Allowed values for
a
are …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
e
value.pkey – Pointer to public key created by
Hacl_RSAPSS_new_rsapss_load_pkey
.saltLen – Length of salt.
sgntLen – Length of signature.
sgnt – Pointer to
sgntLen
bytes where the signature is read from.msgLen – Length of message.
msg – Pointer to
msgLen
bytes 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
msg
and write the signature tosgnt
.- Parameters:
a – Hash algorithm to use. Allowed values for
a
are …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
e
value.dBits – Count of bits in
d
value.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 thee
value, in big-endian byte order, is read from.db – Pointer to
ceil(modBits / 8)
bytes where thed
value, in big-endian byte order, is read from.saltLen – Length of salt.
salt – Pointer to
saltLen
bytes where the salt is read from.msgLen – Length of message.
msg – Pointer to
msgLen
bytes 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
sgnt
of a messagemsg
.- Parameters:
a – Hash algorithm to use. Allowed values for
a
are …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
e
value.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 thee
value, in big-endian byte order, is read from.saltLen – Length of salt.
sgntLen – Length of signature.
sgnt – Pointer to
sgntLen
bytes where the signature is read from.msgLen – Length of message.
msg – Pointer to
msgLen
bytes where the message is read from.
- Returns:
Returns true if and only if the signature is valid.