1656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project/* crypto/store/store.h -*- mode:C; c-file-style: "eay" -*- */
2656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project/* Written by Richard Levitte (richard@levitte.org) for the OpenSSL
3656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project * project 2003.
4656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project */
5656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project/* ====================================================================
6656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project * Copyright (c) 2003 The OpenSSL Project.  All rights reserved.
7656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project *
8656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project * Redistribution and use in source and binary forms, with or without
9656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project * modification, are permitted provided that the following conditions
10656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project * are met:
11656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project *
12656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project * 1. Redistributions of source code must retain the above copyright
13656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project *    notice, this list of conditions and the following disclaimer.
14656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project *
15656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project * 2. Redistributions in binary form must reproduce the above copyright
16656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project *    notice, this list of conditions and the following disclaimer in
17656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project *    the documentation and/or other materials provided with the
18656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project *    distribution.
19656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project *
20656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project * 3. All advertising materials mentioning features or use of this
21656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project *    software must display the following acknowledgment:
22656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project *    "This product includes software developed by the OpenSSL Project
23656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project *    for use in the OpenSSL Toolkit. (http://www.openssl.org/)"
24656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project *
25656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project * 4. The names "OpenSSL Toolkit" and "OpenSSL Project" must not be used to
26656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project *    endorse or promote products derived from this software without
27656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project *    prior written permission. For written permission, please contact
28656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project *    openssl-core@openssl.org.
29656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project *
30656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project * 5. Products derived from this software may not be called "OpenSSL"
31656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project *    nor may "OpenSSL" appear in their names without prior written
32656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project *    permission of the OpenSSL Project.
33656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project *
34656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project * 6. Redistributions of any form whatsoever must retain the following
35656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project *    acknowledgment:
36656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project *    "This product includes software developed by the OpenSSL Project
37656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project *    for use in the OpenSSL Toolkit (http://www.openssl.org/)"
38656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project *
39656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project * THIS SOFTWARE IS PROVIDED BY THE OpenSSL PROJECT ``AS IS'' AND ANY
40656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project * EXPRESSED OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
41656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
42656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project * PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL THE OpenSSL PROJECT OR
43656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
44656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
45656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
46656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
47656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
48656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
49656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED
50656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project * OF THE POSSIBILITY OF SUCH DAMAGE.
51656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project * ====================================================================
52656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project *
53656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project * This product includes cryptographic software written by Eric Young
54656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project * (eay@cryptsoft.com).  This product includes software written by Tim
55656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project * Hudson (tjh@cryptsoft.com).
56656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project *
57656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project */
58656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project
59656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#ifndef HEADER_STORE_H
60656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#define HEADER_STORE_H
61656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project
62221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom#include <openssl/opensslconf.h>
63221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom
64221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom#ifdef OPENSSL_NO_STORE
65221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom#error STORE is disabled.
66221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom#endif
67221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom
68656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#include <openssl/ossl_typ.h>
69656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#ifndef OPENSSL_NO_DEPRECATED
70656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#include <openssl/evp.h>
71656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#include <openssl/bn.h>
72656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#include <openssl/x509.h>
73656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#endif
74656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project
75656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#ifdef  __cplusplus
76656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Projectextern "C" {
77656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#endif
78656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project
79656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project/* Already defined in ossl_typ.h */
80656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project/* typedef struct store_st STORE; */
81656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project/* typedef struct store_method_st STORE_METHOD; */
82656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project
83656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project
84656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project/* All the following functions return 0, a negative number or NULL on error.
85656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project   When everything is fine, they return a positive value or a non-NULL
86656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project   pointer, all depending on their purpose. */
87656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project
88656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project/* Creators and destructor.   */
89656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source ProjectSTORE *STORE_new_method(const STORE_METHOD *method);
90656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source ProjectSTORE *STORE_new_engine(ENGINE *engine);
91656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Projectvoid STORE_free(STORE *ui);
92656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project
93656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project
94656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project/* Give a user interface parametrised control commands.  This can be used to
95656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project   send down an integer, a data pointer or a function pointer, as well as
96656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project   be used to get information from a STORE. */
97656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Projectint STORE_ctrl(STORE *store, int cmd, long i, void *p, void (*f)(void));
98656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project
99656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project/* A control to set the directory with keys and certificates.  Used by the
100656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project   built-in directory level method. */
101656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#define STORE_CTRL_SET_DIRECTORY	0x0001
102656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project/* A control to set a file to load.  Used by the built-in file level method. */
103656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#define STORE_CTRL_SET_FILE		0x0002
104656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project/* A control to set a configuration file to load.  Can be used by any method
105656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project   that wishes to load a configuration file. */
106656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#define STORE_CTRL_SET_CONF_FILE	0x0003
107656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project/* A control to set a the section of the loaded configuration file.  Can be
108656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project   used by any method that wishes to load a configuration file. */
109656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#define STORE_CTRL_SET_CONF_SECTION	0x0004
110656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project
111656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project
112656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project/* Some methods may use extra data */
113656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#define STORE_set_app_data(s,arg)	STORE_set_ex_data(s,0,arg)
114656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#define STORE_get_app_data(s)		STORE_get_ex_data(s,0)
115656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Projectint STORE_get_ex_new_index(long argl, void *argp, CRYPTO_EX_new *new_func,
116656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	CRYPTO_EX_dup *dup_func, CRYPTO_EX_free *free_func);
117656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Projectint STORE_set_ex_data(STORE *r,int idx,void *arg);
118656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Projectvoid *STORE_get_ex_data(STORE *r, int idx);
119656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project
120656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project/* Use specific methods instead of the built-in one */
121656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Projectconst STORE_METHOD *STORE_get_method(STORE *store);
122656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Projectconst STORE_METHOD *STORE_set_method(STORE *store, const STORE_METHOD *meth);
123656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project
124656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project/* The standard OpenSSL methods. */
125656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project/* This is the in-memory method.  It does everything except revoking and updating,
126656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project   and is of course volatile.  It's used by other methods that have an in-memory
127656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project   cache. */
128656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Projectconst STORE_METHOD *STORE_Memory(void);
129656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#if 0 /* Not yet implemented */
130656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project/* This is the directory store.  It does everything except revoking and updating,
131656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project   and uses STORE_Memory() to cache things in memory. */
132656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Projectconst STORE_METHOD *STORE_Directory(void);
133656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project/* This is the file store.  It does everything except revoking and updating,
134656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project   and uses STORE_Memory() to cache things in memory.  Certificates are added
135656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project   to it with the store operation, and it will only get cached certificates. */
136656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Projectconst STORE_METHOD *STORE_File(void);
137656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#endif
138656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project
139656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project/* Store functions take a type code for the type of data they should store
140656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project   or fetch */
141656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Projecttypedef enum STORE_object_types
142656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	{
143656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	STORE_OBJECT_TYPE_X509_CERTIFICATE=	0x01, /* X509 * */
144656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	STORE_OBJECT_TYPE_X509_CRL=		0x02, /* X509_CRL * */
145656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	STORE_OBJECT_TYPE_PRIVATE_KEY=		0x03, /* EVP_PKEY * */
146656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	STORE_OBJECT_TYPE_PUBLIC_KEY=		0x04, /* EVP_PKEY * */
147656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	STORE_OBJECT_TYPE_NUMBER=		0x05, /* BIGNUM * */
148656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	STORE_OBJECT_TYPE_ARBITRARY=		0x06, /* BUF_MEM * */
149656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	STORE_OBJECT_TYPE_NUM=			0x06  /* The amount of known
150656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project							 object types */
151656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	} STORE_OBJECT_TYPES;
152656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project/* List of text strings corresponding to the object types. */
153656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Projectextern const char * const STORE_object_type_string[STORE_OBJECT_TYPE_NUM+1];
154656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project
155656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project/* Some store functions take a parameter list.  Those parameters come with
156656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project   one of the following codes. The comments following the codes below indicate
157656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project   what type the value should be a pointer to. */
158656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Projecttypedef enum STORE_params
159656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	{
160656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	STORE_PARAM_EVP_TYPE=			0x01, /* int */
161656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	STORE_PARAM_BITS=			0x02, /* size_t */
162656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	STORE_PARAM_KEY_PARAMETERS=		0x03, /* ??? */
163656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	STORE_PARAM_KEY_NO_PARAMETERS=		0x04, /* N/A */
164656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	STORE_PARAM_AUTH_PASSPHRASE=		0x05, /* char * */
165656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	STORE_PARAM_AUTH_KRB5_TICKET=		0x06, /* void * */
166656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	STORE_PARAM_TYPE_NUM=			0x06  /* The amount of known
167656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project							 parameter types */
168656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	} STORE_PARAM_TYPES;
169656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project/* Parameter value sizes.  -1 means unknown, anything else is the required size. */
170656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Projectextern const int STORE_param_sizes[STORE_PARAM_TYPE_NUM+1];
171656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project
172656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project/* Store functions take attribute lists.  Those attributes come with codes.
173656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project   The comments following the codes below indicate what type the value should
174656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project   be a pointer to. */
175656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Projecttypedef enum STORE_attribs
176656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	{
177656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	STORE_ATTR_END=				0x00,
178656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	STORE_ATTR_FRIENDLYNAME=		0x01, /* C string */
179656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	STORE_ATTR_KEYID=			0x02, /* 160 bit string (SHA1) */
180656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	STORE_ATTR_ISSUERKEYID=			0x03, /* 160 bit string (SHA1) */
181656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	STORE_ATTR_SUBJECTKEYID=		0x04, /* 160 bit string (SHA1) */
182656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	STORE_ATTR_ISSUERSERIALHASH=		0x05, /* 160 bit string (SHA1) */
183656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	STORE_ATTR_ISSUER=			0x06, /* X509_NAME * */
184656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	STORE_ATTR_SERIAL=			0x07, /* BIGNUM * */
185656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	STORE_ATTR_SUBJECT=			0x08, /* X509_NAME * */
186656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	STORE_ATTR_CERTHASH=			0x09, /* 160 bit string (SHA1) */
187656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	STORE_ATTR_EMAIL=			0x0a, /* C string */
188656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	STORE_ATTR_FILENAME=			0x0b, /* C string */
189656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	STORE_ATTR_TYPE_NUM=			0x0b, /* The amount of known
190656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project							 attribute types */
191656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	STORE_ATTR_OR=				0xff  /* This is a special
192656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project							 separator, which
193656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project							 expresses the OR
194656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project							 operation.  */
195656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	} STORE_ATTR_TYPES;
196656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project/* Attribute value sizes.  -1 means unknown, anything else is the required size. */
197656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Projectextern const int STORE_attr_sizes[STORE_ATTR_TYPE_NUM+1];
198656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project
199656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Projecttypedef enum STORE_certificate_status
200656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	{
201656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	STORE_X509_VALID=			0x00,
202656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	STORE_X509_EXPIRED=			0x01,
203656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	STORE_X509_SUSPENDED=			0x02,
204656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	STORE_X509_REVOKED=			0x03
205656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	} STORE_CERTIFICATE_STATUS;
206656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project
207656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project/* Engine store functions will return a structure that contains all the necessary
208656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project * information, including revokation status for certificates.  This is really not
209656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project * needed for application authors, as the ENGINE framework functions will extract
210656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project * the OpenSSL-specific information when at all possible.  However, for engine
211656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project * authors, it's crucial to know this structure.  */
212656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Projecttypedef struct STORE_OBJECT_st
213656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	{
214656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	STORE_OBJECT_TYPES type;
215656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	union
216656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project		{
217656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project		struct
218656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project			{
219656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project			STORE_CERTIFICATE_STATUS status;
220656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project			X509 *certificate;
221656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project			} x509;
222656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project		X509_CRL *crl;
223656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project		EVP_PKEY *key;
224656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project		BIGNUM *number;
225656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project		BUF_MEM *arbitrary;
226656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project		} data;
227656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	} STORE_OBJECT;
228656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source ProjectDECLARE_STACK_OF(STORE_OBJECT)
229656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source ProjectSTORE_OBJECT *STORE_OBJECT_new(void);
230656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Projectvoid STORE_OBJECT_free(STORE_OBJECT *data);
231656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project
232656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project
233656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project
234656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project/* The following functions handle the storage. They return 0, a negative number
235656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project   or NULL on error, anything else on success. */
236656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source ProjectX509 *STORE_get_certificate(STORE *e, OPENSSL_ITEM attributes[],
237656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	OPENSSL_ITEM parameters[]);
238656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Projectint STORE_store_certificate(STORE *e, X509 *data, OPENSSL_ITEM attributes[],
239656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	OPENSSL_ITEM parameters[]);
240656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Projectint STORE_modify_certificate(STORE *e, OPENSSL_ITEM search_attributes[],
241656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	OPENSSL_ITEM add_attributes[], OPENSSL_ITEM modify_attributes[],
242656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	OPENSSL_ITEM delete_attributes[], OPENSSL_ITEM parameters[]);
243656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Projectint STORE_revoke_certificate(STORE *e, OPENSSL_ITEM attributes[],
244656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	OPENSSL_ITEM parameters[]);
245656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Projectint STORE_delete_certificate(STORE *e, OPENSSL_ITEM attributes[],
246656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	OPENSSL_ITEM parameters[]);
247656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Projectvoid *STORE_list_certificate_start(STORE *e, OPENSSL_ITEM attributes[],
248656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	OPENSSL_ITEM parameters[]);
249656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source ProjectX509 *STORE_list_certificate_next(STORE *e, void *handle);
250656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Projectint STORE_list_certificate_end(STORE *e, void *handle);
251656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Projectint STORE_list_certificate_endp(STORE *e, void *handle);
252656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source ProjectEVP_PKEY *STORE_generate_key(STORE *e, OPENSSL_ITEM attributes[],
253656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	OPENSSL_ITEM parameters[]);
254656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source ProjectEVP_PKEY *STORE_get_private_key(STORE *e, OPENSSL_ITEM attributes[],
255656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	OPENSSL_ITEM parameters[]);
256656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Projectint STORE_store_private_key(STORE *e, EVP_PKEY *data,
257656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	OPENSSL_ITEM attributes[], OPENSSL_ITEM parameters[]);
258656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Projectint STORE_modify_private_key(STORE *e, OPENSSL_ITEM search_attributes[],
259656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	OPENSSL_ITEM add_sttributes[], OPENSSL_ITEM modify_attributes[],
260656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	OPENSSL_ITEM delete_attributes[], OPENSSL_ITEM parameters[]);
261656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Projectint STORE_revoke_private_key(STORE *e, OPENSSL_ITEM attributes[],
262656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	OPENSSL_ITEM parameters[]);
263656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Projectint STORE_delete_private_key(STORE *e, OPENSSL_ITEM attributes[],
264656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	OPENSSL_ITEM parameters[]);
265656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Projectvoid *STORE_list_private_key_start(STORE *e, OPENSSL_ITEM attributes[],
266656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	OPENSSL_ITEM parameters[]);
267656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source ProjectEVP_PKEY *STORE_list_private_key_next(STORE *e, void *handle);
268656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Projectint STORE_list_private_key_end(STORE *e, void *handle);
269656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Projectint STORE_list_private_key_endp(STORE *e, void *handle);
270656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source ProjectEVP_PKEY *STORE_get_public_key(STORE *e, OPENSSL_ITEM attributes[],
271656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	OPENSSL_ITEM parameters[]);
272656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Projectint STORE_store_public_key(STORE *e, EVP_PKEY *data, OPENSSL_ITEM attributes[],
273656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	OPENSSL_ITEM parameters[]);
274656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Projectint STORE_modify_public_key(STORE *e, OPENSSL_ITEM search_attributes[],
275656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	OPENSSL_ITEM add_sttributes[], OPENSSL_ITEM modify_attributes[],
276656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	OPENSSL_ITEM delete_attributes[], OPENSSL_ITEM parameters[]);
277656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Projectint STORE_revoke_public_key(STORE *e, OPENSSL_ITEM attributes[],
278656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	OPENSSL_ITEM parameters[]);
279656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Projectint STORE_delete_public_key(STORE *e, OPENSSL_ITEM attributes[],
280656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	OPENSSL_ITEM parameters[]);
281656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Projectvoid *STORE_list_public_key_start(STORE *e, OPENSSL_ITEM attributes[],
282656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	OPENSSL_ITEM parameters[]);
283656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source ProjectEVP_PKEY *STORE_list_public_key_next(STORE *e, void *handle);
284656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Projectint STORE_list_public_key_end(STORE *e, void *handle);
285656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Projectint STORE_list_public_key_endp(STORE *e, void *handle);
286656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source ProjectX509_CRL *STORE_generate_crl(STORE *e, OPENSSL_ITEM attributes[],
287656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	OPENSSL_ITEM parameters[]);
288656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source ProjectX509_CRL *STORE_get_crl(STORE *e, OPENSSL_ITEM attributes[],
289656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	OPENSSL_ITEM parameters[]);
290656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Projectint STORE_store_crl(STORE *e, X509_CRL *data, OPENSSL_ITEM attributes[],
291656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	OPENSSL_ITEM parameters[]);
292656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Projectint STORE_modify_crl(STORE *e, OPENSSL_ITEM search_attributes[],
293656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	OPENSSL_ITEM add_sttributes[], OPENSSL_ITEM modify_attributes[],
294656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	OPENSSL_ITEM delete_attributes[], OPENSSL_ITEM parameters[]);
295656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Projectint STORE_delete_crl(STORE *e, OPENSSL_ITEM attributes[],
296656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	OPENSSL_ITEM parameters[]);
297656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Projectvoid *STORE_list_crl_start(STORE *e, OPENSSL_ITEM attributes[],
298656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	OPENSSL_ITEM parameters[]);
299656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source ProjectX509_CRL *STORE_list_crl_next(STORE *e, void *handle);
300656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Projectint STORE_list_crl_end(STORE *e, void *handle);
301656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Projectint STORE_list_crl_endp(STORE *e, void *handle);
302656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Projectint STORE_store_number(STORE *e, BIGNUM *data, OPENSSL_ITEM attributes[],
303656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	OPENSSL_ITEM parameters[]);
304656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Projectint STORE_modify_number(STORE *e, OPENSSL_ITEM search_attributes[],
305656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	OPENSSL_ITEM add_sttributes[], OPENSSL_ITEM modify_attributes[],
306656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	OPENSSL_ITEM delete_attributes[], OPENSSL_ITEM parameters[]);
307656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source ProjectBIGNUM *STORE_get_number(STORE *e, OPENSSL_ITEM attributes[],
308656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	OPENSSL_ITEM parameters[]);
309656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Projectint STORE_delete_number(STORE *e, OPENSSL_ITEM attributes[],
310656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	OPENSSL_ITEM parameters[]);
311656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Projectint STORE_store_arbitrary(STORE *e, BUF_MEM *data, OPENSSL_ITEM attributes[],
312656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	OPENSSL_ITEM parameters[]);
313656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Projectint STORE_modify_arbitrary(STORE *e, OPENSSL_ITEM search_attributes[],
314656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	OPENSSL_ITEM add_sttributes[], OPENSSL_ITEM modify_attributes[],
315656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	OPENSSL_ITEM delete_attributes[], OPENSSL_ITEM parameters[]);
316656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source ProjectBUF_MEM *STORE_get_arbitrary(STORE *e, OPENSSL_ITEM attributes[],
317656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	OPENSSL_ITEM parameters[]);
318656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Projectint STORE_delete_arbitrary(STORE *e, OPENSSL_ITEM attributes[],
319656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	OPENSSL_ITEM parameters[]);
320656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project
321656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project
322656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project/* Create and manipulate methods */
323656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source ProjectSTORE_METHOD *STORE_create_method(char *name);
324656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Projectvoid STORE_destroy_method(STORE_METHOD *store_method);
325656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project
326656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project/* These callback types are use for store handlers */
327656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Projecttypedef int (*STORE_INITIALISE_FUNC_PTR)(STORE *);
328656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Projecttypedef void (*STORE_CLEANUP_FUNC_PTR)(STORE *);
329656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Projecttypedef STORE_OBJECT *(*STORE_GENERATE_OBJECT_FUNC_PTR)(STORE *, STORE_OBJECT_TYPES type, OPENSSL_ITEM attributes[], OPENSSL_ITEM parameters[]);
330656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Projecttypedef STORE_OBJECT *(*STORE_GET_OBJECT_FUNC_PTR)(STORE *, STORE_OBJECT_TYPES type, OPENSSL_ITEM attributes[], OPENSSL_ITEM parameters[]);
331656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Projecttypedef void *(*STORE_START_OBJECT_FUNC_PTR)(STORE *, STORE_OBJECT_TYPES type, OPENSSL_ITEM attributes[], OPENSSL_ITEM parameters[]);
332656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Projecttypedef STORE_OBJECT *(*STORE_NEXT_OBJECT_FUNC_PTR)(STORE *, void *handle);
333656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Projecttypedef int (*STORE_END_OBJECT_FUNC_PTR)(STORE *, void *handle);
334656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Projecttypedef int (*STORE_HANDLE_OBJECT_FUNC_PTR)(STORE *, STORE_OBJECT_TYPES type, OPENSSL_ITEM attributes[], OPENSSL_ITEM parameters[]);
335656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Projecttypedef int (*STORE_STORE_OBJECT_FUNC_PTR)(STORE *, STORE_OBJECT_TYPES type, STORE_OBJECT *data, OPENSSL_ITEM attributes[], OPENSSL_ITEM parameters[]);
336656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Projecttypedef 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[]);
337656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Projecttypedef int (*STORE_GENERIC_FUNC_PTR)(STORE *, OPENSSL_ITEM attributes[], OPENSSL_ITEM parameters[]);
338656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Projecttypedef int (*STORE_CTRL_FUNC_PTR)(STORE *, int cmd, long l, void *p, void (*f)(void));
339656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project
340656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Projectint STORE_method_set_initialise_function(STORE_METHOD *sm, STORE_INITIALISE_FUNC_PTR init_f);
341656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Projectint STORE_method_set_cleanup_function(STORE_METHOD *sm, STORE_CLEANUP_FUNC_PTR clean_f);
342656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Projectint STORE_method_set_generate_function(STORE_METHOD *sm, STORE_GENERATE_OBJECT_FUNC_PTR generate_f);
343656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Projectint STORE_method_set_get_function(STORE_METHOD *sm, STORE_GET_OBJECT_FUNC_PTR get_f);
344656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Projectint STORE_method_set_store_function(STORE_METHOD *sm, STORE_STORE_OBJECT_FUNC_PTR store_f);
345656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Projectint STORE_method_set_modify_function(STORE_METHOD *sm, STORE_MODIFY_OBJECT_FUNC_PTR store_f);
346656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Projectint STORE_method_set_revoke_function(STORE_METHOD *sm, STORE_HANDLE_OBJECT_FUNC_PTR revoke_f);
347656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Projectint STORE_method_set_delete_function(STORE_METHOD *sm, STORE_HANDLE_OBJECT_FUNC_PTR delete_f);
348656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Projectint STORE_method_set_list_start_function(STORE_METHOD *sm, STORE_START_OBJECT_FUNC_PTR list_start_f);
349656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Projectint STORE_method_set_list_next_function(STORE_METHOD *sm, STORE_NEXT_OBJECT_FUNC_PTR list_next_f);
350656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Projectint STORE_method_set_list_end_function(STORE_METHOD *sm, STORE_END_OBJECT_FUNC_PTR list_end_f);
351656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Projectint STORE_method_set_update_store_function(STORE_METHOD *sm, STORE_GENERIC_FUNC_PTR);
352656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Projectint STORE_method_set_lock_store_function(STORE_METHOD *sm, STORE_GENERIC_FUNC_PTR);
353656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Projectint STORE_method_set_unlock_store_function(STORE_METHOD *sm, STORE_GENERIC_FUNC_PTR);
354656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Projectint STORE_method_set_ctrl_function(STORE_METHOD *sm, STORE_CTRL_FUNC_PTR ctrl_f);
355656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project
356656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source ProjectSTORE_INITIALISE_FUNC_PTR STORE_method_get_initialise_function(STORE_METHOD *sm);
357656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source ProjectSTORE_CLEANUP_FUNC_PTR STORE_method_get_cleanup_function(STORE_METHOD *sm);
358656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source ProjectSTORE_GENERATE_OBJECT_FUNC_PTR STORE_method_get_generate_function(STORE_METHOD *sm);
359656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source ProjectSTORE_GET_OBJECT_FUNC_PTR STORE_method_get_get_function(STORE_METHOD *sm);
360656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source ProjectSTORE_STORE_OBJECT_FUNC_PTR STORE_method_get_store_function(STORE_METHOD *sm);
361656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source ProjectSTORE_MODIFY_OBJECT_FUNC_PTR STORE_method_get_modify_function(STORE_METHOD *sm);
362656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source ProjectSTORE_HANDLE_OBJECT_FUNC_PTR STORE_method_get_revoke_function(STORE_METHOD *sm);
363656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source ProjectSTORE_HANDLE_OBJECT_FUNC_PTR STORE_method_get_delete_function(STORE_METHOD *sm);
364656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source ProjectSTORE_START_OBJECT_FUNC_PTR STORE_method_get_list_start_function(STORE_METHOD *sm);
365656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source ProjectSTORE_NEXT_OBJECT_FUNC_PTR STORE_method_get_list_next_function(STORE_METHOD *sm);
366656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source ProjectSTORE_END_OBJECT_FUNC_PTR STORE_method_get_list_end_function(STORE_METHOD *sm);
367656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source ProjectSTORE_GENERIC_FUNC_PTR STORE_method_get_update_store_function(STORE_METHOD *sm);
368656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source ProjectSTORE_GENERIC_FUNC_PTR STORE_method_get_lock_store_function(STORE_METHOD *sm);
369656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source ProjectSTORE_GENERIC_FUNC_PTR STORE_method_get_unlock_store_function(STORE_METHOD *sm);
370656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source ProjectSTORE_CTRL_FUNC_PTR STORE_method_get_ctrl_function(STORE_METHOD *sm);
371656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project
372656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project/* Method helper structures and functions. */
373656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project
374656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project/* This structure is the result of parsing through the information in a list
375656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project   of OPENSSL_ITEMs.  It stores all the necessary information in a structured
376656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project   way.*/
377656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Projecttypedef struct STORE_attr_info_st STORE_ATTR_INFO;
378656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project
379656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project/* Parse a list of OPENSSL_ITEMs and return a pointer to a STORE_ATTR_INFO.
380656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project   Note that we do this in the list form, since the list of OPENSSL_ITEMs can
381656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project   come in blocks separated with STORE_ATTR_OR.  Note that the value returned
382656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project   by STORE_parse_attrs_next() must be freed with STORE_ATTR_INFO_free(). */
383656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Projectvoid *STORE_parse_attrs_start(OPENSSL_ITEM *attributes);
384656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source ProjectSTORE_ATTR_INFO *STORE_parse_attrs_next(void *handle);
385656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Projectint STORE_parse_attrs_end(void *handle);
386656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Projectint STORE_parse_attrs_endp(void *handle);
387656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project
388656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project/* Creator and destructor */
389656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source ProjectSTORE_ATTR_INFO *STORE_ATTR_INFO_new(void);
390656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Projectint STORE_ATTR_INFO_free(STORE_ATTR_INFO *attrs);
391656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project
392656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project/* Manipulators */
393656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Projectchar *STORE_ATTR_INFO_get0_cstr(STORE_ATTR_INFO *attrs, STORE_ATTR_TYPES code);
394656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Projectunsigned char *STORE_ATTR_INFO_get0_sha1str(STORE_ATTR_INFO *attrs,
395656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	STORE_ATTR_TYPES code);
396656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source ProjectX509_NAME *STORE_ATTR_INFO_get0_dn(STORE_ATTR_INFO *attrs, STORE_ATTR_TYPES code);
397656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source ProjectBIGNUM *STORE_ATTR_INFO_get0_number(STORE_ATTR_INFO *attrs, STORE_ATTR_TYPES code);
398656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Projectint STORE_ATTR_INFO_set_cstr(STORE_ATTR_INFO *attrs, STORE_ATTR_TYPES code,
399656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	char *cstr, size_t cstr_size);
400656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Projectint STORE_ATTR_INFO_set_sha1str(STORE_ATTR_INFO *attrs, STORE_ATTR_TYPES code,
401656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	unsigned char *sha1str, size_t sha1str_size);
402656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Projectint STORE_ATTR_INFO_set_dn(STORE_ATTR_INFO *attrs, STORE_ATTR_TYPES code,
403656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	X509_NAME *dn);
404656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Projectint STORE_ATTR_INFO_set_number(STORE_ATTR_INFO *attrs, STORE_ATTR_TYPES code,
405656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	BIGNUM *number);
406656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Projectint STORE_ATTR_INFO_modify_cstr(STORE_ATTR_INFO *attrs, STORE_ATTR_TYPES code,
407656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	char *cstr, size_t cstr_size);
408656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Projectint STORE_ATTR_INFO_modify_sha1str(STORE_ATTR_INFO *attrs, STORE_ATTR_TYPES code,
409656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	unsigned char *sha1str, size_t sha1str_size);
410656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Projectint STORE_ATTR_INFO_modify_dn(STORE_ATTR_INFO *attrs, STORE_ATTR_TYPES code,
411656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	X509_NAME *dn);
412656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Projectint STORE_ATTR_INFO_modify_number(STORE_ATTR_INFO *attrs, STORE_ATTR_TYPES code,
413656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	BIGNUM *number);
414656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project
415656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project/* Compare on basis of a bit pattern formed by the STORE_ATTR_TYPES values
416656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project   in each contained attribute. */
417221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstromint STORE_ATTR_INFO_compare(const STORE_ATTR_INFO * const *a,
418221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom			    const STORE_ATTR_INFO * const *b);
419656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project/* Check if the set of attributes in a is within the range of attributes
420656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project   set in b. */
421656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Projectint STORE_ATTR_INFO_in_range(STORE_ATTR_INFO *a, STORE_ATTR_INFO *b);
422656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project/* Check if the set of attributes in a are also set in b. */
423656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Projectint STORE_ATTR_INFO_in(STORE_ATTR_INFO *a, STORE_ATTR_INFO *b);
424656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project/* Same as STORE_ATTR_INFO_in(), but also checks the attribute values. */
425656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Projectint STORE_ATTR_INFO_in_ex(STORE_ATTR_INFO *a, STORE_ATTR_INFO *b);
426656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project
427656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project
428656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project/* BEGIN ERROR CODES */
429656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project/* The following lines are auto generated by the script mkerr.pl. Any changes
430656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project * made after this point may be overwritten when the script is next run.
431656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project */
432656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Projectvoid ERR_load_STORE_strings(void);
433656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project
434656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project/* Error codes for the STORE functions. */
435656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project
436656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project/* Function codes. */
437656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#define STORE_F_MEM_DELETE				 134
438656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#define STORE_F_MEM_GENERATE				 135
439656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#define STORE_F_MEM_LIST_END				 168
440656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#define STORE_F_MEM_LIST_NEXT				 136
441656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#define STORE_F_MEM_LIST_START				 137
442656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#define STORE_F_MEM_MODIFY				 169
443656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#define STORE_F_MEM_STORE				 138
444656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#define STORE_F_STORE_ATTR_INFO_GET0_CSTR		 139
445656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#define STORE_F_STORE_ATTR_INFO_GET0_DN			 140
446656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#define STORE_F_STORE_ATTR_INFO_GET0_NUMBER		 141
447656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#define STORE_F_STORE_ATTR_INFO_GET0_SHA1STR		 142
448656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#define STORE_F_STORE_ATTR_INFO_MODIFY_CSTR		 143
449656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#define STORE_F_STORE_ATTR_INFO_MODIFY_DN		 144
450656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#define STORE_F_STORE_ATTR_INFO_MODIFY_NUMBER		 145
451656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#define STORE_F_STORE_ATTR_INFO_MODIFY_SHA1STR		 146
452656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#define STORE_F_STORE_ATTR_INFO_SET_CSTR		 147
453656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#define STORE_F_STORE_ATTR_INFO_SET_DN			 148
454656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#define STORE_F_STORE_ATTR_INFO_SET_NUMBER		 149
455656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#define STORE_F_STORE_ATTR_INFO_SET_SHA1STR		 150
456656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#define STORE_F_STORE_CERTIFICATE			 170
457656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#define STORE_F_STORE_CTRL				 161
458656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#define STORE_F_STORE_DELETE_ARBITRARY			 158
459656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#define STORE_F_STORE_DELETE_CERTIFICATE		 102
460656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#define STORE_F_STORE_DELETE_CRL			 103
461656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#define STORE_F_STORE_DELETE_NUMBER			 104
462656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#define STORE_F_STORE_DELETE_PRIVATE_KEY		 105
463656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#define STORE_F_STORE_DELETE_PUBLIC_KEY			 106
464656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#define STORE_F_STORE_GENERATE_CRL			 107
465656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#define STORE_F_STORE_GENERATE_KEY			 108
466656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#define STORE_F_STORE_GET_ARBITRARY			 159
467656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#define STORE_F_STORE_GET_CERTIFICATE			 109
468656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#define STORE_F_STORE_GET_CRL				 110
469656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#define STORE_F_STORE_GET_NUMBER			 111
470656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#define STORE_F_STORE_GET_PRIVATE_KEY			 112
471656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#define STORE_F_STORE_GET_PUBLIC_KEY			 113
472656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#define STORE_F_STORE_LIST_CERTIFICATE_END		 114
473656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#define STORE_F_STORE_LIST_CERTIFICATE_ENDP		 153
474656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#define STORE_F_STORE_LIST_CERTIFICATE_NEXT		 115
475656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#define STORE_F_STORE_LIST_CERTIFICATE_START		 116
476656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#define STORE_F_STORE_LIST_CRL_END			 117
477656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#define STORE_F_STORE_LIST_CRL_ENDP			 154
478656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#define STORE_F_STORE_LIST_CRL_NEXT			 118
479656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#define STORE_F_STORE_LIST_CRL_START			 119
480656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#define STORE_F_STORE_LIST_PRIVATE_KEY_END		 120
481656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#define STORE_F_STORE_LIST_PRIVATE_KEY_ENDP		 155
482656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#define STORE_F_STORE_LIST_PRIVATE_KEY_NEXT		 121
483656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#define STORE_F_STORE_LIST_PRIVATE_KEY_START		 122
484656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#define STORE_F_STORE_LIST_PUBLIC_KEY_END		 123
485656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#define STORE_F_STORE_LIST_PUBLIC_KEY_ENDP		 156
486656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#define STORE_F_STORE_LIST_PUBLIC_KEY_NEXT		 124
487656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#define STORE_F_STORE_LIST_PUBLIC_KEY_START		 125
488656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#define STORE_F_STORE_MODIFY_ARBITRARY			 162
489656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#define STORE_F_STORE_MODIFY_CERTIFICATE		 163
490656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#define STORE_F_STORE_MODIFY_CRL			 164
491656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#define STORE_F_STORE_MODIFY_NUMBER			 165
492656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#define STORE_F_STORE_MODIFY_PRIVATE_KEY		 166
493656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#define STORE_F_STORE_MODIFY_PUBLIC_KEY			 167
494656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#define STORE_F_STORE_NEW_ENGINE			 133
495656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#define STORE_F_STORE_NEW_METHOD			 132
496656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#define STORE_F_STORE_PARSE_ATTRS_END			 151
497656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#define STORE_F_STORE_PARSE_ATTRS_ENDP			 172
498656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#define STORE_F_STORE_PARSE_ATTRS_NEXT			 152
499656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#define STORE_F_STORE_PARSE_ATTRS_START			 171
500656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#define STORE_F_STORE_REVOKE_CERTIFICATE		 129
501656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#define STORE_F_STORE_REVOKE_PRIVATE_KEY		 130
502656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#define STORE_F_STORE_REVOKE_PUBLIC_KEY			 131
503656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#define STORE_F_STORE_STORE_ARBITRARY			 157
504656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#define STORE_F_STORE_STORE_CERTIFICATE			 100
505656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#define STORE_F_STORE_STORE_CRL				 101
506656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#define STORE_F_STORE_STORE_NUMBER			 126
507656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#define STORE_F_STORE_STORE_PRIVATE_KEY			 127
508656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#define STORE_F_STORE_STORE_PUBLIC_KEY			 128
509656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project
510656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project/* Reason codes. */
511656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#define STORE_R_ALREADY_HAS_A_VALUE			 127
512656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#define STORE_R_FAILED_DELETING_ARBITRARY		 132
513656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#define STORE_R_FAILED_DELETING_CERTIFICATE		 100
514656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#define STORE_R_FAILED_DELETING_KEY			 101
515656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#define STORE_R_FAILED_DELETING_NUMBER			 102
516656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#define STORE_R_FAILED_GENERATING_CRL			 103
517656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#define STORE_R_FAILED_GENERATING_KEY			 104
518656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#define STORE_R_FAILED_GETTING_ARBITRARY		 133
519656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#define STORE_R_FAILED_GETTING_CERTIFICATE		 105
520656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#define STORE_R_FAILED_GETTING_KEY			 106
521656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#define STORE_R_FAILED_GETTING_NUMBER			 107
522656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#define STORE_R_FAILED_LISTING_CERTIFICATES		 108
523656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#define STORE_R_FAILED_LISTING_KEYS			 109
524656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#define STORE_R_FAILED_MODIFYING_ARBITRARY		 138
525656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#define STORE_R_FAILED_MODIFYING_CERTIFICATE		 139
526656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#define STORE_R_FAILED_MODIFYING_CRL			 140
527656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#define STORE_R_FAILED_MODIFYING_NUMBER			 141
528656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#define STORE_R_FAILED_MODIFYING_PRIVATE_KEY		 142
529656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#define STORE_R_FAILED_MODIFYING_PUBLIC_KEY		 143
530656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#define STORE_R_FAILED_REVOKING_CERTIFICATE		 110
531656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#define STORE_R_FAILED_REVOKING_KEY			 111
532656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#define STORE_R_FAILED_STORING_ARBITRARY		 134
533656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#define STORE_R_FAILED_STORING_CERTIFICATE		 112
534656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#define STORE_R_FAILED_STORING_KEY			 113
535656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#define STORE_R_FAILED_STORING_NUMBER			 114
536656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#define STORE_R_NOT_IMPLEMENTED				 128
537656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#define STORE_R_NO_CONTROL_FUNCTION			 144
538656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#define STORE_R_NO_DELETE_ARBITRARY_FUNCTION		 135
539656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#define STORE_R_NO_DELETE_NUMBER_FUNCTION		 115
540656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#define STORE_R_NO_DELETE_OBJECT_FUNCTION		 116
541656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#define STORE_R_NO_GENERATE_CRL_FUNCTION		 117
542656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#define STORE_R_NO_GENERATE_OBJECT_FUNCTION		 118
543656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#define STORE_R_NO_GET_OBJECT_ARBITRARY_FUNCTION	 136
544656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#define STORE_R_NO_GET_OBJECT_FUNCTION			 119
545656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#define STORE_R_NO_GET_OBJECT_NUMBER_FUNCTION		 120
546656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#define STORE_R_NO_LIST_OBJECT_ENDP_FUNCTION		 131
547656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#define STORE_R_NO_LIST_OBJECT_END_FUNCTION		 121
548656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#define STORE_R_NO_LIST_OBJECT_NEXT_FUNCTION		 122
549656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#define STORE_R_NO_LIST_OBJECT_START_FUNCTION		 123
550656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#define STORE_R_NO_MODIFY_OBJECT_FUNCTION		 145
551656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#define STORE_R_NO_REVOKE_OBJECT_FUNCTION		 124
552656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#define STORE_R_NO_STORE				 129
553656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#define STORE_R_NO_STORE_OBJECT_ARBITRARY_FUNCTION	 137
554656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#define STORE_R_NO_STORE_OBJECT_FUNCTION		 125
555656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#define STORE_R_NO_STORE_OBJECT_NUMBER_FUNCTION		 126
556656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#define STORE_R_NO_VALUE				 130
557656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project
558656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#ifdef  __cplusplus
559656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project}
560656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#endif
561656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#endif
562