Home | History | Annotate | Download | only in openssl
      1 /* Copyright (C) 1995-1998 Eric Young (eay (at) cryptsoft.com)
      2  * All rights reserved.
      3  *
      4  * This package is an SSL implementation written
      5  * by Eric Young (eay (at) cryptsoft.com).
      6  * The implementation was written so as to conform with Netscapes SSL.
      7  *
      8  * This library is free for commercial and non-commercial use as long as
      9  * the following conditions are aheared to.  The following conditions
     10  * apply to all code found in this distribution, be it the RC4, RSA,
     11  * lhash, DES, etc., code; not just the SSL code.  The SSL documentation
     12  * included with this distribution is covered by the same copyright terms
     13  * except that the holder is Tim Hudson (tjh (at) cryptsoft.com).
     14  *
     15  * Copyright remains Eric Young's, and as such any Copyright notices in
     16  * the code are not to be removed.
     17  * If this package is used in a product, Eric Young should be given attribution
     18  * as the author of the parts of the library used.
     19  * This can be in the form of a textual message at program startup or
     20  * in documentation (online or textual) provided with the package.
     21  *
     22  * Redistribution and use in source and binary forms, with or without
     23  * modification, are permitted provided that the following conditions
     24  * are met:
     25  * 1. Redistributions of source code must retain the copyright
     26  *    notice, this list of conditions and the following disclaimer.
     27  * 2. Redistributions in binary form must reproduce the above copyright
     28  *    notice, this list of conditions and the following disclaimer in the
     29  *    documentation and/or other materials provided with the distribution.
     30  * 3. All advertising materials mentioning features or use of this software
     31  *    must display the following acknowledgement:
     32  *    "This product includes cryptographic software written by
     33  *     Eric Young (eay (at) cryptsoft.com)"
     34  *    The word 'cryptographic' can be left out if the rouines from the library
     35  *    being used are not cryptographic related :-).
     36  * 4. If you include any Windows specific code (or a derivative thereof) from
     37  *    the apps directory (application code) you must include an acknowledgement:
     38  *    "This product includes software written by Tim Hudson (tjh (at) cryptsoft.com)"
     39  *
     40  * THIS SOFTWARE IS PROVIDED BY ERIC YOUNG ``AS IS'' AND
     41  * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
     42  * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
     43  * ARE DISCLAIMED.  IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
     44  * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
     45  * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
     46  * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
     47  * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
     48  * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
     49  * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
     50  * SUCH DAMAGE.
     51  *
     52  * The licence and distribution terms for any publically available version or
     53  * derivative of this code cannot be changed.  i.e. this code cannot simply be
     54  * copied and put under another distribution licence
     55  * [including the GNU Public Licence.] */
     56 
     57 #ifndef OPENSSL_HEADER_RSA_H
     58 #define OPENSSL_HEADER_RSA_H
     59 
     60 #include <openssl/base.h>
     61 
     62 #include <openssl/engine.h>
     63 #include <openssl/ex_data.h>
     64 
     65 #if defined(__cplusplus)
     66 extern "C" {
     67 #endif
     68 
     69 
     70 /* rsa.h contains functions for handling encryption and signature using RSA. */
     71 
     72 
     73 /* Allocation and destruction. */
     74 
     75 /* RSA_new returns a new, empty RSA object or NULL on error. */
     76 OPENSSL_EXPORT RSA *RSA_new(void);
     77 
     78 /* RSA_new_method acts the same as |RSA_new| but takes an explicit |ENGINE|. */
     79 OPENSSL_EXPORT RSA *RSA_new_method(const ENGINE *engine);
     80 
     81 /* RSA_free decrements the reference count of |rsa| and frees it if the
     82  * reference count drops to zero. */
     83 OPENSSL_EXPORT void RSA_free(RSA *rsa);
     84 
     85 /* RSA_up_ref increments the reference count of |rsa|. */
     86 OPENSSL_EXPORT int RSA_up_ref(RSA *rsa);
     87 
     88 
     89 /* Key generation. */
     90 
     91 /* RSA_generate_key_ex generates a new RSA key where the modulus has size
     92  * |bits| and the public exponent is |e|. If unsure, |RSA_F4| is a good value
     93  * for |e|. If |cb| is not NULL then it is called during the key generation
     94  * process. In addition to the calls documented for |BN_generate_prime_ex|, it
     95  * is called with event=2 when the n'th prime is rejected as unsuitable and
     96  * with event=3 when a suitable value for |p| is found.
     97  *
     98  * It returns one on success or zero on error. */
     99 OPENSSL_EXPORT int RSA_generate_key_ex(RSA *rsa, int bits, BIGNUM *e,
    100                                        BN_GENCB *cb);
    101 
    102 
    103 /* Encryption / Decryption */
    104 
    105 /* Padding types for encryption. */
    106 #define RSA_PKCS1_PADDING 1
    107 #define RSA_NO_PADDING 3
    108 #define RSA_PKCS1_OAEP_PADDING 4
    109 /* RSA_PKCS1_PSS_PADDING can only be used via the EVP interface. */
    110 #define RSA_PKCS1_PSS_PADDING 6
    111 
    112 /* RSA_encrypt encrypts |in_len| bytes from |in| to the public key from |rsa|
    113  * and writes, at most, |max_out| bytes of encrypted data to |out|. The
    114  * |max_out| argument must be, at least, |RSA_size| in order to ensure success.
    115  *
    116  * It returns 1 on success or zero on error.
    117  *
    118  * The |padding| argument must be one of the |RSA_*_PADDING| values. If in
    119  * doubt, |RSA_PKCS1_PADDING| is the most common but |RSA_PKCS1_OAEP_PADDING|
    120  * is the most secure. */
    121 OPENSSL_EXPORT int RSA_encrypt(RSA *rsa, size_t *out_len, uint8_t *out,
    122                                size_t max_out, const uint8_t *in, size_t in_len,
    123                                int padding);
    124 
    125 /* RSA_decrypt decrypts |in_len| bytes from |in| with the private key from
    126  * |rsa| and writes, at most, |max_out| bytes of plaintext to |out|. The
    127  * |max_out| argument must be, at least, |RSA_size| in order to ensure success.
    128  *
    129  * It returns 1 on success or zero on error.
    130  *
    131  * The |padding| argument must be one of the |RSA_*_PADDING| values. If in
    132  * doubt, |RSA_PKCS1_PADDING| is the most common but |RSA_PKCS1_OAEP_PADDING|
    133  * is the most secure. */
    134 OPENSSL_EXPORT int RSA_decrypt(RSA *rsa, size_t *out_len, uint8_t *out,
    135                                size_t max_out, const uint8_t *in, size_t in_len,
    136                                int padding);
    137 
    138 /* RSA_public_encrypt encrypts |flen| bytes from |from| to the public key in
    139  * |rsa| and writes the encrypted data to |to|. The |to| buffer must have at
    140  * least |RSA_size| bytes of space. It returns the number of bytes written, or
    141  * -1 on error. The |padding| argument must be one of the |RSA_*_PADDING|
    142  * values. If in doubt, |RSA_PKCS1_PADDING| is the most common but
    143  * |RSA_PKCS1_OAEP_PADDING| is the most secure.
    144  *
    145  * WARNING: this function is dangerous because it breaks the usual return value
    146  * convention. Use |RSA_encrypt| instead. */
    147 OPENSSL_EXPORT int RSA_public_encrypt(int flen, const uint8_t *from,
    148                                       uint8_t *to, RSA *rsa, int padding);
    149 
    150 /* RSA_private_decrypt decrypts |flen| bytes from |from| with the public key in
    151  * |rsa| and writes the plaintext to |to|. The |to| buffer must have at
    152  * least |RSA_size| bytes of space. It returns the number of bytes written, or
    153  * -1 on error. The |padding| argument must be one of the |RSA_*_PADDING|
    154  * values. If in doubt, |RSA_PKCS1_PADDING| is the most common but
    155  * |RSA_PKCS1_OAEP_PADDING| is the most secure.
    156  *
    157  * WARNING: this function is dangerous because it breaks the usual return value
    158  * convention. Use |RSA_decrypt| instead. */
    159 OPENSSL_EXPORT int RSA_private_decrypt(int flen, const uint8_t *from,
    160                                        uint8_t *to, RSA *rsa, int padding);
    161 
    162 /* RSA_message_index_PKCS1_type_2 performs the first step of a PKCS #1 padding
    163  * check for decryption. If the |from_len| bytes pointed to at |from| are a
    164  * valid PKCS #1 message, it returns one and sets |*out_index| to the start of
    165  * the unpadded message. The unpadded message is a suffix of the input and has
    166  * length |from_len - *out_index|. Otherwise, it returns zero and sets
    167  * |*out_index| to some undefined value. This function runs in time independent
    168  * of the input data and is intended to be used directly to avoid
    169  * Bleichenbacher's attack.
    170  *
    171  * WARNING: This function behaves differently from the usual OpenSSL convention
    172  * in that it does NOT put an error on the queue in the error case. */
    173 OPENSSL_EXPORT int RSA_message_index_PKCS1_type_2(const uint8_t *from,
    174                                                   size_t from_len,
    175                                                   size_t *out_index);
    176 
    177 
    178 /* Signing / Verification */
    179 
    180 /* RSA_sign signs |in_len| bytes of digest from |in| with |rsa| and writes, at
    181  * most, |RSA_size(rsa)| bytes to |out|. On successful return, the actual
    182  * number of bytes written is written to |*out_len|.
    183  *
    184  * The |hash_nid| argument identifies the hash function used to calculate |in|
    185  * and is embedded in the resulting signature. For example, it might be
    186  * |NID_sha256|.
    187  *
    188  * It returns 1 on success and zero on error. */
    189 OPENSSL_EXPORT int RSA_sign(int hash_nid, const uint8_t *in,
    190                             unsigned int in_len, uint8_t *out,
    191                             unsigned int *out_len, RSA *rsa);
    192 
    193 /* RSA_sign_raw signs |in_len| bytes from |in| with the public key from |rsa|
    194  * and writes, at most, |max_out| bytes of encrypted data to |out|. The
    195  * |max_out| argument must be, at least, |RSA_size| in order to ensure success.
    196  *
    197  * It returns 1 on success or zero on error.
    198  *
    199  * The |padding| argument must be one of the |RSA_*_PADDING| values. If in
    200  * doubt, |RSA_PKCS1_PADDING| is the most common. */
    201 OPENSSL_EXPORT int RSA_sign_raw(RSA *rsa, size_t *out_len, uint8_t *out,
    202                                 size_t max_out, const uint8_t *in,
    203                                 size_t in_len, int padding);
    204 
    205 /* RSA_verify verifies that |sig_len| bytes from |sig| are a valid, PKCS#1
    206  * signature of |msg_len| bytes at |msg| by |rsa|.
    207  *
    208  * The |hash_nid| argument identifies the hash function used to calculate |in|
    209  * and is embedded in the resulting signature in order to prevent hash
    210  * confusion attacks. For example, it might be |NID_sha256|.
    211  *
    212  * It returns one if the signature is valid and zero otherwise.
    213  *
    214  * WARNING: this differs from the original, OpenSSL function which additionally
    215  * returned -1 on error. */
    216 OPENSSL_EXPORT int RSA_verify(int hash_nid, const uint8_t *msg, size_t msg_len,
    217                               const uint8_t *sig, size_t sig_len, RSA *rsa);
    218 
    219 /* RSA_verify_raw verifies |in_len| bytes of signature from |in| using the
    220  * public key from |rsa| and writes, at most, |max_out| bytes of plaintext to
    221  * |out|. The |max_out| argument must be, at least, |RSA_size| in order to
    222  * ensure success.
    223  *
    224  * It returns 1 on success or zero on error.
    225  *
    226  * The |padding| argument must be one of the |RSA_*_PADDING| values. If in
    227  * doubt, |RSA_PKCS1_PADDING| is the most common. */
    228 OPENSSL_EXPORT int RSA_verify_raw(RSA *rsa, size_t *out_len, uint8_t *out,
    229                                   size_t max_out, const uint8_t *in,
    230                                   size_t in_len, int padding);
    231 
    232 /* RSA_private_encrypt encrypts |flen| bytes from |from| with the private key in
    233  * |rsa| and writes the encrypted data to |to|. The |to| buffer must have at
    234  * least |RSA_size| bytes of space. It returns the number of bytes written, or
    235  * -1 on error. The |padding| argument must be one of the |RSA_*_PADDING|
    236  * values. If in doubt, |RSA_PKCS1_PADDING| is the most common.
    237  *
    238  * WARNING: this function is dangerous because it breaks the usual return value
    239  * convention. Use |RSA_sign_raw| instead. */
    240 OPENSSL_EXPORT int RSA_private_encrypt(int flen, const uint8_t *from,
    241                                        uint8_t *to, RSA *rsa, int padding);
    242 
    243 /* RSA_private_encrypt verifies |flen| bytes of signature from |from| using the
    244  * public key in |rsa| and writes the plaintext to |to|. The |to| buffer must
    245  * have at least |RSA_size| bytes of space. It returns the number of bytes
    246  * written, or -1 on error. The |padding| argument must be one of the
    247  * |RSA_*_PADDING| values. If in doubt, |RSA_PKCS1_PADDING| is the most common.
    248  *
    249  * WARNING: this function is dangerous because it breaks the usual return value
    250  * convention. Use |RSA_verify_raw| instead. */
    251 OPENSSL_EXPORT int RSA_public_decrypt(int flen, const uint8_t *from,
    252                                       uint8_t *to, RSA *rsa, int padding);
    253 
    254 
    255 /* Utility functions. */
    256 
    257 /* RSA_size returns the number of bytes in the modulus, which is also the size
    258  * of a signature of encrypted value using |rsa|. */
    259 OPENSSL_EXPORT unsigned RSA_size(const RSA *rsa);
    260 
    261 /* RSA_is_opaque returns one if |rsa| is opaque and doesn't expose its key
    262  * material. Otherwise it return zero. */
    263 OPENSSL_EXPORT int RSA_is_opaque(const RSA *rsa);
    264 
    265 /* RSAPublicKey_dup allocates a fresh |RSA| and copies the private key from
    266  * |rsa| into it. It returns the fresh |RSA| object, or NULL on error. */
    267 OPENSSL_EXPORT RSA *RSAPublicKey_dup(const RSA *rsa);
    268 
    269 /* RSAPrivateKey_dup allocates a fresh |RSA| and copies the private key from
    270  * |rsa| into it. It returns the fresh |RSA| object, or NULL on error. */
    271 OPENSSL_EXPORT RSA *RSAPrivateKey_dup(const RSA *rsa);
    272 
    273 /* RSA_check_key performs basic validatity tests on |rsa|. It returns one if
    274  * they pass and zero otherwise. Opaque keys and public keys always pass. If it
    275  * returns zero then a more detailed error is available on the error queue. */
    276 OPENSSL_EXPORT int RSA_check_key(const RSA *rsa);
    277 
    278 /* RSA_recover_crt_params uses |rsa->n|, |rsa->d| and |rsa->e| in order to
    279  * calculate the two primes used and thus the precomputed, CRT values. These
    280  * values are set in the |p|, |q|, |dmp1|, |dmq1| and |iqmp| members of |rsa|,
    281  * which must be |NULL| on entry. It returns one on success and zero
    282  * otherwise. */
    283 OPENSSL_EXPORT int RSA_recover_crt_params(RSA *rsa);
    284 
    285 
    286 /* ASN.1 functions. */
    287 
    288 /* d2i_RSAPublicKey parses an ASN.1, DER-encoded, RSA public key from |len|
    289  * bytes at |*inp|. If |out| is not NULL then, on exit, a pointer to the result
    290  * is in |*out|. If |*out| is already non-NULL on entry then the result is
    291  * written directly into |*out|, otherwise a fresh |RSA| is allocated. On
    292  * successful exit, |*inp| is advanced past the DER structure. It returns the
    293  * result or NULL on error. */
    294 OPENSSL_EXPORT RSA *d2i_RSAPublicKey(RSA **out, const uint8_t **inp, long len);
    295 
    296 /* i2d_RSAPublicKey marshals |in| to an ASN.1, DER structure. If |outp| is not
    297  * NULL then the result is written to |*outp| and |*outp| is advanced just past
    298  * the output. It returns the number of bytes in the result, whether written or
    299  * not, or a negative value on error. */
    300 OPENSSL_EXPORT int i2d_RSAPublicKey(const RSA *in, uint8_t **outp);
    301 
    302 /* d2i_RSAPrivateKey parses an ASN.1, DER-encoded, RSA private key from |len|
    303  * bytes at |*inp|. If |out| is not NULL then, on exit, a pointer to the result
    304  * is in |*out|. If |*out| is already non-NULL on entry then the result is
    305  * written directly into |*out|, otherwise a fresh |RSA| is allocated. On
    306  * successful exit, |*inp| is advanced past the DER structure. It returns the
    307  * result or NULL on error. */
    308 OPENSSL_EXPORT RSA *d2i_RSAPrivateKey(RSA **out, const uint8_t **inp, long len);
    309 
    310 /* i2d_RSAPrivateKey marshals |in| to an ASN.1, DER structure. If |outp| is not
    311  * NULL then the result is written to |*outp| and |*outp| is advanced just past
    312  * the output. It returns the number of bytes in the result, whether written or
    313  * not, or a negative value on error. */
    314 OPENSSL_EXPORT int i2d_RSAPrivateKey(const RSA *in, uint8_t **outp);
    315 
    316 
    317 /* ex_data functions.
    318  *
    319  * These functions are wrappers. See |ex_data.h| for details. */
    320 
    321 OPENSSL_EXPORT int RSA_get_ex_new_index(long argl, void *argp,
    322                                         CRYPTO_EX_new *new_func,
    323                                         CRYPTO_EX_dup *dup_func,
    324                                         CRYPTO_EX_free *free_func);
    325 OPENSSL_EXPORT int RSA_set_ex_data(RSA *r, int idx, void *arg);
    326 OPENSSL_EXPORT void *RSA_get_ex_data(const RSA *r, int idx);
    327 
    328 /* RSA_FLAG_OPAQUE specifies that this RSA_METHOD does not expose its key
    329  * material. This may be set if, for instance, it is wrapping some other crypto
    330  * API, like a platform key store. */
    331 #define RSA_FLAG_OPAQUE 1
    332 
    333 /* RSA_FLAG_CACHE_PUBLIC causes a precomputed Montgomery context to be created,
    334  * on demand, for the public key operations. */
    335 #define RSA_FLAG_CACHE_PUBLIC 2
    336 
    337 /* RSA_FLAG_CACHE_PRIVATE causes a precomputed Montgomery context to be
    338  * created, on demand, for the private key operations. */
    339 #define RSA_FLAG_CACHE_PRIVATE 4
    340 
    341 /* RSA_FLAG_NO_BLINDING disables blinding of private operations. */
    342 #define RSA_FLAG_NO_BLINDING 8
    343 
    344 /* RSA_FLAG_EXT_PKEY means that private key operations will be handled by
    345  * |mod_exp| and that they do not depend on the private key components being
    346  * present: for example a key stored in external hardware. */
    347 #define RSA_FLAG_EXT_PKEY 0x20
    348 
    349 /* RSA_FLAG_SIGN_VER causes the |sign| and |verify| functions of |rsa_meth_st|
    350  * to be called when set. */
    351 #define RSA_FLAG_SIGN_VER 0x40
    352 
    353 
    354 /* RSA public exponent values. */
    355 
    356 #define RSA_3 0x3
    357 #define RSA_F4 0x10001
    358 
    359 
    360 struct rsa_meth_st {
    361   struct openssl_method_common_st common;
    362 
    363   void *app_data;
    364 
    365   int (*init)(RSA *rsa);
    366   int (*finish)(RSA *rsa);
    367 
    368   /* size returns the size of the RSA modulus in bytes. */
    369   size_t (*size)(const RSA *rsa);
    370 
    371   int (*sign)(int type, const uint8_t *m, unsigned int m_length,
    372               uint8_t *sigret, unsigned int *siglen, const RSA *rsa);
    373 
    374   int (*verify)(int dtype, const uint8_t *m, unsigned int m_length,
    375                 const uint8_t *sigbuf, unsigned int siglen, const RSA *rsa);
    376 
    377 
    378   /* These functions mirror the |RSA_*| functions of the same name. */
    379   int (*encrypt)(RSA *rsa, size_t *out_len, uint8_t *out, size_t max_out,
    380                  const uint8_t *in, size_t in_len, int padding);
    381   int (*sign_raw)(RSA *rsa, size_t *out_len, uint8_t *out, size_t max_out,
    382                   const uint8_t *in, size_t in_len, int padding);
    383 
    384   int (*decrypt)(RSA *rsa, size_t *out_len, uint8_t *out, size_t max_out,
    385                  const uint8_t *in, size_t in_len, int padding);
    386   int (*verify_raw)(RSA *rsa, size_t *out_len, uint8_t *out, size_t max_out,
    387                     const uint8_t *in, size_t in_len, int padding);
    388 
    389   /* private_transform takes a big-endian integer from |in|, calculates the
    390    * d'th power of it, modulo the RSA modulus and writes the result as a
    391    * big-endian integer to |out|. Both |in| and |out| are |len| bytes long and
    392    * |len| is always equal to |RSA_size(rsa)|. If the result of the transform
    393    * can be represented in fewer than |len| bytes, then |out| must be zero
    394    * padded on the left.
    395    *
    396    * It returns one on success and zero otherwise.
    397    *
    398    * RSA decrypt and sign operations will call this, thus an ENGINE might wish
    399    * to override it in order to avoid having to implement the padding
    400    * functionality demanded by those, higher level, operations. */
    401   int (*private_transform)(RSA *rsa, uint8_t *out, const uint8_t *in,
    402                            size_t len);
    403 
    404   int (*mod_exp)(BIGNUM *r0, const BIGNUM *I, RSA *rsa,
    405                  BN_CTX *ctx); /* Can be null */
    406   int (*bn_mod_exp)(BIGNUM *r, const BIGNUM *a, const BIGNUM *p,
    407                     const BIGNUM *m, BN_CTX *ctx,
    408                     BN_MONT_CTX *m_ctx);
    409 
    410   int flags;
    411 
    412   int (*keygen)(RSA *rsa, int bits, BIGNUM *e, BN_GENCB *cb);
    413 };
    414 
    415 
    416 /* Private functions. */
    417 
    418 typedef struct bn_blinding_st BN_BLINDING;
    419 
    420 struct rsa_st {
    421   /* version is only used during ASN.1 (de)serialisation. */
    422   long version;
    423   RSA_METHOD *meth;
    424 
    425   BIGNUM *n;
    426   BIGNUM *e;
    427   BIGNUM *d;
    428   BIGNUM *p;
    429   BIGNUM *q;
    430   BIGNUM *dmp1;
    431   BIGNUM *dmq1;
    432   BIGNUM *iqmp;
    433   /* be careful using this if the RSA structure is shared */
    434   CRYPTO_EX_DATA ex_data;
    435   int references;
    436   int flags;
    437 
    438   /* Used to cache montgomery values */
    439   BN_MONT_CTX *_method_mod_n;
    440   BN_MONT_CTX *_method_mod_p;
    441   BN_MONT_CTX *_method_mod_q;
    442 
    443   /* num_blindings contains the size of the |blindings| and |blindings_inuse|
    444    * arrays. This member and the |blindings_inuse| array are protected by
    445    * CRYPTO_LOCK_RSA_BLINDING. */
    446   unsigned num_blindings;
    447   /* blindings is an array of BN_BLINDING structures that can be reserved by a
    448    * thread by locking CRYPTO_LOCK_RSA_BLINDING and changing the corresponding
    449    * element in |blindings_inuse| from 0 to 1. */
    450   BN_BLINDING **blindings;
    451   unsigned char *blindings_inuse;
    452 };
    453 
    454 
    455 #if defined(__cplusplus)
    456 }  /* extern C */
    457 #endif
    458 
    459 #define RSA_F_RSA_padding_check_none 100
    460 #define RSA_F_RSA_padding_add_none 101
    461 #define RSA_F_RSA_padding_check_PKCS1_OAEP_mgf1 102
    462 #define RSA_F_RSA_verify_PKCS1_PSS_mgf1 103
    463 #define RSA_F_RSA_padding_add_PKCS1_PSS_mgf1 104
    464 #define RSA_F_RSA_verify 105
    465 #define RSA_F_rsa_setup_blinding 106
    466 #define RSA_F_verify_raw 107
    467 #define RSA_F_RSA_padding_add_PKCS1_type_1 108
    468 #define RSA_F_keygen 109
    469 #define RSA_F_RSA_padding_add_PKCS1_OAEP_mgf1 110
    470 #define RSA_F_pkcs1_prefixed_msg 111
    471 #define RSA_F_BN_BLINDING_update 112
    472 #define RSA_F_RSA_padding_check_SSLv23 113
    473 #define RSA_F_RSA_padding_add_SSLv23 114
    474 #define RSA_F_BN_BLINDING_new 115
    475 #define RSA_F_RSA_padding_add_PKCS1_type_2 116
    476 #define RSA_F_BN_BLINDING_convert_ex 117
    477 #define RSA_F_BN_BLINDING_invert_ex 118
    478 #define RSA_F_encrypt 119
    479 #define RSA_F_sign_raw 120
    480 #define RSA_F_RSA_new_method 121
    481 #define RSA_F_RSA_padding_check_PKCS1_type_1 122
    482 #define RSA_F_RSA_sign 123
    483 #define RSA_F_BN_BLINDING_create_param 124
    484 #define RSA_F_decrypt 125
    485 #define RSA_F_RSA_padding_check_PKCS1_type_2 126
    486 #define RSA_F_RSA_recover_crt_params 127
    487 #define RSA_F_RSA_check_key 128
    488 #define RSA_F_private_transform 129
    489 #define RSA_R_INVALID_MESSAGE_LENGTH 100
    490 #define RSA_R_NO_PUBLIC_EXPONENT 102
    491 #define RSA_R_DATA_TOO_LARGE_FOR_KEY_SIZE 103
    492 #define RSA_R_BLOCK_TYPE_IS_NOT_01 104
    493 #define RSA_R_DATA_TOO_SMALL_FOR_KEY_SIZE 105
    494 #define RSA_R_UNKNOWN_PADDING_TYPE 106
    495 #define RSA_R_TOO_MANY_ITERATIONS 107
    496 #define RSA_R_SLEN_RECOVERY_FAILED 108
    497 #define RSA_R_WRONG_SIGNATURE_LENGTH 109
    498 #define RSA_R_MODULUS_TOO_LARGE 110
    499 #define RSA_R_NULL_BEFORE_BLOCK_MISSING 111
    500 #define RSA_R_DATA_TOO_LARGE 112
    501 #define RSA_R_OUTPUT_BUFFER_TOO_SMALL 113
    502 #define RSA_R_SLEN_CHECK_FAILED 114
    503 #define RSA_R_FIRST_OCTET_INVALID 115
    504 #define RSA_R_BAD_E_VALUE 116
    505 #define RSA_R_DATA_TOO_LARGE_FOR_MODULUS 117
    506 #define RSA_R_EMPTY_PUBLIC_KEY 118
    507 #define RSA_R_BAD_PAD_BYTE_COUNT 119
    508 #define RSA_R_OAEP_DECODING_ERROR 120
    509 #define RSA_R_TOO_LONG 121
    510 #define RSA_R_BAD_FIXED_HEADER_DECRYPT 122
    511 #define RSA_R_DATA_TOO_SMALL 123
    512 #define RSA_R_UNKNOWN_ALGORITHM_TYPE 124
    513 #define RSA_R_PADDING_CHECK_FAILED 125
    514 #define RSA_R_THE_ASN1_OBJECT_IDENTIFIER_IS_NOT_KNOWN_FOR_THIS_MD 126
    515 #define RSA_R_BLOCK_TYPE_IS_NOT_02 127
    516 #define RSA_R_LAST_OCTET_INVALID 128
    517 #define RSA_R_DIGEST_TOO_BIG_FOR_RSA_KEY 129
    518 #define RSA_R_SSLV3_ROLLBACK_ATTACK 130
    519 #define RSA_R_KEY_SIZE_TOO_SMALL 131
    520 #define RSA_R_BAD_SIGNATURE 132
    521 #define RSA_R_BN_NOT_INITIALIZED 133
    522 #define RSA_R_PKCS_DECODING_ERROR 134
    523 #define RSA_R_BAD_RSA_PARAMETERS 135
    524 #define RSA_R_INTERNAL_ERROR 136
    525 #define RSA_R_CRT_PARAMS_ALREADY_GIVEN 137
    526 #define RSA_R_D_E_NOT_CONGRUENT_TO_1 138
    527 #define RSA_R_VALUE_MISSING 139
    528 #define RSA_R_N_NOT_EQUAL_P_Q 140
    529 #define RSA_R_CRT_VALUES_INCORRECT 141
    530 #define RSA_R_INCONSISTENT_SET_OF_CRT_VALUES 142
    531 #define RSA_R_ONLY_ONE_OF_P_Q_GIVEN 143
    532 #define RSA_R_DATA_LEN_NOT_EQUAL_TO_MOD_LEN 144
    533 
    534 #endif  /* OPENSSL_HEADER_RSA_H */
    535