X-Git-Url: http://git.ipfire.org/?a=blobdiff_plain;f=include%2Fopenssl%2Fstore.h;h=8be9f71bf355c73062d4c72465a0cc9b62ee80ed;hb=b425001010044adbdbcd98f8682694b30b73bbf4;hp=ffea2df15b8b8a1c75e08f1e62223ae371167483;hpb=454afd9866300b984306c5b565a9d55568a5bc50;p=thirdparty%2Fopenssl.git diff --git a/include/openssl/store.h b/include/openssl/store.h index ffea2df15b..8be9f71bf3 100644 --- a/include/openssl/store.h +++ b/include/openssl/store.h @@ -52,10 +52,15 @@ typedef OSSL_STORE_INFO *(*OSSL_STORE_post_process_info_fn)(OSSL_STORE_INFO *, * Returns a context reference which represents the channel to communicate * through. */ -OSSL_STORE_CTX *OSSL_STORE_open(const char *uri, const UI_METHOD *ui_method, - void *ui_data, - OSSL_STORE_post_process_info_fn post_process, - void *post_process_data); +OSSL_STORE_CTX * +OSSL_STORE_open(const char *uri, const UI_METHOD *ui_method, void *ui_data, + OSSL_STORE_post_process_info_fn post_process, + void *post_process_data); +OSSL_STORE_CTX * +OSSL_STORE_open_ex(const char *uri, OSSL_LIB_CTX *libctx, const char *propq, + const UI_METHOD *ui_method, void *ui_data, + OSSL_STORE_post_process_info_fn post_process, + void *post_process_data); /* * Control / fine tune the OSSL_STORE channel. |cmd| determines what is to be @@ -63,8 +68,12 @@ OSSL_STORE_CTX *OSSL_STORE_open(const char *uri, const UI_METHOD *ui_method, * determine which loader is used), except for common commands (see below). * Each command takes different arguments. */ -int OSSL_STORE_ctrl(OSSL_STORE_CTX *ctx, int cmd, ... /* args */); -int OSSL_STORE_vctrl(OSSL_STORE_CTX *ctx, int cmd, va_list args); +DEPRECATEDIN_3_0(int OSSL_STORE_ctrl(OSSL_STORE_CTX *ctx, int cmd, + ... /* args */)) +DEPRECATEDIN_3_0(int OSSL_STORE_vctrl(OSSL_STORE_CTX *ctx, int cmd, + va_list args)) + +# ifndef OPENSSL_NO_DEPRECATED_3_0 /* * Common ctrl commands that different loaders may choose to support. @@ -74,6 +83,8 @@ int OSSL_STORE_vctrl(OSSL_STORE_CTX *ctx, int cmd, va_list args); /* Where custom commands start */ # define OSSL_STORE_C_CUSTOM_START 100 +# endif + /* * Read one data item (a key, a cert, a CRL) that is supported by the OSSL_STORE * functionality, given a context. @@ -115,8 +126,8 @@ int OSSL_STORE_close(OSSL_STORE_CTX *ctx); * Note that this function is considered unsafe, all depending on what the * BIO actually reads. */ -OSSL_STORE_CTX *OSSL_STORE_attach(BIO *bio, OPENSSL_CTX *libctx, - const char *scheme, const char *propq, +OSSL_STORE_CTX *OSSL_STORE_attach(BIO *bio, const char *scheme, + OSSL_LIB_CTX *libctx, const char *propq, const UI_METHOD *ui_method, void *ui_data, OSSL_STORE_post_process_info_fn post_process, void *post_process_data); @@ -133,9 +144,10 @@ OSSL_STORE_CTX *OSSL_STORE_attach(BIO *bio, OPENSSL_CTX *libctx, */ # define OSSL_STORE_INFO_NAME 1 /* char * */ # define OSSL_STORE_INFO_PARAMS 2 /* EVP_PKEY * */ -# define OSSL_STORE_INFO_PKEY 3 /* EVP_PKEY * */ -# define OSSL_STORE_INFO_CERT 4 /* X509 * */ -# define OSSL_STORE_INFO_CRL 5 /* X509_CRL * */ +# define OSSL_STORE_INFO_PUBKEY 3 /* EVP_PKEY * */ +# define OSSL_STORE_INFO_PKEY 4 /* EVP_PKEY * */ +# define OSSL_STORE_INFO_CERT 5 /* X509 * */ +# define OSSL_STORE_INFO_CRL 6 /* X509_CRL * */ /* * Functions to generate OSSL_STORE_INFOs, one function for each type we @@ -144,9 +156,11 @@ OSSL_STORE_CTX *OSSL_STORE_attach(BIO *bio, OPENSSL_CTX *libctx, * In all cases, ownership of the object is transferred to the OSSL_STORE_INFO * and will therefore be freed when the OSSL_STORE_INFO is freed. */ +OSSL_STORE_INFO *OSSL_STORE_INFO_new(int type, void *data); OSSL_STORE_INFO *OSSL_STORE_INFO_new_NAME(char *name); int OSSL_STORE_INFO_set0_NAME_description(OSSL_STORE_INFO *info, char *desc); OSSL_STORE_INFO *OSSL_STORE_INFO_new_PARAMS(EVP_PKEY *params); +OSSL_STORE_INFO *OSSL_STORE_INFO_new_PUBKEY(EVP_PKEY *pubkey); OSSL_STORE_INFO *OSSL_STORE_INFO_new_PKEY(EVP_PKEY *pkey); OSSL_STORE_INFO *OSSL_STORE_INFO_new_CERT(X509 *x509); OSSL_STORE_INFO *OSSL_STORE_INFO_new_CRL(X509_CRL *crl); @@ -155,12 +169,15 @@ OSSL_STORE_INFO *OSSL_STORE_INFO_new_CRL(X509_CRL *crl); * Functions to try to extract data from a OSSL_STORE_INFO. */ int OSSL_STORE_INFO_get_type(const OSSL_STORE_INFO *info); +void *OSSL_STORE_INFO_get0_data(int type, const OSSL_STORE_INFO *info); const char *OSSL_STORE_INFO_get0_NAME(const OSSL_STORE_INFO *info); char *OSSL_STORE_INFO_get1_NAME(const OSSL_STORE_INFO *info); const char *OSSL_STORE_INFO_get0_NAME_description(const OSSL_STORE_INFO *info); char *OSSL_STORE_INFO_get1_NAME_description(const OSSL_STORE_INFO *info); EVP_PKEY *OSSL_STORE_INFO_get0_PARAMS(const OSSL_STORE_INFO *info); EVP_PKEY *OSSL_STORE_INFO_get1_PARAMS(const OSSL_STORE_INFO *info); +EVP_PKEY *OSSL_STORE_INFO_get0_PUBKEY(const OSSL_STORE_INFO *info); +EVP_PKEY *OSSL_STORE_INFO_get1_PUBKEY(const OSSL_STORE_INFO *info); EVP_PKEY *OSSL_STORE_INFO_get0_PKEY(const OSSL_STORE_INFO *info); EVP_PKEY *OSSL_STORE_INFO_get1_PKEY(const OSSL_STORE_INFO *info); X509 *OSSL_STORE_INFO_get0_CERT(const OSSL_STORE_INFO *info); @@ -225,6 +242,32 @@ int OSSL_STORE_expect(OSSL_STORE_CTX *ctx, int expected_type); int OSSL_STORE_find(OSSL_STORE_CTX *ctx, const OSSL_STORE_SEARCH *search); +/*- + * Function to fetch a loader and extract data from it + * --------------------------------------------------- + */ + +typedef struct ossl_store_loader_st OSSL_STORE_LOADER; + +OSSL_STORE_LOADER *OSSL_STORE_LOADER_fetch(const char *scheme, + OSSL_LIB_CTX *libctx, + const char *properties); +int OSSL_STORE_LOADER_up_ref(OSSL_STORE_LOADER *loader); +void OSSL_STORE_LOADER_free(OSSL_STORE_LOADER *loader); +const OSSL_PROVIDER *OSSL_STORE_LOADER_provider(const OSSL_STORE_LOADER * + loader); +const char *OSSL_STORE_LOADER_properties(const OSSL_STORE_LOADER *loader); +int OSSL_STORE_LOADER_number(const OSSL_STORE_LOADER *loader); +int OSSL_STORE_LOADER_is_a(const OSSL_STORE_LOADER *loader, + const char *scheme); +void OSSL_STORE_LOADER_do_all_provided(OSSL_LIB_CTX *libctx, + void (*fn)(OSSL_STORE_LOADER *loader, + void *arg), + void *arg); +void OSSL_STORE_LOADER_names_do_all(const OSSL_STORE_LOADER *loader, + void (*fn)(const char *name, void *data), + void *data); + /*- * Function to register a loader for the given URI scheme. * ------------------------------------------------------- @@ -233,66 +276,86 @@ int OSSL_STORE_find(OSSL_STORE_CTX *ctx, const OSSL_STORE_SEARCH *search); * scheme. */ -typedef struct ossl_store_loader_st OSSL_STORE_LOADER; -OSSL_STORE_LOADER *OSSL_STORE_LOADER_new(ENGINE *e, const char *scheme); -const ENGINE *OSSL_STORE_LOADER_get0_engine(const OSSL_STORE_LOADER *loader); -const char *OSSL_STORE_LOADER_get0_scheme(const OSSL_STORE_LOADER *loader); +# ifndef OPENSSL_NO_DEPRECATED_3_0 + /* struct ossl_store_loader_ctx_st is defined differently by each loader */ typedef struct ossl_store_loader_ctx_st OSSL_STORE_LOADER_CTX; -typedef OSSL_STORE_LOADER_CTX *(*OSSL_STORE_open_fn)(const OSSL_STORE_LOADER - *loader, - const char *uri, - const UI_METHOD *ui_method, - void *ui_data); -int OSSL_STORE_LOADER_set_open(OSSL_STORE_LOADER *loader, - OSSL_STORE_open_fn open_function); -typedef OSSL_STORE_LOADER_CTX *(*OSSL_STORE_attach_fn)(const OSSL_STORE_LOADER - *loader, - BIO *bio, - OPENSSL_CTX *libctx, - const char *propq, - const UI_METHOD - *ui_method, - void *ui_data); -int OSSL_STORE_LOADER_set_attach(OSSL_STORE_LOADER *loader, - OSSL_STORE_attach_fn attach_function); -typedef int (*OSSL_STORE_ctrl_fn)(OSSL_STORE_LOADER_CTX *ctx, int cmd, - va_list args); -int OSSL_STORE_LOADER_set_ctrl(OSSL_STORE_LOADER *loader, - OSSL_STORE_ctrl_fn ctrl_function); -typedef int (*OSSL_STORE_expect_fn)(OSSL_STORE_LOADER_CTX *ctx, int expected); -int OSSL_STORE_LOADER_set_expect(OSSL_STORE_LOADER *loader, - OSSL_STORE_expect_fn expect_function); -typedef int (*OSSL_STORE_find_fn)(OSSL_STORE_LOADER_CTX *ctx, - const OSSL_STORE_SEARCH *criteria); -int OSSL_STORE_LOADER_set_find(OSSL_STORE_LOADER *loader, - OSSL_STORE_find_fn find_function); -typedef OSSL_STORE_INFO *(*OSSL_STORE_load_fn)(OSSL_STORE_LOADER_CTX *ctx, - const UI_METHOD *ui_method, - void *ui_data); -int OSSL_STORE_LOADER_set_load(OSSL_STORE_LOADER *loader, - OSSL_STORE_load_fn load_function); +typedef OSSL_STORE_LOADER_CTX *(*OSSL_STORE_open_fn) + (const OSSL_STORE_LOADER *loader, const char *uri, + const UI_METHOD *ui_method, void *ui_data); +typedef OSSL_STORE_LOADER_CTX *(*OSSL_STORE_open_ex_fn) + (const OSSL_STORE_LOADER *loader, + const char *uri, OSSL_LIB_CTX *libctx, const char *propq, + const UI_METHOD *ui_method, void *ui_data); + +typedef OSSL_STORE_LOADER_CTX *(*OSSL_STORE_attach_fn) + (const OSSL_STORE_LOADER *loader, BIO *bio, + OSSL_LIB_CTX *libctx, const char *propq, + const UI_METHOD *ui_method, void *ui_data); +typedef int (*OSSL_STORE_ctrl_fn) + (OSSL_STORE_LOADER_CTX *ctx, int cmd, va_list args); +typedef int (*OSSL_STORE_expect_fn) + (OSSL_STORE_LOADER_CTX *ctx, int expected); +typedef int (*OSSL_STORE_find_fn) + (OSSL_STORE_LOADER_CTX *ctx, const OSSL_STORE_SEARCH *criteria); +typedef OSSL_STORE_INFO *(*OSSL_STORE_load_fn) + (OSSL_STORE_LOADER_CTX *ctx, const UI_METHOD *ui_method, void *ui_data); typedef int (*OSSL_STORE_eof_fn)(OSSL_STORE_LOADER_CTX *ctx); -int OSSL_STORE_LOADER_set_eof(OSSL_STORE_LOADER *loader, - OSSL_STORE_eof_fn eof_function); typedef int (*OSSL_STORE_error_fn)(OSSL_STORE_LOADER_CTX *ctx); -int OSSL_STORE_LOADER_set_error(OSSL_STORE_LOADER *loader, - OSSL_STORE_error_fn error_function); typedef int (*OSSL_STORE_close_fn)(OSSL_STORE_LOADER_CTX *ctx); -int OSSL_STORE_LOADER_set_close(OSSL_STORE_LOADER *loader, - OSSL_STORE_close_fn close_function); -void OSSL_STORE_LOADER_free(OSSL_STORE_LOADER *loader); -int OSSL_STORE_register_loader(OSSL_STORE_LOADER *loader); -OSSL_STORE_LOADER *OSSL_STORE_unregister_loader(const char *scheme); +# endif + +DEPRECATEDIN_3_0(OSSL_STORE_LOADER *OSSL_STORE_LOADER_new + (ENGINE *e, const char *scheme)) +DEPRECATEDIN_3_0(int OSSL_STORE_LOADER_set_open + (OSSL_STORE_LOADER *loader, + OSSL_STORE_open_fn open_function)) +DEPRECATEDIN_3_0(int OSSL_STORE_LOADER_set_open_ex + (OSSL_STORE_LOADER *loader, + OSSL_STORE_open_ex_fn open_ex_function)) +DEPRECATEDIN_3_0(int OSSL_STORE_LOADER_set_attach + (OSSL_STORE_LOADER *loader, + OSSL_STORE_attach_fn attach_function)) +DEPRECATEDIN_3_0(int OSSL_STORE_LOADER_set_ctrl + (OSSL_STORE_LOADER *loader, + OSSL_STORE_ctrl_fn ctrl_function)) +DEPRECATEDIN_3_0(int OSSL_STORE_LOADER_set_expect + (OSSL_STORE_LOADER *loader, + OSSL_STORE_expect_fn expect_function)) +DEPRECATEDIN_3_0(int OSSL_STORE_LOADER_set_find + (OSSL_STORE_LOADER *loader, + OSSL_STORE_find_fn find_function)) +DEPRECATEDIN_3_0(int OSSL_STORE_LOADER_set_load + (OSSL_STORE_LOADER *loader, + OSSL_STORE_load_fn load_function)) +DEPRECATEDIN_3_0(int OSSL_STORE_LOADER_set_eof + (OSSL_STORE_LOADER *loader, + OSSL_STORE_eof_fn eof_function)) +DEPRECATEDIN_3_0(int OSSL_STORE_LOADER_set_error + (OSSL_STORE_LOADER *loader, + OSSL_STORE_error_fn error_function)) +DEPRECATEDIN_3_0(int OSSL_STORE_LOADER_set_close + (OSSL_STORE_LOADER *loader, + OSSL_STORE_close_fn close_function)) + +DEPRECATEDIN_3_0(const ENGINE *OSSL_STORE_LOADER_get0_engine + (const OSSL_STORE_LOADER *loader)) +DEPRECATEDIN_3_0(const char * OSSL_STORE_LOADER_get0_scheme + (const OSSL_STORE_LOADER *loader)) + +DEPRECATEDIN_3_0(int OSSL_STORE_register_loader(OSSL_STORE_LOADER *loader)) +DEPRECATEDIN_3_0(OSSL_STORE_LOADER *OSSL_STORE_unregister_loader + (const char *scheme)) /*- * Functions to list STORE loaders * ------------------------------- */ -int OSSL_STORE_do_all_loaders(void (*do_function) (const OSSL_STORE_LOADER - *loader, void *do_arg), - void *do_arg); +DEPRECATEDIN_3_0(int OSSL_STORE_do_all_loaders + (void (*do_function)(const OSSL_STORE_LOADER *loader, + void *do_arg), + void *do_arg)) # ifdef __cplusplus }