epoc32/include/stdapis/openssl/rsa.h
author William Roberts <williamr@symbian.org>
Wed, 31 Mar 2010 12:27:01 +0100 (2010-03-31)
branchSymbian2
changeset 3 e1b950c65cb4
parent 0 061f57f2323e
permissions -rw-r--r--
Attempt to represent the S^2->S^3 header reorganisation as a series of "hg rename" operations
     1 /* crypto/rsa/rsa.h */
     2 /* Copyright (C) 1995-1998 Eric Young (eay@cryptsoft.com)
     3  * All rights reserved.
     4  *
     5  * This package is an SSL implementation written
     6  * by Eric Young (eay@cryptsoft.com).
     7  * The implementation was written so as to conform with Netscapes SSL.
     8  * 
     9  * This library is free for commercial and non-commercial use as long as
    10  * the following conditions are aheared to.  The following conditions
    11  * apply to all code found in this distribution, be it the RC4, RSA,
    12  * lhash, DES, etc., code; not just the SSL code.  The SSL documentation
    13  * included with this distribution is covered by the same copyright terms
    14  * except that the holder is Tim Hudson (tjh@cryptsoft.com).
    15  * 
    16  * Copyright remains Eric Young's, and as such any Copyright notices in
    17  * the code are not to be removed.
    18  * If this package is used in a product, Eric Young should be given attribution
    19  * as the author of the parts of the library used.
    20  * This can be in the form of a textual message at program startup or
    21  * in documentation (online or textual) provided with the package.
    22  * 
    23  * Redistribution and use in source and binary forms, with or without
    24  * modification, are permitted provided that the following conditions
    25  * are met:
    26  * 1. Redistributions of source code must retain the copyright
    27  *    notice, this list of conditions and the following disclaimer.
    28  * 2. Redistributions in binary form must reproduce the above copyright
    29  *    notice, this list of conditions and the following disclaimer in the
    30  *    documentation and/or other materials provided with the distribution.
    31  * 3. All advertising materials mentioning features or use of this software
    32  *    must display the following acknowledgement:
    33  *    "This product includes cryptographic software written by
    34  *     Eric Young (eay@cryptsoft.com)"
    35  *    The word 'cryptographic' can be left out if the rouines from the library
    36  *    being used are not cryptographic related :-).
    37  * 4. If you include any Windows specific code (or a derivative thereof) from 
    38  *    the apps directory (application code) you must include an acknowledgement:
    39  *    "This product includes software written by Tim Hudson (tjh@cryptsoft.com)"
    40  * 
    41  * THIS SOFTWARE IS PROVIDED BY ERIC YOUNG ``AS IS'' AND
    42  * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
    43  * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
    44  * ARE DISCLAIMED.  IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
    45  * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
    46  * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
    47  * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
    48  * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
    49  * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
    50  * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
    51  * SUCH DAMAGE.
    52  * 
    53  * The licence and distribution terms for any publically available version or
    54  * derivative of this code cannot be changed.  i.e. this code cannot simply be
    55  * copied and put under another distribution licence
    56  * [including the GNU Public Licence.]
    57  */
    58 /*
    59  © Portions copyright (c) 2006 Nokia Corporation.  All rights reserved.
    60  */
    61 
    62 #ifndef HEADER_RSA_H
    63 #define HEADER_RSA_H
    64 
    65 #if (defined(__SYMBIAN32__) && !defined(SYMBIAN))
    66 #define SYMBIAN
    67 #endif
    68 
    69 #ifdef SYMBIAN
    70 #include <e32def.h>
    71 #endif
    72 #include <openssl/asn1.h>
    73 
    74 #ifndef OPENSSL_NO_BIO
    75 #include <openssl/bio.h>
    76 #endif
    77 #include <openssl/crypto.h>
    78 #include <openssl/ossl_typ.h>
    79 #ifndef OPENSSL_NO_DEPRECATED
    80 #include <openssl/bn.h>
    81 #endif
    82 
    83 #ifdef OPENSSL_NO_RSA
    84 #error RSA is disabled.
    85 #endif
    86 
    87 #ifdef  __cplusplus
    88 extern "C" {
    89 #endif
    90 
    91 /* Declared already in ossl_typ.h */
    92 /* typedef struct rsa_st RSA; */
    93 /* typedef struct rsa_meth_st RSA_METHOD; */
    94 
    95 struct rsa_meth_st
    96 	{
    97 	const char *name;
    98 	int (*rsa_pub_enc)(int flen,const unsigned char *from,
    99 			   unsigned char *to,
   100 			   RSA *rsa,int padding);
   101 	int (*rsa_pub_dec)(int flen,const unsigned char *from,
   102 			   unsigned char *to,
   103 			   RSA *rsa,int padding);
   104 	int (*rsa_priv_enc)(int flen,const unsigned char *from,
   105 			    unsigned char *to,
   106 			    RSA *rsa,int padding);
   107 	int (*rsa_priv_dec)(int flen,const unsigned char *from,
   108 			    unsigned char *to,
   109 			    RSA *rsa,int padding);
   110 	int (*rsa_mod_exp)(BIGNUM *r0,const BIGNUM *I,RSA *rsa,BN_CTX *ctx); /* Can be null */
   111 	int (*bn_mod_exp)(BIGNUM *r, const BIGNUM *a, const BIGNUM *p,
   112 			  const BIGNUM *m, BN_CTX *ctx,
   113 			  BN_MONT_CTX *m_ctx); /* Can be null */
   114 	int (*init)(RSA *rsa);		/* called at new */
   115 	int (*finish)(RSA *rsa);	/* called at free */
   116 	int flags;			/* RSA_METHOD_FLAG_* things */
   117 	char *app_data;			/* may be needed! */
   118 /* New sign and verify functions: some libraries don't allow arbitrary data
   119  * to be signed/verified: this allows them to be used. Note: for this to work
   120  * the RSA_public_decrypt() and RSA_private_encrypt() should *NOT* be used
   121  * RSA_sign(), RSA_verify() should be used instead. Note: for backwards
   122  * compatibility this functionality is only enabled if the RSA_FLAG_SIGN_VER
   123  * option is set in 'flags'.
   124  */
   125 	int (*rsa_sign)(int type,
   126 		const unsigned char *m, unsigned int m_length,
   127 		unsigned char *sigret, unsigned int *siglen, const RSA *rsa);
   128 	int (*rsa_verify)(int dtype,
   129 		const unsigned char *m, unsigned int m_length,
   130 		unsigned char *sigbuf, unsigned int siglen, const RSA *rsa);
   131 /* If this callback is NULL, the builtin software RSA key-gen will be used. This
   132  * is for behavioural compatibility whilst the code gets rewired, but one day
   133  * it would be nice to assume there are no such things as "builtin software"
   134  * implementations. */
   135 	int (*rsa_keygen)(RSA *rsa, int bits, BIGNUM *e, BN_GENCB *cb);
   136 	};
   137 
   138 struct rsa_st
   139 	{
   140 	/* The first parameter is used to pickup errors where
   141 	 * this is passed instead of aEVP_PKEY, it is set to 0 */
   142 	int pad;
   143 	long version;
   144 	const RSA_METHOD *meth;
   145 	/* functional reference if 'meth' is ENGINE-provided */
   146 	ENGINE *engine;
   147 	BIGNUM *n;
   148 	BIGNUM *e;
   149 	BIGNUM *d;
   150 	BIGNUM *p;
   151 	BIGNUM *q;
   152 	BIGNUM *dmp1;
   153 	BIGNUM *dmq1;
   154 	BIGNUM *iqmp;
   155 	/* be careful using this if the RSA structure is shared */
   156 	CRYPTO_EX_DATA ex_data;
   157 	int references;
   158 	int flags;
   159 
   160 	/* Used to cache montgomery values */
   161 	BN_MONT_CTX *_method_mod_n;
   162 	BN_MONT_CTX *_method_mod_p;
   163 	BN_MONT_CTX *_method_mod_q;
   164 
   165 	/* all BIGNUM values are actually in the following data, if it is not
   166 	 * NULL */
   167 	char *bignum_data;
   168 	BN_BLINDING *blinding;
   169 	BN_BLINDING *mt_blinding;
   170 	};
   171 #ifndef OPENSSL_RSA_MAX_MODULUS_BITS
   172 # define OPENSSL_RSA_MAX_MODULUS_BITS	16384
   173 #endif
   174 
   175 #ifndef OPENSSL_RSA_SMALL_MODULUS_BITS
   176 # define OPENSSL_RSA_SMALL_MODULUS_BITS	3072
   177 #endif
   178 #ifndef OPENSSL_RSA_MAX_PUBEXP_BITS
   179 # define OPENSSL_RSA_MAX_PUBEXP_BITS	64 /* exponent limit enforced for "large" modulus only */
   180 #endif
   181 
   182 
   183 #define RSA_3	0x3L
   184 #define RSA_F4	0x10001L
   185 
   186 #define RSA_METHOD_FLAG_NO_CHECK	0x0001 /* don't check pub/private match */
   187 
   188 #define RSA_FLAG_CACHE_PUBLIC		0x0002
   189 #define RSA_FLAG_CACHE_PRIVATE		0x0004
   190 #define RSA_FLAG_BLINDING		0x0008
   191 #define RSA_FLAG_THREAD_SAFE		0x0010
   192 /* This flag means the private key operations will be handled by rsa_mod_exp
   193  * and that they do not depend on the private key components being present:
   194  * for example a key stored in external hardware. Without this flag bn_mod_exp
   195  * gets called when private key components are absent.
   196  */
   197 #define RSA_FLAG_EXT_PKEY		0x0020
   198 
   199 /* This flag in the RSA_METHOD enables the new rsa_sign, rsa_verify functions.
   200  */
   201 #define RSA_FLAG_SIGN_VER		0x0040
   202 
   203 #define RSA_FLAG_NO_BLINDING		0x0080 /* new with 0.9.6j and 0.9.7b; the built-in
   204                                                 * RSA implementation now uses blinding by
   205                                                 * default (ignoring RSA_FLAG_BLINDING),
   206                                                 * but other engines might not need it
   207                                                 */
   208 #define RSA_FLAG_NO_CONSTTIME		0x0100 /* new with 0.9.8f; the built-in RSA
   209 						* implementation now uses constant time
   210 						* operations by default in private key operations,
   211 						* e.g., constant time modular exponentiation, 
   212                                                 * modular inverse without leaking branches, 
   213                                                 * division without leaking branches. This 
   214                                                 * flag disables these constant time 
   215                                                 * operations and results in faster RSA 
   216                                                 * private key operations.
   217                                                 */ 
   218 #ifndef OPENSSL_NO_DEPRECATED
   219 #define RSA_FLAG_NO_EXP_CONSTTIME RSA_FLAG_NO_CONSTTIME /* deprecated name for the flag*/
   220                                                 /* new with 0.9.7h; the built-in RSA
   221                                                 * implementation now uses constant time
   222                                                 * modular exponentiation for secret exponents
   223                                                 * by default. This flag causes the
   224                                                 * faster variable sliding window method to
   225                                                 * be used for all exponents.
   226                                                 */
   227 #endif
   228 
   229 #ifdef	SYMBIAN
   230 #define RSA_FLAG_NO_EXP_CONSTTIME RSA_FLAG_NO_CONSTTIME // if user not undef OPENSSL_NO_DEPRECATED
   231 #endif
   232 #define RSA_PKCS1_PADDING	1
   233 #define RSA_SSLV23_PADDING	2
   234 #define RSA_NO_PADDING		3
   235 #define RSA_PKCS1_OAEP_PADDING	4
   236 #define RSA_X931_PADDING	5
   237 
   238 #define RSA_PKCS1_PADDING_SIZE	11
   239 
   240 #define RSA_set_app_data(s,arg)         RSA_set_ex_data(s,0,arg)
   241 #define RSA_get_app_data(s)             RSA_get_ex_data(s,0)
   242 
   243 IMPORT_C RSA *	RSA_new(void);
   244 RSA *	RSA_new_method(ENGINE *engine);
   245 IMPORT_C int	RSA_size(const RSA *);
   246 
   247 /* Deprecated version */
   248 #ifndef OPENSSL_NO_DEPRECATED
   249 RSA *	RSA_generate_key(int bits, unsigned long e,void
   250 		(*callback)(int,int,void *),void *cb_arg);
   251 #endif /* !defined(OPENSSL_NO_DEPRECATED) */
   252 
   253 /* New version */
   254 IMPORT_C int	RSA_generate_key_ex(RSA *rsa, int bits, BIGNUM *e, BN_GENCB *cb);
   255 
   256 IMPORT_C int	RSA_check_key(const RSA *);
   257 	/* next 4 return -1 on error */
   258 IMPORT_C int	RSA_public_encrypt(int flen, const unsigned char *from,
   259 		unsigned char *to, RSA *rsa,int padding);
   260 IMPORT_C int	RSA_private_encrypt(int flen, const unsigned char *from,
   261 		unsigned char *to, RSA *rsa,int padding);
   262 IMPORT_C int	RSA_public_decrypt(int flen, const unsigned char *from, 
   263 		unsigned char *to, RSA *rsa,int padding);
   264 IMPORT_C int	RSA_private_decrypt(int flen, const unsigned char *from, 
   265 		unsigned char *to, RSA *rsa,int padding);
   266 IMPORT_C void	RSA_free (RSA *r);
   267 /* "up" the RSA object's reference count */
   268 IMPORT_C int	RSA_up_ref(RSA *r);
   269 
   270 IMPORT_C int	RSA_flags(const RSA *r);
   271 
   272 IMPORT_C void RSA_set_default_method(const RSA_METHOD *meth);
   273 IMPORT_C const RSA_METHOD *RSA_get_default_method(void);
   274 IMPORT_C const RSA_METHOD *RSA_get_method(const RSA *rsa);
   275 IMPORT_C int RSA_set_method(RSA *rsa, const RSA_METHOD *meth);
   276 
   277 /* This function needs the memory locking malloc callbacks to be installed */
   278 IMPORT_C int RSA_memory_lock(RSA *r);
   279 
   280 /* these are the actual SSLeay RSA functions */
   281 IMPORT_C const RSA_METHOD *RSA_PKCS1_SSLeay(void);
   282 
   283 IMPORT_C const RSA_METHOD *RSA_null_method(void);
   284 
   285 DECLARE_ASN1_ENCODE_FUNCTIONS_const(RSA, RSAPublicKey)
   286 DECLARE_ASN1_ENCODE_FUNCTIONS_const(RSA, RSAPrivateKey)
   287 
   288 #ifndef OPENSSL_NO_FP_API
   289 IMPORT_C int	RSA_print_fp(FILE *fp, const RSA *r,int offset);
   290 #endif
   291 
   292 #ifndef OPENSSL_NO_BIO
   293 IMPORT_C int	RSA_print(BIO *bp, const RSA *r,int offset);
   294 #endif
   295 
   296 IMPORT_C int i2d_RSA_NET(const RSA *a, unsigned char **pp,
   297 		int (*cb)(char *buf, int len, const char *prompt, int verify),
   298 		int sgckey);
   299 IMPORT_C RSA *d2i_RSA_NET(RSA **a, const unsigned char **pp, long length,
   300 		 int (*cb)(char *buf, int len, const char *prompt, int verify),
   301 		 int sgckey);
   302 
   303 IMPORT_C int i2d_Netscape_RSA(const RSA *a, unsigned char **pp,
   304 		     int (*cb)(char *buf, int len, const char *prompt,
   305 			       int verify));
   306 IMPORT_C RSA *d2i_Netscape_RSA(RSA **a, const unsigned char **pp, long length,
   307 		      int (*cb)(char *buf, int len, const char *prompt,
   308 				int verify));
   309 
   310 /* The following 2 functions sign and verify a X509_SIG ASN1 object
   311  * inside PKCS#1 padded RSA encryption */
   312 IMPORT_C int RSA_sign(int type, const unsigned char *m, unsigned int m_length,
   313 	unsigned char *sigret, unsigned int *siglen, RSA *rsa);
   314 IMPORT_C int RSA_verify(int type, const unsigned char *m, unsigned int m_length,
   315 	unsigned char *sigbuf, unsigned int siglen, RSA *rsa);
   316 
   317 /* The following 2 function sign and verify a ASN1_OCTET_STRING
   318  * object inside PKCS#1 padded RSA encryption */
   319 IMPORT_C int RSA_sign_ASN1_OCTET_STRING(int type,
   320 	const unsigned char *m, unsigned int m_length,
   321 	unsigned char *sigret, unsigned int *siglen, RSA *rsa);
   322 IMPORT_C int RSA_verify_ASN1_OCTET_STRING(int type,
   323 	const unsigned char *m, unsigned int m_length,
   324 	unsigned char *sigbuf, unsigned int siglen, RSA *rsa);
   325 
   326 IMPORT_C int RSA_blinding_on(RSA *rsa, BN_CTX *ctx);
   327 IMPORT_C void RSA_blinding_off(RSA *rsa);
   328 IMPORT_C BN_BLINDING *RSA_setup_blinding(RSA *rsa, BN_CTX *ctx);
   329 
   330 IMPORT_C int RSA_padding_add_PKCS1_type_1(unsigned char *to,int tlen,
   331 	const unsigned char *f,int fl);
   332 IMPORT_C int RSA_padding_check_PKCS1_type_1(unsigned char *to,int tlen,
   333 	const unsigned char *f,int fl,int rsa_len);
   334 IMPORT_C int RSA_padding_add_PKCS1_type_2(unsigned char *to,int tlen,
   335 	const unsigned char *f,int fl);
   336 IMPORT_C int RSA_padding_check_PKCS1_type_2(unsigned char *to,int tlen,
   337 	const unsigned char *f,int fl,int rsa_len);
   338 IMPORT_C int PKCS1_MGF1(unsigned char *mask, long len,
   339 	const unsigned char *seed, long seedlen, const EVP_MD *dgst);
   340 IMPORT_C int RSA_padding_add_PKCS1_OAEP(unsigned char *to,int tlen,
   341 	const unsigned char *f,int fl,
   342 	const unsigned char *p,int pl);
   343 IMPORT_C int RSA_padding_check_PKCS1_OAEP(unsigned char *to,int tlen,
   344 	const unsigned char *f,int fl,int rsa_len,
   345 	const unsigned char *p,int pl);
   346 IMPORT_C int RSA_padding_add_SSLv23(unsigned char *to,int tlen,
   347 	const unsigned char *f,int fl);
   348 IMPORT_C int RSA_padding_check_SSLv23(unsigned char *to,int tlen,
   349 	const unsigned char *f,int fl,int rsa_len);
   350 IMPORT_C int RSA_padding_add_none(unsigned char *to,int tlen,
   351 	const unsigned char *f,int fl);
   352 IMPORT_C int RSA_padding_check_none(unsigned char *to,int tlen,
   353 	const unsigned char *f,int fl,int rsa_len);
   354 IMPORT_C int RSA_padding_add_X931(unsigned char *to,int tlen,
   355 	const unsigned char *f,int fl);
   356 IMPORT_C int RSA_padding_check_X931(unsigned char *to,int tlen,
   357 	const unsigned char *f,int fl,int rsa_len);
   358 IMPORT_C int RSA_X931_hash_id(int nid);
   359 
   360 IMPORT_C int RSA_verify_PKCS1_PSS(RSA *rsa, const unsigned char *mHash,
   361 			const EVP_MD *Hash, const unsigned char *EM, int sLen);
   362 IMPORT_C int RSA_padding_add_PKCS1_PSS(RSA *rsa, unsigned char *EM,
   363 			const unsigned char *mHash,
   364 			const EVP_MD *Hash, int sLen);
   365 
   366 IMPORT_C int RSA_get_ex_new_index(long argl, void *argp, CRYPTO_EX_new *new_func,
   367 	CRYPTO_EX_dup *dup_func, CRYPTO_EX_free *free_func);
   368 IMPORT_C int RSA_set_ex_data(RSA *r,int idx,void *arg);
   369 IMPORT_C void *RSA_get_ex_data(const RSA *r, int idx);
   370 
   371 IMPORT_C RSA *RSAPublicKey_dup(RSA *rsa);
   372 IMPORT_C RSA *RSAPrivateKey_dup(RSA *rsa);
   373 
   374 /* BEGIN ERROR CODES */
   375 /* The following lines are auto generated by the script mkerr.pl. Any changes
   376  * made after this point may be overwritten when the script is next run.
   377  */
   378 IMPORT_C void ERR_load_RSA_strings(void);
   379 
   380 /* Error codes for the RSA functions. */
   381 
   382 /* Function codes. */
   383 #define RSA_F_MEMORY_LOCK				 100
   384 #define RSA_F_RSA_BUILTIN_KEYGEN			 129
   385 #define RSA_F_RSA_CHECK_KEY				 123
   386 #define RSA_F_RSA_EAY_PRIVATE_DECRYPT			 101
   387 #define RSA_F_RSA_EAY_PRIVATE_ENCRYPT			 102
   388 #define RSA_F_RSA_EAY_PUBLIC_DECRYPT			 103
   389 #define RSA_F_RSA_EAY_PUBLIC_ENCRYPT			 104
   390 #define RSA_F_RSA_GENERATE_KEY				 105
   391 #define RSA_F_RSA_MEMORY_LOCK				 130
   392 #define RSA_F_RSA_NEW_METHOD				 106
   393 #define RSA_F_RSA_NULL					 124
   394 #define RSA_F_RSA_NULL_MOD_EXP				 131
   395 #define RSA_F_RSA_NULL_PRIVATE_DECRYPT			 132
   396 #define RSA_F_RSA_NULL_PRIVATE_ENCRYPT			 133
   397 #define RSA_F_RSA_NULL_PUBLIC_DECRYPT			 134
   398 #define RSA_F_RSA_NULL_PUBLIC_ENCRYPT			 135
   399 #define RSA_F_RSA_PADDING_ADD_NONE			 107
   400 #define RSA_F_RSA_PADDING_ADD_PKCS1_OAEP		 121
   401 #define RSA_F_RSA_PADDING_ADD_PKCS1_PSS			 125
   402 #define RSA_F_RSA_PADDING_ADD_PKCS1_TYPE_1		 108
   403 #define RSA_F_RSA_PADDING_ADD_PKCS1_TYPE_2		 109
   404 #define RSA_F_RSA_PADDING_ADD_SSLV23			 110
   405 #define RSA_F_RSA_PADDING_ADD_X931			 127
   406 #define RSA_F_RSA_PADDING_CHECK_NONE			 111
   407 #define RSA_F_RSA_PADDING_CHECK_PKCS1_OAEP		 122
   408 #define RSA_F_RSA_PADDING_CHECK_PKCS1_TYPE_1		 112
   409 #define RSA_F_RSA_PADDING_CHECK_PKCS1_TYPE_2		 113
   410 #define RSA_F_RSA_PADDING_CHECK_SSLV23			 114
   411 #define RSA_F_RSA_PADDING_CHECK_X931			 128
   412 #define RSA_F_RSA_PRINT					 115
   413 #define RSA_F_RSA_PRINT_FP				 116
   414 #define RSA_F_RSA_SETUP_BLINDING			 136
   415 #define RSA_F_RSA_SIGN					 117
   416 #define RSA_F_RSA_SIGN_ASN1_OCTET_STRING		 118
   417 #define RSA_F_RSA_VERIFY				 119
   418 #define RSA_F_RSA_VERIFY_ASN1_OCTET_STRING		 120
   419 #define RSA_F_RSA_VERIFY_PKCS1_PSS			 126
   420 
   421 /* Reason codes. */
   422 #define RSA_R_ALGORITHM_MISMATCH			 100
   423 #define RSA_R_BAD_E_VALUE				 101
   424 #define RSA_R_BAD_FIXED_HEADER_DECRYPT			 102
   425 #define RSA_R_BAD_PAD_BYTE_COUNT			 103
   426 #define RSA_R_BAD_SIGNATURE				 104
   427 #define RSA_R_BLOCK_TYPE_IS_NOT_01			 106
   428 #define RSA_R_BLOCK_TYPE_IS_NOT_02			 107
   429 #define RSA_R_DATA_GREATER_THAN_MOD_LEN			 108
   430 #define RSA_R_DATA_TOO_LARGE				 109
   431 #define RSA_R_DATA_TOO_LARGE_FOR_KEY_SIZE		 110
   432 #define RSA_R_DATA_TOO_LARGE_FOR_MODULUS		 132
   433 #define RSA_R_DATA_TOO_SMALL				 111
   434 #define RSA_R_DATA_TOO_SMALL_FOR_KEY_SIZE		 122
   435 #define RSA_R_DIGEST_TOO_BIG_FOR_RSA_KEY		 112
   436 #define RSA_R_DMP1_NOT_CONGRUENT_TO_D			 124
   437 #define RSA_R_DMQ1_NOT_CONGRUENT_TO_D			 125
   438 #define RSA_R_D_E_NOT_CONGRUENT_TO_1			 123
   439 #define RSA_R_FIRST_OCTET_INVALID			 133
   440 #define RSA_R_INVALID_HEADER				 137
   441 #define RSA_R_INVALID_MESSAGE_LENGTH			 131
   442 #define RSA_R_INVALID_PADDING				 138
   443 #define RSA_R_INVALID_TRAILER				 139
   444 #define RSA_R_IQMP_NOT_INVERSE_OF_Q			 126
   445 #define RSA_R_KEY_SIZE_TOO_SMALL			 120
   446 #define RSA_R_LAST_OCTET_INVALID			 134
   447 #define RSA_R_MODULUS_TOO_LARGE				 105
   448 #define RSA_R_NO_PUBLIC_EXPONENT			 140
   449 #define RSA_R_NULL_BEFORE_BLOCK_MISSING			 113
   450 #define RSA_R_N_DOES_NOT_EQUAL_P_Q			 127
   451 #define RSA_R_OAEP_DECODING_ERROR			 121
   452 #define RSA_R_SLEN_RECOVERY_FAILED			 135
   453 #define RSA_R_PADDING_CHECK_FAILED			 114
   454 #define RSA_R_P_NOT_PRIME				 128
   455 #define RSA_R_Q_NOT_PRIME				 129
   456 #define RSA_R_RSA_OPERATIONS_NOT_SUPPORTED		 130
   457 #define RSA_R_SSLV3_ROLLBACK_ATTACK			 115
   458 #define RSA_R_THE_ASN1_OBJECT_IDENTIFIER_IS_NOT_KNOWN_FOR_THIS_MD 116
   459 #define RSA_R_UNKNOWN_ALGORITHM_TYPE			 117
   460 #define RSA_R_UNKNOWN_PADDING_TYPE			 118
   461 #define RSA_R_WRONG_SIGNATURE_LENGTH			 119
   462 #define RSA_R_SLEN_CHECK_FAILED				 136
   463 
   464 #ifdef  __cplusplus
   465 }
   466 #endif
   467 #endif