24#define GPG_RSA_MAX_MODULUS_BYTES 512
41 const uint8_t* p,
size_t p_len,
const uint8_t* q,
size_t q_len,
42 uint8_t* blob_out,
size_t blob_cap,
size_t* blob_len_out);
55bool gpg_rsa_generate(uint16_t n_bits, uint8_t* blob_out,
size_t blob_cap,
size_t* blob_len_out);
70 uint8_t* n_out,
size_t n_cap,
size_t* n_len_out,
71 uint8_t* e_out,
size_t e_cap,
size_t* e_len_out);
89 const uint8_t* digestinfo,
size_t di_len,
90 uint8_t* sig_out,
size_t sig_cap,
size_t* sig_len_out);
104 const uint8_t* ct,
size_t ct_len,
105 uint8_t* pt_out,
size_t pt_cap,
size_t* pt_len_out);
bool gpg_rsa_selftest(uint16_t n_bits)
End-to-end self-test: generate a key, serialise/reload its blob, then sign+verify and encrypt+decrypt...
bool gpg_rsa_decrypt(const uint8_t *blob, size_t blob_len, const uint8_t *ct, size_t ct_len, uint8_t *pt_out, size_t pt_cap, size_t *pt_len_out)
RSAES-PKCS1-v1.5 decryption of a cryptogram.
bool gpg_rsa_sign(const uint8_t *blob, size_t blob_len, const uint8_t *digestinfo, size_t di_len, uint8_t *sig_out, size_t sig_cap, size_t *sig_len_out)
RSASSA-PKCS1-v1.5 signature over a host-supplied DigestInfo.
bool gpg_rsa_blob_public(const uint8_t *blob, size_t blob_len, uint8_t *n_out, size_t n_cap, size_t *n_len_out, uint8_t *e_out, size_t e_cap, size_t *e_len_out)
Extracts the public modulus and exponent from a private-key blob.
bool gpg_rsa_generate(uint16_t n_bits, uint8_t *blob_out, size_t blob_cap, size_t *blob_len_out)
Generates a fresh RSA key pair and serialises its private blob. The public exponent is fixed to 65537...
bool gpg_rsa_blob_build(uint16_t n_bits, const uint8_t *e, size_t e_len, const uint8_t *p, size_t p_len, const uint8_t *q, size_t q_len, uint8_t *blob_out, size_t blob_cap, size_t *blob_len_out)
Serialises raw RSA components into a private-key blob.