Preliminary WIN32 support for FIPS capable OpenSSL building.
[openssl.git] / crypto / crypto.h
index 1df5926efd3d87105ebd3c09bc23e477821fec59..6aeda0a9ace31b4cec2d817745045eae0bc471b9 100644 (file)
@@ -365,7 +365,7 @@ int CRYPTO_is_mem_check_on(void);
 #define MemCheck_off() CRYPTO_mem_ctrl(CRYPTO_MEM_CHECK_DISABLE)
 #define is_MemCheck_on() CRYPTO_is_mem_check_on()
 
-#define OPENSSL_malloc(num)    CRYPTO_malloc(num,__FILE__,__LINE__)
+#define OPENSSL_malloc(num)    CRYPTO_malloc((int)num,__FILE__,__LINE__)
 #define OPENSSL_strdup(str)    CRYPTO_strdup((str),__FILE__,__LINE__)
 #define OPENSSL_realloc(addr,num) \
        CRYPTO_realloc((char *)addr,(int)num,__FILE__,__LINE__)
@@ -469,10 +469,8 @@ int CRYPTO_set_mem_ex_functions(void *(*m)(size_t,const char *,int),
                                 void (*f)(void *));
 int CRYPTO_set_locked_mem_ex_functions(void *(*m)(size_t,const char *,int),
                                        void (*free_func)(void *));
-int CRYPTO_set_mem_debug_functions(void (*m)(void *,size_t,const char *,int,
-                                            int),
-                                  void (*r)(void *,void *,size_t,const char *,
-                                            int,int),
+int CRYPTO_set_mem_debug_functions(void (*m)(void *,int,const char *,int,int),
+                                  void (*r)(void *,void *,int,const char *,int,int),
                                   void (*f)(void *,int),
                                   void (*so)(long),
                                   long (*go)(void));
@@ -483,23 +481,21 @@ void CRYPTO_get_mem_ex_functions(void *(**m)(size_t,const char *,int),
                                  void (**f)(void *));
 void CRYPTO_get_locked_mem_ex_functions(void *(**m)(size_t,const char *,int),
                                         void (**f)(void *));
-void CRYPTO_get_mem_debug_functions(void (**m)(void *,size_t,const char *,int,
-                                              int),
-                                   void (**r)(void *,void *,size_t,
-                                              const char *,int,int),
+void CRYPTO_get_mem_debug_functions(void (**m)(void *,int,const char *,int,int),
+                                   void (**r)(void *,void *,int,const char *,int,int),
                                    void (**f)(void *,int),
                                    void (**so)(long),
                                    long (**go)(void));
 
-void *CRYPTO_malloc_locked(size_t num, const char *file, int line);
+void *CRYPTO_malloc_locked(int num, const char *file, int line);
 void CRYPTO_free_locked(void *);
-void *CRYPTO_malloc(size_t num, const char *file, int line);
+void *CRYPTO_malloc(int num, const char *file, int line);
 char *CRYPTO_strdup(const char *str, const char *file, int line);
 void CRYPTO_free(void *);
-void *CRYPTO_realloc(void *addr, size_t num, const char *file, int line);
-void *CRYPTO_realloc_clean(void *addr, size_t old_num, size_t num,
-                          const char *file, int line);
-void *CRYPTO_remalloc(void *addr, size_t num, const char *file, int line);
+void *CRYPTO_realloc(void *addr,int num, const char *file, int line);
+void *CRYPTO_realloc_clean(void *addr,int old_num,int num,const char *file,
+                          int line);
+void *CRYPTO_remalloc(void *addr,int num, const char *file, int line);
 
 void OPENSSL_cleanse(void *ptr, size_t len);
 
@@ -520,10 +516,8 @@ int CRYPTO_remove_all_info(void);
  * 0:  called before the actual memory allocation has taken place
  * 1:  called after the actual memory allocation has taken place
  */
-void CRYPTO_dbg_malloc(void *addr,size_t num,const char *file,int line,
-                      int before_p);
-void CRYPTO_dbg_realloc(void *addr1,void *addr2,size_t num,const char *file,
-                       int line,int before_p);
+void CRYPTO_dbg_malloc(void *addr,int num,const char *file,int line,int before_p);
+void CRYPTO_dbg_realloc(void *addr1,void *addr2,int num,const char *file,int line,int before_p);
 void CRYPTO_dbg_free(void *addr,int before_p);
 /* Tell the debugging code about options.  By default, the following values
  * apply:
@@ -551,6 +545,34 @@ void OpenSSLDie(const char *file,int line,const char *assertion);
 
 unsigned long *OPENSSL_ia32cap_loc(void);
 #define OPENSSL_ia32cap (*(OPENSSL_ia32cap_loc()))
+int OPENSSL_isservice(void);
+
+int FIPS_mode(void);
+int FIPS_mode_set(int r);
+
+void OPENSSL_init(void);
+
+#define fips_md_init(alg) fips_md_init_ctx(alg, alg)
+
+#ifdef OPENSSL_FIPS
+#define fips_md_init_ctx(alg, cx) \
+       int alg##_Init(cx##_CTX *c) \
+       { \
+       if (FIPS_mode()) OpenSSLDie(__FILE__, __LINE__, \
+               "Low level API call to digest " #alg " forbidden in FIPS mode!"); \
+       return private_##alg##_Init(c); \
+       } \
+       int private_##alg##_Init(cx##_CTX *c)
+
+#define fips_cipher_abort(alg) \
+       if (FIPS_mode()) OpenSSLDie(__FILE__, __LINE__, \
+               "Low level API call to cipher " #alg " forbidden in FIPS mode!")
+
+#else
+#define fips_md_init_ctx(alg, cx) \
+       int alg##_Init(cx##_CTX *c)
+#define fips_cipher_abort(alg) while(0)
+#endif
 
 /* BEGIN ERROR CODES */
 /* The following lines are auto generated by the script mkerr.pl. Any changes
@@ -567,11 +589,13 @@ void ERR_load_CRYPTO_strings(void);
 #define CRYPTO_F_CRYPTO_SET_EX_DATA                     102
 #define CRYPTO_F_DEF_ADD_INDEX                          104
 #define CRYPTO_F_DEF_GET_CLASS                          105
+#define CRYPTO_F_FIPS_MODE_SET                          109
 #define CRYPTO_F_INT_DUP_EX_DATA                        106
 #define CRYPTO_F_INT_FREE_EX_DATA                       107
 #define CRYPTO_F_INT_NEW_EX_DATA                        108
 
 /* Reason codes. */
+#define CRYPTO_R_FIPS_MODE_NOT_SUPPORTED                101
 #define CRYPTO_R_NO_DYNLOCK_CREATE_CALLBACK             100
 
 #ifdef  __cplusplus