wolfSSL SSL/TLS library, support up to TLS1.3

Dependents:   CyaSSL-Twitter-OAuth4Tw Example-client-tls-cert TwitterReader TweetTest ... more

Committer:
wolfSSL
Date:
Thu Apr 28 00:56:55 2016 +0000
Revision:
3:6f956bdb3073
wolfSSL 3.9.0

Who changed what in which revision?

UserRevisionLine numberNew contents of line
wolfSSL 3:6f956bdb3073 1 /* rsa.h for openSSL */
wolfSSL 3:6f956bdb3073 2
wolfSSL 3:6f956bdb3073 3
wolfSSL 3:6f956bdb3073 4 #ifndef WOLFSSL_RSA_H_
wolfSSL 3:6f956bdb3073 5 #define WOLFSSL_RSA_H_
wolfSSL 3:6f956bdb3073 6
wolfSSL 3:6f956bdb3073 7 #include <wolfssl/openssl/ssl.h>
wolfSSL 3:6f956bdb3073 8 #include <wolfssl/openssl/bn.h>
wolfSSL 3:6f956bdb3073 9
wolfSSL 3:6f956bdb3073 10
wolfSSL 3:6f956bdb3073 11 #ifdef __cplusplus
wolfSSL 3:6f956bdb3073 12 extern "C" {
wolfSSL 3:6f956bdb3073 13 #endif
wolfSSL 3:6f956bdb3073 14
wolfSSL 3:6f956bdb3073 15
wolfSSL 3:6f956bdb3073 16 enum {
wolfSSL 3:6f956bdb3073 17 RSA_PKCS1_PADDING = 1
wolfSSL 3:6f956bdb3073 18 };
wolfSSL 3:6f956bdb3073 19
wolfSSL 3:6f956bdb3073 20 /* rsaTypes */
wolfSSL 3:6f956bdb3073 21 enum {
wolfSSL 3:6f956bdb3073 22 NID_sha256 = 672,
wolfSSL 3:6f956bdb3073 23 NID_sha384 = 673,
wolfSSL 3:6f956bdb3073 24 NID_sha512 = 674
wolfSSL 3:6f956bdb3073 25 };
wolfSSL 3:6f956bdb3073 26
wolfSSL 3:6f956bdb3073 27 struct WOLFSSL_RSA {
wolfSSL 3:6f956bdb3073 28 WOLFSSL_BIGNUM* n;
wolfSSL 3:6f956bdb3073 29 WOLFSSL_BIGNUM* e;
wolfSSL 3:6f956bdb3073 30 WOLFSSL_BIGNUM* d;
wolfSSL 3:6f956bdb3073 31 WOLFSSL_BIGNUM* p;
wolfSSL 3:6f956bdb3073 32 WOLFSSL_BIGNUM* q;
wolfSSL 3:6f956bdb3073 33 WOLFSSL_BIGNUM* dmp1; /* dP */
wolfSSL 3:6f956bdb3073 34 WOLFSSL_BIGNUM* dmq1; /* dQ */
wolfSSL 3:6f956bdb3073 35 WOLFSSL_BIGNUM* iqmp; /* u */
wolfSSL 3:6f956bdb3073 36 void* internal; /* our RSA */
wolfSSL 3:6f956bdb3073 37 char inSet; /* internal set from external ? */
wolfSSL 3:6f956bdb3073 38 char exSet; /* external set from internal ? */
wolfSSL 3:6f956bdb3073 39 };
wolfSSL 3:6f956bdb3073 40
wolfSSL 3:6f956bdb3073 41
wolfSSL 3:6f956bdb3073 42 WOLFSSL_API WOLFSSL_RSA* wolfSSL_RSA_new(void);
wolfSSL 3:6f956bdb3073 43 WOLFSSL_API void wolfSSL_RSA_free(WOLFSSL_RSA*);
wolfSSL 3:6f956bdb3073 44
wolfSSL 3:6f956bdb3073 45 WOLFSSL_API int wolfSSL_RSA_generate_key_ex(WOLFSSL_RSA*, int bits, WOLFSSL_BIGNUM*,
wolfSSL 3:6f956bdb3073 46 void* cb);
wolfSSL 3:6f956bdb3073 47
wolfSSL 3:6f956bdb3073 48 WOLFSSL_API int wolfSSL_RSA_blinding_on(WOLFSSL_RSA*, WOLFSSL_BN_CTX*);
wolfSSL 3:6f956bdb3073 49 WOLFSSL_API int wolfSSL_RSA_public_encrypt(int len, unsigned char* fr,
wolfSSL 3:6f956bdb3073 50 unsigned char* to, WOLFSSL_RSA*, int padding);
wolfSSL 3:6f956bdb3073 51 WOLFSSL_API int wolfSSL_RSA_private_decrypt(int len, unsigned char* fr,
wolfSSL 3:6f956bdb3073 52 unsigned char* to, WOLFSSL_RSA*, int padding);
wolfSSL 3:6f956bdb3073 53
wolfSSL 3:6f956bdb3073 54 WOLFSSL_API int wolfSSL_RSA_size(const WOLFSSL_RSA*);
wolfSSL 3:6f956bdb3073 55 WOLFSSL_API int wolfSSL_RSA_sign(int type, const unsigned char* m,
wolfSSL 3:6f956bdb3073 56 unsigned int mLen, unsigned char* sigRet,
wolfSSL 3:6f956bdb3073 57 unsigned int* sigLen, WOLFSSL_RSA*);
wolfSSL 3:6f956bdb3073 58 WOLFSSL_API int wolfSSL_RSA_public_decrypt(int flen, unsigned char* from,
wolfSSL 3:6f956bdb3073 59 unsigned char* to, WOLFSSL_RSA*, int padding);
wolfSSL 3:6f956bdb3073 60 WOLFSSL_API int wolfSSL_RSA_GenAdd(WOLFSSL_RSA*);
wolfSSL 3:6f956bdb3073 61 WOLFSSL_API int wolfSSL_RSA_LoadDer(WOLFSSL_RSA*, const unsigned char*, int sz);
wolfSSL 3:6f956bdb3073 62
wolfSSL 3:6f956bdb3073 63
wolfSSL 3:6f956bdb3073 64 #define RSA_new wolfSSL_RSA_new
wolfSSL 3:6f956bdb3073 65 #define RSA_free wolfSSL_RSA_free
wolfSSL 3:6f956bdb3073 66
wolfSSL 3:6f956bdb3073 67 #define RSA_generate_key_ex wolfSSL_RSA_generate_key_ex
wolfSSL 3:6f956bdb3073 68
wolfSSL 3:6f956bdb3073 69 #define RSA_blinding_on wolfSSL_RSA_blinding_on
wolfSSL 3:6f956bdb3073 70 #define RSA_public_encrypt wolfSSL_RSA_public_encrypt
wolfSSL 3:6f956bdb3073 71 #define RSA_private_decrypt wolfSSL_RSA_private_decrypt
wolfSSL 3:6f956bdb3073 72
wolfSSL 3:6f956bdb3073 73 #define RSA_size wolfSSL_RSA_size
wolfSSL 3:6f956bdb3073 74 #define RSA_sign wolfSSL_RSA_sign
wolfSSL 3:6f956bdb3073 75 #define RSA_public_decrypt wolfSSL_RSA_public_decrypt
wolfSSL 3:6f956bdb3073 76
wolfSSL 3:6f956bdb3073 77
wolfSSL 3:6f956bdb3073 78 #ifdef __cplusplus
wolfSSL 3:6f956bdb3073 79 } /* extern "C" */
wolfSSL 3:6f956bdb3073 80 #endif
wolfSSL 3:6f956bdb3073 81
wolfSSL 3:6f956bdb3073 82 #endif /* header */
wolfSSL 3:6f956bdb3073 83