From 7984f082d5045b3a44839b74e4c72877b71ca48f Mon Sep 17 00:00:00 2001 From: Rich Salz Date: Wed, 10 Feb 2016 07:52:49 -0500 Subject: Remove store. Rebased and merged by me, with Ben's approval. Reviewed-by: Richard Levitte Reviewed-by: Ben Laurie --- Configure | 4 +- Makefile.in | 4 +- crypto/engine/Makefile.in | 6 +- crypto/engine/eng_int.h | 1 - crypto/engine/eng_lib.c | 1 - crypto/engine/eng_list.c | 1 - crypto/engine/tb_store.c | 105 --- crypto/store/Makefile.in | 46 -- crypto/store/README | 101 --- crypto/store/build.info | 2 - crypto/store/str_err.c | 257 ------- crypto/store/str_lib.c | 1759 -------------------------------------------- crypto/store/str_locl.h | 124 ---- crypto/store/str_mem.c | 379 ---------- crypto/store/str_meth.c | 276 ------- doc/crypto/engine.pod | 7 +- include/openssl/engine.h | 7 - include/openssl/ossl_typ.h | 3 - include/openssl/store.h | 665 ----------------- util/libeay.num | 10 +- 20 files changed, 12 insertions(+), 3746 deletions(-) delete mode 100644 crypto/engine/tb_store.c delete mode 100644 crypto/store/Makefile.in delete mode 100644 crypto/store/README delete mode 100644 crypto/store/build.info delete mode 100644 crypto/store/str_err.c delete mode 100644 crypto/store/str_lib.c delete mode 100644 crypto/store/str_locl.h delete mode 100644 crypto/store/str_mem.c delete mode 100644 crypto/store/str_meth.c delete mode 100644 include/openssl/store.h diff --git a/Configure b/Configure index 941b4aa3d4..560497ff08 100755 --- a/Configure +++ b/Configure @@ -212,7 +212,7 @@ $config{sdirs} = [ "bn", "ec", "rsa", "dsa", "dh", "dso", "engine", "buffer", "bio", "stack", "lhash", "rand", "err", "evp", "asn1", "pem", "x509", "x509v3", "conf", "txt_db", "pkcs7", "pkcs12", "comp", "ocsp", "ui", - "cms", "ts", "jpake", "srp", "store", "cmac", "ct", "async", "kdf" + "cms", "ts", "jpake", "srp", "cmac", "ct", "async", "kdf" ]; # Known TLS and DTLS protocols @@ -294,7 +294,6 @@ my @disablables = ( "ssl-trace", "static-engine", "stdio", - "store", "threads", "tls", "unit-test", @@ -319,7 +318,6 @@ my %disabled = ( # "what" => "comment" [or special keyword "experimental "sctp" => "default", "shared" => "default", "ssl-trace" => "default", - "store" => "experimental", "unit-test" => "default", "zlib" => "default", "zlib-dynamic" => "default", diff --git a/Makefile.in b/Makefile.in index b4b5f0dac5..06413f3e33 100644 --- a/Makefile.in +++ b/Makefile.in @@ -411,7 +411,7 @@ rehash.time: certs build_apps build_tools touch rehash.time; \ else :; fi -test: tests +test: files tests tests: rehash @@ -490,7 +490,7 @@ tar-snap: $(TARFILE).list rm -f $(TARFILE).list ls -l $(TARFILE) -dist: +dist: $(PERL) Configure dist @$(MAKE) SDIRS='$(SDIRS)' clean @$(MAKE) TAR='$(TAR)' TARFLAGS='$(TARFLAGS)' $(DISTTARVARS) tar diff --git a/crypto/engine/Makefile.in b/crypto/engine/Makefile.in index c93021f595..dfd4794531 100644 --- a/crypto/engine/Makefile.in +++ b/crypto/engine/Makefile.in @@ -17,20 +17,20 @@ GENERAL=Makefile LIB=$(TOP)/libcrypto.a LIBSRC= eng_err.c eng_lib.c eng_list.c eng_init.c eng_ctrl.c \ eng_table.c eng_pkey.c eng_fat.c eng_all.c \ - tb_rsa.c tb_dsa.c tb_dh.c tb_rand.c tb_store.c \ + tb_rsa.c tb_dsa.c tb_dh.c tb_rand.c \ tb_cipher.c tb_digest.c tb_pkmeth.c tb_asnmth.c tb_eckey.c \ eng_openssl.c eng_cnf.c eng_dyn.c eng_cryptodev.c \ eng_rdrand.c LIBOBJ= eng_err.o eng_lib.o eng_list.o eng_init.o eng_ctrl.o \ eng_table.o eng_pkey.o eng_fat.o eng_all.o \ - tb_rsa.o tb_dsa.o tb_dh.o tb_rand.o tb_store.o \ + tb_rsa.o tb_dsa.o tb_dh.o tb_rand.o \ tb_cipher.o tb_digest.o tb_pkmeth.o tb_asnmth.o tb_eckey.o \ eng_openssl.o eng_cnf.o eng_dyn.o eng_cryptodev.o \ eng_rdrand.o SRC= $(LIBSRC) -HEADER= +HEADER= ALL= $(GENERAL) $(SRC) $(HEADER) diff --git a/crypto/engine/eng_int.h b/crypto/engine/eng_int.h index 9d58d93ecd..8122922717 100644 --- a/crypto/engine/eng_int.h +++ b/crypto/engine/eng_int.h @@ -179,7 +179,6 @@ struct engine_st { const DH_METHOD *dh_meth; const EC_KEY_METHOD *ec_meth; const RAND_METHOD *rand_meth; - const STORE_METHOD *store_meth; /* Cipher handling is via this callback */ ENGINE_CIPHERS_PTR ciphers; /* Digest handling is via this callback */ diff --git a/crypto/engine/eng_lib.c b/crypto/engine/eng_lib.c index 7b13c36502..388e8ca877 100644 --- a/crypto/engine/eng_lib.c +++ b/crypto/engine/eng_lib.c @@ -89,7 +89,6 @@ void engine_set_all_null(ENGINE *e) e->dsa_meth = NULL; e->dh_meth = NULL; e->rand_meth = NULL; - e->store_meth = NULL; e->ciphers = NULL; e->digests = NULL; e->destroy = NULL; diff --git a/crypto/engine/eng_list.c b/crypto/engine/eng_list.c index 90039a0996..cd6757f443 100644 --- a/crypto/engine/eng_list.c +++ b/crypto/engine/eng_list.c @@ -304,7 +304,6 @@ static void engine_cpy(ENGINE *dest, const ENGINE *src) dest->ec_meth = src->ec_meth; #endif dest->rand_meth = src->rand_meth; - dest->store_meth = src->store_meth; dest->ciphers = src->ciphers; dest->digests = src->digests; dest->pkey_meths = src->pkey_meths; diff --git a/crypto/engine/tb_store.c b/crypto/engine/tb_store.c deleted file mode 100644 index 84d2268879..0000000000 --- a/crypto/engine/tb_store.c +++ /dev/null @@ -1,105 +0,0 @@ -/* ==================================================================== - * Copyright (c) 2003 The OpenSSL Project. All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in - * the documentation and/or other materials provided with the - * distribution. - * - * 3. All advertising materials mentioning features or use of this - * software must display the following acknowledgment: - * "This product includes software developed by the OpenSSL Project - * for use in the OpenSSL Toolkit. (http://www.OpenSSL.org/)" - * - * 4. The names "OpenSSL Toolkit" and "OpenSSL Project" must not be used to - * endorse or promote products derived from this software without - * prior written permission. For written permission, please contact - * licensing@OpenSSL.org. - * - * 5. Products derived from this software may not be called "OpenSSL" - * nor may "OpenSSL" appear in their names without prior written - * permission of the OpenSSL Project. - * - * 6. Redistributions of any form whatsoever must retain the following - * acknowledgment: - * "This product includes software developed by the OpenSSL Project - * for use in the OpenSSL Toolkit (http://www.OpenSSL.org/)" - * - * THIS SOFTWARE IS PROVIDED BY THE OpenSSL PROJECT ``AS IS'' AND ANY - * EXPRESSED OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE - * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR - * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE OpenSSL PROJECT OR - * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, - * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT - * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; - * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) - * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, - * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) - * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED - * OF THE POSSIBILITY OF SUCH DAMAGE. - * ==================================================================== - * - * This product includes cryptographic software written by Eric Young - * (eay@cryptsoft.com). This product includes software written by Tim - * Hudson (tjh@cryptsoft.com). - * - */ - -#include "eng_int.h" - -/* - * If this symbol is defined then ENGINE_get_default_STORE(), the function - * that is used by STORE to hook in implementation code and cache defaults - * (etc), will display brief debugging summaries to stderr with the 'nid'. - */ -/* #define ENGINE_STORE_DEBUG */ - -static ENGINE_TABLE *store_table = NULL; -static const int dummy_nid = 1; - -void ENGINE_unregister_STORE(ENGINE *e) -{ - engine_table_unregister(&store_table, e); -} - -static void engine_unregister_all_STORE(void) -{ - engine_table_cleanup(&store_table); -} - -int ENGINE_register_STORE(ENGINE *e) -{ - if (e->store_meth) - return engine_table_register(&store_table, - engine_unregister_all_STORE, e, - &dummy_nid, 1, 0); - return 1; -} - -void ENGINE_register_all_STORE() -{ - ENGINE *e; - - for (e = ENGINE_get_first(); e; e = ENGINE_get_next(e)) - ENGINE_register_STORE(e); -} - -/* Obtains an STORE implementation from an ENGINE functional reference */ -const STORE_METHOD *ENGINE_get_STORE(const ENGINE *e) -{ - return e->store_meth; -} - -/* Sets an STORE implementation in an ENGINE structure */ -int ENGINE_set_STORE(ENGINE *e, const STORE_METHOD *store_meth) -{ - e->store_meth = store_meth; - return 1; -} diff --git a/crypto/store/Makefile.in b/crypto/store/Makefile.in deleted file mode 100644 index 0347783cc6..0000000000 --- a/crypto/store/Makefile.in +++ /dev/null @@ -1,46 +0,0 @@ -# -# OpenSSL/crypto/store/Makefile -# - -DIR= store -TOP= ../.. -CC= cc -INCLUDES= -I.. -I$(TOP) -I../../include -CFLAG=-g -MAKEFILE= Makefile -AR= ar r - -CFLAGS= $(INCLUDES) $(CFLAG) - -GENERAL=Makefile - -LIB=$(TOP)/libcrypto.a -LIBSRC= str_err.c str_lib.c str_meth.c str_mem.c -LIBOBJ= str_err.o str_lib.o str_meth.o str_mem.o - -SRC= $(LIBSRC) - -HEADER= str_locl.h - -ALL= $(GENERAL) $(SRC) $(HEADER) - -top: - (cd ../..; $(MAKE) DIRS=crypto SDIRS=$(DIR) sub_all) - -all: lib - -lib: $(LIBOBJ) - $(AR) $(LIB) $(LIBOBJ) - $(RANLIB) $(LIB) || echo Never mind. - @touch lib - -files: - $(PERL) $(TOP)/util/files.pl Makefile >> $(TOP)/MINFO - -depend: - $(TOP)/util/domd $(CFLAG) $(INCLUDES) $(DEPFLAG) -- $(PROGS) $(LIBSRC) - -clean: - rm -f *.o */*.o *.obj lib tags core .pure .nfs* *.old *.bak fluff - -# DO NOT DELETE THIS LINE -- make depend depends on it. diff --git a/crypto/store/README b/crypto/store/README deleted file mode 100644 index 3d259c6c62..0000000000 --- a/crypto/store/README +++ /dev/null @@ -1,101 +0,0 @@ -NOTE: - This is a planned replacement for X509_STORE. - It is incomplete, has compile errors, and is - not built as part of the standard configuration. - - -The STORE type -============== - -A STORE, as defined in this code section, is really a rather simple -thing which stores objects and per-object associations to a number -of attributes. What attributes are supported entirely depends on -the particular implementation of a STORE. It has some support for -generation of certain objects (for example, keys and CRLs). - - -Supported object types ----------------------- - -For now, the objects that are supported are the following: - -X.509 certificate -X.509 CRL -private key -public key -number -arbitrary (application) data - -The intention is that a STORE should be able to store everything -needed by an application that wants a cert/key store, as well as -the data a CA might need to store (this includes the serial number -counter, which explains the support for numbers). - - -Supported attribute types -------------------------- - -For now, the following attributes are supported: - -Friendly Name - the value is a normal C string -Key ID - the value is a 160 bit SHA1 hash -Issuer Key ID - the value is a 160 bit SHA1 hash -Subject Key ID - the value is a 160 bit SHA1 hash -Issuer/Serial Hash - the value is a 160 bit SHA1 hash -Issuer - the value is a X509_NAME -Serial - the value is a BIGNUM -Subject - the value is a X509_NAME -Certificate Hash - the value is a 160 bit SHA1 hash -Email - the value is a normal C string -Filename - the value is a normal C string - -It is expected that these attributes should be enough to support -the need from most, if not all, current applications. Applications -that need to do certificate verification would typically use Subject -Key ID, Issuer/Serial Hash or Subject to look up issuer certificates. -S/MIME applications would typically use Email to look up recipient -and signer certificates. - -There's added support for combined sets of attributes to search for, -with the special OR attribute. - - -Supported basic functionality ------------------------------ - -The functions that are supported through the STORE type are these: - -generate_object - for example to generate keys and CRLs -get_object - to look up one object - NOTE: this function is really rather - redundant and probably of lesser usage - than the list functions -store_object - store an object and the attributes - associated with it -modify_object - modify the attributes associated with - a specific object -revoke_object - revoke an object - NOTE: this only marks an object as - invalid, it doesn't remove the object - from the database -delete_object - remove an object from the database -list_object - list objects associated with a given - set of attributes - NOTE: this is really four functions: - list_start, list_next, list_end and - list_endp -update_store - update the internal data of the store -lock_store - lock the store -unlock_store - unlock the store - -The list functions need some extra explanation: list_start is -used to set up a lookup. That's where the attributes to use in -the search are set up. It returns a search context. list_next -returns the next object searched for. list_end closes the search. -list_endp is used to check if we have reached the end. - -A few words on the store functions as well: update_store is -typically used by a CA application to update the internal -structure of a database. This may for example involve automatic -removal of expired certificates. lock_store and unlock_store -are used for locking a store to allow exclusive writes. diff --git a/crypto/store/build.info b/crypto/store/build.info deleted file mode 100644 index 7d8e6bd4bd..0000000000 --- a/crypto/store/build.info +++ /dev/null @@ -1,2 +0,0 @@ -LIBS=../../libcrypto -SOURCE[../../libcrypto]=str_err.c str_lib.c str_meth.c str_mem.c diff --git a/crypto/store/str_err.c b/crypto/store/str_err.c deleted file mode 100644 index d0bcdbcbdb..0000000000 --- a/crypto/store/str_err.c +++ /dev/null @@ -1,257 +0,0 @@ -/* ==================================================================== - * Copyright (c) 1999-2015 The OpenSSL Project. All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in - * the documentation and/or other materials provided with the - * distribution. - * - * 3. All advertising materials mentioning features or use of this - * software must display the following acknowledgment: - * "This product includes software developed by the OpenSSL Project - * for use in the OpenSSL Toolkit. (http://www.OpenSSL.org/)" - * - * 4. The names "OpenSSL Toolkit" and "OpenSSL Project" must not be used to - * endorse or promote products derived from this software without - * prior written permission. For written permission, please contact - * openssl-core@OpenSSL.org. - * - * 5. Products derived from this software may not be called "OpenSSL" - * nor may "OpenSSL" appear in their names without prior written - * permission of the OpenSSL Project. - * - * 6. Redistributions of any form whatsoever must retain the following - * acknowledgment: - * "This product includes software developed by the OpenSSL Project - * for use in the OpenSSL Toolkit (http://www.OpenSSL.org/)" - * - * THIS SOFTWARE IS PROVIDED BY THE OpenSSL PROJECT ``AS IS'' AND ANY - * EXPRESSED OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE - * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR - * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE OpenSSL PROJECT OR - * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, - * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT - * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; - * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) - * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, - * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) - * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED - * OF THE POSSIBILITY OF SUCH DAMAGE. - * ==================================================================== - * - * This product includes cryptographic software written by Eric Young - * (eay@cryptsoft.com). This product includes software written by Tim - * Hudson (tjh@cryptsoft.com). - * - */ - -/* - * NOTE: this file was auto generated by the mkerr.pl script: any changes - * made to it will be overwritten when the script next updates this file, - * only reason strings will be preserved. - */ - -#include -#include -#include - -/* BEGIN ERROR CODES */ -#ifndef OPENSSL_NO_ERR - -# define ERR_FUNC(func) ERR_PACK(ERR_LIB_STORE,func,0) -# define ERR_REASON(reason) ERR_PACK(ERR_LIB_STORE,0,reason) - -static ERR_STRING_DATA STORE_str_functs[] = { - {ERR_FUNC(STORE_F_MEM_DELETE), "mem_delete"}, - {ERR_FUNC(STORE_F_MEM_GENERATE), "mem_generate"}, - {ERR_FUNC(STORE_F_MEM_LIST_END), "mem_list_end"}, - {ERR_FUNC(STORE_F_MEM_LIST_NEXT), "mem_list_next"}, - {ERR_FUNC(STORE_F_MEM_LIST_START), "mem_list_start"}, - {ERR_FUNC(STORE_F_MEM_MODIFY), "mem_modify"}, - {ERR_FUNC(STORE_F_MEM_STORE), "mem_store"}, - {ERR_FUNC(STORE_F_STORE_ATTR_INFO_GET0_CSTR), - "STORE_ATTR_INFO_get0_cstr"}, - {ERR_FUNC(STORE_F_STORE_ATTR_INFO_GET0_DN), "STORE_ATTR_INFO_get0_dn"}, - {ERR_FUNC(STORE_F_STORE_ATTR_INFO_GET0_NUMBER), - "STORE_ATTR_INFO_get0_number"}, - {ERR_FUNC(STORE_F_STORE_ATTR_INFO_GET0_SHA1STR), - "STORE_ATTR_INFO_get0_sha1str"}, - {ERR_FUNC(STORE_F_STORE_ATTR_INFO_MODIFY_CSTR), - "STORE_ATTR_INFO_modify_cstr"}, - {ERR_FUNC(STORE_F_STORE_ATTR_INFO_MODIFY_DN), - "STORE_ATTR_INFO_modify_dn"}, - {ERR_FUNC(STORE_F_STORE_ATTR_INFO_MODIFY_NUMBER), - "STORE_ATTR_INFO_modify_number"}, - {ERR_FUNC(STORE_F_STORE_ATTR_INFO_MODIFY_SHA1STR), - "STORE_ATTR_INFO_modify_sha1str"}, - {ERR_FUNC(STORE_F_STORE_ATTR_INFO_SET_CSTR), "STORE_ATTR_INFO_set_cstr"}, - {ERR_FUNC(STORE_F_STORE_ATTR_INFO_SET_DN), "STORE_ATTR_INFO_set_dn"}, - {ERR_FUNC(STORE_F_STORE_ATTR_INFO_SET_NUMBER), - "STORE_ATTR_INFO_set_number"}, - {ERR_FUNC(STORE_F_STORE_ATTR_INFO_SET_SHA1STR), - "STORE_ATTR_INFO_set_sha1str"}, - {ERR_FUNC(STORE_F_STORE_CERTIFICATE), "STORE_store_certificate"}, - {ERR_FUNC(STORE_F_STORE_CTRL), "STORE_ctrl"}, - {ERR_FUNC(STORE_F_STORE_DELETE_ARBITRARY), "STORE_delete_arbitrary"}, - {ERR_FUNC(STORE_F_STORE_DELETE_CERTIFICATE), "STORE_delete_certificate"}, - {ERR_FUNC(STORE_F_STORE_DELETE_CRL), "STORE_delete_crl"}, - {ERR_FUNC(STORE_F_STORE_DELETE_NUMBER), "STORE_delete_number"}, - {ERR_FUNC(STORE_F_STORE_DELETE_PRIVATE_KEY), "STORE_delete_private_key"}, - {ERR_FUNC(STORE_F_STORE_DELETE_PUBLIC_KEY), "STORE_delete_public_key"}, - {ERR_FUNC(STORE_F_STORE_GENERATE_CRL), "STORE_generate_crl"}, - {ERR_FUNC(STORE_F_STORE_GENERATE_KEY), "STORE_generate_key"}, - {ERR_FUNC(STORE_F_STORE_GET_ARBITRARY), "STORE_get_arbitrary"}, - {ERR_FUNC(STORE_F_STORE_GET_CERTIFICATE), "STORE_get_certificate"}, - {ERR_FUNC(STORE_F_STORE_GET_CRL), "STORE_get_crl"}, - {ERR_FUNC(STORE_F_STORE_GET_NUMBER), "STORE_get_number"}, - {ERR_FUNC(STORE_F_STORE_GET_PRIVATE_KEY), "STORE_get_private_key"}, - {ERR_FUNC(STORE_F_STORE_GET_PUBLIC_KEY), "STORE_get_public_key"}, - {ERR_FUNC(STORE_F_STORE_LIST_CERTIFICATE_END), - "STORE_list_certificate_end"}, - {ERR_FUNC(STORE_F_STORE_LIST_CERTIFICATE_ENDP), - "STORE_list_certificate_endp"}, - {ERR_FUNC(STORE_F_STORE_LIST_CERTIFICATE_NEXT), - "STORE_list_certificate_next"}, - {ERR_FUNC(STORE_F_STORE_LIST_CERTIFICATE_START), - "STORE_list_certificate_start"}, - {ERR_FUNC(STORE_F_STORE_LIST_CRL_END), "STORE_list_crl_end"}, - {ERR_FUNC(STORE_F_STORE_LIST_CRL_ENDP), "STORE_list_crl_endp"}, - {ERR_FUNC(STORE_F_STORE_LIST_CRL_NEXT), "STORE_list_crl_next"}, - {ERR_FUNC(STORE_F_STORE_LIST_CRL_START), "STORE_list_crl_start"}, - {ERR_FUNC(STORE_F_STORE_LIST_PRIVATE_KEY_END), - "STORE_list_private_key_end"}, - {ERR_FUNC(STORE_F_STORE_LIST_PRIVATE_KEY_ENDP), - "STORE_list_private_key_endp"}, - {ERR_FUNC(STORE_F_STORE_LIST_PRIVATE_KEY_NEXT), - "STORE_list_private_key_next"}, - {ERR_FUNC(STORE_F_STORE_LIST_PRIVATE_KEY_START), - "STORE_list_private_key_start"}, - {ERR_FUNC(STORE_F_STORE_LIST_PUBLIC_KEY_END), - "STORE_list_public_key_end"}, - {ERR_FUNC(STORE_F_STORE_LIST_PUBLIC_KEY_ENDP), - "STORE_list_public_key_endp"}, - {ERR_FUNC(STORE_F_STORE_LIST_PUBLIC_KEY_NEXT), - "STORE_list_public_key_next"}, - {ERR_FUNC(STORE_F_STORE_LIST_PUBLIC_KEY_START), - "STORE_list_public_key_start"}, - {ERR_FUNC(STORE_F_STORE_MODIFY_ARBITRARY), "STORE_modify_arbitrary"}, - {ERR_FUNC(STORE_F_STORE_MODIFY_CERTIFICATE), "STORE_modify_certificate"}, - {ERR_FUNC(STORE_F_STORE_MODIFY_CRL), "STORE_modify_crl"}, - {ERR_FUNC(STORE_F_STORE_MODIFY_NUMBER), "STORE_modify_number"}, - {ERR_FUNC(STORE_F_STORE_MODIFY_PRIVATE_KEY), "STORE_modify_private_key"}, - {ERR_FUNC(STORE_F_STORE_MODIFY_PUBLIC_KEY), "STORE_modify_public_key"}, - {ERR_FUNC(STORE_F_STORE_NEW_ENGINE), "STORE_new_engine"}, - {ERR_FUNC(STORE_F_STORE_NEW_METHOD), "STORE_new_method"}, - {ERR_FUNC(STORE_F_STORE_PARSE_ATTRS_END), "STORE_parse_attrs_end"}, - {ERR_FUNC(STORE_F_STORE_PARSE_ATTRS_ENDP), "STORE_parse_attrs_endp"}, - {ERR_FUNC(STORE_F_STORE_PARSE_ATTRS_NEXT), "STORE_parse_attrs_next"}, - {ERR_FUNC(STORE_F_STORE_PARSE_ATTRS_START), "STORE_parse_attrs_start"}, - {ERR_FUNC(STORE_F_STORE_REVOKE_CERTIFICATE), "STORE_revoke_certificate"}, - {ERR_FUNC(STORE_F_STORE_REVOKE_PRIVATE_KEY), "STORE_revoke_private_key"}, - {ERR_FUNC(STORE_F_STORE_REVOKE_PUBLIC_KEY), "STORE_revoke_public_key"}, - {ERR_FUNC(STORE_F_STORE_STORE_ARBITRARY), "STORE_store_arbitrary"}, - {ERR_FUNC(STORE_F_STORE_STORE_CERTIFICATE), "STORE_store_certificate"}, - {ERR_FUNC(STORE_F_STORE_STORE_CRL), "STORE_store_crl"}, - {ERR_FUNC(STORE_F_STORE_STORE_NUMBER), "STORE_store_number"}, - {ERR_FUNC(STORE_F_STORE_STORE_PRIVATE_KEY), "STORE_store_private_key"}, - {ERR_FUNC(STORE_F_STORE_STORE_PUBLIC_KEY), "STORE_store_public_key"}, - {0, NULL} -}; - -static ERR_STRING_DATA STORE_str_reasons[] = { - {ERR_REASON(STORE_R_ALREADY_HAS_A_VALUE), "already has a value"}, - {ERR_REASON(STORE_R_FAILED_DELETING_ARBITRARY), - "failed deleting arbitrary"}, - {ERR_REASON(STORE_R_FAILED_DELETING_CERTIFICATE), - "failed deleting certificate"}, - {ERR_REASON(STORE_R_FAILED_DELETING_KEY), "failed deleting key"}, - {ERR_REASON(STORE_R_FAILED_DELETING_NUMBER), "failed deleting number"}, - {ERR_REASON(STORE_R_FAILED_GENERATING_CRL), "failed generating crl"}, - {ERR_REASON(STORE_R_FAILED_GENERATING_KEY), "failed generating key"}, - {ERR_REASON(STORE_R_FAILED_GETTING_ARBITRARY), - "failed getting arbitrary"}, - {ERR_REASON(STORE_R_FAILED_GETTING_CERTIFICATE), - "failed getting certificate"}, - {ERR_REASON(STORE_R_FAILED_GETTING_KEY), "failed getting key"}, - {ERR_REASON(STORE_R_FAILED_GETTING_NUMBER), "failed getting number"}, - {ERR_REASON(STORE_R_FAILED_LISTING_CERTIFICATES), - "failed listing certificates"}, - {ERR_REASON(STORE_R_FAILED_LISTING_KEYS), "failed listing keys"}, - {ERR_REASON(STORE_R_FAILED_MODIFYING_ARBITRARY), - "failed modifying arbitrary"}, - {ERR_REASON(STORE_R_FAILED_MODIFYING_CERTIFICATE), - "failed modifying certificate"}, - {ERR_REASON(STORE_R_FAILED_MODIFYING_CRL), "failed modifying crl"}, - {ERR_REASON(STORE_R_FAILED_MODIFYING_NUMBER), "failed modifying number"}, - {ERR_REASON(STORE_R_FAILED_MODIFYING_PRIVATE_KEY), - "failed modifying private key"}, - {ERR_REASON(STORE_R_FAILED_MODIFYING_PUBLIC_KEY), - "failed modifying public key"}, - {ERR_REASON(STORE_R_FAILED_REVOKING_CERTIFICATE), - "failed revoking certificate"}, - {ERR_REASON(STORE_R_FAILED_REVOKING_KEY), "failed revoking key"}, - {ERR_REASON(STORE_R_FAILED_STORING_ARBITRARY), - "failed storing arbitrary"}, - {ERR_REASON(STORE_R_FAILED_STORING_CERTIFICATE), - "failed storing certificate"}, - {ERR_REASON(STORE_R_FAILED_STORING_KEY), "failed storing key"}, - {ERR_REASON(STORE_R_FAILED_STORING_NUMBER), "failed storing number"}, - {ERR_REASON(STORE_R_NOT_IMPLEMENTED), "not implemented"}, - {ERR_REASON(STORE_R_NO_CONTROL_FUNCTION), "no control function"}, - {ERR_REASON(STORE_R_NO_DELETE_ARBITRARY_FUNCTION), - "no delete arbitrary function"}, - {ERR_REASON(STORE_R_NO_DELETE_NUMBER_FUNCTION), - "no delete number function"}, - {ERR_REASON(STORE_R_NO_DELETE_OBJECT_FUNCTION), - "no delete object function"}, - {ERR_REASON(STORE_R_NO_GENERATE_CRL_FUNCTION), - "no generate crl function"}, - {ERR_REASON(STORE_R_NO_GENERATE_OBJECT_FUNCTION), - "no generate object function"}, - {ERR_REASON(STORE_R_NO_GET_OBJECT_ARBITRARY_FUNCTION), - "no get object arbitrary function"}, - {ERR_REASON(STORE_R_NO_GET_OBJECT_FUNCTION), "no get object function"}, - {ERR_REASON(STORE_R_NO_GET_OBJECT_NUMBER_FUNCTION), - "no get object number function"}, - {ERR_REASON(STORE_R_NO_LIST_OBJECT_ENDP_FUNCTION), - "no list object endp function"}, - {ERR_REASON(STORE_R_NO_LIST_OBJECT_END_FUNCTION), - "no list object end function"}, - {ERR_REASON(STORE_R_NO_LIST_OBJECT_NEXT_FUNCTION), - "no list object next function"}, - {ERR_REASON(STORE_R_NO_LIST_OBJECT_START_FUNCTION), - "no list object start function"}, - {ERR_REASON(STORE_R_NO_MODIFY_OBJECT_FUNCTION), - "no modify object function"}, - {ERR_REASON(STORE_R_NO_REVOKE_OBJECT_FUNCTION), - "no revoke object function"}, - {ERR_REASON(STORE_R_NO_STORE), "no store"}, - {ERR_REASON(STORE_R_NO_STORE_OBJECT_ARBITRARY_FUNCTION), - "no store object arbitrary function"}, - {ERR_REASON(STORE_R_NO_STORE_OBJECT_FUNCTION), - "no store object function"}, - {ERR_REASON(STORE_R_NO_STORE_OBJECT_NUMBER_FUNCTION), - "no store object number function"}, - {ERR_REASON(STORE_R_NO_VALUE), "no value"}, - {0, NULL} -}; - -#endif - -void ERR_load_STORE_strings(void) -{ -#ifndef OPENSSL_NO_ERR - - if (ERR_func_error_string(STORE_str_functs[0].error) == NULL) { - ERR_load_strings(0, STORE_str_functs); - ERR_load_strings(0, STORE_str_reasons); - } -#endif -} diff --git a/crypto/store/str_lib.c b/crypto/store/str_lib.c deleted file mode 100644 index 881140a1de..0000000000 --- a/crypto/store/str_lib.c +++ /dev/null @@ -1,1759 +0,0 @@ -/* - * Written by Richard Levitte (richard@levitte.org) for the OpenSSL project - * 2003. - */ -/* ==================================================================== - * Copyright (c) 2003 The OpenSSL Project. All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in - * the documentation and/or other materials provided with the - * distribution. - * - * 3. All advertising materials mentioning features or use of this - * software must display the following acknowledgment: - * "This product includes software developed by the OpenSSL Project - * for use in the OpenSSL Toolkit. (http://www.openssl.org/)" - * - * 4. The names "OpenSSL Toolkit" and "OpenSSL Project" must not be used to - * endorse or promote products derived from this software without - * prior written permission. For written permission, please contact - * openssl-core@openssl.org. - * - * 5. Products derived from this software may not be called "OpenSSL" - * nor may "OpenSSL" appear in their names without prior written - * permission of the OpenSSL Project. - * - * 6. Redistributions of any form whatsoever must retain the following - * acknowledgment: - * "This product includes software developed by the OpenSSL Project - * for use in the OpenSSL Toolkit (http://www.openssl.org/)" - * - * THIS SOFTWARE IS PROVIDED BY THE OpenSSL PROJECT ``AS IS'' AND ANY - * EXPRESSED OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE - * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR - * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE OpenSSL PROJECT OR - * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, - * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT - * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; - * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) - * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, - * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) - * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED - * OF THE POSSIBILITY OF SUCH DAMAGE. - * ==================================================================== - * - * This product includes cryptographic software written by Eric Young - * (eay@cryptsoft.com). This product includes software written by Tim - * Hudson (tjh@cryptsoft.com). - * - */ - -#include -#include -#include -#ifndef OPENSSL_NO_ENGINE -# include -#endif -#include -#include -#include "str_locl.h" - -const char *const STORE_object_type_string[STORE_OBJECT_TYPE_NUM + 1] = { - 0, - "X.509 Certificate", - "X.509 CRL", - "Private Key", - "Public Key", - "Number", - "Arbitrary Data" -}; - -const int STORE_param_sizes[STORE_PARAM_TYPE_NUM + 1] = { - 0, - sizeof(int), /* EVP_TYPE */ - sizeof(size_t), /* BITS */ - -1, /* KEY_PARAMETERS */ - 0 /* KEY_NO_PARAMETERS */ -}; - -const int STORE_attr_sizes[STORE_ATTR_TYPE_NUM + 1] = { - 0, - -1, /* FRIENDLYNAME: C string */ - SHA_DIGEST_LENGTH, /* KEYID: SHA1 digest, 160 bits */ - SHA_DIGEST_LENGTH, /* ISSUERKEYID: SHA1 digest, 160 bits */ - SHA_DIGEST_LENGTH, /* SUBJECTKEYID: SHA1 digest, 160 bits */ - SHA_DIGEST_LENGTH, /* ISSUERSERIALHASH: SHA1 digest, 160 bits */ - sizeof(X509_NAME *), /* ISSUER: X509_NAME * */ - sizeof(BIGNUM *), /* SERIAL: BIGNUM * */ - sizeof(X509_NAME *), /* SUBJECT: X509_NAME * */ - SHA_DIGEST_LENGTH, /* CERTHASH: SHA1 digest, 160 bits */ - -1, /* EMAIL: C string */ - -1, /* FILENAME: C string */ -}; - -STORE *STORE_new_method(const STORE_METHOD *method) -{ - STORE *ret; - - if (method == NULL) { - STOREerr(STORE_F_STORE_NEW_METHOD, ERR_R_PASSED_NULL_PARAMETER); - return NULL; - } - - ret = OPENSSL_malloc(sizeof(*ret)); - if (ret == NULL) { - STOREerr(STORE_F_STORE_NEW_METHOD, ERR_R_MALLOC_FAILURE); - return NULL; - } - - ret->meth = method; - - CRYPTO_new_ex_data(CRYPTO_EX_INDEX_STORE, ret, &ret->ex_data); - if (ret->meth->init && !ret->meth->init(ret)) { - STORE_free(ret); - ret = NULL; - } - return ret; -} - -STORE *STORE_new_engine(ENGINE *engine) -{ - STORE *ret = NULL; - ENGINE *e = engine; - const STORE_METHOD *meth = 0; - -#ifdef OPENSSL_NO_ENGINE - e = NULL; -#else - if (engine) { - if (!ENGINE_init(engine)) { - STOREerr(STORE_F_STORE_NEW_ENGINE, ERR_R_ENGINE_LIB); - return NULL; - } - e = engine; - } else { - STOREerr(STORE_F_STORE_NEW_ENGINE, ERR_R_PASSED_NULL_PARAMETER); - return NULL; - } - if (e) { - meth = ENGINE_get_STORE(e); - if (!meth) { - STOREerr(STORE_F_STORE_NEW_ENGINE, ERR_R_ENGINE_LIB); - ENGINE_finish(e); - return NULL; - } - } -#endif - - ret = STORE_new_method(meth); - if (ret == NULL) { - STOREerr(STORE_F_STORE_NEW_ENGINE, ERR_R_STORE_LIB); - return NULL; - } - - ret->engine = e; - - return (ret); -} - -void STORE_free(STORE *store) -{ - if (store == NULL) - return; - if (store->meth->clean) - store->meth->clean(store); - CRYPTO_free_ex_data(CRYPTO_EX_INDEX_STORE, store, &store->ex_data); - OPENSSL_free(store); -} - -int STORE_ctrl(STORE *store, int cmd, long i, void *p, void (*f) (void)) -{ - if (store == NULL) { - STOREerr(STORE_F_STORE_CTRL, ERR_R_PASSED_NULL_PARAMETER); - return 0; - } - if (store->meth->ctrl) - return store->meth->ctrl(store, cmd, i, p, f); - STOREerr(STORE_F_STORE_CTRL, STORE_R_NO_CONTROL_FUNCTION); - return 0; -} - -int STORE_set_ex_data(STORE *r, int idx, void *arg) -{ - return (CRYPTO_set_ex_data(&r->ex_data, idx, arg)); -} - -void *STORE_get_ex_data(STORE *r, int idx) -{ - return (CRYPTO_get_ex_data(&r->ex_data, idx)); -} - -const STORE_METHOD *STORE_get_method(STORE *store) -{ - return store->meth; -} - -const STORE_METHOD *STORE_set_method(STORE *store, const STORE_METHOD *meth) -{ - store->meth = meth; - return store->meth; -} - -/* API helpers */ - -#define check_store(s,fncode,fnname,fnerrcode) \ - do \ - { \ - if ((s) == NULL || (s)->meth == NULL) \ - { \ - STOREerr((fncode), ERR_R_PASSED_NULL_PARAMETER); \ - return 0; \ - } \ - if ((s)->meth->fnname == NULL) \ - { \ - STOREerr((fncode), (fnerrcode)); \ - return 0; \ - } \ - } \ - while(0) - -/* API functions */ - -X509 *STORE_get_certificate(STORE *s, OPENSSL_ITEM attributes[], - OPENSSL_ITEM parameters[]) -{ - STORE_OBJECT *object; - X509 *x; - - check_store(s, STORE_F_STORE_GET_CERTIFICATE, - get_object, STORE_R_NO_GET_OBJECT_FUNCTION); - - object = s->meth->get_object(s, STORE_OBJECT_TYPE_X509_CERTIFICATE, - attributes, parameters); - if (!object || !object->data.x509.certificate) { - STOREerr(STORE_F_STORE_GET_CERTIFICATE, - STORE_R_FAILED_GETTING_CERTIFICATE); - return 0; - } - X509_up_ref(object->data.x509.certificate); -#ifdef REF_PRINT - REF_PRINT("X509", data); -#endif - x = object->data.x509.certificate; - STORE_OBJECT_free(object); - return x; -} - -int STORE_store_certificate(STORE *s, X509 *data, OPENSSL_ITEM attributes[], - OPENSSL_ITEM parameters[]) -{ - STORE_OBJECT *object; - int i; - - check_store(s, STORE_F_STORE_STORE_CERTIFICATE, - store_object, STORE_R_NO_STORE_OBJECT_FUNCTION); - - object = STORE_OBJECT_new(); - if (object == NULL) { - STOREerr(STORE_F_STORE_STORE_CERTIFICATE, ERR_R_MALLOC_FAILURE); - return 0; - } - - X509_up_ref(data); -#ifdef REF_PRINT - REF_PRINT("X509", data); -#endif - object->data.x509.certificate = data; - - i = s->meth->store_object(s, STORE_OBJECT_TYPE_X509_CERTIFICATE, - object, attributes, parameters); - - STORE_OBJECT_free(object); - - if (!i) { - STOREerr(STORE_F_STORE_STORE_CERTIFICATE, - STORE_R_FAILED_STORING_CERTIFICATE); - return 0; - } - return 1; -} - -int STORE_modify_certificate(STORE *s, OPENSSL_ITEM search_attributes[], - OPENSSL_ITEM add_attributes[], - OPENSSL_ITEM modify_attributes[], - OPENSSL_ITEM delete_attributes[], - OPENSSL_ITEM parameters[]) -{ - check_store(s, STORE_F_STORE_MODIFY_CERTIFICATE, - modify_object, STORE_R_NO_MODIFY_OBJECT_FUNCTION); - - if (!s->meth->modify_object(s, STORE_OBJECT_TYPE_X509_CERTIFICATE, - search_attributes, add_attributes, - modify_attributes, delete_attributes, - parameters)) { - STOREerr(STORE_F_STORE_MODIFY_CERTIFICATE, - STORE_R_FAILED_MODIFYING_CERTIFICATE); - return 0; - } - return 1; -} - -int STORE_revoke_certificate(STORE *s, OPENSSL_ITEM attributes[], - OPENSSL_ITEM parameters[]) -{ - check_store(s, STORE_F_STORE_REVOKE_CERTIFICATE, - revoke_object, STORE_R_NO_REVOKE_OBJECT_FUNCTION); - - if (!s->meth->revoke_object(s, STORE_OBJECT_TYPE_X509_CERTIFICATE, - attributes, parameters)) { - STOREerr(STORE_F_STORE_REVOKE_CERTIFICATE, - STORE_R_FAILED_REVOKING_CERTIFICATE); - return 0; - } - return 1; -} - -int STORE_delete_certificate(STORE *s, OPENSSL_ITEM attributes[], - OPENSSL_ITEM parameters[]) -{ - check_store(s, STORE_F_STORE_DELETE_CERTIFICATE, - delete_object, STORE_R_NO_DELETE_OBJECT_FUNCTION); - - if (!s->meth->delete_object(s, STORE_OBJECT_TYPE_X509_CERTIFICATE, - attributes, parameters)) { - STOREerr(STORE_F_STORE_DELETE_CERTIFICATE, - STORE_R_FAILED_DELETING_CERTIFICATE); - return 0; - } - return 1; -} - -void *STORE_list_certificate_start(STORE *s, OPENSSL_ITEM attributes[], - OPENSSL_ITEM parameters[]) -{ - void *handle; - - check_store(s, STORE_F_STORE_LIST_CERTIFICATE_START, - list_object_start, STORE_R_NO_LIST_OBJECT_START_FUNCTION); - - handle = s->meth->list_object_start(s, - STORE_OBJECT_TYPE_X509_CERTIFICATE, - attributes, parameters); - if (!handle) { - STOREerr(STORE_F_STORE_LIST_CERTIFICATE_START, - STORE_R_FAILED_LISTING_CERTIFICATES); - return 0; - } - return handle; -} - -X509 *STORE_list_certificate_next(STORE *s, void *handle) -{ - STORE_OBJECT *object; - X509 *x; - - check_store(s, STORE_F_STORE_LIST_CERTIFICATE_NEXT, - list_object_next, STORE_R_NO_LIST_OBJECT_NEXT_FUNCTION); - - object = s->meth->list_object_next(s, handle); - if (!object || !object->data.x509.certificate) { - STOREerr(STORE_F_STORE_LIST_CERTIFICATE_NEXT, - STORE_R_FAILED_LISTING_CERTIFICATES); - return 0; - } - X509_up_ref(object->data.x509.certificate); -#ifdef REF_PRINT - REF_PRINT("X509", data); -#endif - x = object->data.x509.certificate; - STORE_OBJECT_free(object); - return x; -} - -int STORE_list_certificate_end(STORE *s, void *handle) -{ - check_store(s, STORE_F_STORE_LIST_CERTIFICATE_END, - list_object_end, STORE_R_NO_LIST_OBJECT_END_FUNCTION); - - if (!s->meth->list_object_end(s, handle)) { - STOREerr(STORE_F_STORE_LIST_CERTIFICATE_END, - STORE_R_FAILED_LISTING_CERTIFICATES); - return 0; - } - return 1; -} - -int STORE_list_certificate_endp(STORE *s, void *handle) -{ - check_store(s, STORE_F_STORE_LIST_CERTIFICATE_ENDP, - list_object_endp, STORE_R_NO_LIST_OBJECT_ENDP_FUNCTION); - - if (!s->meth->list_object_endp(s, handle)) { - STOREerr(STORE_F_STORE_LIST_CERTIFICATE_ENDP, - STORE_R_FAILED_LISTING_CERTIFICATES); - return 0; - } - return 1; -} - -EVP_PKEY *STORE_generate_key(STORE *s, OPENSSL_ITEM attributes[], - OPENSSL_ITEM parameters[]) -{ - STORE_OBJECT *object; - EVP_PKEY *pkey; - - check_store(s, STORE_F_STORE_GENERATE_KEY, - generate_object, STORE_R_NO_GENERATE_OBJECT_FUNCTION); - - object = s->meth->generate_object(s, STORE_OBJECT_TYPE_PRIVATE_KEY, - attributes, parameters); - if (!object || !object->data.key) { - STOREerr(STORE_F_STORE_GENERATE_KEY, STORE_R_FAILED_GENERATING_KEY); - return 0; - } - EVP_PKEY_up_ref(object->data.key); -#ifdef REF_PRINT - REF_PRINT("EVP_PKEY", data); -#endif - pkey = object->data.key; - STORE_OBJECT_free(object); - return pkey; -} - -EVP_PKEY *STORE_get_private_key(STORE *s, OPENSSL_ITEM attributes[], - OPENSSL_ITEM parameters[]) -{ - STORE_OBJECT *object; - EVP_PKEY *pkey; - - check_store(s, STORE_F_STORE_GET_PRIVATE_KEY, - get_object, STORE_R_NO_GET_OBJECT_FUNCTION); - - object = s->meth->get_object(s, STORE_OBJECT_TYPE_PRIVATE_KEY, - attributes, parameters); - if (!object || !object->data.key || !object->data.key) { - STOREerr(STORE_F_STORE_GET_PRIVATE_KEY, STORE_R_FAILED_GETTING_KEY); - return 0; - } - EVP_PKEY_up_ref(object->data.key); -#ifdef REF_PRINT - REF_PRINT("EVP_PKEY", data); -#endif - pkey = object->data.key; - STORE_OBJECT_free(object); - return pkey; -} - -int STORE_store_private_key(STORE *s, EVP_PKEY *data, - OPENSSL_ITEM attributes[], - OPENSSL_ITEM parameters[]) -{ - STORE_OBJECT *object; - int i; - - check_store(s, STORE_F_STORE_STORE_PRIVATE_KEY, - store_object, STORE_R_NO_STORE_OBJECT_FUNCTION); - - object = STORE_OBJECT_new(); - if (object == NULL) { - STOREerr(STORE_F_STORE_STORE_PRIVATE_KEY, ERR_R_MALLOC_FAILURE); - return 0; - } - object->data.key = EVP_PKEY_new(); - if (object->data.key == NULL) { - STOREerr(STORE_F_STORE_STORE_PRIVATE_KEY, ERR_R_MALLOC_FAILURE); - return 0; - } - - EVP_PKEY_up_ref(data); -#ifdef REF_PRINT - REF_PRINT("EVP_PKEY", data); -#endif - object->data.key = data; - - i = s->meth->store_object(s, STORE_OBJECT_TYPE_PRIVATE_KEY, object, - attributes, parameters); - - STORE_OBJECT_free(object); - - if (!i) { - STOREerr(STORE_F_STORE_STORE_PRIVATE_KEY, STORE_R_FAILED_STORING_KEY); - return 0; - } - return i; -} - -int STORE_modify_private_key(STORE *s, OPENSSL_ITEM search_attributes[], - OPENSSL_ITEM add_attributes[], - OPENSSL_ITEM modify_attributes[], - OPENSSL_ITEM delete_attributes[], - OPENSSL_ITEM parameters[]) -{ - check_store(s, STORE_F_STORE_MODIFY_PRIVATE_KEY, - modify_object, STORE_R_NO_MODIFY_OBJECT_FUNCTION); - - if (!s->meth->modify_object(s, STORE_OBJECT_TYPE_PRIVATE_KEY, - search_attributes, add_attributes, - modify_attributes, delete_attributes, - parameters)) { - STOREerr(STORE_F_STORE_MODIFY_PRIVATE_KEY, - STORE_R_FAILED_MODIFYING_PRIVATE_KEY); - return 0; - } - return 1; -} - -int STORE_revoke_private_key(STORE *s, OPENSSL_ITEM attributes[], - OPENSSL_ITEM parameters[]) -{ - int i; - - check_store(s, STORE_F_STORE_REVOKE_PRIVATE_KEY, - revoke_object, STORE_R_NO_REVOKE_OBJECT_FUNCTION); - - i = s->meth->revoke_object(s, STORE_OBJECT_TYPE_PRIVATE_KEY, - attributes, parameters); - - if (!i) { - STOREerr(STORE_F_STORE_REVOKE_PRIVATE_KEY, - STORE_R_FAILED_REVOKING_KEY); - return 0; - } - return i; -} - -int STORE_delete_private_key(STORE *s, OPENSSL_ITEM attributes[], - OPENSSL_ITEM parameters[]) -{ - check_store(s, STORE_F_STORE_DELETE_PRIVATE_KEY, - delete_object, STORE_R_NO_DELETE_OBJECT_FUNCTION); - - if (!s->meth->delete_object(s, STORE_OBJECT_TYPE_PRIVATE_KEY, - attributes, parameters)) { - STOREerr(STORE_F_STORE_DELETE_PRIVATE_KEY, - STORE_R_FAILED_DELETING_KEY); - return 0; - } - return 1; -} - -void *STORE_list_private_key_start(STORE *s, OPENSSL_ITEM attributes[], - OPENSSL_ITEM parameters[]) -{ - void *handle; - - check_store(s, STORE_F_STORE_LIST_PRIVATE_KEY_START, - list_object_start, STORE_R_NO_LIST_OBJECT_START_FUNCTION); - - handle = s->meth->list_object_start(s, STORE_OBJECT_TYPE_PRIVATE_KEY, - attributes, parameters); - if (!handle) { - STOREerr(STORE_F_STORE_LIST_PRIVATE_KEY_START, - STORE_R_FAILED_LISTING_KEYS); - return 0; - } - return handle; -} - -EVP_PKEY *STORE_list_private_key_next(STORE *s, void *handle) -{ - STORE_OBJECT *object; - EVP_PKEY *pkey; - - check_store(s, STORE_F_STORE_LIST_PRIVATE_KEY_NEXT, - list_object_next, STORE_R_NO_LIST_OBJECT_NEXT_FUNCTION); - - object = s->meth->list_object_next(s, handle); - if (!object || !object->data.key || !object->data.key) { - STOREerr(STORE_F_STORE_LIST_PRIVATE_KEY_NEXT, - STORE_R_FAILED_LISTING_KEYS); - return 0; - } - EVP_PKEY_up_ref(object->data.key); -#ifdef REF_PRINT - REF_PRINT("EVP_PKEY", data); -#endif - pkey = object->data.key; - STORE_OBJECT_free(object); - return pkey; -} - -int STORE_list_private_key_end(STORE *s, void *handle) -{ - check_store(s, STORE_F_STORE_LIST_PRIVATE_KEY_END, - list_object_end, STORE_R_NO_LIST_OBJECT_END_FUNCTION); - - if (!s->meth->list_object_end(s, handle)) { - STOREerr(STORE_F_STORE_LIST_PRIVATE_KEY_END, - STORE_R_FAILED_LISTING_KEYS); - return 0; - } - return 1; -} - -int STORE_list_private_key_endp(STORE *s, void *handle) -{ - check_store(s, STORE_F_STORE_LIST_PRIVATE_KEY_ENDP, - list_object_endp, STORE_R_NO_LIST_OBJECT_ENDP_FUNCTION); - - if (!s->meth->list_object_endp(s, handle)) { - STOREerr(STORE_F_STORE_LIST_PRIVATE_KEY_ENDP, - STORE_R_FAILED_LISTING_KEYS); - return 0; - } - return 1; -} - -EVP_PKEY *STORE_get_public_key(STORE *s, OPENSSL_ITEM attributes[], - OPENSSL_ITEM parameters[]) -{ - STORE_OBJECT *object; - EVP_PKEY *pkey; - - check_store(s, STORE_F_STORE_GET_PUBLIC_KEY, - get_object, STORE_R_NO_GET_OBJECT_FUNCTION); - - object = s->meth->get_object(s, STORE_OBJECT_TYPE_PUBLIC_KEY, - attributes, parameters); - if (!object || !object->data.key || !object->data.key) { - STOREerr(STORE_F_STORE_GET_PUBLIC_KEY, STORE_R_FAILED_GETTING_KEY); - return 0; - } - EVP_PKEY_up_ref(object->data.key); -#ifdef REF_PRINT - REF_PRINT("EVP_PKEY", data); -#endif - pkey = object->data.key; - STORE_OBJECT_free(object); - return pkey; -} - -int STORE_store_public_key(STORE *s, EVP_PKEY *data, - OPENSSL_ITEM attributes[], - OPENSSL_ITEM parameters[]) -{ - STORE_OBJECT *object; - int i; - - check_store(s, STORE_F_STORE_STORE_PUBLIC_KEY, - store_object, STORE_R_NO_STORE_OBJECT_FUNCTION); - - object = STORE_OBJECT_new(); - if (object == NULL) { - STOREerr(STORE_F_STORE_STORE_PUBLIC_KEY, ERR_R_MALLOC_FAILURE); - return 0; - } - object->data.key = EVP_PKEY_new(); - if (object->data.key == NULL) { - STOREerr(STORE_F_STORE_STORE_PUBLIC_KEY, ERR_R_MALLOC_FAILURE); - return 0; - } - - EVP_PKEY_up_ref(data); -#ifdef REF_PRINT - REF_PRINT("EVP_PKEY", data); -#endif - object->data.key = data; - - i = s->meth->store_object(s, STORE_OBJECT_TYPE_PUBLIC_KEY, object, - attributes, parameters); - - STORE_OBJECT_free(object); - - if (!i) { - STOREerr(STORE_F_STORE_STORE_PUBLIC_KEY, STORE_R_FAILED_STORING_KEY); - return 0; - } - return i; -} - -int STORE_modify_public_key(STORE *s, OPENSSL_ITEM search_attributes[], - OPENSSL_ITEM add_attributes[], - OPENSSL_ITEM modify_attributes[], - OPENSSL_ITEM delete_attributes[], - OPENSSL_ITEM parameters[]) -{ - check_store(s, STORE_F_STORE_MODIFY_PUBLIC_KEY, - modify_object, STORE_R_NO_MODIFY_OBJECT_FUNCTION); - - if (!s->meth->modify_object(s, STORE_OBJECT_TYPE_PUBLIC_KEY, - search_attributes, add_attributes, - modify_attributes, delete_attributes, - parameters)) { - STOREerr(STORE_F_STORE_MODIFY_PUBLIC_KEY, - STORE_R_FAILED_MODIFYING_PUBLIC_KEY); - return 0; - } - return 1; -} - -int STORE_revoke_public_key(STORE *s, OPENSSL_ITEM attributes[], - OPENSSL_ITEM parameters[]) -{ - int i; - - check_store(s, STORE_F_STORE_REVOKE_PUBLIC_KEY, - revoke_object, STORE_R_NO_REVOKE_OBJECT_FUNCTION); - - i = s->meth->revoke_object(s, STORE_OBJECT_TYPE_PUBLIC_KEY, - attributes, parameters); - - if (!i) { - STOREerr(STORE_F_STORE_REVOKE_PUBLIC_KEY, - STORE_R_FAILED_REVOKING_KEY); - return 0; - } - return i; -} - -int STORE_delete_public_key(STORE *s, OPENSSL_ITEM attributes[], - OPENSSL_ITEM parameters[]) -{ - check_store(s, STORE_F_STORE_DELETE_PUBLIC_KEY, - delete_object, STORE_R_NO_DELETE_OBJECT_FUNCTION); - - if (!s->meth->delete_object(s, STORE_OBJECT_TYPE_PUBLIC_KEY, - attributes, parameters)) { - STOREerr(STORE_F_STORE_DELETE_PUBLIC_KEY, - STORE_R_FAILED_DELETING_KEY); - return 0; - } - return 1; -} - -void *STORE_list_public_key_start(STORE *s, OPENSSL_ITEM attributes[], - OPENSSL_ITEM parameters[]) -{ - void *handle; - - check_store(s, STORE_F_STORE_LIST_PUBLIC_KEY_START, - list_object_start, STORE_R_NO_LIST_OBJECT_START_FUNCTION); - - handle = s->meth->list_object_start(s, STORE_OBJECT_TYPE_PUBLIC_KEY, - attributes, parameters); - if (!handle) { - STOREerr(STORE_F_STORE_LIST_PUBLIC_KEY_START, - STORE_R_FAILED_LISTING_KEYS); - return 0; - } - return handle; -} - -EVP_PKEY *STORE_list_public_key_next(STORE *s, void *handle) -{ - STORE_OBJECT *object; - EVP_PKEY *pkey; - - check_store(s, STORE_F_STORE_LIST_PUBLIC_KEY_NEXT, - list_object_next, STORE_R_NO_LIST_OBJECT_NEXT_FUNCTION); - - object = s->meth->list_object_next(s, handle); - if (!object || !object->data.key || !object->data.key) { - STOREerr(STORE_F_STORE_LIST_PUBLIC_KEY_NEXT, - STORE_R_FAILED_LISTING_KEYS); - return 0; - } - EVP_PKEY_up_ref(object->data.key); -#ifdef REF_PRINT - REF_PRINT("EVP_PKEY", data); -#endif - pkey = object->data.key; - STORE_OBJECT_free(object); - return pkey; -} - -int STORE_list_public_key_end(STORE *s, void *handle) -{ - check_store(s, STORE_F_STORE_LIST_PUBLIC_KEY_END, - list_object_end, STORE_R_NO_LIST_OBJECT_END_FUNCTION); - - if (!s->meth->list_object_end(s, handle)) { - STOREerr(STORE_F_STORE_LIST_PUBLIC_KEY_END, - STORE_R_FAILED_LISTING_KEYS); - return 0; - } - return 1; -} - -int STORE_list_public_key_endp(STORE *s, void *handle) -{ - check_store(s, STORE_F_STORE_LIST_PUBLIC_KEY_ENDP, - list_object_endp, STORE_R_NO_LIST_OBJECT_ENDP_FUNCTION); - - if (!s->meth->list_object_endp(s, handle)) { - STOREerr(STORE_F_STORE_LIST_PUBLIC_KEY_ENDP, - STORE_R_FAILED_LISTING_KEYS); - return 0; - } - return 1; -} - -X509_CRL *STORE_generate_crl(STORE *s, OPENSSL_ITEM attributes[], - OPENSSL_ITEM parameters[]) -{ - STORE_OBJECT *object; - X509_CRL *crl; - - check_store(s, STORE_F_STORE_GENERATE_CRL, - generate_object, STORE_R_NO_GENERATE_CRL_FUNCTION); - - object = s->meth->generate_object(s, STORE_OBJECT_TYPE_X509_CRL, - attributes, parameters); - if (!object || !object->data.crl) { - STOREerr(STORE_F_STORE_GENERATE_CRL, STORE_R_FAILED_GENERATING_CRL); - return 0; - } - X509_CRL_up_ref(object->data.crl); -#ifdef REF_PRINT - REF_PRINT("X509_CRL", data); -#endif - crl = object->data.crl; - STORE_OBJECT_free(object); - return crl; -} - -X509_CRL *STORE_get_crl(STORE *s, OPENSSL_ITEM attributes[], - OPENSSL_ITEM parameters[]) -{ - STORE_OBJECT *object; - X509_CRL *crl; - - check_store(s, STORE_F_STORE_GET_CRL, - get_object, STORE_R_NO_GET_OBJECT_FUNCTION); - - object = s->meth->get_object(s, STORE_OBJECT_TYPE_X509_CRL, - attributes, parameters); - if (!object || !object->data.crl) { - STOREerr(STORE_F_STORE_GET_CRL, STORE_R_FAILED_GETTING_KEY); - return 0; - } - X509_CRL_up_ref(object->data.crl); -#ifdef REF_PRINT - REF_PRINT("X509_CRL", data); -#endif - crl = object->data.crl; - STORE_OBJECT_free(object); - return crl; -} - -int STORE_store_crl(STORE *s, X509_CRL *data, OPENSSL_ITEM attributes[], - OPENSSL_ITEM parameters[]) -{ - STORE_OBJECT *object; - int i; - - check_store(s, STORE_F_STORE_STORE_CRL, - store_object, STORE_R_NO_STORE_OBJECT_FUNCTION); - - object = STORE_OBJECT_new(); - if (object == NULL) { - STOREerr(STORE_F_STORE_STORE_CRL, ERR_R_MALLOC_FAILURE); - return 0; - } - - X509_CRL_up_ref(data); -#ifdef REF_PRINT - REF_PRINT("X509_CRL", data); -#endif - object->data.crl = data; - - i = s->meth->store_object(s, STORE_OBJECT_TYPE_X509_CRL, object, - attributes, parameters); - - STORE_OBJECT_free(object); - - if (!i) { - STOREerr(STORE_F_STORE_STORE_CRL, STORE_R_FAILED_STORING_KEY); - return 0; - } - return i; -} - -int STORE_modify_crl(STORE *s, OPENSSL_ITEM search_attributes[], - OPENSSL_ITEM add_attributes[], - OPENSSL_ITEM modify_attributes[], - OPENSSL_ITEM delete_attributes[], - OPENSSL_ITEM parameters[]) -{ - check_store(s, STORE_F_STORE_MODIFY_CRL, - modify_object, STORE_R_NO_MODIFY_OBJECT_FUNCTION); - - if (!s->meth->modify_object(s, STORE_OBJECT_TYPE_X509_CRL, - search_attributes, add_attributes, - modify_attributes, delete_attributes, - parameters)) { - STOREerr(STORE_F_STORE_MODIFY_CRL, STORE_R_FAILED_MODIFYING_CRL); - return 0; - } - return 1; -} - -int STORE_delete_crl(STORE *s, OPENSSL_ITEM attributes[], - OPENSSL_ITEM parameters[]) -{ - check_store(s, STORE_F_STORE_DELETE_CRL, - delete_object, STORE_R_NO_DELETE_OBJECT_FUNCTION); - - if (!s->meth->delete_object(s, STORE_OBJECT_TYPE_X509_CRL, - attributes, parameters)) { - STOREerr(STORE_F_STORE_DELETE_CRL, STORE_R_FAILED_DELETING_KEY); - return 0; - } - return 1; -} - -void *STORE_list_crl_start(STORE *s, OPENSSL_ITEM attributes[], - OPENSSL_ITEM parameters[]) -{ - void *handle; - - check_store(s, STORE_F_STORE_LIST_CRL_START, - list_object_start, STORE_R_NO_LIST_OBJECT_START_FUNCTION); - - handle = s->meth->list_object_start(s, STORE_OBJECT_TYPE_X509_CRL, - attributes, parameters); - if (!handle) { - STOREerr(STORE_F_STORE_LIST_CRL_START, STORE_R_FAILED_LISTING_KEYS); - return 0; - } - return handle; -} - -X509_CRL *STORE_list_crl_next(STORE *s, void *handle) -{ - STORE_OBJECT *object; - X509_CRL *crl; - - check_store(s, STORE_F_STORE_LIST_CRL_NEXT, - list_object_next, STORE_R_NO_LIST_OBJECT_NEXT_FUNCTION); - - object = s->meth->list_object_next(s, handle); - if (!object || !object->data.crl) { - STOREerr(STORE_F_STORE_LIST_CRL_NEXT, STORE_R_FAILED_LISTING_KEYS); - return 0; - } - X509_CRL_up_ref(object->data.crl); -#ifdef REF_PRINT - REF_PRINT("X509_CRL", data); -#endif - crl = object->data.crl; - STORE_OBJECT_free(object); - return crl; -} - -int STORE_list_crl_end(STORE *s, void *handle) -{ - check_store(s, STORE_F_STORE_LIST_CRL_END, - list_object_end, STORE_R_NO_LIST_OBJECT_END_FUNCTION); - - if (!s->meth->list_object_end(s, handle)) { - STOREerr(STORE_F_STORE_LIST_CRL_END, STORE_R_FAILED_LISTING_KEYS); - return 0; - } - return 1; -} - -int STORE_list_crl_endp(STORE *s, void *handle) -{ - check_store(s, STORE_F_STORE_LIST_CRL_ENDP, - list_object_endp, STORE_R_NO_LIST_OBJECT_ENDP_FUNCTION); - - if (!s->meth->list_object_endp(s, handle)) { - STOREerr(STORE_F_STORE_LIST_CRL_ENDP, STORE_R_FAILED_LISTING_KEYS); - return 0; - } - return 1; -} - -int STORE_store_number(STORE *s, BIGNUM *data, OPENSSL_ITEM attributes[], - OPENSSL_ITEM parameters[]) -{ - STORE_OBJECT *object; - int i; - - check_store(s, STORE_F_STORE_STORE_NUMBER, - store_object, STORE_R_NO_STORE_OBJECT_NUMBER_FUNCTION); - - object = STORE_OBJECT_new(); - if (object == NULL) { - STOREerr(STORE_F_STORE_STORE_NUMBER, ERR_R_MALLOC_FAILURE); - return 0; - } - - object->data.number = data; - - i = s->meth->store_object(s, STORE_OBJECT_TYPE_NUMBER, object, - attributes, parameters); - - STORE_OBJECT_free(object); - - if (!i) { - STOREerr(STORE_F_STORE_STORE_NUMBER, STORE_R_FAILED_STORING_NUMBER); - return 0; - } - return 1; -} - -int STORE_modify_number(STORE *s, OPENSSL_ITEM search_attributes[], - OPENSSL_ITEM add_attributes[], - OPENSSL_ITEM modify_attributes[], - OPENSSL_ITEM delete_attributes[], - OPENSSL_ITEM parameters[]) -{ - check_store(s, STORE_F_STORE_MODIFY_NUMBER, - modify_object, STORE_R_NO_MODIFY_OBJECT_FUNCTION); - - if (!s->meth->modify_object(s, STORE_OBJECT_TYPE_NUMBER, - search_attributes, add_attributes, - modify_attributes, delete_attributes, - parameters)) { - STOREerr(STORE_F_STORE_MODIFY_NUMBER, - STORE_R_FAILED_MODIFYING_NUMBER); - return 0; - } - return 1; -} - -BIGNUM *STORE_get_number(STORE *s, OPENSSL_ITEM attributes[], - OPENSSL_ITEM parameters[]) -{ - STORE_OBJECT *object; - BIGNUM *n; - - check_store(s, STORE_F_STORE_GET_NUMBER, - get_object, STORE_R_NO_GET_OBJECT_NUMBER_FUNCTION); - - object = s->meth->get_object(s, STORE_OBJECT_TYPE_NUMBER, attributes, - parameters); - if (!object || !object->data.number) { - STOREerr(STORE_F_STORE_GET_NUMBER, STORE_R_FAILED_GETTING_NUMBER); - return 0; - } - n = object->data.number; - object->data.number = NULL; - STORE_OBJECT_free(object); - return n; -} - -int STORE_delete_number(STORE *s, OPENSSL_ITEM attributes[], - OPENSSL_ITEM parameters[]) -{ - check_store(s, STORE_F_STORE_DELETE_NUMBER, - delete_object, STORE_R_NO_DELETE_NUMBER_FUNCTION); - - if (!s->meth->delete_object(s, STORE_OBJECT_TYPE_NUMBER, attributes, - parameters)) { - STOREerr(STORE_F_STORE_DELETE_NUMBER, STORE_R_FAILED_DELETING_NUMBER); - return 0; - } - return 1; -} - -int STORE_store_arbitrary(STORE *s, BUF_MEM *data, OPENSSL_ITEM attributes[], - OPENSSL_ITEM parameters[]) -{ - STORE_OBJECT *object; - int i; - - check_store(s, STORE_F_STORE_STORE_ARBITRARY, - store_object, STORE_R_NO_STORE_OBJECT_ARBITRARY_FUNCTION); - - object = STORE_OBJECT_new(); - if (object == NULL) { - STOREerr(STORE_F_STORE_STORE_ARBITRARY, ERR_R_MALLOC_FAILURE); - return 0; - } - - object->data.arbitrary = data; - - i = s->meth->store_object(s, STORE_OBJECT_TYPE_ARBITRARY, object, - attributes, parameters); - - STORE_OBJECT_free(object); - - if (!i) { - STOREerr(STORE_F_STORE_STORE_ARBITRARY, - STORE_R_FAILED_STORING_ARBITRARY); - return 0; - } - return 1; -} - -int STORE_modify_arbitrary(STORE *s, OPENSSL_ITEM search_attributes[], - OPENSSL_ITEM add_attributes[], - OPENSSL_ITEM modify_attributes[], - OPENSSL_ITEM delete_attributes[], - OPENSSL_ITEM parameters[]) -{ - check_store(s, STORE_F_STORE_MODIFY_ARBITRARY, - modify_object, STORE_R_NO_MODIFY_OBJECT_FUNCTION); - - if (!s->meth->modify_object(s, STORE_OBJECT_TYPE_ARBITRARY, - search_attributes, add_attributes, - modify_attributes, delete_attributes, - parameters)) { - STOREerr(STORE_F_STORE_MODIFY_ARBITRARY, - STORE_R_FAILED_MODIFYING_ARBITRARY); - return 0; - } - return 1; -} - -BUF_MEM *STORE_get_arbitrary(STORE *s, OPENSSL_ITEM attributes[], - OPENSSL_ITEM parameters[]) -{ - STORE_OBJECT *object; - BUF_MEM *b; - - check_store(s, STORE_F_STORE_GET_ARBITRARY, - get_object, STORE_R_NO_GET_OBJECT_ARBITRARY_FUNCTION); - - object = s->meth->get_object(s, STORE_OBJECT_TYPE_ARBITRARY, - attributes, parameters); - if (!object || !object->data.arbitrary) { - STOREerr(STORE_F_STORE_GET_ARBITRARY, - STORE_R_FAILED_GETTING_ARBITRARY); - return 0; - } - b = object->data.arbitrary; - object->data.arbitrary = NULL; - STORE_OBJECT_free(object); - return b; -} - -int STORE_delete_arbitrary(STORE *s, OPENSSL_ITEM attributes[], - OPENSSL_ITEM parameters[]) -{ - check_store(s, STORE_F_STORE_DELETE_ARBITRARY, - delete_object, STORE_R_NO_DELETE_ARBITRARY_FUNCTION); - - if (!s->meth->delete_object(s, STORE_OBJECT_TYPE_ARBITRARY, attributes, - parameters)) { - STOREerr(STORE_F_STORE_DELETE_ARBITRARY, - STORE_R_FAILED_DELETING_ARBITRARY); - return 0; - } - return 1; -} - -STORE_OBJECT *STORE_OBJECT_new(void) -{ - STORE_OBJECT *object = OPENSSL_zalloc(sizeof(*object)); - return object; -} - -void STORE_OBJECT_free(STORE_OBJECT *data) -{ - if (!data) - return; - switch (data->type) { - case STORE_OBJECT_TYPE_X509_CERTIFICATE: - X509_free(data->data.x509.certificate); - break; - case STORE_OBJECT_TYPE_X509_CRL: - X509_CRL_free(data->data.crl); - break; - case STORE_OBJECT_TYPE_PRIVATE_KEY: - case STORE_OBJECT_TYPE_PUBLIC_KEY: - EVP_PKEY_free(data->data.key); - break; - case STORE_OBJECT_TYPE_NUMBER: - BN_free(data->data.number); - break; - case STORE_OBJECT_TYPE_ARBITRARY: - BUF_MEM_free(data->data.arbitrary); - break; - } - OPENSSL_free(data); -} - -struct STORE_attr_info_st { - unsigned char set[(STORE_ATTR_TYPE_NUM + 8) / 8]; - union { - char *cstring; - unsigned char *sha1string; - X509_NAME *dn; - BIGNUM *number; - void *any; - } values[STORE_ATTR_TYPE_NUM + 1]; - size_t value_sizes[STORE_ATTR_TYPE_NUM + 1]; -}; - -#define ATTR_IS_SET(a,i) ((i) > 0 && (i) < STORE_ATTR_TYPE_NUM \ - && ((a)->set[(i) / 8] & (1 << ((i) % 8)))) -#define SET_ATTRBIT(a,i) ((a)->set[(i) / 8] |= (1 << ((i) % 8))) -#define CLEAR_ATTRBIT(a,i) ((a)->set[(i) / 8] &= ~(1 << ((i) % 8))) - -STORE_ATTR_INFO *STORE_ATTR_INFO_new(void) -{ - STORE_ATTR_INFO *p = OPENSSL_malloc(sizeof(*p)); - - return p; -} - -static void STORE_ATTR_INFO_attr_free(STORE_ATTR_INFO *attrs, - STORE_ATTR_TYPES code) -{ - if (ATTR_IS_SET(attrs, code)) { - switch (code) { - case STORE_ATTR_FRIENDLYNAME: - case STORE_ATTR_EMAIL: - case STORE_ATTR_FILENAME: - STORE_ATTR_INFO_modify_cstr(attrs, code, NULL, 0); - break; - case STORE_ATTR_KEYID: - case STORE_ATTR_ISSUERKEYID: - case STORE_ATTR_SUBJECTKEYID: - case STORE_ATTR_ISSUERSERIALHASH: - case STORE_ATTR_CERTHASH: - STORE_ATTR_INFO_modify_sha1str(attrs, code, NULL, 0); - break; - case STORE_ATTR_ISSUER: - case STORE_ATTR_SUBJECT: - STORE_ATTR_INFO_modify_dn(attrs, code, NULL); - break; - case STORE_ATTR_SERIAL: - STORE_ATTR_INFO_modify_number(attrs, code, NULL); - break; - default: - break; - } - } -} - -int STORE_ATTR_INFO_free(STORE_ATTR_INFO *attrs) -{ - if (attrs) { - STORE_ATTR_TYPES i; - for (i = 0; i++ < STORE_ATTR_TYPE_NUM;) - STORE_ATTR_INFO_attr_free(attrs, i); - OPENSSL_free(attrs); - } - return 1; -} - -char *STORE_ATTR_INFO_get0_cstr(STORE_ATTR_INFO *attrs, STORE_ATTR_TYPES code) -{ - if (!attrs) { - STOREerr(STORE_F_STORE_ATTR_INFO_GET0_CSTR, - ERR_R_PASSED_NULL_PARAMETER); - return NULL; - } - if (ATTR_IS_SET(attrs, code)) - return attrs->values[code].cstring; - STOREerr(STORE_F_STORE_ATTR_INFO_GET0_CSTR, STORE_R_NO_VALUE); - return NULL; -} - -unsigned char *STORE_ATTR_INFO_get0_sha1str(STORE_ATTR_INFO *attrs, - STORE_ATTR_TYPES code) -{ - if (!attrs) { - STOREerr(STORE_F_STORE_ATTR_INFO_GET0_SHA1STR, - ERR_R_PASSED_NULL_PARAMETER); - return NULL; - } - if (ATTR_IS_SET(attrs, code)) - return attrs->values[code].sha1string; - STOREerr(STORE_F_STORE_ATTR_INFO_GET0_SHA1STR, STORE_R_NO_VALUE); - return NULL; -} - -X509_NAME *STORE_ATTR_INFO_get0_dn(STORE_ATTR_INFO *attrs, - STORE_ATTR_TYPES code) -{ - if (!attrs) { - STOREerr(STORE_F_STORE_ATTR_INFO_GET0_DN, - ERR_R_PASSED_NULL_PARAMETER); - return NULL; - } - if (ATTR_IS_SET(attrs, code)) - return attrs->values[code].dn; - STOREerr(STORE_F_STORE_ATTR_INFO_GET0_DN, STORE_R_NO_VALUE); - return NULL; -} - -BIGNUM *STORE_ATTR_INFO_get0_number(STORE_ATTR_INFO *attrs, - STORE_ATTR_TYPES code) -{ - if (!attrs) { - STOREerr(STORE_F_STORE_ATTR_INFO_GET0_NUMBER, - ERR_R_PASSED_NULL_PARAMETER); - return NULL; - } - if (ATTR_IS_SET(attrs, code)) - return attrs->values[code].number; - STOREerr(STORE_F_STORE_ATTR_INFO_GET0_NUMBER, STORE_R_NO_VALUE); - return NULL; -} - -int STORE_ATTR_INFO_set_cstr(STORE_ATTR_INFO *attrs, STORE_ATTR_TYPES code, - char *cstr, size_t cstr_size) -{ - if (!attrs) { - STOREerr(STORE_F_STORE_ATTR_INFO_SET_CSTR, - ERR_R_PASSED_NULL_PARAMETER); - return 0; - } - if (!ATTR_IS_SET(attrs, code)) { - if ((attrs->values[code].cstring = OPENSSL_strndup(cstr, cstr_size))) - return 1; - STOREerr(STORE_F_STORE_ATTR_INFO_SET_CSTR, ERR_R_MALLOC_FAILURE); - return 0; - } - STOREerr(STORE_F_STORE_ATTR_INFO_SET_CSTR, STORE_R_ALREADY_HAS_A_VALUE); - return 0; -} - -int STORE_ATTR_INFO_set_sha1str(STORE_ATTR_INFO *attrs, STORE_ATTR_TYPES code, - unsigned char *sha1str, size_t sha1str_size) -{ - if (!attrs) { - STOREerr(STORE_F_STORE_ATTR_INFO_SET_SHA1STR, - ERR_R_PASSED_NULL_PARAMETER); - return 0; - } - if (!ATTR_IS_SET(attrs, code)) { - if ((attrs->values[code].sha1string = - (unsigned char *)OPENSSL_memdup(sha1str, sha1str_size))) - return 1; - STOREerr(STORE_F_STORE_ATTR_INFO_SET_SHA1STR, ERR_R_MALLOC_FAILURE); - return 0; - } - STOREerr(STORE_F_STORE_ATTR_INFO_SET_SHA1STR, - STORE_R_ALREADY_HAS_A_VALUE); - return 0; -} - -int STORE_ATTR_INFO_set_dn(STORE_ATTR_INFO *attrs, STORE_ATTR_TYPES code, - X509_NAME *dn) -{ - if (!attrs) { - STOREerr(STORE_F_STORE_ATTR_INFO_SET_DN, ERR_R_PASSED_NULL_PARAMETER); - return 0; - } - if (!ATTR_IS_SET(attrs, code)) { - if ((attrs->values[code].dn = X509_NAME_dup(dn))) - return 1; - STOREerr(STORE_F_STORE_ATTR_INFO_SET_DN, ERR_R_MALLOC_FAILURE); - return 0; - } - STOREerr(STORE_F_STORE_ATTR_INFO_SET_DN, STORE_R_ALREADY_HAS_A_VALUE); - return 0; -} - -int STORE_ATTR_INFO_set_number(STORE_ATTR_INFO *attrs, STORE_ATTR_TYPES code, - BIGNUM *number) -{ - if (!attrs) { - STOREerr(STORE_F_STORE_ATTR_INFO_SET_NUMBER, - ERR_R_PASSED_NULL_PARAMETER); - return 0; - } - if (!ATTR_IS_SET(attrs, code)) { - if ((attrs->values[code].number = BN_dup(number))) - return 1; - STOREerr(STORE_F_STORE_ATTR_INFO_SET_NUMBER, ERR_R_MALLOC_FAILURE); - return 0; - } - STOREerr(STORE_F_STORE_ATTR_INFO_SET_NUMBER, STORE_R_ALREADY_HAS_A_VALUE); - return 0; -} - -int STORE_ATTR_INFO_modify_cstr(STORE_ATTR_INFO *attrs, STORE_ATTR_TYPES code, - char *cstr, size_t cstr_size) -{ - if (!attrs) { - STOREerr(STORE_F_STORE_ATTR_INFO_MODIFY_CSTR, - ERR_R_PASSED_NULL_PARAMETER); - return 0; - } - if (ATTR_IS_SET(attrs, code)) { - OPENSSL_free(attrs->values[code].cstring); - attrs->values[code].cstring = NULL; - CLEAR_ATTRBIT(attrs, code); - } - return STORE_ATTR_INFO_set_cstr(attrs, code, cstr, cstr_size); -} - -int STORE_ATTR_INFO_modify_sha1str(STORE_ATTR_INFO *attrs, - STORE_ATTR_TYPES code, - unsigned char *sha1str, - size_t sha1str_size) -{ - if (!attrs) { - STOREerr(STORE_F_STORE_ATTR_INFO_MODIFY_SHA1STR, - ERR_R_PASSED_NULL_PARAMETER); - return 0; - } - if (ATTR_IS_SET(attrs, code)) { - OPENSSL_free(attrs->values[code].sha1string); - attrs->values[code].sha1string = NULL; - CLEAR_ATTRBIT(attrs, code); - } - return STORE_ATTR_INFO_set_sha1str(attrs, code, sha1str, sha1str_size); -} - -int STORE_ATTR_INFO_modify_dn(STORE_ATTR_INFO *attrs, STORE_ATTR_TYPES code, - X509_NAME *dn) -{ - if (!attrs) { - STOREerr(STORE_F_STORE_ATTR_INFO_MODIFY_DN, - ERR_R_PASSED_NULL_PARAMETER); - return 0; - } - if (ATTR_IS_SET(attrs, code)) { - OPENSSL_free(attrs->values[code].dn); - attrs->values[code].dn = NULL; - CLEAR_ATTRBIT(attrs, code); - } - return STORE_ATTR_INFO_set_dn(attrs, code, dn); -} - -int STORE_ATTR_INFO_modify_number(STORE_ATTR_INFO *attrs, - STORE_ATTR_TYPES code, BIGNUM *number) -{ - if (!attrs) { - STOREerr(STORE_F_STORE_ATTR_INFO_MODIFY_NUMBER, - ERR_R_PASSED_NULL_PARAMETER); - return 0; - } - if (ATTR_IS_SET(attrs, code)) { - OPENSSL_free(attrs->values[code].number); - attrs->values[code].number = NULL; - CLEAR_ATTRBIT(attrs, code); - } - return STORE_ATTR_INFO_set_number(attrs, code, number); -} - -struct attr_list_ctx_st { - OPENSSL_ITEM *attributes; -}; -void *STORE_parse_attrs_start(OPENSSL_ITEM *attributes) -{ - if (attributes) { - struct attr_list_ctx_st *context = OPENSSL_malloc(sizeof(*context)); - if (context != NULL) - context->attributes = attributes; - else - STOREerr(STORE_F_STORE_PARSE_ATTRS_START, ERR_R_MALLOC_FAILURE); - return context; - } - STOREerr(STORE_F_STORE_PARSE_ATTRS_START, ERR_R_PASSED_NULL_PARAMETER); - return 0; -} - -STORE_ATTR_INFO *STORE_parse_attrs_next(void *handle) -{ - struct attr_list_ctx_st *context = (struct attr_list_ctx_st *)handle; - - if (context && context->attributes) { - STORE_ATTR_INFO *attrs = NULL; - - while (context->attributes - && context->attributes->code != STORE_ATTR_OR - && context->attributes->code != STORE_ATTR_END) { - switch (context->attributes->code) { - case STORE_ATTR_FRIENDLYNAME: - case STORE_ATTR_EMAIL: - case STORE_ATTR_FILENAME: - if (attrs == NULL) - attrs = STORE_ATTR_INFO_new(); - if (attrs == NULL) { - STOREerr(STORE_F_STORE_PARSE_ATTRS_NEXT, - ERR_R_MALLOC_FAILURE); - goto err; - } - STORE_ATTR_INFO_set_cstr(attrs, - context->attributes->code, - context->attributes->value, - context->attributes->value_size); - break; - case STORE_ATTR_KEYID: - case STORE_ATTR_ISSUERKEYID: - case STORE_ATTR_SUBJECTKEYID: - case STORE_ATTR_ISSUERSERIALHASH: - case STORE_ATTR_CERTHASH: - if (attrs == NULL) - attrs = STORE_ATTR_INFO_new(); - if (attrs == NULL) { - STOREerr(STORE_F_STORE_PARSE_ATTRS_NEXT, - ERR_R_MALLOC_FAILURE); - goto err; - } - STORE_ATTR_INFO_set_sha1str(attrs, - context->attributes->code, - context->attributes->value, - context->attributes->value_size); - break; - case STORE_ATTR_ISSUER: - case STORE_ATTR_SUBJECT: - if (attrs == NULL) - attrs = STORE_ATTR_INFO_new(); - if (attrs == NULL) { - STOREerr(STORE_F_STORE_PARSE_ATTRS_NEXT, - ERR_R_MALLOC_FAILURE); - goto err; - } - STORE_ATTR_INFO_modify_dn(attrs, - context->attributes->code, - context->attributes->value); - break; - case STORE_ATTR_SERIAL: - if (attrs == NULL) - attrs = STORE_ATTR_INFO_new(); - if (attrs == NULL) { - STOREerr(STORE_F_STORE_PARSE_ATTRS_NEXT, - ERR_R_MALLOC_FAILURE); - goto err; - } - STORE_ATTR_INFO_modify_number(attrs, - context->attributes->code, - context->attributes->value); - break; - } - context->attributes++; - } - if (context->attributes->code == STORE_ATTR_OR) - context->attributes++; - return attrs; - err: - while (context->attributes - && context->attributes->code != STORE_ATTR_OR - && context->attributes->code != STORE_ATTR_END) - context->attributes++; - if (context->attributes->code == STORE_ATTR_OR) - context->attributes++; - return NULL; - } - STOREerr(STORE_F_STORE_PARSE_ATTRS_NEXT, ERR_R_PASSED_NULL_PARAMETER); - return NULL; -} - -int STORE_parse_attrs_end(void *handle) -{ - struct attr_list_ctx_st *context = (struct attr_list_ctx_st *)handle; - - if (context && context->attributes) { -#if 0 - OPENSSL_ITEM *attributes = context->attributes; -#endif - OPENSSL_free(context); - return 1; - } - STOREerr(STORE_F_STORE_PARSE_ATTRS_END, ERR_R_PASSED_NULL_PARAMETER); - return 0; -} - -int STORE_parse_attrs_endp(void *handle) -{ - struct attr_list_ctx_st *context = (struct attr_list_ctx_st *)handle; - - if (context && context->attributes) { - return context->attributes->code == STORE_ATTR_END; - } - STOREerr(STORE_F_STORE_PARSE_ATTRS_ENDP, ERR_R_PASSED_NULL_PARAMETER); - return 0; -} - -static int attr_info_compare_compute_range(const unsigned char *abits, - const unsigned char *bbits, - unsigned int *alowp, - unsigned int *ahighp, - unsigned int *blowp, - unsigned int *bhighp) -{ - unsigned int alow = (unsigned int)-1, ahigh = 0; - unsigned int blow = (unsigned int)-1, bhigh = 0; - int i, res = 0; - - for (i = 0; i < (STORE_ATTR_TYPE_NUM + 8) / 8; i++, abits++, bbits++) { - if (res == 0) { - if (*abits < *bbits) - res = -1; - if (*abits > *bbits) - res = 1; - } - if (*abits) { - if (alow == (unsigned int)-1) { - alow = i * 8; - if (!(*abits & 0x01)) - alow++; - if (!(*abits & 0x02)) - alow++; - if (!(*abits & 0x04)) - alow++; - if (!(*abits & 0x08)) - alow++; - if (!(*abits & 0x10)) - alow++; - if (!(*abits & 0x20)) - alow++; - if (!(*abits & 0x40)) - alow++; - } - ahigh = i * 8 + 7; - if (!(*abits & 0x80)) - ahigh++; - if (!(*abits & 0x40)) - ahigh++; - if (!(*abits & 0x20)) - ahigh++; - if (!(*abits & 0x10)) - ahigh++; - if (!(*abits & 0x08)) - ahigh++; - if (!(*abits & 0x04)) - ahigh++; - if (!(*abits & 0x02)) - ahigh++; - } - if (*bbits) { - if (blow == (unsigned int)-1) { - blow = i * 8; - if (!(*bbits & 0x01)) - blow++; - if (!(*bbits & 0x02)) - blow++; - if (!(*bbits & 0x04)) - blow++; - if (!(*bbits & 0x08)) - blow++; - if (!(*bbits & 0x10)) - blow++; - if (!(*bbits & 0x20)) - blow++; - if (!(*bbits & 0x40)) - blow++; - } - bhigh = i * 8 + 7; - if (!(*bbits & 0x80)) - bhigh++; - if (!(*bbits & 0x40)) - bhigh++; - if (!(*bbits & 0x20)) - bhigh++; - if (!(*bbits & 0x10)) - bhigh++; - if (!(*bbits & 0x08)) - bhigh++; - if (!(*bbits & 0x04)) - bhigh++; - if (!(*bbits & 0x02)) - bhigh++; - } - } - if (ahigh + alow < bhigh + blow) - res = -1; - if (ahigh + alow > bhigh + blow) - res = 1; - if (alowp) - *alowp = alow; - if (ahighp) - *ahighp = ahigh; - if (blowp) - *blowp = blow; - if (bhighp) - *bhighp = bhigh; - return res; -} - -int STORE_ATTR_INFO_compare(const STORE_ATTR_INFO *const *a, - const STORE_ATTR_INFO *const *b) -{ - if (a == b) - return 0; - if (!a) - return -1; - if (!b) - return 1; - return attr_info_compare_compute_range((*a)->set, (*b)->set, 0, 0, 0, 0); -} - -int STORE_ATTR_INFO_in_range(STORE_ATTR_INFO *a, STORE_ATTR_INFO *b) -{ - unsigned int alow, ahigh, blow, bhigh; - - if (a == b) - return 1; - if (!a) - return 0; - if (!b) - return 0; - attr_info_compare_compute_range(a->set, b->set, - &alow, &ahigh, &blow, &bhigh); - if (alow >= blow && ahigh <= bhigh) - return 1; - return 0; -} - -int STORE_ATTR_INFO_in(STORE_ATTR_INFO *a, STORE_ATTR_INFO *b) -{ - unsigned char *abits, *bbits; - int i; - - if (a == b) - return 1; - if (!a) - return 0; - if (!b) - return 0; - abits = a->set; - bbits = b->set; - for (i = 0; i < (STORE_ATTR_TYPE_NUM + 8) / 8; i++, abits++, bbits++) { - if (*abits && (*bbits & *abits) != *abits) - return 0; - } - return 1; -} - -int STORE_ATTR_INFO_in_ex(STORE_ATTR_INFO *a, STORE_ATTR_INFO *b) -{ - STORE_ATTR_TYPES i; - - if (a == b) - return 1; - if (!STORE_ATTR_INFO_in(a, b)) - return 0; - for (i = 1; i < STORE_ATTR_TYPE_NUM; i++) - if (ATTR_IS_SET(a, i)) { - switch (i) { - case STORE_ATTR_FRIENDLYNAME: - case STORE_ATTR_EMAIL: - case STORE_ATTR_FILENAME: - if (strcmp(a->values[i].cstring, b->values[i].cstring)) - return 0; - break; - case STORE_ATTR_KEYID: - case STORE_ATTR_ISSUERKEYID: - case STORE_ATTR_SUBJECTKEYID: - case STORE_ATTR_ISSUERSERIALHASH: - case STORE_ATTR_CERTHASH: - if (memcmp(a->values[i].sha1string, - b->values[i].sha1string, a->value_sizes[i])) - return 0; - break; - case STORE_ATTR_ISSUER: - case STORE_ATTR_SUBJECT: - if (X509_NAME_cmp(a->values[i].dn, b->values[i].dn)) - return 0; - break; - case STORE_ATTR_SERIAL: - if (BN_cmp(a->values[i].number, b->values[i].number)) - return 0; - break; - default: - break; - } - } - - return 1; -} diff --git a/crypto/store/str_locl.h b/crypto/store/str_locl.h deleted file mode 100644 index 6ee4b93e34..0000000000 --- a/crypto/store/str_locl.h +++ /dev/null @@ -1,124 +0,0 @@ -/* - * Written by Richard Levitte (richard@levitte.org) for the OpenSSL project - * 2003. - */ -/* ==================================================================== - * Copyright (c) 2003 The OpenSSL Project. All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in - * the documentation and/or other materials provided with the - * distribution. - * - * 3. All advertising materials mentioning features or use of this - * software must display the following acknowledgment: - * "This product includes software developed by the OpenSSL Project - * for use in the OpenSSL Toolkit. (http://www.openssl.org/)" - * - * 4. The names "OpenSSL Toolkit" and "OpenSSL Project" must not be used to - * endorse or promote products derived from this software without - * prior written permission. For written permission, please contact - * openssl-core@openssl.org. - * - * 5. Products derived from this software may not be called "OpenSSL" - * nor may "OpenSSL" appear in their names without prior written - * permission of the OpenSSL Project. - * - * 6. Redistributions of any form whatsoever must retain the following - * acknowledgment: - * "This product includes software developed by the OpenSSL Project - * for use in the OpenSSL Toolkit (http://www.openssl.org/)" - * - * THIS SOFTWARE IS PROVIDED BY THE OpenSSL PROJECT ``AS IS'' AND ANY - * EXPRESSED OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE - * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR - * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE OpenSSL PROJECT OR - * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, - * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT - * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; - * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) - * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, - * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) - * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED - * OF THE POSSIBILITY OF SUCH DAMAGE. - * ==================================================================== - * - * This product includes cryptographic software written by Eric Young - * (eay@cryptsoft.com). This product includes software written by Tim - * Hudson (tjh@cryptsoft.com). - * - */ - -#ifndef HEADER_STORE_LOCL_H -# define HEADER_STORE_LOCL_H - -# include -# include - -#ifdef __cplusplus -extern "C" { -#endif - -struct store_method_st { - char *name; - /* - * All the functions return a positive integer or non-NULL for success - * and 0, a negative integer or NULL for failure - */ - /* Initialise the STORE with private data */ - STORE_INITIALISE_FUNC_PTR init; - /* Initialise the STORE with private data */ - STORE_CLEANUP_FUNC_PTR clean; - /* Generate an object of a given type */ - STORE_GENERATE_OBJECT_FUNC_PTR generate_object; - /* - * Get an object of a given type. This function isn't really very useful - * since the listing functions (below) can be used for the same purpose - * and are much more general. - */ - STORE_GET_OBJECT_FUNC_PTR get_object; - /* Store an object of a given type. */ - STORE_STORE_OBJECT_FUNC_PTR store_object; - /* Modify the attributes bound to an object of a given type. */ - STORE_MODIFY_OBJECT_FUNC_PTR modify_object; - /* Revoke an object of a given type. */ - STORE_HANDLE_OBJECT_FUNC_PTR revoke_object; - /* Delete an object of a given type. */ - STORE_HANDLE_OBJECT_FUNC_PTR delete_object; - /* - * List a bunch of objects of a given type and with the associated - * attributes. - */ - STORE_START_OBJECT_FUNC_PTR list_object_start; - STORE_NEXT_OBJECT_FUNC_PTR list_object_next; - STORE_END_OBJECT_FUNC_PTR list_object_end; - STORE_END_OBJECT_FUNC_PTR list_object_endp; - /* Store-level function to make any necessary update operations. */ - STORE_GENERIC_FUNC_PTR update_store; - /* Store-level function to get exclusive access to the store. */ - STORE_GENERIC_FUNC_PTR lock_store; - /* Store-level function to release exclusive access to the store. */ - STORE_GENERIC_FUNC_PTR unlock_store; - /* Generic control function */ - STORE_CTRL_FUNC_PTR ctrl; -}; - -struct store_st { - const STORE_METHOD *meth; - /* functional reference if 'meth' is ENGINE-provided */ - ENGINE *engine; - CRYPTO_EX_DATA ex_data; - int references; -}; -#ifdef __cplusplus -} -#endif - -#endif diff --git a/crypto/store/str_mem.c b/crypto/store/str_mem.c deleted file mode 100644 index e6424e32ee..0000000000 --- a/crypto/store/str_mem.c +++ /dev/null @@ -1,379 +0,0 @@ -/* - * Written by Richard Levitte (richard@levitte.org) for the OpenSSL project - * 2003. - */ -/* ==================================================================== - * Copyright (c) 2003 The OpenSSL Project. All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in - * the documentation and/or other materials provided with the - * distribution. - * - * 3. All advertising materials mentioning features or use of this - * software must display the following acknowledgment: - * "This product includes software developed by the OpenSSL Project - * for use in the OpenSSL Toolkit. (http://www.openssl.org/)" - * - * 4. The names "OpenSSL Toolkit" and "OpenSSL Project" must not be used to - * endorse or promote products derived from this software without - * prior written permission. For written permission, please contact - * openssl-core@openssl.org. - * - * 5. Products derived from this software may not be called "OpenSSL" - * nor may "OpenSSL" appear in their names without prior written - * permission of the OpenSSL Project. - * - * 6. Redistributions of any form whatsoever must retain the following - * acknowledgment: - * "This product includes software developed by the OpenSSL Project - * for use in the OpenSSL Toolkit (http://www.openssl.org/)" - * - * THIS SOFTWARE IS PROVIDED BY THE OpenSSL PROJECT ``AS IS'' AND ANY - * EXPRESSED OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE - * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR - * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE OpenSSL PROJECT OR - * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, - * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT - * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; - * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) - * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, - * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) - * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED - * OF THE POSSIBILITY OF SUCH DAMAGE. - * ==================================================================== - * - * This product includes cryptographic software written by Eric Young - * (eay@cryptsoft.com). This product includes software written by Tim - * Hudson (tjh@cryptsoft.com). - * - */ - -#include -#include -#include "str_locl.h" - -/* - * The memory store is currently highly experimental. It's meant to become a - * base store used by other stores for internal caching (for full caching - * support, aging needs to be added). - * - * The database use is meant to support as much attribute association as - * possible, while providing for as small search ranges as possible. This is - * currently provided for by sorting the entries by numbers that are composed - * of bits set at the positions indicated by attribute type codes. This - * provides for ranges determined by the highest attribute type code value. - * A better idea might be to sort by values computed from the range of - * attributes associated with the object (basically, the difference between - * the highest and lowest attribute type code) and it's distance from a base - * (basically, the lowest associated attribute type code). - */ - -typedef struct mem_object_data_st { - STORE_OBJECT *object; - STORE_ATTR_INFO *attr_info; - int references; -} MEM_OBJECT_DATA; - -DEFINE_STACK_OF(MEM_OBJECT_DATA) -struct mem_data_st { - /* - * sorted with - * STORE_ATTR_INFO_compare(). - */ - STACK_OF(MEM_OBJECT_DATA) *data; - /* - * Currently unused, but can - * be used to add attributes - * from parts of the data. - */ - unsigned int compute_components:1; -}; - -DEFINE_STACK_OF(STORE_ATTR_INFO) -struct mem_ctx_st { - /* The type we're searching for */ - int type; - /* - * Sets of - * attributes to search for. Each - * element is a STORE_ATTR_INFO. - */ - STACK_OF(STORE_ATTR_INFO) *search_attributes; - /* - * which of the search attributes we - * found a match for, -1 when we still - * haven't found any - */ - int search_index; - /* -1 as long as we're searching for the first */ - int index; -}; - -static int mem_init(STORE *s); -static void mem_clean(STORE *s); -static STORE_OBJECT *mem_generate(STORE *s, STORE_OBJECT_TYPES type, - OPENSSL_ITEM attributes[], - OPENSSL_ITEM parameters[]); -static STORE_OBJECT *mem_get(STORE *s, STORE_OBJECT_TYPES type, - OPENSSL_ITEM attributes[], - OPENSSL_ITEM parameters[]); -static int mem_store(STORE *s, STORE_OBJECT_TYPES type, STORE_OBJECT *data, - OPENSSL_ITEM attributes[], OPENSSL_ITEM parameters[]); -static int mem_modify(STORE *s, STORE_OBJECT_TYPES type, - OPENSSL_ITEM search_attributes[], - OPENSSL_ITEM add_attributes[], - OPENSSL_ITEM modify_attributes[], - OPENSSL_ITEM delete_attributes[], - OPENSSL_ITEM parameters[]); -static int mem_delete(STORE *s, STORE_OBJECT_TYPES type, - OPENSSL_ITEM attributes[], OPENSSL_ITEM parameters[]); -static void *mem_list_start(STORE *s, STORE_OBJECT_TYPES type, - OPENSSL_ITEM attributes[], - OPENSSL_ITEM parameters[]); -static STORE_OBJECT *mem_list_next(STORE *s, void *handle); -static int mem_list_end(STORE *s, void *handle); -static int mem_list_endp(STORE *s, void *handle); -static int mem_lock(STORE *s, OPENSSL_ITEM attributes[], - OPENSSL_ITEM parameters[]); -static int mem_unlock(STORE *s, OPENSSL_ITEM attributes[], - OPENSSL_ITEM parameters[]); -static int mem_ctrl(STORE *s, int cmd, long l, void *p, void (*f) (void)); - -static STORE_METHOD store_memory = { - "OpenSSL memory store interface", - mem_init, - mem_clean, - mem_generate, - mem_get, - mem_store, - mem_modify, - NULL, /* revoke */ - mem_delete, - mem_list_start, - mem_list_next, - mem_list_end, - mem_list_endp, - NULL, /* update */ - mem_lock, - mem_unlock, - mem_ctrl -}; - -const STORE_METHOD *STORE_Memory(void) -{ - return &store_memory; -} - -static int mem_init(STORE *s) -{ - return 1; -} - -static void mem_clean(STORE *s) -{ - return; -} - -static STORE_OBJECT *mem_generate(STORE *s, STORE_OBJECT_TYPES type, - OPENSSL_ITEM attributes[], - OPENSSL_ITEM parameters[]) -{ - STOREerr(STORE_F_MEM_GENERATE, STORE_R_NOT_IMPLEMENTED); - return 0; -} - -static STORE_OBJECT *mem_get(STORE *s, STORE_OBJECT_TYPES type, - OPENSSL_ITEM attributes[], - OPENSSL_ITEM parameters[]) -{ - void *context = mem_list_start(s, type, attributes, parameters); - - if (context) { - STORE_OBJECT *object = mem_list_next(s, context); - - if (mem_list_end(s, context)) - return object; - } - return NULL; -} - -static int mem_store(STORE *s, STORE_OBJECT_TYPES type, - STORE_OBJECT *data, OPENSSL_ITEM attributes[], - OPENSSL_ITEM parameters[]) -{ - STOREerr(STORE_F_MEM_STORE, STORE_R_NOT_IMPLEMENTED); - return 0; -} - -static int mem_modify(STORE *s, STORE_OBJECT_TYPES type, - OPENSSL_ITEM search_attributes[], - OPENSSL_ITEM add_attributes[], - OPENSSL_ITEM modify_attributes[], - OPENSSL_ITEM delete_attributes[], - OPENSSL_ITEM parameters[]) -{ - STOREerr(STORE_F_MEM_MODIFY, STORE_R_NOT_IMPLEMENTED); - return 0; -} - -static int mem_delete(STORE *s, STORE_OBJECT_TYPES type, - OPENSSL_ITEM attributes[], OPENSSL_ITEM parameters[]) -{ - STOREerr(STORE_F_MEM_DELETE, STORE_R_NOT_IMPLEMENTED); - return 0; -} - -/* - * The list functions may be the hardest to understand. Basically, - * mem_list_start compiles a stack of attribute info elements, and puts that - * stack into the context to be returned. mem_list_next will then find the - * first matching element in the store, and then walk all the way to the end - * of the store (since any combination of attribute bits above the starting - * point may match the searched for bit pattern...). - */ -static void *mem_list_start(STORE *s, STORE_OBJECT_TYPES type, - OPENSSL_ITEM attributes[], - OPENSSL_ITEM parameters[]) -{ - struct mem_ctx_st *context = OPENSSL_zalloc(sizeof(*context)); - void *attribute_context = NULL; - STORE_ATTR_INFO *attrs = NULL; - - if (context == NULL) { - STOREerr(STORE_F_MEM_LIST_START, ERR_R_MALLOC_FAILURE); - return 0; - } - - attribute_context = STORE_parse_attrs_start(attributes); - if (!attribute_context) { - STOREerr(STORE_F_MEM_LIST_START, ERR_R_STORE_LIB); - goto err; - } - - while ((attrs = STORE_parse_attrs_next(attribute_context))) { - if (context->search_attributes == NULL) { - context->search_attributes = - sk_STORE_ATTR_INFO_new(STORE_ATTR_INFO_compare); - if (context->search_attributes == NULL) { - STOREerr(STORE_F_MEM_LIST_START, ERR_R_MALLOC_FAILURE); - goto err; - } - } - sk_STORE_ATTR_INFO_push(context->search_attributes, attrs); - } - if (!STORE_parse_attrs_endp(attribute_context)) - goto err; - STORE_parse_attrs_end(attribute_context); - context->search_index = -1; - context->index = -1; - return context; - err: - if (attribute_context) - STORE_parse_attrs_end(attribute_context); - mem_list_end(s, context); - return NULL; -} - -static STORE_OBJECT *mem_list_next(STORE *s, void *handle) -{ - int i; - struct mem_ctx_st *context = (struct mem_ctx_st *)handle; - struct mem_object_data_st key = { 0, 0, 1 }; - struct mem_data_st *store = (struct mem_data_st *)STORE_get_ex_data(s, 1); - int srch; - int cres = 0; - - if (!context) { - STOREerr(STORE_F_MEM_LIST_NEXT, ERR_R_PASSED_NULL_PARAMETER); - return NULL; - } - if (!store) { - STOREerr(STORE_F_MEM_LIST_NEXT, STORE_R_NO_STORE); - return NULL; - } - - if (context->search_index == -1) { - for (i = 0; - i < sk_STORE_ATTR_INFO_num(context->search_attributes); i++) { - key.attr_info - = sk_STORE_ATTR_INFO_value(context->search_attributes, i); - srch = sk_MEM_OBJECT_DATA_find_ex(store->data, &key); - - if (srch >= 0) { - context->search_index = srch; - break; - } - } - } - if (context->search_index < 0) - return NULL; - - key.attr_info = - sk_STORE_ATTR_INFO_value(context->search_attributes, - context->search_index); - for (srch = context->search_index; - srch < sk_MEM_OBJECT_DATA_num(store->data) - && STORE_ATTR_INFO_in_range(key.attr_info, - sk_MEM_OBJECT_DATA_value(store->data, - srch)->attr_info) - && !(cres = - STORE_ATTR_INFO_in_ex(key.attr_info, - sk_MEM_OBJECT_DATA_value(store->data, - srch)->attr_info)); - srch++) ; - - context->search_index = srch; - if (cres) - return (sk_MEM_OBJECT_DATA_value(store->data, srch))->object; - return NULL; -} - -static int mem_list_end(STORE *s, void *handle) -{ - struct mem_ctx_st *context = (struct mem_ctx_st *)handle; - - if (!context) { - STOREerr(STORE_F_MEM_LIST_END, ERR_R_PASSED_NULL_PARAMETER); - return 0; - } - if (context) - sk_STORE_ATTR_INFO_free(context->search_attributes); - OPENSSL_free(context); - return 1; -} - -static int mem_list_endp(STORE *s, void *handle) -{ - struct mem_ctx_st *context = (struct mem_ctx_st *)handle; - - if (!context - || context->search_index - == sk_STORE_ATTR_INFO_num(context->search_attributes)) - return 1; - return 0; -} - -static int mem_lock(STORE *s, OPENSSL_ITEM attributes[], - OPENSSL_ITEM parameters[]) -{ - return 1; -} - -static int mem_unlock(STORE *s, OPENSSL_ITEM attributes[], - OPENSSL_ITEM parameters[]) -{ - return 1; -} - -static int mem_ctrl(STORE *s, int cmd, long l, void *p, void (*f) (void)) -{ - return 1; -} diff --git a/crypto/store/str_meth.c b/crypto/store/str_meth.c deleted file mode 100644 index 95fd36659b..0000000000 --- a/crypto/store/str_meth.c +++ /dev/null @@ -1,276 +0,0 @@ -/* - * Written by Richard Levitte (richard@levitte.org) for the OpenSSL project - * 2003. - */ -/* ==================================================================== - * Copyright (c) 2003 The OpenSSL Project. All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in - * the documentation and/or other materials provided with the - * distribution. - * - * 3. All advertising materials mentioning features or use of this - * software must display the following acknowledgment: - * "This product includes software developed by the OpenSSL Project - * for use in the OpenSSL Toolkit. (http://www.openssl.org/)" - * - * 4. The names "OpenSSL Toolkit" and "OpenSSL Project" must not be used to - * endorse or promote products derived from this software without - * prior written permission. For written permission, please contact - * openssl-core@openssl.org. - * - * 5. Products derived from this software may not be called "OpenSSL" - * nor may "OpenSSL" appear in their names without prior written - * permission of the OpenSSL Project. - * - * 6. Redistributions of any form whatsoever must retain the following - * acknowledgment: - * "This product includes software developed by the OpenSSL Project - * for use in the OpenSSL Toolkit (http://www.openssl.org/)" - * - * THIS SOFTWARE IS PROVIDED BY THE OpenSSL PROJECT ``AS IS'' AND ANY - * EXPRESSED OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE - * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR - * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE OpenSSL PROJECT OR - * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, - * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT - * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; - * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) - * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, - * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) - * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED - * OF THE POSSIBILITY OF SUCH DAMAGE. - * ==================================================================== - * - * This product includes cryptographic software written by Eric Young - * (eay@cryptsoft.com). This product includes software written by Tim - * Hudson (tjh@cryptsoft.com). - * - */ - -#include -#include -#include "str_locl.h" - -STORE_METHOD *STORE_create_method(char *name) -{ - STORE_METHOD *store_method = OPENSSL_zalloc(sizeof(*store_method)); - - if (store_method != NULL) - store_method->name = OPENSSL_strdup(name); - return store_method; -} - -/* - * BIG FSCKING WARNING!!!! If you use this on a statically allocated method - * (that is, it hasn't been allocated using STORE_create_method(), you - * deserve anything Murphy can throw at you and more! You have been warned. - */ -void STORE_destroy_method(STORE_METHOD *store_method) -{ - if (!store_method) - return; - OPENSSL_free(store_method->name); - store_method->name = NULL; - OPENSSL_free(store_method); -} - -int STORE_method_set_initialise_function(STORE_METHOD *sm, - STORE_INITIALISE_FUNC_PTR init_f) -{ - sm->init = init_f; - return 1; -} - -int STORE_method_set_cleanup_function(STORE_METHOD *sm, - STORE_CLEANUP_FUNC_PTR clean_f) -{ - sm->clean = clean_f; - return 1; -} - -int STORE_method_set_generate_function(STORE_METHOD *sm, - STORE_GENERATE_OBJECT_FUNC_PTR - generate_f) -{ - sm->generate_object = generate_f; - return 1; -} - -int STORE_method_set_get_function(STORE_METHOD *sm, - STORE_GET_OBJECT_FUNC_PTR get_f) -{ - sm->get_object = get_f; - return 1; -} - -int STORE_method_set_store_function(STORE_METHOD *sm, - STORE_STORE_OBJECT_FUNC_PTR store_f) -{ - sm->store_object = store_f; - return 1; -} - -int STORE_method_set_modify_function(STORE_METHOD *sm, - STORE_MODIFY_OBJECT_FUNC_PTR modify_f) -{ - sm->modify_object = modify_f; - return 1; -} - -int STORE_method_set_revoke_function(STORE_METHOD *sm, - STORE_HANDLE_OBJECT_FUNC_PTR revoke_f) -{ - sm->revoke_object = revoke_f; - return 1; -} - -int STORE_method_set_delete_function(STORE_METHOD *sm, - STORE_HANDLE_OBJECT_FUNC_PTR delete_f) -{ - sm->delete_object = delete_f; - return 1; -} - -int STORE_method_set_list_start_function(STORE_METHOD *sm, - STORE_START_OBJECT_FUNC_PTR - list_start_f) -{ - sm->list_object_start = list_start_f; - return 1; -} - -int STORE_method_set_list_next_function(STORE_METHOD *sm, - STORE_NEXT_OBJECT_FUNC_PTR - list_next_f) -{ - sm->list_object_next = list_next_f; - return 1; -} - -int STORE_method_set_list_end_function(STORE_METHOD *sm, - STORE_END_OBJECT_FUNC_PTR list_end_f) -{ - sm->list_object_end = list_end_f; - return 1; -} - -int STORE_method_set_update_store_function(STORE_METHOD *sm, - STORE_GENERIC_FUNC_PTR update_f) -{ - sm->update_store = update_f; - return 1; -} - -int STORE_method_set_lock_store_function(STORE_METHOD *sm, - STORE_GENERIC_FUNC_PTR lock_f) -{ - sm->lock_store = lock_f; - return 1; -} - -int STORE_method_set_unlock_store_function(STORE_METHOD *sm, - STORE_GENERIC_FUNC_PTR unlock_f) -{ - sm->unlock_store = unlock_f; - return 1; -} - -int STORE_method_set_ctrl_function(STORE_METHOD *sm, - STORE_CTRL_FUNC_PTR ctrl_f) -{ - sm->ctrl = ctrl_f; - return 1; -} - -STORE_INITIALISE_FUNC_PTR STORE_method_get_initialise_function(STORE_METHOD - *sm) -{ - return sm->init; -} - -STORE_CLEANUP_FUNC_PTR STORE_method_get_cleanup_function(STORE_METHOD *sm) -{ - return sm->clean; -} - -STORE_GENERATE_OBJECT_FUNC_PTR STORE_method_get_generate_function(STORE_METHOD - *sm) -{ - return sm->generate_object; -} - -STORE_GET_OBJECT_FUNC_PTR STORE_method_get_get_function(STORE_METHOD *sm) -{ - return sm->get_object; -} - -STORE_STORE_OBJECT_FUNC_PTR STORE_method_get_store_function(STORE_METHOD *sm) -{ - return sm->store_object; -} - -STORE_MODIFY_OBJECT_FUNC_PTR STORE_method_get_modify_function(STORE_METHOD - *sm) -{ - return sm->modify_object; -} - -STORE_HANDLE_OBJECT_FUNC_PTR STORE_method_get_revoke_function(STORE_METHOD - *sm) -{ - return sm->revoke_object; -} - -STORE_HANDLE_OBJECT_FUNC_PTR STORE_method_get_delete_function(STORE_METHOD - *sm) -{ - return sm->delete_object; -} - -STORE_START_OBJECT_FUNC_PTR STORE_method_get_list_start_function(STORE_METHOD - *sm) -{ - return sm->list_object_start; -} - -STORE_NEXT_OBJECT_FUNC_PTR STORE_method_get_list_next_function(STORE_METHOD - *sm) -{ - return sm->list_object_next; -} - -STORE_END_OBJECT_FUNC_PTR STORE_method_get_list_end_function(STORE_METHOD *sm) -{ - return sm->list_object_end; -} - -STORE_GENERIC_FUNC_PTR STORE_method_get_update_store_function(STORE_METHOD - *sm) -{ - return sm->update_store; -} - -STORE_GENERIC_FUNC_PTR STORE_method_get_lock_store_function(STORE_METHOD *sm) -{ - return sm->lock_store; -} - -STORE_GENERIC_FUNC_PTR STORE_method_get_unlock_store_function(STORE_METHOD - *sm) -{ - return sm->unlock_store; -} - -STORE_CTRL_FUNC_PTR STORE_method_get_ctrl_function(STORE_METHOD *sm) -{ - return sm->ctrl; -} diff --git a/doc/crypto/engine.pod b/doc/crypto/engine.pod index 7d2d5d8cd0..11191ef560 100644 --- a/doc/crypto/engine.pod +++ b/doc/crypto/engine.pod @@ -75,9 +75,6 @@ engine - ENGINE cryptographic module support int ENGINE_register_RAND(ENGINE *e); void ENGINE_unregister_RAND(ENGINE *e); void ENGINE_register_all_RAND(void); - int ENGINE_register_STORE(ENGINE *e); - void ENGINE_unregister_STORE(ENGINE *e); - void ENGINE_register_all_STORE(void); int ENGINE_register_ciphers(ENGINE *e); void ENGINE_unregister_ciphers(ENGINE *e); void ENGINE_register_all_ciphers(void); @@ -106,7 +103,6 @@ engine - ENGINE cryptographic module support int ENGINE_set_ECDSA(ENGINE *e, const ECDSA_METHOD *dh_meth); int ENGINE_set_DH(ENGINE *e, const DH_METHOD *dh_meth); int ENGINE_set_RAND(ENGINE *e, const RAND_METHOD *rand_meth); - int ENGINE_set_STORE(ENGINE *e, const STORE_METHOD *rand_meth); int ENGINE_set_destroy_function(ENGINE *e, ENGINE_GEN_INT_FUNC_PTR destroy_f); int ENGINE_set_init_function(ENGINE *e, ENGINE_GEN_INT_FUNC_PTR init_f); int ENGINE_set_finish_function(ENGINE *e, ENGINE_GEN_INT_FUNC_PTR finish_f); @@ -126,7 +122,6 @@ engine - ENGINE cryptographic module support const ECDSA_METHOD *ENGINE_get_ECDSA(const ENGINE *e); const DH_METHOD *ENGINE_get_DH(const ENGINE *e); const RAND_METHOD *ENGINE_get_RAND(const ENGINE *e); - const STORE_METHOD *ENGINE_get_STORE(const ENGINE *e); ENGINE_GEN_INT_FUNC_PTR ENGINE_get_destroy_function(const ENGINE *e); ENGINE_GEN_INT_FUNC_PTR ENGINE_get_init_function(const ENGINE *e); ENGINE_GEN_INT_FUNC_PTR ENGINE_get_finish_function(const ENGINE *e); @@ -160,7 +155,7 @@ implementation includes the following abstractions; RSA_METHOD - for providing alternative RSA implementations DSA_METHOD, DH_METHOD, RAND_METHOD, ECDH_METHOD, ECDSA_METHOD, - STORE_METHOD - similarly for other OpenSSL APIs + - similarly for other OpenSSL APIs EVP_CIPHER - potentially multiple cipher algorithms (indexed by 'nid') EVP_DIGEST - potentially multiple hash algorithms (indexed by 'nid') key-loading - loading public and/or private EVP_PKEY keys diff --git a/include/openssl/engine.h b/include/openssl/engine.h index b5b4d07ab1..070814744d 100644 --- a/include/openssl/engine.h +++ b/include/openssl/engine.h @@ -108,7 +108,6 @@ extern "C" { # define ENGINE_METHOD_RAND (unsigned int)0x0008 # define ENGINE_METHOD_CIPHERS (unsigned int)0x0040 # define ENGINE_METHOD_DIGESTS (unsigned int)0x0080 -# define ENGINE_METHOD_STORE (unsigned int)0x0100 # define ENGINE_METHOD_PKEY_METHS (unsigned int)0x0200 # define ENGINE_METHOD_PKEY_ASN1_METHS (unsigned int)0x0400 # define ENGINE_METHOD_EC (unsigned int)0x0800 @@ -441,10 +440,6 @@ int ENGINE_register_RAND(ENGINE *e); void ENGINE_unregister_RAND(ENGINE *e); void ENGINE_register_all_RAND(void); -int ENGINE_register_STORE(ENGINE *e); -void ENGINE_unregister_STORE(ENGINE *e); -void ENGINE_register_all_STORE(void); - int ENGINE_register_ciphers(ENGINE *e); void ENGINE_unregister_ciphers(ENGINE *e); void ENGINE_register_all_ciphers(void); @@ -542,7 +537,6 @@ int ENGINE_set_DSA(ENGINE *e, const DSA_METHOD *dsa_meth); int ENGINE_set_EC(ENGINE *e, const EC_KEY_METHOD *ecdsa_meth); int ENGINE_set_DH(ENGINE *e, const DH_METHOD *dh_meth); int ENGINE_set_RAND(ENGINE *e, const RAND_METHOD *rand_meth); -int ENGINE_set_STORE(ENGINE *e, const STORE_METHOD *store_meth); int ENGINE_set_destroy_function(ENGINE *e, ENGINE_GEN_INT_FUNC_PTR destroy_f); int ENGINE_set_init_function(ENGINE *e, ENGINE_GEN_INT_FUNC_PTR init_f); int ENGINE_set_finish_function(ENGINE *e, ENGINE_GEN_INT_FUNC_PTR finish_f); @@ -586,7 +580,6 @@ const DSA_METHOD *ENGINE_get_DSA(const ENGINE *e); const EC_KEY_METHOD *ENGINE_get_EC(const ENGINE *e); const DH_METHOD *ENGINE_get_DH(const ENGINE *e); const RAND_METHOD *ENGINE_get_RAND(const ENGINE *e); -const STORE_METHOD *ENGINE_get_STORE(const ENGINE *e); ENGINE_GEN_INT_FUNC_PTR ENGINE_get_destroy_function(const ENGINE *e); ENGINE_GEN_INT_FUNC_PTR ENGINE_get_init_function(const ENGINE *e); ENGINE_GEN_INT_FUNC_PTR ENGINE_get_finish_function(const ENGINE *e); diff --git a/include/openssl/ossl_typ.h b/include/openssl/ossl_typ.h index 199b14104a..6bf29a8446 100644 --- a/include/openssl/ossl_typ.h +++ b/include/openssl/ossl_typ.h @@ -173,9 +173,6 @@ typedef struct pkcs8_priv_key_info_st PKCS8_PRIV_KEY_INFO; typedef struct v3_ext_ctx X509V3_CTX; typedef struct conf_st CONF; -typedef struct store_st STORE; -typedef struct store_method_st STORE_METHOD; - typedef struct ui_st UI; typedef struct ui_method_st UI_METHOD; diff --git a/include/openssl/store.h b/include/openssl/store.h deleted file mode 100644 index 01fa8461bf..0000000000 --- a/include/openssl/store.h +++ /dev/null @@ -1,665 +0,0 @@ -/* - * Written by Richard Levitte (richard@levitte.org) for the OpenSSL project - * 2003. - */ -/* ==================================================================== - * Copyright (c) 2003 The OpenSSL Project. All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in - * the documentation and/or other materials provided with the - * distribution. - * - * 3. All advertising materials mentioning features or use of this - * software must display the following acknowledgment: - * "This product includes software developed by the OpenSSL Project - * for use in the OpenSSL Toolkit. (http://www.openssl.org/)" - * - * 4. The names "OpenSSL Toolkit" and "OpenSSL Project" must not be used to - * endorse or promote products derived from this software without - * prior written permission. For written permission, please contact - * openssl-core@openssl.org. - * - * 5. Products derived from this software may not be called "OpenSSL" - * nor may "OpenSSL" appear in their names without prior written - * permission of the OpenSSL Project. - * - * 6. Redistributions of any form whatsoever must retain the following - * acknowledgment: - * "This product includes software developed by the OpenSSL Project - * for use in the OpenSSL Toolkit (http://www.openssl.org/)" - * - * THIS SOFTWARE IS PROVIDED BY THE OpenSSL PROJECT ``AS IS'' AND ANY - * EXPRESSED OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE - * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR - * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE OpenSSL PROJECT OR - * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, - * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT - * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; - * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) - * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, - * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) - * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED - * OF THE POSSIBILITY OF SUCH DAMAGE. - * ==================================================================== - * - * This product includes cryptographic software written by Eric Young - * (eay@cryptsoft.com). This product includes software written by Tim - * Hudson (tjh@cryptsoft.com). - * - */ - -#ifndef HEADER_STORE_H -# define HEADER_STORE_H - -# include - -# ifdef OPENSSL_NO_STORE -# error STORE is disabled. -# endif - -# include -# if OPENSSL_API_COMPAT < 0x10100000L -# include -# include -# include -# endif - -#ifdef __cplusplus -extern "C" { -#endif - -/* Already defined in ossl_typ.h */ -/* typedef struct store_st STORE; */ -/* typedef struct store_method_st STORE_METHOD; */ - -/* - * All the following functions return 0, a negative number or NULL on error. - * When everything is fine, they return a positive value or a non-NULL - * pointer, all depending on their purpose. - */ - -/* Creators and destructor. */ -STORE *STORE_new_method(const STORE_METHOD *method); -STORE *STORE_new_engine(ENGINE *engine); -void STORE_free(STORE *ui); - -/* - * Give a user interface parametrised control commands. This can be used to - * send down an integer, a data pointer or a function pointer, as well as be - * used to get information from a STORE. - */ -int STORE_ctrl(STORE *store, int cmd, long i, void *p, void (*f) (void)); - -/* - * A control to set the directory with keys and certificates. Used by the - * built-in directory level method. - */ -# define STORE_CTRL_SET_DIRECTORY 0x0001 -/* - * A control to set a file to load. Used by the built-in file level method. - */ -# define STORE_CTRL_SET_FILE 0x0002 -/* - * A control to set a configuration file to load. Can be used by any method - * that wishes to load a configuration file. - */ -# define STORE_CTRL_SET_CONF_FILE 0x0003 -/* - * A control to set a the section of the loaded configuration file. Can be - * used by any method that wishes to load a configuration file. - */ -# define STORE_CTRL_SET_CONF_SECTION 0x0004 - -/* Some methods may use extra data */ -# define STORE_set_app_data(s,arg) STORE_set_ex_data(s,0,arg) -# define STORE_get_app_data(s) STORE_get_ex_data(s,0) - -#define STORE_get_ex_new_index(l, p, newf, dupf, freef) \ - CRYPTO_get_ex_new_index(CRYPTO_EX_INDEX_STORE, l, p, newf, dupf, freef) -int STORE_set_ex_data(STORE *r, int idx, void *arg); -void *STORE_get_ex_data(STORE *r, int idx); - -/* Use specific methods instead of the built-in one */ -const STORE_METHOD *STORE_get_method(STORE *store); -const STORE_METHOD *STORE_set_method(STORE *store, const STORE_METHOD *meth); - -/* The standard OpenSSL methods. */ -/* - * This is the in-memory method. It does everything except revoking and - * updating, and is of course volatile. It's used by other methods that have - * an in-memory cache. - */ -const STORE_METHOD *STORE_Memory(void); -# if 0 /* Not yet implemented */ -/* - * This is the directory store. It does everything except revoking and - * updating, and uses STORE_Memory() to cache things in memory. - */ -const STORE_METHOD *STORE_Directory(void); -/* - * This is the file store. It does everything except revoking and updating, - * and uses STORE_Memory() to cache things in memory. Certificates are added - * to it with the store operation, and it will only get cached certificates. - */ -const STORE_METHOD *STORE_File(void); -# endif - -/* - * Store functions take a type code for the type of data they should store or - * fetch - */ -typedef enum STORE_object_types { - STORE_OBJECT_TYPE_X509_CERTIFICATE = 0x01, /* X509 * */ - STORE_OBJECT_TYPE_X509_CRL = 0x02, /* X509_CRL * */ - STORE_OBJECT_TYPE_PRIVATE_KEY = 0x03, /* EVP_PKEY * */ - STORE_OBJECT_TYPE_PUBLIC_KEY = 0x04, /* EVP_PKEY * */ - STORE_OBJECT_TYPE_NUMBER = 0x05, /* BIGNUM * */ - STORE_OBJECT_TYPE_ARBITRARY = 0x06, /* BUF_MEM * */ - STORE_OBJECT_TYPE_NUM = 0x06 /* The amount of known object types */ -} STORE_OBJECT_TYPES; -/* List of text strings corresponding to the object types. */ -extern const char *const STORE_object_type_string[STORE_OBJECT_TYPE_NUM + 1]; - -/* - * Some store functions take a parameter list. Those parameters come with - * one of the following codes. The comments following the codes below - * indicate what type the value should be a pointer to. - */ -typedef enum STORE_params { - STORE_PARAM_EVP_TYPE = 0x01, /* int */ - STORE_PARAM_BITS = 0x02, /* size_t */ - STORE_PARAM_KEY_PARAMETERS = 0x03, /* ??? */ - STORE_PARAM_KEY_NO_PARAMETERS = 0x04, /* N/A */ - STORE_PARAM_AUTH_PASSPHRASE = 0x05, /* char * */ - STORE_PARAM_TYPE_NUM = 0x05 /* The amount of known parameter types */ -} STORE_PARAM_TYPES; -/* - * Parameter value sizes. -1 means unknown, anything else is the required - * size. - */ -extern const int STORE_param_sizes[STORE_PARAM_TYPE_NUM + 1]; - -/* - * Store functions take attribute lists. Those attributes come with codes. - * The comments following the codes below indicate what type the value should - * be a pointer to. - */ -typedef enum STORE_attribs { - STORE_ATTR_END = 0x00, - STORE_ATTR_FRIENDLYNAME = 0x01, /* C string */ - STORE_ATTR_KEYID = 0x02, /* 160 bit string (SHA1) */ - STORE_ATTR_ISSUERKEYID = 0x03, /* 160 bit string (SHA1) */ - STORE_ATTR_SUBJECTKEYID = 0x04, /* 160 bit string (SHA1) */ - STORE_ATTR_ISSUERSERIALHASH = 0x05, /* 160 bit string (SHA1) */ - STORE_ATTR_ISSUER = 0x06, /* X509_NAME * */ - STORE_ATTR_SERIAL = 0x07, /* BIGNUM * */ - STORE_ATTR_SUBJECT = 0x08, /* X509_NAME * */ - STORE_ATTR_CERTHASH = 0x09, /* 160 bit string (SHA1) */ - STORE_ATTR_EMAIL = 0x0a, /* C string */ - STORE_ATTR_FILENAME = 0x0b, /* C string */ - STORE_ATTR_TYPE_NUM = 0x0b, /* The amount of known attribute types */ - STORE_ATTR_OR = 0xff /* This is a special separator, which - * expresses the OR operation. */ -} STORE_ATTR_TYPES; -/* - * Attribute value sizes. -1 means unknown, anything else is the required - * size. - */ -extern const int STORE_attr_sizes[STORE_ATTR_TYPE_NUM + 1]; - -typedef enum STORE_certificate_status { - STORE_X509_VALID = 0x00, - STORE_X509_EXPIRED = 0x01, - STORE_X509_SUSPENDED = 0x02, - STORE_X509_REVOKED = 0x03 -} STORE_CERTIFICATE_STATUS; - -/* - * Engine store functions will return a structure that contains all the - * necessary information, including revokation status for certificates. This - * is really not needed for application authors, as the ENGINE framework - * functions will extract the OpenSSL-specific information when at all - * possible. However, for engine authors, it's crucial to know this - * structure. - */ -typedef struct STORE_OBJECT_st { - STORE_OBJECT_TYPES type; - union { - struct { - STORE_CERTIFICATE_STATUS status; - X509 *certificate; - } x509; - X509_CRL *crl; - EVP_PKEY *key; - BIGNUM *number; - BUF_MEM *arbitrary; - } data; -} STORE_OBJECT; -DEFINE_STACK_OF(STORE_OBJECT) -STORE_OBJECT *STORE_OBJECT_new(void); -void STORE_OBJECT_free(STORE_OBJECT *data); - -/* A generic structure to pass assorted data in a expandable way */ -typedef struct openssl_item_st { - int code; - void *value; /* Not used for flag attributes */ - size_t value_size; /* Max size of value for output, length for - * input */ - size_t *value_length; /* Returned length of value for output */ -} OPENSSL_ITEM; - -/* - * The following functions handle the storage. They return 0, a negative - * number or NULL on error, anything else on success. - */ -X509 *STORE_get_certificate(STORE *e, OPENSSL_ITEM attributes[], - OPENSSL_ITEM parameters[]); -int STORE_store_certificate(STORE *e, X509 *data, OPENSSL_ITEM attributes[], - OPENSSL_ITEM parameters[]); -int STORE_modify_certificate(STORE *e, OPENSSL_ITEM search_attributes[], - OPENSSL_ITEM add_attributes[], - OPENSSL_ITEM modify_attributes[], - OPENSSL_ITEM delete_attributes[], - OPENSSL_ITEM parameters[]); -int STORE_revoke_certificate(STORE *e, OPENSSL_ITEM attributes[], - OPENSSL_ITEM parameters[]); -int STORE_delete_certificate(STORE *e, OPENSSL_ITEM attributes[], - OPENSSL_ITEM parameters[]); -void *STORE_list_certificate_start(STORE *e, OPENSSL_ITEM attributes[], - OPENSSL_ITEM parameters[]); -X509 *STORE_list_certificate_next(STORE *e, void *handle); -int STORE_list_certificate_end(STORE *e, void *handle); -int STORE_list_certificate_endp(STORE *e, void *handle); -EVP_PKEY *STORE_generate_key(STORE *e, OPENSSL_ITEM attributes[], - OPENSSL_ITEM parameters[]); -EVP_PKEY *STORE_get_private_key(STORE *e, OPENSSL_ITEM attributes[], - OPENSSL_ITEM parameters[]); -int STORE_store_private_key(STORE *e, EVP_PKEY *data, - OPENSSL_ITEM attributes[], - OPENSSL_ITEM parameters[]); -int STORE_modify_private_key(STORE *e, OPENSSL_ITEM search_attributes[], - OPENSSL_ITEM add_sttributes[], - OPENSSL_ITEM modify_attributes[], - OPENSSL_ITEM delete_attributes[], - OPENSSL_ITEM parameters[]); -int STORE_revoke_private_key(STORE *e, OPENSSL_ITEM attributes[], - OPENSSL_ITEM parameters[]); -int STORE_delete_private_key(STORE *e, OPENSSL_ITEM attributes[], - OPENSSL_ITEM parameters[]); -void *STORE_list_private_key_start(STORE *e, OPENSSL_ITEM attributes[], - OPENSSL_ITEM parameters[]); -EVP_PKEY *STORE_list_private_key_next(STORE *e, void *handle); -int STORE_list_private_key_end(STORE *e, void *handle); -int STORE_list_private_key_endp(STORE *e, void *handle); -EVP_PKEY *STORE_get_public_key(STORE *e, OPENSSL_ITEM attributes[], - OPENSSL_ITEM parameters[]); -int STORE_store_public_key(STORE *e, EVP_PKEY *data, - OPENSSL_ITEM attributes[], - OPENSSL_ITEM parameters[]); -int STORE_modify_public_key(STORE *e, OPENSSL_ITEM search_attributes[], - OPENSSL_ITEM add_sttributes[], - OPENSSL_ITEM modify_attributes[], - OPENSSL_ITEM delete_attributes[], - OPENSSL_ITEM parameters[]); -int STORE_revoke_public_key(STORE *e, OPENSSL_ITEM attributes[], - OPENSSL_ITEM parameters[]); -int STORE_delete_public_key(STORE *e, OPENSSL_ITEM attributes[], - OPENSSL_ITEM parameters[]); -void *STORE_list_public_key_start(STORE *e, OPENSSL_ITEM attributes[], - OPENSSL_ITEM parameters[]); -EVP_PKEY *STORE_list_public_key_next(STORE *e, void *handle); -int STORE_list_public_key_end(STORE *e, void *handle); -int STORE_list_public_key_endp(STORE *e, void *handle); -X509_CRL *STORE_generate_crl(STORE *e, OPENSSL_ITEM attributes[], - OPENSSL_ITEM parameters[]); -X509_CRL *STORE_get_crl(STORE *e, OPENSSL_ITEM attributes[], - OPENSSL_ITEM parameters[]); -int STORE_store_crl(STORE *e, X509_CRL *data, OPENSSL_ITEM attributes[], - OPENSSL_ITEM parameters[]); -int STORE_modify_crl(STORE *e, OPENSSL_ITEM search_attributes[], - OPENSSL_ITEM add_sttributes[], - OPENSSL_ITEM modify_attributes[], - OPENSSL_ITEM delete_attributes[], - OPENSSL_ITEM parameters[]); -int STORE_delete_crl(STORE *e, OPENSSL_ITEM attributes[], - OPENSSL_ITEM parameters[]); -void *STORE_list_crl_start(STORE *e, OPENSSL_ITEM attributes[], - OPENSSL_ITEM parameters[]); -X509_CRL *STORE_list_crl_next(STORE *e, void *handle); -int STORE_list_crl_end(STORE *e, void *handle); -int STORE_list_crl_endp(STORE *e, void *handle); -int STORE_store_number(STORE *e, BIGNUM *data, OPENSSL_ITEM attributes[], - OPENSSL_ITEM parameters[]); -int STORE_modify_number(STORE *e, OPENSSL_ITEM search_attributes[], - OPENSSL_ITEM add_sttributes[], - OPENSSL_ITEM modify_attributes[], - OPENSSL_ITEM delete_attributes[], - OPENSSL_ITEM parameters[]); -BIGNUM *STORE_get_number(STORE *e, OPENSSL_ITEM attributes[], - OPENSSL_ITEM parameters[]); -int STORE_delete_number(STORE *e, OPENSSL_ITEM attributes[], - OPENSSL_ITEM parameters[]); -int STORE_store_arbitrary(STORE *e, BUF_MEM *data, OPENSSL_ITEM attributes[], - OPENSSL_ITEM parameters[]); -int STORE_modify_arbitrary(STORE *e, OPENSSL_ITEM search_attributes[], - OPENSSL_ITEM add_sttributes[], - OPENSSL_ITEM modify_attributes[], - OPENSSL_ITEM delete_attributes[], - OPENSSL_ITEM parameters[]); -BUF_MEM *STORE_get_arbitrary(STORE *e, OPENSSL_ITEM attributes[], - OPENSSL_ITEM parameters[]); -int STORE_delete_arbitrary(STORE *e, OPENSSL_ITEM attributes[], - OPENSSL_ITEM parameters[]); - -/* Create and manipulate methods */ -STORE_METHOD *STORE_create_method(char *name); -void STORE_destroy_method(STORE_METHOD *store_method); - -/* These callback types are use for store handlers */ -typedef int (*STORE_INITIALISE_FUNC_PTR) (STORE *); -typedef void (*STORE_CLEANUP_FUNC_PTR) (STORE *); -typedef STORE_OBJECT *(*STORE_GENERATE_OBJECT_FUNC_PTR)(STORE *, - STORE_OBJECT_TYPES - type, - OPENSSL_ITEM - attributes[], - OPENSSL_ITEM - parameters[]); -typedef STORE_OBJECT *(*STORE_GET_OBJECT_FUNC_PTR)(STORE *, - STORE_OBJECT_TYPES type, - OPENSSL_ITEM attributes[], - OPENSSL_ITEM parameters[]); -typedef void *(*STORE_START_OBJECT_FUNC_PTR)(STORE *, STORE_OBJECT_TYPES type, - OPENSSL_ITEM attributes[], - OPENSSL_ITEM parameters[]); -typedef STORE_OBJECT *(*STORE_NEXT_OBJECT_FUNC_PTR)(STORE *, void *handle); -typedef int (*STORE_END_OBJECT_FUNC_PTR) (STORE *, void *handle); -typedef int (*STORE_HANDLE_OBJECT_FUNC_PTR) (STORE *, STORE_OBJECT_TYPES type, - OPENSSL_ITEM attributes[], - OPENSSL_ITEM parameters[]); -typedef int (*STORE_STORE_OBJECT_FUNC_PTR) (STORE *, STORE_OBJECT_TYPES type, - STORE_OBJECT *data, - OPENSSL_ITEM attributes[], - OPENSSL_ITEM parameters[]); -typedef int (*STORE_MODIFY_OBJECT_FUNC_PTR) (STORE *, STORE_OBJECT_TYPES type, - OPENSSL_ITEM search_attributes[], - OPENSSL_ITEM add_attributes[], - OPENSSL_ITEM modify_attributes[], - OPENSSL_ITEM delete_attributes[], - OPENSSL_ITEM parameters[]); -typedef int (*STORE_GENERIC_FUNC_PTR) (STORE *, OPENSSL_ITEM attributes[], - OPENSSL_ITEM parameters[]); -typedef int (*STORE_CTRL_FUNC_PTR) (STORE *, int cmd, long l, void *p, - void (*f) (void)); - -int STORE_method_set_initialise_function(STORE_METHOD *sm, - STORE_INITIALISE_FUNC_PTR init_f); -int STORE_method_set_cleanup_function(STORE_METHOD *sm, - STORE_CLEANUP_FUNC_PTR clean_f); -int STORE_method_set_generate_function(STORE_METHOD *sm, - STORE_GENERATE_OBJECT_FUNC_PTR - generate_f); -int STORE_method_set_get_function(STORE_METHOD *sm, - STORE_GET_OBJECT_FUNC_PTR get_f); -int STORE_method_set_store_function(STORE_METHOD *sm, - STORE_STORE_OBJECT_FUNC_PTR store_f); -int STORE_method_set_modify_function(STORE_METHOD *sm, - STORE_MODIFY_OBJECT_FUNC_PTR store_f); -int STORE_method_set_revoke_function(STORE_METHOD *sm, - STORE_HANDLE_OBJECT_FUNC_PTR revoke_f); -int STORE_method_set_delete_function(STORE_METHOD *sm, - STORE_HANDLE_OBJECT_FUNC_PTR delete_f); -int STORE_method_set_list_start_function(STORE_METHOD *sm, - STORE_START_OBJECT_FUNC_PTR - list_start_f); -int STORE_method_set_list_next_function(STORE_METHOD *sm, - STORE_NEXT_OBJECT_FUNC_PTR - list_next_f); -int STORE_method_set_list_end_function(STORE_METHOD *sm, - STORE_END_OBJECT_FUNC_PTR list_end_f); -int STORE_method_set_update_store_function(STORE_METHOD *sm, - STORE_GENERIC_FUNC_PTR); -int STORE_method_set_lock_store_function(STORE_METHOD *sm, - STORE_GENERIC_FUNC_PTR); -int STORE_method_set_unlock_store_function(STORE_METHOD *sm, - STORE_GENERIC_FUNC_PTR); -int STORE_method_set_ctrl_function(STORE_METHOD *sm, - STORE_CTRL_FUNC_PTR ctrl_f); - -STORE_INITIALISE_FUNC_PTR STORE_method_get_initialise_function(STORE_METHOD - *sm); -STORE_CLEANUP_FUNC_PTR STORE_method_get_cleanup_function(STORE_METHOD *sm); -STORE_GENERATE_OBJECT_FUNC_PTR STORE_method_get_generate_function(STORE_METHOD - *sm); -STORE_GET_OBJECT_FUNC_PTR STORE_method_get_get_function(STORE_METHOD *sm); -STORE_STORE_OBJECT_FUNC_PTR STORE_method_get_store_function(STORE_METHOD *sm); -STORE_MODIFY_OBJECT_FUNC_PTR STORE_method_get_modify_function(STORE_METHOD - *sm); -STORE_HANDLE_OBJECT_FUNC_PTR STORE_method_get_revoke_function(STORE_METHOD - *sm); -STORE_HANDLE_OBJECT_FUNC_PTR STORE_method_get_delete_function(STORE_METHOD - *sm); -STORE_START_OBJECT_FUNC_PTR STORE_method_get_list_start_function(STORE_METHOD - *sm); -STORE_NEXT_OBJECT_FUNC_PTR STORE_method_get_list_next_function(STORE_METHOD - *sm); -STORE_END_OBJECT_FUNC_PTR STORE_method_get_list_end_function(STORE_METHOD - *sm); -STORE_GENERIC_FUNC_PTR STORE_method_get_update_store_function(STORE_METHOD - *sm); -STORE_GENERIC_FUNC_PTR STORE_method_get_lock_store_function(STORE_METHOD *sm); -STORE_GENERIC_FUNC_PTR STORE_method_get_unlock_store_function(STORE_METHOD - *sm); -STORE_CTRL_FUNC_PTR STORE_method_get_ctrl_function(STORE_METHOD *sm); - -/* Method helper structures and functions. */ - -/* - * This structure is the result of parsing through the information in a list - * of OPENSSL_ITEMs. It stores all the necessary information in a structured - * way. - */ -typedef struct STORE_attr_info_st STORE_ATTR_INFO; - -/* - * Parse a list of OPENSSL_ITEMs and return a pointer to a STORE_ATTR_INFO. - * Note that we do this in the list form, since the list of OPENSSL_ITEMs can - * come in blocks separated with STORE_ATTR_OR. Note that the value returned - * by STORE_parse_attrs_next() must be freed with STORE_ATTR_INFO_free(). - */ -void *STORE_parse_attrs_start(OPENSSL_ITEM *attributes); -STORE_ATTR_INFO *STORE_parse_attrs_next(void *handle); -int STORE_parse_attrs_end(void *handle); -int STORE_parse_attrs_endp(void *handle); - -/* Creator and destructor */ -STORE_ATTR_INFO *STORE_ATTR_INFO_new(void); -int STORE_ATTR_INFO_free(STORE_ATTR_INFO *attrs); - -/* Manipulators */ -char *STORE_ATTR_INFO_get0_cstr(STORE_ATTR_INFO *attrs, - STORE_ATTR_TYPES code); -unsigned char *STORE_ATTR_INFO_get0_sha1str(STORE_ATTR_INFO *attrs, - STORE_ATTR_TYPES code); -X509_NAME *STORE_ATTR_INFO_get0_dn(STORE_ATTR_INFO *attrs, - STORE_ATTR_TYPES code); -BIGNUM *STORE_ATTR_INFO_get0_number(STORE_ATTR_INFO *attrs, - STORE_ATTR_TYPES code); -int STORE_ATTR_INFO_set_cstr(STORE_ATTR_INFO *attrs, STORE_ATTR_TYPES code, - char *cstr, size_t cstr_size); -int STORE_ATTR_INFO_set_sha1str(STORE_ATTR_INFO *attrs, STORE_ATTR_TYPES code, - unsigned char *sha1str, size_t sha1str_size); -int STORE_ATTR_INFO_set_dn(STORE_ATTR_INFO *attrs, STORE_ATTR_TYPES code, - X509_NAME *dn); -int STORE_ATTR_INFO_set_number(STORE_ATTR_INFO *attrs, STORE_ATTR_TYPES code, - BIGNUM *number); -int STORE_ATTR_INFO_modify_cstr(STORE_ATTR_INFO *attrs, STORE_ATTR_TYPES code, - char *cstr, size_t cstr_size); -int STORE_ATTR_INFO_modify_sha1str(STORE_ATTR_INFO *attrs, - STORE_ATTR_TYPES code, - unsigned char *sha1str, - size_t sha1str_size); -int STORE_ATTR_INFO_modify_dn(STORE_ATTR_INFO *attrs, STORE_ATTR_TYPES code, - X509_NAME *dn); -int STORE_ATTR_INFO_modify_number(STORE_ATTR_INFO *attrs, - STORE_ATTR_TYPES code, BIGNUM *number); - -/* - * Compare on basis of a bit pattern formed by the STORE_ATTR_TYPES values in - * each contained attribute. - */ -int STORE_ATTR_INFO_compare(const STORE_ATTR_INFO *const *a, - const STORE_ATTR_INFO *const *b); -/* - * Check if the set of attributes in a is within the range of attributes set - * in b. - */ -int STORE_ATTR_INFO_in_range(STORE_ATTR_INFO *a, STORE_ATTR_INFO *b); -/* Check if the set of attributes in a are also set in b. */ -int STORE_ATTR_INFO_in(STORE_ATTR_INFO *a, STORE_ATTR_INFO *b); -/* Same as STORE_ATTR_INFO_in(), but also checks the attribute values. */ -int STORE_ATTR_INFO_in_ex(STORE_ATTR_INFO *a, STORE_ATTR_INFO *b); - -/* BEGIN ERROR CODES */ -/* - * The following lines are auto generated by the script mkerr.pl. Any changes - * made after this point may be overwritten when the script is next run. - */ -void ERR_load_STORE_strings(void); - -/* Error codes for the STORE functions. */ - -/* Function codes. */ -# define STORE_F_MEM_DELETE 134 -# define STORE_F_MEM_GENERATE 135 -# define STORE_F_MEM_LIST_END 168 -# define STORE_F_MEM_LIST_NEXT 136 -# define STORE_F_MEM_LIST_START 137 -# define STORE_F_MEM_MODIFY 169 -# define STORE_F_MEM_STORE 138 -# define STORE_F_STORE_ATTR_INFO_GET0_CSTR 139 -# define STORE_F_STORE_ATTR_INFO_GET0_DN 140 -# define STORE_F_STORE_ATTR_INFO_GET0_NUMBER 141 -# define STORE_F_STORE_ATTR_INFO_GET0_SHA1STR 142 -# define STORE_F_STORE_ATTR_INFO_MODIFY_CSTR 143 -# define STORE_F_STORE_ATTR_INFO_MODIFY_DN 144 -# define STORE_F_STORE_ATTR_INFO_MODIFY_NUMBER 145 -# define STORE_F_STORE_ATTR_INFO_MODIFY_SHA1STR 146 -# define STORE_F_STORE_ATTR_INFO_SET_CSTR 147 -# define STORE_F_STORE_ATTR_INFO_SET_DN 148 -# define STORE_F_STORE_ATTR_INFO_SET_NUMBER 149 -# define STORE_F_STORE_ATTR_INFO_SET_SHA1STR 150 -# define STORE_F_STORE_CERTIFICATE 170 -# define STORE_F_STORE_CTRL 161 -# define STORE_F_STORE_DELETE_ARBITRARY 158 -# define STORE_F_STORE_DELETE_CERTIFICATE 102 -# define STORE_F_STORE_DELETE_CRL 103 -# define STORE_F_STORE_DELETE_NUMBER 104 -# define STORE_F_STORE_DELETE_PRIVATE_KEY 105 -# define STORE_F_STORE_DELETE_PUBLIC_KEY 106 -# define STORE_F_STORE_GENERATE_CRL 107 -# define STORE_F_STORE_GENERATE_KEY 108 -# define STORE_F_STORE_GET_ARBITRARY 159 -# define STORE_F_STORE_GET_CERTIFICATE 109 -# define STORE_F_STORE_GET_CRL 110 -# define STORE_F_STORE_GET_NUMBER 111 -# define STORE_F_STORE_GET_PRIVATE_KEY 112 -# define STORE_F_STORE_GET_PUBLIC_KEY 113 -# define STORE_F_STORE_LIST_CERTIFICATE_END 114 -# define STORE_F_STORE_LIST_CERTIFICATE_ENDP 153 -# define STORE_F_STORE_LIST_CERTIFICATE_NEXT 115 -# define STORE_F_STORE_LIST_CERTIFICATE_START 116 -# define STORE_F_STORE_LIST_CRL_END 117 -# define STORE_F_STORE_LIST_CRL_ENDP 154 -# define STORE_F_STORE_LIST_CRL_NEXT 118 -# define STORE_F_STORE_LIST_CRL_START 119 -# define STORE_F_STORE_LIST_PRIVATE_KEY_END 120 -# define STORE_F_STORE_LIST_PRIVATE_KEY_ENDP 155 -# define STORE_F_STORE_LIST_PRIVATE_KEY_NEXT 121 -# define STORE_F_STORE_LIST_PRIVATE_KEY_START 122 -# define STORE_F_STORE_LIST_PUBLIC_KEY_END 123 -# define STORE_F_STORE_LIST_PUBLIC_KEY_ENDP 156 -# define STORE_F_STORE_LIST_PUBLIC_KEY_NEXT 124 -# define STORE_F_STORE_LIST_PUBLIC_KEY_START 125 -# define STORE_F_STORE_MODIFY_ARBITRARY 162 -# define STORE_F_STORE_MODIFY_CERTIFICATE 163 -# define STORE_F_STORE_MODIFY_CRL 164 -# define STORE_F_STORE_MODIFY_NUMBER 165 -# define STORE_F_STORE_MODIFY_PRIVATE_KEY 166 -# define STORE_F_STORE_MODIFY_PUBLIC_KEY 167 -# define STORE_F_STORE_NEW_ENGINE 133 -# define STORE_F_STORE_NEW_METHOD 132 -# define STORE_F_STORE_PARSE_ATTRS_END 151 -# define STORE_F_STORE_PARSE_ATTRS_ENDP 172 -# define STORE_F_STORE_PARSE_ATTRS_NEXT 152 -# define STORE_F_STORE_PARSE_ATTRS_START 171 -# define STORE_F_STORE_REVOKE_CERTIFICATE 129 -# define STORE_F_STORE_REVOKE_PRIVATE_KEY 130 -# define STORE_F_STORE_REVOKE_PUBLIC_KEY 131 -# define STORE_F_STORE_STORE_ARBITRARY 157 -# define STORE_F_STORE_STORE_CERTIFICATE 100 -# define STORE_F_STORE_STORE_CRL 101 -# define STORE_F_STORE_STORE_NUMBER 126 -# define STORE_F_STORE_STORE_PRIVATE_KEY 127 -# define STORE_F_STORE_STORE_PUBLIC_KEY 128 - -/* Reason codes. */ -# define STORE_R_ALREADY_HAS_A_VALUE 127 -# define STORE_R_FAILED_DELETING_ARBITRARY 132 -# define STORE_R_FAILED_DELETING_CERTIFICATE 100 -# define STORE_R_FAILED_DELETING_KEY 101 -# define STORE_R_FAILED_DELETING_NUMBER 102 -# define STORE_R_FAILED_GENERATING_CRL 103 -# define STORE_R_FAILED_GENERATING_KEY 104 -# define STORE_R_FAILED_GETTING_ARBITRARY 133 -# define STORE_R_FAILED_GETTING_CERTIFICATE 105 -# define STORE_R_FAILED_GETTING_KEY 106 -# define STORE_R_FAILED_GETTING_NUMBER 107 -# define STORE_R_FAILED_LISTING_CERTIFICATES 108 -# define STORE_R_FAILED_LISTING_KEYS 109 -# define STORE_R_FAILED_MODIFYING_ARBITRARY 138 -# define STORE_R_FAILED_MODIFYING_CERTIFICATE 139 -# define STORE_R_FAILED_MODIFYING_CRL 140 -# define STORE_R_FAILED_MODIFYING_NUMBER 141 -# define STORE_R_FAILED_MODIFYING_PRIVATE_KEY 142 -# define STORE_R_FAILED_MODIFYING_PUBLIC_KEY 143 -# define STORE_R_FAILED_REVOKING_CERTIFICATE 110 -# define STORE_R_FAILED_REVOKING_KEY 111 -# define STORE_R_FAILED_STORING_ARBITRARY 134 -# define STORE_R_FAILED_STORING_CERTIFICATE 112 -# define STORE_R_FAILED_STORING_KEY 113 -# define STORE_R_FAILED_STORING_NUMBER 114 -# define STORE_R_NOT_IMPLEMENTED 128 -# define STORE_R_NO_CONTROL_FUNCTION 144 -# define STORE_R_NO_DELETE_ARBITRARY_FUNCTION 135 -# define STORE_R_NO_DELETE_NUMBER_FUNCTION 115 -# define STORE_R_NO_DELETE_OBJECT_FUNCTION 116 -# define STORE_R_NO_GENERATE_CRL_FUNCTION 117 -# define STORE_R_NO_GENERATE_OBJECT_FUNCTION 118 -# define STORE_R_NO_GET_OBJECT_ARBITRARY_FUNCTION 136 -# define STORE_R_NO_GET_OBJECT_FUNCTION 119 -# define STORE_R_NO_GET_OBJECT_NUMBER_FUNCTION 120 -# define STORE_R_NO_LIST_OBJECT_ENDP_FUNCTION 131 -# define STORE_R_NO_LIST_OBJECT_END_FUNCTION 121 -# define STORE_R_NO_LIST_OBJECT_NEXT_FUNCTION 122 -# define STORE_R_NO_LIST_OBJECT_START_FUNCTION 123 -# define STORE_R_NO_MODIFY_OBJECT_FUNCTION 145 -# define STORE_R_NO_REVOKE_OBJECT_FUNCTION 124 -# define STORE_R_NO_STORE 129 -# define STORE_R_NO_STORE_OBJECT_ARBITRARY_FUNCTION 137 -# define STORE_R_NO_STORE_OBJECT_FUNCTION 125 -# define STORE_R_NO_STORE_OBJECT_NUMBER_FUNCTION 126 -# define STORE_R_NO_VALUE 130 - -#ifdef __cplusplus -} -#endif -#endif diff --git a/util/libeay.num b/util/libeay.num index 48b235bf71..d53697c9fc 100755 --- a/util/libeay.num +++ b/util/libeay.num @@ -2872,7 +2872,7 @@ BIO_new_dgram 3330 1_1_0 EXIST::FUNCTION: BN_get0_nist_prime_384 3331 1_1_0 EXIST::FUNCTION: ERR_set_mark 3332 1_1_0 EXIST::FUNCTION: X509_STORE_CTX_set0_crls 3333 1_1_0 EXIST::FUNCTION: -ENGINE_set_STORE 3334 1_1_0 EXIST::FUNCTION:ENGINE +ENGINE_set_STORE 3334 1_1_0 NOEXIST::FUNCTION: ENGINE_register_ECDSA 3335 1_1_0 NOEXIST::FUNCTION: STORE_meth_set_list_start_fn 3336 1_1_0 NOEXIST::FUNCTION: STORE_method_set_list_start_function 3336 1_1_0 NOEXIST::FUNCTION: @@ -2928,7 +2928,7 @@ STORE_ATTR_INFO_set_dn 3380 1_1_0 NOEXIST::FUNCTION: X509_policy_tree_get0_policies 3381 1_1_0 EXIST::FUNCTION: EC_GROUP_new_curve_GF2m 3382 1_1_0 EXIST::FUNCTION:EC,EC2M STORE_destroy_method 3383 1_1_0 NOEXIST::FUNCTION: -ENGINE_unregister_STORE 3384 1_1_0 EXIST::FUNCTION:ENGINE +ENGINE_unregister_STORE 3384 1_1_0 NOEXIST::FUNCTION: EVP_PKEY_get1_EC_KEY 3385 1_1_0 EXIST::FUNCTION:EC STORE_ATTR_INFO_get0_number 3386 1_1_0 NOEXIST::FUNCTION: ENGINE_get_default_ECDH 3387 1_1_0 NOEXIST::FUNCTION: @@ -3125,7 +3125,7 @@ d2i_ECPrivateKey 3563 1_1_0 EXIST::FUNCTION:EC ASN1_item_ndef_i2d 3564 1_1_0 EXIST::FUNCTION: STORE_delete_private_key 3565 1_1_0 NOEXIST::FUNCTION: ERR_pop_to_mark 3566 1_1_0 EXIST::FUNCTION: -ENGINE_register_all_STORE 3567 1_1_0 EXIST::FUNCTION:ENGINE +ENGINE_register_all_STORE 3567 1_1_0 NOEXIST::FUNCTION: X509_policy_level_get0_node 3568 1_1_0 EXIST::FUNCTION: i2d_PKCS7_NDEF 3569 1_1_0 EXIST::FUNCTION: EC_GROUP_get_degree 3570 1_1_0 EXIST::FUNCTION:EC @@ -3236,7 +3236,7 @@ SHA256_Transform 3664 1_1_0 EXIST::FUNCTION: EC_KEY_set_enc_flags 3665 1_1_0 EXIST::FUNCTION:EC ECDSA_verify 3666 1_1_0 EXIST::FUNCTION:EC EC_POINT_point2hex 3667 1_1_0 EXIST::FUNCTION:EC -ENGINE_get_STORE 3668 1_1_0 EXIST::FUNCTION:ENGINE +ENGINE_get_STORE 3668 1_1_0 NOEXIST::FUNCTION: SHA512 3669 1_1_0 EXIST:!VMSVAX:FUNCTION: STORE_get_certificate 3670 1_1_0 NOEXIST::FUNCTION: ECDSA_do_sign_ex 3671 1_1_0 EXIST::FUNCTION:EC @@ -3254,7 +3254,7 @@ STORE_get_ex_data 3681 1_1_0 NOEXIST::FUNCTION: EC_KEY_set_public_key 3682 1_1_0 EXIST::FUNCTION:EC PEM_read_ECPKParameters 3683 1_1_0 EXIST::FUNCTION:EC X509_CERT_PAIR_new 3684 1_1_0 NOEXIST::FUNCTION: -ENGINE_register_STORE 3685 1_1_0 EXIST::FUNCTION:ENGINE +ENGINE_register_STORE 3685 1_1_0 NOEXIST::FUNCTION: RSA_generate_key_ex 3686 1_1_0 EXIST::FUNCTION:RSA DSA_generate_parameters_ex 3687 1_1_0 EXIST::FUNCTION:DSA ECParameters_print_fp 3688 1_1_0 EXIST::FUNCTION:EC,STDIO -- cgit v1.2.3