"make update"
[openssl.git] / crypto / rsa / rsa.h
index 3be447dff2e85b918dbce667bc11de278bafc2fb..6c64db74a5f9a71af40e4cc64c8201c9d287a97b 100644 (file)
@@ -108,7 +108,7 @@ struct rsa_st
        BIGNUM *dmp1;
        BIGNUM *dmq1;
        BIGNUM *iqmp;
-       /* be carefull using this if the RSA structure is shared */
+       /* be careful using this if the RSA structure is shared */
        CRYPTO_EX_DATA ex_data;
        int references;
        int flags;
@@ -133,6 +133,12 @@ struct rsa_st
 #define RSA_FLAG_CACHE_PRIVATE         0x04
 #define RSA_FLAG_BLINDING              0x08
 #define RSA_FLAG_THREAD_SAFE           0x10
+/* This flag means the private key operations will be handled by rsa_mod_exp
+ * and that they do not depend on the private key components being present:
+ * for example a key stored in external hardware. Without this flag bn_mod_exp
+ * gets called when private key components are absent.
+ */
+#define RSA_FLAG_EXT_PKEY              0x20
 
 #define RSA_PKCS1_PADDING      1
 #define RSA_SSLV23_PADDING     2
@@ -147,6 +153,7 @@ RSA *       RSA_new_method(RSA_METHOD *method);
 int    RSA_size(RSA *);
 RSA *  RSA_generate_key(int bits, unsigned long e,void
                (*callback)(int,int,void *),void *cb_arg);
+int    RSA_check_key(RSA *);
        /* next 4 return -1 on error */
 int    RSA_public_encrypt(int flen, unsigned char *from,
                unsigned char *to, RSA *rsa,int padding);
@@ -174,6 +181,8 @@ RSA_METHOD *RSA_PKCS1_RSAref(void);
 /* these are the actual SSLeay RSA functions */
 RSA_METHOD *RSA_PKCS1_SSLeay(void);
 
+RSA_METHOD *RSA_null_method(void);
+
 void   ERR_load_RSA_strings(void );
 
 RSA *  d2i_RSAPublicKey(RSA **a, unsigned char **pp, long length);
@@ -248,12 +257,14 @@ char *RSA_get_ex_data(RSA *r, int idx);
 
 /* Function codes. */
 #define RSA_F_MEMORY_LOCK                               100
+#define RSA_F_RSA_CHECK_KEY                             123
 #define RSA_F_RSA_EAY_PRIVATE_DECRYPT                   101
 #define RSA_F_RSA_EAY_PRIVATE_ENCRYPT                   102
 #define RSA_F_RSA_EAY_PUBLIC_DECRYPT                    103
 #define RSA_F_RSA_EAY_PUBLIC_ENCRYPT                    104
 #define RSA_F_RSA_GENERATE_KEY                          105
 #define RSA_F_RSA_NEW_METHOD                            106
+#define RSA_F_RSA_NULL                                  124
 #define RSA_F_RSA_PADDING_ADD_NONE                      107
 #define RSA_F_RSA_PADDING_ADD_PKCS1_OAEP                121
 #define RSA_F_RSA_PADDING_ADD_PKCS1_TYPE_1              108
@@ -285,10 +296,18 @@ char *RSA_get_ex_data(RSA *r, int idx);
 #define RSA_R_DATA_TOO_SMALL                            111
 #define RSA_R_DATA_TOO_SMALL_FOR_KEY_SIZE               122
 #define RSA_R_DIGEST_TOO_BIG_FOR_RSA_KEY                112
+#define RSA_R_DMP1_NOT_CONGRUENT_TO_D                   124
+#define RSA_R_DMQ1_NOT_CONGRUENT_TO_D                   125
+#define RSA_R_D_E_NOT_CONGRUENT_TO_1                    123
+#define RSA_R_IQMP_NOT_INVERSE_OF_Q                     126
 #define RSA_R_KEY_SIZE_TOO_SMALL                        120
 #define RSA_R_NULL_BEFORE_BLOCK_MISSING                         113
+#define RSA_R_N_DOES_NOT_EQUAL_P_Q                      127
 #define RSA_R_OAEP_DECODING_ERROR                       121
 #define RSA_R_PADDING_CHECK_FAILED                      114
+#define RSA_R_P_NOT_PRIME                               128
+#define RSA_R_Q_NOT_PRIME                               129
+#define RSA_R_RSA_OPERATIONS_NOT_SUPPORTED              130
 #define RSA_R_SSLV3_ROLLBACK_ATTACK                     115
 #define RSA_R_THE_ASN1_OBJECT_IDENTIFIER_IS_NOT_KNOWN_FOR_THIS_MD 116
 #define RSA_R_UNKNOWN_ALGORITHM_TYPE                    117