epoc32/include/stdapis/openssl/rsa.h
branchSymbian2
changeset 2 2fe1408b6811
parent 0 061f57f2323e
     1.1 --- a/epoc32/include/stdapis/openssl/rsa.h	Tue Nov 24 13:55:44 2009 +0000
     1.2 +++ b/epoc32/include/stdapis/openssl/rsa.h	Tue Mar 16 16:12:26 2010 +0000
     1.3 @@ -1,1 +1,467 @@
     1.4 -rsa.h
     1.5 +/* crypto/rsa/rsa.h */
     1.6 +/* Copyright (C) 1995-1998 Eric Young (eay@cryptsoft.com)
     1.7 + * All rights reserved.
     1.8 + *
     1.9 + * This package is an SSL implementation written
    1.10 + * by Eric Young (eay@cryptsoft.com).
    1.11 + * The implementation was written so as to conform with Netscapes SSL.
    1.12 + * 
    1.13 + * This library is free for commercial and non-commercial use as long as
    1.14 + * the following conditions are aheared to.  The following conditions
    1.15 + * apply to all code found in this distribution, be it the RC4, RSA,
    1.16 + * lhash, DES, etc., code; not just the SSL code.  The SSL documentation
    1.17 + * included with this distribution is covered by the same copyright terms
    1.18 + * except that the holder is Tim Hudson (tjh@cryptsoft.com).
    1.19 + * 
    1.20 + * Copyright remains Eric Young's, and as such any Copyright notices in
    1.21 + * the code are not to be removed.
    1.22 + * If this package is used in a product, Eric Young should be given attribution
    1.23 + * as the author of the parts of the library used.
    1.24 + * This can be in the form of a textual message at program startup or
    1.25 + * in documentation (online or textual) provided with the package.
    1.26 + * 
    1.27 + * Redistribution and use in source and binary forms, with or without
    1.28 + * modification, are permitted provided that the following conditions
    1.29 + * are met:
    1.30 + * 1. Redistributions of source code must retain the copyright
    1.31 + *    notice, this list of conditions and the following disclaimer.
    1.32 + * 2. Redistributions in binary form must reproduce the above copyright
    1.33 + *    notice, this list of conditions and the following disclaimer in the
    1.34 + *    documentation and/or other materials provided with the distribution.
    1.35 + * 3. All advertising materials mentioning features or use of this software
    1.36 + *    must display the following acknowledgement:
    1.37 + *    "This product includes cryptographic software written by
    1.38 + *     Eric Young (eay@cryptsoft.com)"
    1.39 + *    The word 'cryptographic' can be left out if the rouines from the library
    1.40 + *    being used are not cryptographic related :-).
    1.41 + * 4. If you include any Windows specific code (or a derivative thereof) from 
    1.42 + *    the apps directory (application code) you must include an acknowledgement:
    1.43 + *    "This product includes software written by Tim Hudson (tjh@cryptsoft.com)"
    1.44 + * 
    1.45 + * THIS SOFTWARE IS PROVIDED BY ERIC YOUNG ``AS IS'' AND
    1.46 + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
    1.47 + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
    1.48 + * ARE DISCLAIMED.  IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
    1.49 + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
    1.50 + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
    1.51 + * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
    1.52 + * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
    1.53 + * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
    1.54 + * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
    1.55 + * SUCH DAMAGE.
    1.56 + * 
    1.57 + * The licence and distribution terms for any publically available version or
    1.58 + * derivative of this code cannot be changed.  i.e. this code cannot simply be
    1.59 + * copied and put under another distribution licence
    1.60 + * [including the GNU Public Licence.]
    1.61 + */
    1.62 +/*
    1.63 + © Portions copyright (c) 2006 Nokia Corporation.  All rights reserved.
    1.64 + */
    1.65 +
    1.66 +#ifndef HEADER_RSA_H
    1.67 +#define HEADER_RSA_H
    1.68 +
    1.69 +#if (defined(__SYMBIAN32__) && !defined(SYMBIAN))
    1.70 +#define SYMBIAN
    1.71 +#endif
    1.72 +
    1.73 +#ifdef SYMBIAN
    1.74 +#include <e32def.h>
    1.75 +#endif
    1.76 +#include <openssl/asn1.h>
    1.77 +
    1.78 +#ifndef OPENSSL_NO_BIO
    1.79 +#include <openssl/bio.h>
    1.80 +#endif
    1.81 +#include <openssl/crypto.h>
    1.82 +#include <openssl/ossl_typ.h>
    1.83 +#ifndef OPENSSL_NO_DEPRECATED
    1.84 +#include <openssl/bn.h>
    1.85 +#endif
    1.86 +
    1.87 +#ifdef OPENSSL_NO_RSA
    1.88 +#error RSA is disabled.
    1.89 +#endif
    1.90 +
    1.91 +#ifdef  __cplusplus
    1.92 +extern "C" {
    1.93 +#endif
    1.94 +
    1.95 +/* Declared already in ossl_typ.h */
    1.96 +/* typedef struct rsa_st RSA; */
    1.97 +/* typedef struct rsa_meth_st RSA_METHOD; */
    1.98 +
    1.99 +struct rsa_meth_st
   1.100 +	{
   1.101 +	const char *name;
   1.102 +	int (*rsa_pub_enc)(int flen,const unsigned char *from,
   1.103 +			   unsigned char *to,
   1.104 +			   RSA *rsa,int padding);
   1.105 +	int (*rsa_pub_dec)(int flen,const unsigned char *from,
   1.106 +			   unsigned char *to,
   1.107 +			   RSA *rsa,int padding);
   1.108 +	int (*rsa_priv_enc)(int flen,const unsigned char *from,
   1.109 +			    unsigned char *to,
   1.110 +			    RSA *rsa,int padding);
   1.111 +	int (*rsa_priv_dec)(int flen,const unsigned char *from,
   1.112 +			    unsigned char *to,
   1.113 +			    RSA *rsa,int padding);
   1.114 +	int (*rsa_mod_exp)(BIGNUM *r0,const BIGNUM *I,RSA *rsa,BN_CTX *ctx); /* Can be null */
   1.115 +	int (*bn_mod_exp)(BIGNUM *r, const BIGNUM *a, const BIGNUM *p,
   1.116 +			  const BIGNUM *m, BN_CTX *ctx,
   1.117 +			  BN_MONT_CTX *m_ctx); /* Can be null */
   1.118 +	int (*init)(RSA *rsa);		/* called at new */
   1.119 +	int (*finish)(RSA *rsa);	/* called at free */
   1.120 +	int flags;			/* RSA_METHOD_FLAG_* things */
   1.121 +	char *app_data;			/* may be needed! */
   1.122 +/* New sign and verify functions: some libraries don't allow arbitrary data
   1.123 + * to be signed/verified: this allows them to be used. Note: for this to work
   1.124 + * the RSA_public_decrypt() and RSA_private_encrypt() should *NOT* be used
   1.125 + * RSA_sign(), RSA_verify() should be used instead. Note: for backwards
   1.126 + * compatibility this functionality is only enabled if the RSA_FLAG_SIGN_VER
   1.127 + * option is set in 'flags'.
   1.128 + */
   1.129 +	int (*rsa_sign)(int type,
   1.130 +		const unsigned char *m, unsigned int m_length,
   1.131 +		unsigned char *sigret, unsigned int *siglen, const RSA *rsa);
   1.132 +	int (*rsa_verify)(int dtype,
   1.133 +		const unsigned char *m, unsigned int m_length,
   1.134 +		unsigned char *sigbuf, unsigned int siglen, const RSA *rsa);
   1.135 +/* If this callback is NULL, the builtin software RSA key-gen will be used. This
   1.136 + * is for behavioural compatibility whilst the code gets rewired, but one day
   1.137 + * it would be nice to assume there are no such things as "builtin software"
   1.138 + * implementations. */
   1.139 +	int (*rsa_keygen)(RSA *rsa, int bits, BIGNUM *e, BN_GENCB *cb);
   1.140 +	};
   1.141 +
   1.142 +struct rsa_st
   1.143 +	{
   1.144 +	/* The first parameter is used to pickup errors where
   1.145 +	 * this is passed instead of aEVP_PKEY, it is set to 0 */
   1.146 +	int pad;
   1.147 +	long version;
   1.148 +	const RSA_METHOD *meth;
   1.149 +	/* functional reference if 'meth' is ENGINE-provided */
   1.150 +	ENGINE *engine;
   1.151 +	BIGNUM *n;
   1.152 +	BIGNUM *e;
   1.153 +	BIGNUM *d;
   1.154 +	BIGNUM *p;
   1.155 +	BIGNUM *q;
   1.156 +	BIGNUM *dmp1;
   1.157 +	BIGNUM *dmq1;
   1.158 +	BIGNUM *iqmp;
   1.159 +	/* be careful using this if the RSA structure is shared */
   1.160 +	CRYPTO_EX_DATA ex_data;
   1.161 +	int references;
   1.162 +	int flags;
   1.163 +
   1.164 +	/* Used to cache montgomery values */
   1.165 +	BN_MONT_CTX *_method_mod_n;
   1.166 +	BN_MONT_CTX *_method_mod_p;
   1.167 +	BN_MONT_CTX *_method_mod_q;
   1.168 +
   1.169 +	/* all BIGNUM values are actually in the following data, if it is not
   1.170 +	 * NULL */
   1.171 +	char *bignum_data;
   1.172 +	BN_BLINDING *blinding;
   1.173 +	BN_BLINDING *mt_blinding;
   1.174 +	};
   1.175 +#ifndef OPENSSL_RSA_MAX_MODULUS_BITS
   1.176 +# define OPENSSL_RSA_MAX_MODULUS_BITS	16384
   1.177 +#endif
   1.178 +
   1.179 +#ifndef OPENSSL_RSA_SMALL_MODULUS_BITS
   1.180 +# define OPENSSL_RSA_SMALL_MODULUS_BITS	3072
   1.181 +#endif
   1.182 +#ifndef OPENSSL_RSA_MAX_PUBEXP_BITS
   1.183 +# define OPENSSL_RSA_MAX_PUBEXP_BITS	64 /* exponent limit enforced for "large" modulus only */
   1.184 +#endif
   1.185 +
   1.186 +
   1.187 +#define RSA_3	0x3L
   1.188 +#define RSA_F4	0x10001L
   1.189 +
   1.190 +#define RSA_METHOD_FLAG_NO_CHECK	0x0001 /* don't check pub/private match */
   1.191 +
   1.192 +#define RSA_FLAG_CACHE_PUBLIC		0x0002
   1.193 +#define RSA_FLAG_CACHE_PRIVATE		0x0004
   1.194 +#define RSA_FLAG_BLINDING		0x0008
   1.195 +#define RSA_FLAG_THREAD_SAFE		0x0010
   1.196 +/* This flag means the private key operations will be handled by rsa_mod_exp
   1.197 + * and that they do not depend on the private key components being present:
   1.198 + * for example a key stored in external hardware. Without this flag bn_mod_exp
   1.199 + * gets called when private key components are absent.
   1.200 + */
   1.201 +#define RSA_FLAG_EXT_PKEY		0x0020
   1.202 +
   1.203 +/* This flag in the RSA_METHOD enables the new rsa_sign, rsa_verify functions.
   1.204 + */
   1.205 +#define RSA_FLAG_SIGN_VER		0x0040
   1.206 +
   1.207 +#define RSA_FLAG_NO_BLINDING		0x0080 /* new with 0.9.6j and 0.9.7b; the built-in
   1.208 +                                                * RSA implementation now uses blinding by
   1.209 +                                                * default (ignoring RSA_FLAG_BLINDING),
   1.210 +                                                * but other engines might not need it
   1.211 +                                                */
   1.212 +#define RSA_FLAG_NO_CONSTTIME		0x0100 /* new with 0.9.8f; the built-in RSA
   1.213 +						* implementation now uses constant time
   1.214 +						* operations by default in private key operations,
   1.215 +						* e.g., constant time modular exponentiation, 
   1.216 +                                                * modular inverse without leaking branches, 
   1.217 +                                                * division without leaking branches. This 
   1.218 +                                                * flag disables these constant time 
   1.219 +                                                * operations and results in faster RSA 
   1.220 +                                                * private key operations.
   1.221 +                                                */ 
   1.222 +#ifndef OPENSSL_NO_DEPRECATED
   1.223 +#define RSA_FLAG_NO_EXP_CONSTTIME RSA_FLAG_NO_CONSTTIME /* deprecated name for the flag*/
   1.224 +                                                /* new with 0.9.7h; the built-in RSA
   1.225 +                                                * implementation now uses constant time
   1.226 +                                                * modular exponentiation for secret exponents
   1.227 +                                                * by default. This flag causes the
   1.228 +                                                * faster variable sliding window method to
   1.229 +                                                * be used for all exponents.
   1.230 +                                                */
   1.231 +#endif
   1.232 +
   1.233 +#ifdef	SYMBIAN
   1.234 +#define RSA_FLAG_NO_EXP_CONSTTIME RSA_FLAG_NO_CONSTTIME // if user not undef OPENSSL_NO_DEPRECATED
   1.235 +#endif
   1.236 +#define RSA_PKCS1_PADDING	1
   1.237 +#define RSA_SSLV23_PADDING	2
   1.238 +#define RSA_NO_PADDING		3
   1.239 +#define RSA_PKCS1_OAEP_PADDING	4
   1.240 +#define RSA_X931_PADDING	5
   1.241 +
   1.242 +#define RSA_PKCS1_PADDING_SIZE	11
   1.243 +
   1.244 +#define RSA_set_app_data(s,arg)         RSA_set_ex_data(s,0,arg)
   1.245 +#define RSA_get_app_data(s)             RSA_get_ex_data(s,0)
   1.246 +
   1.247 +IMPORT_C RSA *	RSA_new(void);
   1.248 +RSA *	RSA_new_method(ENGINE *engine);
   1.249 +IMPORT_C int	RSA_size(const RSA *);
   1.250 +
   1.251 +/* Deprecated version */
   1.252 +#ifndef OPENSSL_NO_DEPRECATED
   1.253 +RSA *	RSA_generate_key(int bits, unsigned long e,void
   1.254 +		(*callback)(int,int,void *),void *cb_arg);
   1.255 +#endif /* !defined(OPENSSL_NO_DEPRECATED) */
   1.256 +
   1.257 +/* New version */
   1.258 +IMPORT_C int	RSA_generate_key_ex(RSA *rsa, int bits, BIGNUM *e, BN_GENCB *cb);
   1.259 +
   1.260 +IMPORT_C int	RSA_check_key(const RSA *);
   1.261 +	/* next 4 return -1 on error */
   1.262 +IMPORT_C int	RSA_public_encrypt(int flen, const unsigned char *from,
   1.263 +		unsigned char *to, RSA *rsa,int padding);
   1.264 +IMPORT_C int	RSA_private_encrypt(int flen, const unsigned char *from,
   1.265 +		unsigned char *to, RSA *rsa,int padding);
   1.266 +IMPORT_C int	RSA_public_decrypt(int flen, const unsigned char *from, 
   1.267 +		unsigned char *to, RSA *rsa,int padding);
   1.268 +IMPORT_C int	RSA_private_decrypt(int flen, const unsigned char *from, 
   1.269 +		unsigned char *to, RSA *rsa,int padding);
   1.270 +IMPORT_C void	RSA_free (RSA *r);
   1.271 +/* "up" the RSA object's reference count */
   1.272 +IMPORT_C int	RSA_up_ref(RSA *r);
   1.273 +
   1.274 +IMPORT_C int	RSA_flags(const RSA *r);
   1.275 +
   1.276 +IMPORT_C void RSA_set_default_method(const RSA_METHOD *meth);
   1.277 +IMPORT_C const RSA_METHOD *RSA_get_default_method(void);
   1.278 +IMPORT_C const RSA_METHOD *RSA_get_method(const RSA *rsa);
   1.279 +IMPORT_C int RSA_set_method(RSA *rsa, const RSA_METHOD *meth);
   1.280 +
   1.281 +/* This function needs the memory locking malloc callbacks to be installed */
   1.282 +IMPORT_C int RSA_memory_lock(RSA *r);
   1.283 +
   1.284 +/* these are the actual SSLeay RSA functions */
   1.285 +IMPORT_C const RSA_METHOD *RSA_PKCS1_SSLeay(void);
   1.286 +
   1.287 +IMPORT_C const RSA_METHOD *RSA_null_method(void);
   1.288 +
   1.289 +DECLARE_ASN1_ENCODE_FUNCTIONS_const(RSA, RSAPublicKey)
   1.290 +DECLARE_ASN1_ENCODE_FUNCTIONS_const(RSA, RSAPrivateKey)
   1.291 +
   1.292 +#ifndef OPENSSL_NO_FP_API
   1.293 +IMPORT_C int	RSA_print_fp(FILE *fp, const RSA *r,int offset);
   1.294 +#endif
   1.295 +
   1.296 +#ifndef OPENSSL_NO_BIO
   1.297 +IMPORT_C int	RSA_print(BIO *bp, const RSA *r,int offset);
   1.298 +#endif
   1.299 +
   1.300 +IMPORT_C int i2d_RSA_NET(const RSA *a, unsigned char **pp,
   1.301 +		int (*cb)(char *buf, int len, const char *prompt, int verify),
   1.302 +		int sgckey);
   1.303 +IMPORT_C RSA *d2i_RSA_NET(RSA **a, const unsigned char **pp, long length,
   1.304 +		 int (*cb)(char *buf, int len, const char *prompt, int verify),
   1.305 +		 int sgckey);
   1.306 +
   1.307 +IMPORT_C int i2d_Netscape_RSA(const RSA *a, unsigned char **pp,
   1.308 +		     int (*cb)(char *buf, int len, const char *prompt,
   1.309 +			       int verify));
   1.310 +IMPORT_C RSA *d2i_Netscape_RSA(RSA **a, const unsigned char **pp, long length,
   1.311 +		      int (*cb)(char *buf, int len, const char *prompt,
   1.312 +				int verify));
   1.313 +
   1.314 +/* The following 2 functions sign and verify a X509_SIG ASN1 object
   1.315 + * inside PKCS#1 padded RSA encryption */
   1.316 +IMPORT_C int RSA_sign(int type, const unsigned char *m, unsigned int m_length,
   1.317 +	unsigned char *sigret, unsigned int *siglen, RSA *rsa);
   1.318 +IMPORT_C int RSA_verify(int type, const unsigned char *m, unsigned int m_length,
   1.319 +	unsigned char *sigbuf, unsigned int siglen, RSA *rsa);
   1.320 +
   1.321 +/* The following 2 function sign and verify a ASN1_OCTET_STRING
   1.322 + * object inside PKCS#1 padded RSA encryption */
   1.323 +IMPORT_C int RSA_sign_ASN1_OCTET_STRING(int type,
   1.324 +	const unsigned char *m, unsigned int m_length,
   1.325 +	unsigned char *sigret, unsigned int *siglen, RSA *rsa);
   1.326 +IMPORT_C int RSA_verify_ASN1_OCTET_STRING(int type,
   1.327 +	const unsigned char *m, unsigned int m_length,
   1.328 +	unsigned char *sigbuf, unsigned int siglen, RSA *rsa);
   1.329 +
   1.330 +IMPORT_C int RSA_blinding_on(RSA *rsa, BN_CTX *ctx);
   1.331 +IMPORT_C void RSA_blinding_off(RSA *rsa);
   1.332 +IMPORT_C BN_BLINDING *RSA_setup_blinding(RSA *rsa, BN_CTX *ctx);
   1.333 +
   1.334 +IMPORT_C int RSA_padding_add_PKCS1_type_1(unsigned char *to,int tlen,
   1.335 +	const unsigned char *f,int fl);
   1.336 +IMPORT_C int RSA_padding_check_PKCS1_type_1(unsigned char *to,int tlen,
   1.337 +	const unsigned char *f,int fl,int rsa_len);
   1.338 +IMPORT_C int RSA_padding_add_PKCS1_type_2(unsigned char *to,int tlen,
   1.339 +	const unsigned char *f,int fl);
   1.340 +IMPORT_C int RSA_padding_check_PKCS1_type_2(unsigned char *to,int tlen,
   1.341 +	const unsigned char *f,int fl,int rsa_len);
   1.342 +IMPORT_C int PKCS1_MGF1(unsigned char *mask, long len,
   1.343 +	const unsigned char *seed, long seedlen, const EVP_MD *dgst);
   1.344 +IMPORT_C int RSA_padding_add_PKCS1_OAEP(unsigned char *to,int tlen,
   1.345 +	const unsigned char *f,int fl,
   1.346 +	const unsigned char *p,int pl);
   1.347 +IMPORT_C int RSA_padding_check_PKCS1_OAEP(unsigned char *to,int tlen,
   1.348 +	const unsigned char *f,int fl,int rsa_len,
   1.349 +	const unsigned char *p,int pl);
   1.350 +IMPORT_C int RSA_padding_add_SSLv23(unsigned char *to,int tlen,
   1.351 +	const unsigned char *f,int fl);
   1.352 +IMPORT_C int RSA_padding_check_SSLv23(unsigned char *to,int tlen,
   1.353 +	const unsigned char *f,int fl,int rsa_len);
   1.354 +IMPORT_C int RSA_padding_add_none(unsigned char *to,int tlen,
   1.355 +	const unsigned char *f,int fl);
   1.356 +IMPORT_C int RSA_padding_check_none(unsigned char *to,int tlen,
   1.357 +	const unsigned char *f,int fl,int rsa_len);
   1.358 +IMPORT_C int RSA_padding_add_X931(unsigned char *to,int tlen,
   1.359 +	const unsigned char *f,int fl);
   1.360 +IMPORT_C int RSA_padding_check_X931(unsigned char *to,int tlen,
   1.361 +	const unsigned char *f,int fl,int rsa_len);
   1.362 +IMPORT_C int RSA_X931_hash_id(int nid);
   1.363 +
   1.364 +IMPORT_C int RSA_verify_PKCS1_PSS(RSA *rsa, const unsigned char *mHash,
   1.365 +			const EVP_MD *Hash, const unsigned char *EM, int sLen);
   1.366 +IMPORT_C int RSA_padding_add_PKCS1_PSS(RSA *rsa, unsigned char *EM,
   1.367 +			const unsigned char *mHash,
   1.368 +			const EVP_MD *Hash, int sLen);
   1.369 +
   1.370 +IMPORT_C int RSA_get_ex_new_index(long argl, void *argp, CRYPTO_EX_new *new_func,
   1.371 +	CRYPTO_EX_dup *dup_func, CRYPTO_EX_free *free_func);
   1.372 +IMPORT_C int RSA_set_ex_data(RSA *r,int idx,void *arg);
   1.373 +IMPORT_C void *RSA_get_ex_data(const RSA *r, int idx);
   1.374 +
   1.375 +IMPORT_C RSA *RSAPublicKey_dup(RSA *rsa);
   1.376 +IMPORT_C RSA *RSAPrivateKey_dup(RSA *rsa);
   1.377 +
   1.378 +/* BEGIN ERROR CODES */
   1.379 +/* The following lines are auto generated by the script mkerr.pl. Any changes
   1.380 + * made after this point may be overwritten when the script is next run.
   1.381 + */
   1.382 +IMPORT_C void ERR_load_RSA_strings(void);
   1.383 +
   1.384 +/* Error codes for the RSA functions. */
   1.385 +
   1.386 +/* Function codes. */
   1.387 +#define RSA_F_MEMORY_LOCK				 100
   1.388 +#define RSA_F_RSA_BUILTIN_KEYGEN			 129
   1.389 +#define RSA_F_RSA_CHECK_KEY				 123
   1.390 +#define RSA_F_RSA_EAY_PRIVATE_DECRYPT			 101
   1.391 +#define RSA_F_RSA_EAY_PRIVATE_ENCRYPT			 102
   1.392 +#define RSA_F_RSA_EAY_PUBLIC_DECRYPT			 103
   1.393 +#define RSA_F_RSA_EAY_PUBLIC_ENCRYPT			 104
   1.394 +#define RSA_F_RSA_GENERATE_KEY				 105
   1.395 +#define RSA_F_RSA_MEMORY_LOCK				 130
   1.396 +#define RSA_F_RSA_NEW_METHOD				 106
   1.397 +#define RSA_F_RSA_NULL					 124
   1.398 +#define RSA_F_RSA_NULL_MOD_EXP				 131
   1.399 +#define RSA_F_RSA_NULL_PRIVATE_DECRYPT			 132
   1.400 +#define RSA_F_RSA_NULL_PRIVATE_ENCRYPT			 133
   1.401 +#define RSA_F_RSA_NULL_PUBLIC_DECRYPT			 134
   1.402 +#define RSA_F_RSA_NULL_PUBLIC_ENCRYPT			 135
   1.403 +#define RSA_F_RSA_PADDING_ADD_NONE			 107
   1.404 +#define RSA_F_RSA_PADDING_ADD_PKCS1_OAEP		 121
   1.405 +#define RSA_F_RSA_PADDING_ADD_PKCS1_PSS			 125
   1.406 +#define RSA_F_RSA_PADDING_ADD_PKCS1_TYPE_1		 108
   1.407 +#define RSA_F_RSA_PADDING_ADD_PKCS1_TYPE_2		 109
   1.408 +#define RSA_F_RSA_PADDING_ADD_SSLV23			 110
   1.409 +#define RSA_F_RSA_PADDING_ADD_X931			 127
   1.410 +#define RSA_F_RSA_PADDING_CHECK_NONE			 111
   1.411 +#define RSA_F_RSA_PADDING_CHECK_PKCS1_OAEP		 122
   1.412 +#define RSA_F_RSA_PADDING_CHECK_PKCS1_TYPE_1		 112
   1.413 +#define RSA_F_RSA_PADDING_CHECK_PKCS1_TYPE_2		 113
   1.414 +#define RSA_F_RSA_PADDING_CHECK_SSLV23			 114
   1.415 +#define RSA_F_RSA_PADDING_CHECK_X931			 128
   1.416 +#define RSA_F_RSA_PRINT					 115
   1.417 +#define RSA_F_RSA_PRINT_FP				 116
   1.418 +#define RSA_F_RSA_SETUP_BLINDING			 136
   1.419 +#define RSA_F_RSA_SIGN					 117
   1.420 +#define RSA_F_RSA_SIGN_ASN1_OCTET_STRING		 118
   1.421 +#define RSA_F_RSA_VERIFY				 119
   1.422 +#define RSA_F_RSA_VERIFY_ASN1_OCTET_STRING		 120
   1.423 +#define RSA_F_RSA_VERIFY_PKCS1_PSS			 126
   1.424 +
   1.425 +/* Reason codes. */
   1.426 +#define RSA_R_ALGORITHM_MISMATCH			 100
   1.427 +#define RSA_R_BAD_E_VALUE				 101
   1.428 +#define RSA_R_BAD_FIXED_HEADER_DECRYPT			 102
   1.429 +#define RSA_R_BAD_PAD_BYTE_COUNT			 103
   1.430 +#define RSA_R_BAD_SIGNATURE				 104
   1.431 +#define RSA_R_BLOCK_TYPE_IS_NOT_01			 106
   1.432 +#define RSA_R_BLOCK_TYPE_IS_NOT_02			 107
   1.433 +#define RSA_R_DATA_GREATER_THAN_MOD_LEN			 108
   1.434 +#define RSA_R_DATA_TOO_LARGE				 109
   1.435 +#define RSA_R_DATA_TOO_LARGE_FOR_KEY_SIZE		 110
   1.436 +#define RSA_R_DATA_TOO_LARGE_FOR_MODULUS		 132
   1.437 +#define RSA_R_DATA_TOO_SMALL				 111
   1.438 +#define RSA_R_DATA_TOO_SMALL_FOR_KEY_SIZE		 122
   1.439 +#define RSA_R_DIGEST_TOO_BIG_FOR_RSA_KEY		 112
   1.440 +#define RSA_R_DMP1_NOT_CONGRUENT_TO_D			 124
   1.441 +#define RSA_R_DMQ1_NOT_CONGRUENT_TO_D			 125
   1.442 +#define RSA_R_D_E_NOT_CONGRUENT_TO_1			 123
   1.443 +#define RSA_R_FIRST_OCTET_INVALID			 133
   1.444 +#define RSA_R_INVALID_HEADER				 137
   1.445 +#define RSA_R_INVALID_MESSAGE_LENGTH			 131
   1.446 +#define RSA_R_INVALID_PADDING				 138
   1.447 +#define RSA_R_INVALID_TRAILER				 139
   1.448 +#define RSA_R_IQMP_NOT_INVERSE_OF_Q			 126
   1.449 +#define RSA_R_KEY_SIZE_TOO_SMALL			 120
   1.450 +#define RSA_R_LAST_OCTET_INVALID			 134
   1.451 +#define RSA_R_MODULUS_TOO_LARGE				 105
   1.452 +#define RSA_R_NO_PUBLIC_EXPONENT			 140
   1.453 +#define RSA_R_NULL_BEFORE_BLOCK_MISSING			 113
   1.454 +#define RSA_R_N_DOES_NOT_EQUAL_P_Q			 127
   1.455 +#define RSA_R_OAEP_DECODING_ERROR			 121
   1.456 +#define RSA_R_SLEN_RECOVERY_FAILED			 135
   1.457 +#define RSA_R_PADDING_CHECK_FAILED			 114
   1.458 +#define RSA_R_P_NOT_PRIME				 128
   1.459 +#define RSA_R_Q_NOT_PRIME				 129
   1.460 +#define RSA_R_RSA_OPERATIONS_NOT_SUPPORTED		 130
   1.461 +#define RSA_R_SSLV3_ROLLBACK_ATTACK			 115
   1.462 +#define RSA_R_THE_ASN1_OBJECT_IDENTIFIER_IS_NOT_KNOWN_FOR_THIS_MD 116
   1.463 +#define RSA_R_UNKNOWN_ALGORITHM_TYPE			 117
   1.464 +#define RSA_R_UNKNOWN_PADDING_TYPE			 118
   1.465 +#define RSA_R_WRONG_SIGNATURE_LENGTH			 119
   1.466 +#define RSA_R_SLEN_CHECK_FAILED				 136
   1.467 +
   1.468 +#ifdef  __cplusplus
   1.469 +}
   1.470 +#endif
   1.471 +#endif