Mbed OS Reference
Loading...
Searching...
No Matches
rsa.h File Reference

This file provides an API for the RSA public-key cryptosystem. More...

#include "mbedtls/config.h"
#include "mbedtls/bignum.h"
#include "mbedtls/md.h"

Go to the source code of this file.

Data Structures

struct  mbedtls_rsa_context
 The RSA context structure. More...
 

Macros

#define MBEDTLS_ERR_RSA_BAD_INPUT_DATA   -0x4080
 Bad input parameters to function. More...
 
#define MBEDTLS_ERR_RSA_INVALID_PADDING   -0x4100
 Input data contains invalid padding and is rejected. More...
 
#define MBEDTLS_ERR_RSA_KEY_GEN_FAILED   -0x4180
 Something failed during generation of a key. More...
 
#define MBEDTLS_ERR_RSA_KEY_CHECK_FAILED   -0x4200
 Key failed to pass the validity check of the library. More...
 
#define MBEDTLS_ERR_RSA_PUBLIC_FAILED   -0x4280
 The public key operation failed. More...
 
#define MBEDTLS_ERR_RSA_PRIVATE_FAILED   -0x4300
 The private key operation failed. More...
 
#define MBEDTLS_ERR_RSA_VERIFY_FAILED   -0x4380
 The PKCS#1 verification failed. More...
 
#define MBEDTLS_ERR_RSA_OUTPUT_TOO_LARGE   -0x4400
 The output buffer for decryption is not large enough. More...
 
#define MBEDTLS_ERR_RSA_RNG_FAILED   -0x4480
 The random generator failed to generate non-zeros. More...
 
#define MBEDTLS_ERR_RSA_UNSUPPORTED_OPERATION   -0x4500
 The implementation does not offer the requested operation, for example, because of security violations or lack of functionality. More...
 
#define MBEDTLS_ERR_RSA_HW_ACCEL_FAILED   -0x4580
 RSA hardware accelerator failed. More...
 
#define MBEDTLS_RSA_PUBLIC   0
 Request private key operation. More...
 
#define MBEDTLS_RSA_PRIVATE   1
 Request public key operation. More...
 
#define MBEDTLS_RSA_PKCS_V15   0
 Use PKCS#1 v1.5 encoding. More...
 
#define MBEDTLS_RSA_PKCS_V21   1
 Use PKCS#1 v2.1 encoding. More...
 
#define MBEDTLS_RSA_SIGN   1
 Identifier for RSA signature operations. More...
 
#define MBEDTLS_RSA_CRYPT   2
 Identifier for RSA encryption and decryption operations. More...
 
#define MBEDTLS_RSA_SALT_LEN_ANY   -1
 Constant for mbedtls_rsa_rsassa_pss_verify_ext to accept any salt length. More...
 

Typedefs

typedef struct mbedtls_rsa_context mbedtls_rsa_context
 The RSA context structure. More...
 

Functions

void mbedtls_rsa_init (mbedtls_rsa_context *ctx, int padding, int hash_id)
 This function initializes an RSA context. More...
 
int mbedtls_rsa_import (mbedtls_rsa_context *ctx, const mbedtls_mpi *N, const mbedtls_mpi *P, const mbedtls_mpi *Q, const mbedtls_mpi *D, const mbedtls_mpi *E)
 This function imports a set of core parameters into an RSA context. More...
 
int mbedtls_rsa_import_raw (mbedtls_rsa_context *ctx, unsigned char const *N, size_t N_len, unsigned char const *P, size_t P_len, unsigned char const *Q, size_t Q_len, unsigned char const *D, size_t D_len, unsigned char const *E, size_t E_len)
 This function imports core RSA parameters, in raw big-endian binary format, into an RSA context. More...
 
int mbedtls_rsa_complete (mbedtls_rsa_context *ctx)
 This function completes an RSA context from a set of imported core parameters. More...
 
int mbedtls_rsa_export (const mbedtls_rsa_context *ctx, mbedtls_mpi *N, mbedtls_mpi *P, mbedtls_mpi *Q, mbedtls_mpi *D, mbedtls_mpi *E)
 This function exports the core parameters of an RSA key. More...
 
int mbedtls_rsa_export_raw (const mbedtls_rsa_context *ctx, unsigned char *N, size_t N_len, unsigned char *P, size_t P_len, unsigned char *Q, size_t Q_len, unsigned char *D, size_t D_len, unsigned char *E, size_t E_len)
 This function exports core parameters of an RSA key in raw big-endian binary format. More...
 
int mbedtls_rsa_export_crt (const mbedtls_rsa_context *ctx, mbedtls_mpi *DP, mbedtls_mpi *DQ, mbedtls_mpi *QP)
 This function exports CRT parameters of a private RSA key. More...
 
void mbedtls_rsa_set_padding (mbedtls_rsa_context *ctx, int padding, int hash_id)
 This function sets padding for an already initialized RSA context. More...
 
size_t mbedtls_rsa_get_len (const mbedtls_rsa_context *ctx)
 This function retrieves the length of RSA modulus in Bytes. More...
 
int mbedtls_rsa_gen_key (mbedtls_rsa_context *ctx, int(*f_rng)(void *, unsigned char *, size_t), void *p_rng, unsigned int nbits, int exponent)
 This function generates an RSA keypair. More...
 
int mbedtls_rsa_check_pubkey (const mbedtls_rsa_context *ctx)
 This function checks if a context contains at least an RSA public key. More...
 
int mbedtls_rsa_check_privkey (const mbedtls_rsa_context *ctx)
 This function checks if a context contains an RSA private key and perform basic consistency checks. More...
 
int mbedtls_rsa_check_pub_priv (const mbedtls_rsa_context *pub, const mbedtls_rsa_context *prv)
 This function checks a public-private RSA key pair. More...
 
int mbedtls_rsa_public (mbedtls_rsa_context *ctx, const unsigned char *input, unsigned char *output)
 This function performs an RSA public key operation. More...
 
int mbedtls_rsa_private (mbedtls_rsa_context *ctx, int(*f_rng)(void *, unsigned char *, size_t), void *p_rng, const unsigned char *input, unsigned char *output)
 This function performs an RSA private key operation. More...
 
int mbedtls_rsa_pkcs1_encrypt (mbedtls_rsa_context *ctx, int(*f_rng)(void *, unsigned char *, size_t), void *p_rng, int mode, size_t ilen, const unsigned char *input, unsigned char *output)
 This function adds the message padding, then performs an RSA operation. More...
 
int mbedtls_rsa_rsaes_pkcs1_v15_encrypt (mbedtls_rsa_context *ctx, int(*f_rng)(void *, unsigned char *, size_t), void *p_rng, int mode, size_t ilen, const unsigned char *input, unsigned char *output)
 This function performs a PKCS#1 v1.5 encryption operation (RSAES-PKCS1-v1_5-ENCRYPT). More...
 
int mbedtls_rsa_rsaes_oaep_encrypt (mbedtls_rsa_context *ctx, int(*f_rng)(void *, unsigned char *, size_t), void *p_rng, int mode, const unsigned char *label, size_t label_len, size_t ilen, const unsigned char *input, unsigned char *output)
 This function performs a PKCS#1 v2.1 OAEP encryption operation (RSAES-OAEP-ENCRYPT). More...
 
int mbedtls_rsa_pkcs1_decrypt (mbedtls_rsa_context *ctx, int(*f_rng)(void *, unsigned char *, size_t), void *p_rng, int mode, size_t *olen, const unsigned char *input, unsigned char *output, size_t output_max_len)
 This function performs an RSA operation, then removes the message padding. More...
 
int mbedtls_rsa_rsaes_pkcs1_v15_decrypt (mbedtls_rsa_context *ctx, int(*f_rng)(void *, unsigned char *, size_t), void *p_rng, int mode, size_t *olen, const unsigned char *input, unsigned char *output, size_t output_max_len)
 This function performs a PKCS#1 v1.5 decryption operation (RSAES-PKCS1-v1_5-DECRYPT). More...
 
int mbedtls_rsa_rsaes_oaep_decrypt (mbedtls_rsa_context *ctx, int(*f_rng)(void *, unsigned char *, size_t), void *p_rng, int mode, const unsigned char *label, size_t label_len, size_t *olen, const unsigned char *input, unsigned char *output, size_t output_max_len)
 This function performs a PKCS#1 v2.1 OAEP decryption operation (RSAES-OAEP-DECRYPT). More...
 
int mbedtls_rsa_pkcs1_sign (mbedtls_rsa_context *ctx, int(*f_rng)(void *, unsigned char *, size_t), void *p_rng, int mode, mbedtls_md_type_t md_alg, unsigned int hashlen, const unsigned char *hash, unsigned char *sig)
 This function performs a private RSA operation to sign a message digest using PKCS#1. More...
 
int mbedtls_rsa_rsassa_pkcs1_v15_sign (mbedtls_rsa_context *ctx, int(*f_rng)(void *, unsigned char *, size_t), void *p_rng, int mode, mbedtls_md_type_t md_alg, unsigned int hashlen, const unsigned char *hash, unsigned char *sig)
 This function performs a PKCS#1 v1.5 signature operation (RSASSA-PKCS1-v1_5-SIGN). More...
 
int mbedtls_rsa_rsassa_pss_sign (mbedtls_rsa_context *ctx, int(*f_rng)(void *, unsigned char *, size_t), void *p_rng, int mode, mbedtls_md_type_t md_alg, unsigned int hashlen, const unsigned char *hash, unsigned char *sig)
 This function performs a PKCS#1 v2.1 PSS signature operation (RSASSA-PSS-SIGN). More...
 
int mbedtls_rsa_pkcs1_verify (mbedtls_rsa_context *ctx, int(*f_rng)(void *, unsigned char *, size_t), void *p_rng, int mode, mbedtls_md_type_t md_alg, unsigned int hashlen, const unsigned char *hash, const unsigned char *sig)
 This function performs a public RSA operation and checks the message digest. More...
 
int mbedtls_rsa_rsassa_pkcs1_v15_verify (mbedtls_rsa_context *ctx, int(*f_rng)(void *, unsigned char *, size_t), void *p_rng, int mode, mbedtls_md_type_t md_alg, unsigned int hashlen, const unsigned char *hash, const unsigned char *sig)
 This function performs a PKCS#1 v1.5 verification operation (RSASSA-PKCS1-v1_5-VERIFY). More...
 
int mbedtls_rsa_rsassa_pss_verify (mbedtls_rsa_context *ctx, int(*f_rng)(void *, unsigned char *, size_t), void *p_rng, int mode, mbedtls_md_type_t md_alg, unsigned int hashlen, const unsigned char *hash, const unsigned char *sig)
 This function performs a PKCS#1 v2.1 PSS verification operation (RSASSA-PSS-VERIFY). More...
 
int mbedtls_rsa_rsassa_pss_verify_ext (mbedtls_rsa_context *ctx, int(*f_rng)(void *, unsigned char *, size_t), void *p_rng, int mode, mbedtls_md_type_t md_alg, unsigned int hashlen, const unsigned char *hash, mbedtls_md_type_t mgf1_hash_id, int expected_salt_len, const unsigned char *sig)
 This function performs a PKCS#1 v2.1 PSS verification operation (RSASSA-PSS-VERIFY). More...
 
int mbedtls_rsa_copy (mbedtls_rsa_context *dst, const mbedtls_rsa_context *src)
 This function copies the components of an RSA context. More...
 
void mbedtls_rsa_free (mbedtls_rsa_context *ctx)
 This function frees the components of an RSA key. More...
 

Detailed Description

This file provides an API for the RSA public-key cryptosystem.

The RSA public-key cryptosystem is defined in Public-Key Cryptography Standards (PKCS) #1 v1.5: RSA Encryption and Public-Key Cryptography Standards (PKCS) #1 v2.1: RSA Cryptography Specifications.

Definition in file rsa.h.