⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 store.h

📁 mediastreamer2是开源的网络传输媒体流的库
💻 H
📖 第 1 页 / 共 2 页
字号:
/* crypto/store/store.h -*- mode:C; c-file-style: "eay" -*- *//* 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 <openssl/ossl_typ.h>#ifndef OPENSSL_NO_DEPRECATED#include <openssl/evp.h>#include <openssl/bn.h>#include <openssl/x509.h>#endif#ifdef  __cplusplusextern "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)int STORE_get_ex_new_index(long argl, void *argp, CRYPTO_EX_new *new_func,	CRYPTO_EX_dup *dup_func, CRYPTO_EX_free *free_func);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_AUTH_KRB5_TICKET=		0x06, /* void * */	STORE_PARAM_TYPE_NUM=			0x06  /* 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;DECLARE_STACK_OF(STORE_OBJECT)STORE_OBJECT *STORE_OBJECT_new(void);void STORE_OBJECT_free(STORE_OBJECT *data);/* 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);

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -