#include "bignum.h"Go to the source code of this file.
| Data Structures | |
| struct | rsa_context | 
| RSA context structure.  More... | |
| Defines | |
| #define | XYSSL_ERR_RSA_BAD_INPUT_DATA -0x0400 | 
| #define | XYSSL_ERR_RSA_INVALID_PADDING -0x0410 | 
| #define | XYSSL_ERR_RSA_KEY_GEN_FAILED -0x0420 | 
| #define | XYSSL_ERR_RSA_KEY_CHECK_FAILED -0x0430 | 
| #define | XYSSL_ERR_RSA_PUBLIC_FAILED -0x0440 | 
| #define | XYSSL_ERR_RSA_PRIVATE_FAILED -0x0450 | 
| #define | XYSSL_ERR_RSA_VERIFY_FAILED -0x0460 | 
| #define | RSA_RAW 0 | 
| #define | RSA_MD2 2 | 
| #define | RSA_MD4 3 | 
| #define | RSA_MD5 4 | 
| #define | RSA_SHA1 5 | 
| #define | RSA_SHA256 6 | 
| #define | RSA_PUBLIC 0 | 
| #define | RSA_PRIVATE 1 | 
| #define | RSA_PKCS_V15 0 | 
| #define | RSA_PKCS_V21 1 | 
| #define | RSA_SIGN 1 | 
| #define | RSA_CRYPT 2 | 
| #define | ASN1_HASH_MDX | 
| #define | ASN1_HASH_SHA1 | 
| Functions | |
| void | rsa_init (rsa_context *ctx, int padding, int hash_id, int(*f_rng)(void *), void *p_rng) | 
| Initialize an RSA context. | |
| int | rsa_gen_key (rsa_context *ctx, int nbits, int exponent) | 
| Generate an RSA keypair. | |
| int | rsa_check_pubkey (rsa_context *ctx) | 
| Check a public RSA key. | |
| int | rsa_check_privkey (rsa_context *ctx) | 
| Check a private RSA key. | |
| int | rsa_public (rsa_context *ctx, unsigned char *input, unsigned char *output) | 
| Do an RSA public key operation. | |
| int | rsa_private (rsa_context *ctx, unsigned char *input, unsigned char *output) | 
| Do an RSA private key operation. | |
| int | rsa_pkcs1_encrypt (rsa_context *ctx, int mode, int ilen, unsigned char *input, unsigned char *output) | 
| Add the message padding, then do an RSA operation. | |
| int | rsa_pkcs1_decrypt (rsa_context *ctx, int mode, int *olen, unsigned char *input, unsigned char *output) | 
| Do an RSA operation, then remove the message padding. | |
| int | rsa_pkcs1_sign (rsa_context *ctx, int mode, int hash_id, int hashlen, unsigned char *hash, unsigned char *sig) | 
| Do a private RSA to sign a message digest. | |
| int | rsa_pkcs1_verify (rsa_context *ctx, int mode, int hash_id, int hashlen, unsigned char *hash, unsigned char *sig) | 
| Do a public RSA and check the message digest. | |
| void | rsa_free (rsa_context *ctx) | 
| Free the components of an RSA key. | |
| int | rsa_self_test (int verbose) | 
| Checkup routine. | |
Definition in file rsa.h.
| #define ASN1_HASH_MDX | 
| #define ASN1_HASH_SHA1 | 
| #define RSA_PRIVATE 1 | 
Definition at line 28 of file rsa.h.
Referenced by main(), RSA_private_decrypt(), and RSA_private_encrypt().
| #define RSA_PUBLIC 0 | 
Definition at line 27 of file rsa.h.
Referenced by main(), RSA_public_decrypt(), and RSA_public_encrypt().
| int rsa_check_privkey | ( | rsa_context * | ctx | ) | 
Check a private RSA key.
| ctx | RSA context to be checked | 
| int rsa_check_pubkey | ( | rsa_context * | ctx | ) | 
Check a public RSA key.
| ctx | RSA context to be checked | 
| void rsa_free | ( | rsa_context * | ctx | ) | 
| int rsa_gen_key | ( | rsa_context * | ctx, | |
| int | nbits, | |||
| int | exponent | |||
| ) | 
Generate an RSA keypair.
| ctx | RSA context that will hold the key | |
| nbits | size of the public key in bits | |
| exponent | public exponent (e.g., 65537) | 
Referenced by main().
| void rsa_init | ( | rsa_context * | ctx, | |
| int | padding, | |||
| int | hash_id, | |||
| int(*)(void *) | f_rng, | |||
| void * | p_rng | |||
| ) | 
Initialize an RSA context.
| ctx | RSA context to be initialized | |
| padding | RSA_PKCS_V15 or RSA_PKCS_V21 | |
| hash_id | RSA_PKCS_V21 hash identifier | |
| f_rng | RNG function | |
| p_rng | RNG parameter | 
Currently (xyssl-0.8), RSA_PKCS_V21 padding is not supported.
Referenced by main().
| int rsa_pkcs1_decrypt | ( | rsa_context * | ctx, | |
| int | mode, | |||
| int * | olen, | |||
| unsigned char * | input, | |||
| unsigned char * | output | |||
| ) | 
Do an RSA operation, then remove the message padding.
| ctx | RSA context | |
| mode | RSA_PUBLIC or RSA_PRIVATE | |
| input | buffer holding the encrypted data | |
| output | buffer that will hold the plaintext | |
| olen | will contain the plaintext length | 
Referenced by RSA_private_decrypt(), and RSA_public_decrypt().
| int rsa_pkcs1_encrypt | ( | rsa_context * | ctx, | |
| int | mode, | |||
| int | ilen, | |||
| unsigned char * | input, | |||
| unsigned char * | output | |||
| ) | 
Add the message padding, then do an RSA operation.
| ctx | RSA context | |
| mode | RSA_PUBLIC or RSA_PRIVATE | |
| ilen | contains the the plaintext length | |
| input | buffer holding the data to be encrypted | |
| output | buffer that will hold the ciphertext | 
Referenced by RSA_private_encrypt(), and RSA_public_encrypt().
| int rsa_pkcs1_sign | ( | rsa_context * | ctx, | |
| int | mode, | |||
| int | hash_id, | |||
| int | hashlen, | |||
| unsigned char * | hash, | |||
| unsigned char * | sig | |||
| ) | 
Do a private RSA to sign a message digest.
| ctx | RSA context | |
| mode | RSA_PUBLIC or RSA_PRIVATE | |
| hash_id | RSA_RAW, RSA_MD{2,4,5} or RSA_SHA{1,256} | |
| hashlen | message digest length (for RSA_RAW only) | |
| hash | buffer holding the message digest | |
| sig | buffer that will hold the ciphertext | 
Referenced by main().
| int rsa_pkcs1_verify | ( | rsa_context * | ctx, | |
| int | mode, | |||
| int | hash_id, | |||
| int | hashlen, | |||
| unsigned char * | hash, | |||
| unsigned char * | sig | |||
| ) | 
Do a public RSA and check the message digest.
| ctx | points to an RSA public key | |
| mode | RSA_PUBLIC or RSA_PRIVATE | |
| hash_id | RSA_RAW, RSA_MD{2,4,5} or RSA_SHA{1,256} | |
| hashlen | message digest length (for RSA_RAW only) | |
| hash | buffer holding the message digest | |
| sig | buffer holding the ciphertext | 
Referenced by main().
| int rsa_private | ( | rsa_context * | ctx, | |
| unsigned char * | input, | |||
| unsigned char * | output | |||
| ) | 
Do an RSA private key operation.
| ctx | RSA context | |
| input | input buffer | |
| output | output buffer | 
Referenced by main().
| int rsa_public | ( | rsa_context * | ctx, | |
| unsigned char * | input, | |||
| unsigned char * | output | |||
| ) | 
Do an RSA public key operation.
| ctx | RSA context | |
| input | input buffer | |
| output | output buffer | 
The input and output buffers must be large enough (eg. 128 bytes if RSA-1024 is used).
Referenced by main().
 1.5.5
 1.5.5