Make sure the OPENSSL_INIT flags are 32 bits and document the ssl range
[openssl.git] / include / openssl / crypto.h
index d68551dd2be897d3694ea19b57b8d754c6f5618d..7191915743e1508d4c42e6b484c4a3036a62674e 100644 (file)
@@ -549,23 +549,24 @@ int CRYPTO_memcmp(const volatile void * volatile in_a,
                   size_t len);
 
 /* Standard initialisation options */
-# define OPENSSL_INIT_NO_LOAD_CRYPTO_STRINGS 0x000001
-# define OPENSSL_INIT_LOAD_CRYPTO_STRINGS    0x000002
-# define OPENSSL_INIT_ADD_ALL_CIPHERS        0x000004
-# define OPENSSL_INIT_ADD_ALL_DIGESTS        0x000008
-# define OPENSSL_INIT_NO_ADD_ALL_CIPHERS     0x000010
-# define OPENSSL_INIT_NO_ADD_ALL_DIGESTS     0x000020
-# define OPENSSL_INIT_LOAD_CONFIG            0x000040
-# define OPENSSL_INIT_NO_LOAD_CONFIG         0x000080
-# define OPENSSL_INIT_ASYNC                  0x000100
-# define OPENSSL_INIT_ENGINE_RDRAND          0x000200
-# define OPENSSL_INIT_ENGINE_DYNAMIC         0x000400
-# define OPENSSL_INIT_ENGINE_OPENSSL         0x000800
-# define OPENSSL_INIT_ENGINE_CRYPTODEV       0x001000
-# define OPENSSL_INIT_ENGINE_CAPI            0x002000
-# define OPENSSL_INIT_ENGINE_PADLOCK         0x004000
-# define OPENSSL_INIT_ENGINE_DASYNC          0x008000
-/* OPENSSL_INIT flag 0x010000 reserved for internal use */
+# define OPENSSL_INIT_NO_LOAD_CRYPTO_STRINGS 0x00000001L
+# define OPENSSL_INIT_LOAD_CRYPTO_STRINGS    0x00000002L
+# define OPENSSL_INIT_ADD_ALL_CIPHERS        0x00000004L
+# define OPENSSL_INIT_ADD_ALL_DIGESTS        0x00000008L
+# define OPENSSL_INIT_NO_ADD_ALL_CIPHERS     0x00000010L
+# define OPENSSL_INIT_NO_ADD_ALL_DIGESTS     0x00000020L
+# define OPENSSL_INIT_LOAD_CONFIG            0x00000040L
+# define OPENSSL_INIT_NO_LOAD_CONFIG         0x00000080L
+# define OPENSSL_INIT_ASYNC                  0x00000100L
+# define OPENSSL_INIT_ENGINE_RDRAND          0x00000200L
+# define OPENSSL_INIT_ENGINE_DYNAMIC         0x00000400L
+# define OPENSSL_INIT_ENGINE_OPENSSL         0x00000800L
+# define OPENSSL_INIT_ENGINE_CRYPTODEV       0x00001000L
+# define OPENSSL_INIT_ENGINE_CAPI            0x00002000L
+# define OPENSSL_INIT_ENGINE_PADLOCK         0x00004000L
+# define OPENSSL_INIT_ENGINE_DASYNC          0x00008000L
+/* OPENSSL_INIT flag 0x00010000 reserved for internal use */
+/* OPENSSL_INIT flag range 0xfff00000 reserved for OPENSSL_init_ssl() */
 /* Max OPENSSL_INIT flag value is 0x80000000 */
 
 /* openssl and dasync not counted as builtin */
@@ -575,34 +576,18 @@ int CRYPTO_memcmp(const volatile void * volatile in_a,
     OPENSSL_INIT_ENGINE_PADLOCK)
 
 
-
-/* Optional settings for initialisation */
-# define OPENSSL_INIT_SET_END                0
-# define OPENSSL_INIT_SET_CONF_FILENAME      1
-
-typedef struct ossl_init_settings_st {
-    int name;
-    union {
-        int type_int;
-        long type_long;
-        int32_t type_int32_t;
-        uint32_t type_uint32_t;
-        int64_t type_int64_t;
-        uint64_t type_uint64_t;
-        size_t type_size_t;
-        const char *type_string;
-        void *type_void_ptr;
-    } value;
-} OPENSSL_INIT_SETTINGS;
-
-typedef struct ossl_init_stop_st OPENSSL_INIT_STOP;
-
 /* Library initialisation functions */
 void OPENSSL_cleanup(void);
 int OPENSSL_init_crypto(uint64_t opts, const OPENSSL_INIT_SETTINGS *settings);
 int OPENSSL_atexit(void (*handler)(void));
 void OPENSSL_thread_stop(void);
 
+/* Low-level control of initialization */
+OPENSSL_INIT_SETTINGS *OPENSSL_INIT_new(void);
+void OPENSSL_INIT_set_config_filename(OPENSSL_INIT_SETTINGS *settings,
+                                      const char *config_file);
+void OPENSSL_INIT_free(OPENSSL_INIT_SETTINGS *settings);
+
 /* BEGIN ERROR CODES */
 /*
  * The following lines are auto generated by the script mkerr.pl. Any changes