api

rsa.ch

Declarations in rsa.ch

1 declarationstls

Declarations

Public only
tls#
Publicnamespace
namespace tls
============================================================================
RSAContext#
Publicstruct
struct RSAContext { var ver : int var len : size_t var N : Mpi var E : Mpi var D : Mpi var P : Mpi var Q : Mpi var DP : Mpi var DQ : Mpi var QP : Mpi var padding : int var hash_id : int }
RSA-OAEP (not yet implemented)
rsa_init#
Publicfunction
func rsa_init(ctx : *RSAContext, padding : int, hash_id : int) : void
rsa_free#
Publicfunction
func rsa_free(ctx : *RSAContext) : void
rsa_import_pubkey#
Publicfunction
func rsa_import_pubkey(ctx : *RSAContext, n_buf : *u8, n_len : size_t, e_buf : *u8, e_len : size_t) : int
─── Import RSA Public Key ──────────────────────────────────────────────
rsa_get_len#
Publicfunction
func rsa_get_len(ctx : *RSAContext) : size_t
Check key size
pkcs1_v15_encode#
Publicfunction
func pkcs1_v15_encode(message : *u8, message_len : size_t, em : *u8, em_len : size_t) : int
─── PKCS#1 v1.5 Encoding ────────────────────────────────────────────
pkcs1_v15_decode#
Publicfunction
func pkcs1_v15_decode(input : *u8, input_len : size_t, output : *u8, output_len : *size_t, expected_output_len : size_t) : int
PKCS#1 v1.5 unpadding for encryption (RFC 8017 Section 7.2.2)
rsa_public#
Publicfunction
func rsa_public(ctx : *RSAContext, input : *u8, output : *u8) : int
─── RSA Public Operation ────────────────────────────────────────────
rsa_pkcs1_encrypt#
Publicfunction
func rsa_pkcs1_encrypt(ctx : *RSAContext, input : *u8, input_len : size_t, output : *u8) : int
─── PKCS#1 v1.5 Encryption ─────────────────────────────────────────
rsa_get_digest_info#
function
func rsa_get_digest_info(digest_len : size_t, prefix : *u8, prefix_len : *size_t) : void
SHA-256: 30 31 30 0d 06 09 60 86 48 01 65 03 04 02 01 05 00 04 20 (19 bytes)
rsa_pkcs1_verify#
Publicfunction
func rsa_pkcs1_verify(ctx : *RSAContext, digest : *u8, digest_len : size_t, sig : *u8, sig_len : size_t) : int
RSASSA-PKCS1-V1_5-VERIFY: verify signature on digest
rsa_private#
function
func rsa_private(ctx : *RSAContext, input : *u8, output : *u8) : int
─── RSA Private Operation (for server-side, simpler variant) ───────
rsa_pkcs1_decrypt#
Publicfunction
func rsa_pkcs1_decrypt(ctx : *RSAContext, input : *u8, input_len : size_t, output : *u8, output_len : *size_t, expected_max_len : size_t) : int
─── PKCS#1 v1.5 Decryption (for server-side) ───────────────────────
rsa_import_privkey#
Publicfunction
func rsa_import_privkey(ctx : *RSAContext, n_buf : *u8, n_len : size_t, d_buf : *u8, d_len : size_t) : int
─── RSA Private Key Import ────────────────────────────────────────
mpi_is_prime#
function
func mpi_is_prime(n : *Mpi, rounds : size_t) : bool
Miller-Rabin primality test with `rounds` random bases.
rsa_gen_prime#
function
func rsa_gen_prime(out : *Mpi, nbits : size_t, rounds : size_t) : int
Generate a random prime of exactly `nbits` bits.
rsa_gen_key#
Publicfunction
func rsa_gen_key(ctx : *RSAContext, nbits : size_t, exponent : u32) : int
Generate an RSA key pair with the given modulus size (in bits).