CDC Badge OS
Firmware for the CDC Badge v1.0 hardware security key
Loading...
Searching...
No Matches
rsa.h
Go to the documentation of this file.
1
13
14#pragma once
15#include <stdbool.h>
16#include <stddef.h>
17#include <stdint.h>
18
19#ifdef __cplusplus
20extern "C" {
21#endif
22
24#define GPG_RSA_MAX_MODULUS_BYTES 512
25
40bool gpg_rsa_blob_build(uint16_t n_bits, const uint8_t* e, size_t e_len,
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);
43
55bool gpg_rsa_generate(uint16_t n_bits, uint8_t* blob_out, size_t blob_cap, size_t* blob_len_out);
56
69bool gpg_rsa_blob_public(const uint8_t* blob, size_t blob_len,
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);
72
88bool gpg_rsa_sign(const uint8_t* blob, size_t blob_len,
89 const uint8_t* digestinfo, size_t di_len,
90 uint8_t* sig_out, size_t sig_cap, size_t* sig_len_out);
91
103bool gpg_rsa_decrypt(const uint8_t* blob, size_t blob_len,
104 const uint8_t* ct, size_t ct_len,
105 uint8_t* pt_out, size_t pt_cap, size_t* pt_len_out);
106
114bool gpg_rsa_selftest(uint16_t n_bits);
115
116#ifdef __cplusplus
117}
118#endif
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...
Definition rsa.cpp:208
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.
Definition rsa.cpp:267
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.
Definition rsa.cpp:185
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.
Definition rsa.cpp:156
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...
Definition rsa.cpp:138
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.
Definition rsa.cpp:110