1656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project/* crypto/store/str_locl.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_LOCL_H
60656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#define HEADER_STORE_LOCL_H
61656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project
62656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#include <openssl/crypto.h>
63656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#include <openssl/store.h>
64656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project
65656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#ifdef  __cplusplus
66656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Projectextern "C" {
67656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#endif
68656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project
69656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Projectstruct store_method_st
70656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	{
71656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	char *name;
72656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project
73656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	/* All the functions return a positive integer or non-NULL for success
74656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	   and 0, a negative integer or NULL for failure */
75656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project
76656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	/* Initialise the STORE with private data */
77656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	STORE_INITIALISE_FUNC_PTR init;
78656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	/* Initialise the STORE with private data */
79656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	STORE_CLEANUP_FUNC_PTR clean;
80656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	/* Generate an object of a given type */
81656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	STORE_GENERATE_OBJECT_FUNC_PTR generate_object;
82656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	/* Get an object of a given type.  This function isn't really very
83656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	   useful since the listing functions (below) can be used for the
84656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	   same purpose and are much more general. */
85656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	STORE_GET_OBJECT_FUNC_PTR get_object;
86656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	/* Store an object of a given type. */
87656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	STORE_STORE_OBJECT_FUNC_PTR store_object;
88656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	/* Modify the attributes bound to an object of a given type. */
89656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	STORE_MODIFY_OBJECT_FUNC_PTR modify_object;
90656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	/* Revoke an object of a given type. */
91656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	STORE_HANDLE_OBJECT_FUNC_PTR revoke_object;
92656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	/* Delete an object of a given type. */
93656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	STORE_HANDLE_OBJECT_FUNC_PTR delete_object;
94656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	/* List a bunch of objects of a given type and with the associated
95656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	   attributes. */
96656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	STORE_START_OBJECT_FUNC_PTR list_object_start;
97656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	STORE_NEXT_OBJECT_FUNC_PTR list_object_next;
98656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	STORE_END_OBJECT_FUNC_PTR list_object_end;
99656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	STORE_END_OBJECT_FUNC_PTR list_object_endp;
100656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	/* Store-level function to make any necessary update operations. */
101656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	STORE_GENERIC_FUNC_PTR update_store;
102656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	/* Store-level function to get exclusive access to the store. */
103656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	STORE_GENERIC_FUNC_PTR lock_store;
104656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	/* Store-level function to release exclusive access to the store. */
105656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	STORE_GENERIC_FUNC_PTR unlock_store;
106656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project
107656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	/* Generic control function */
108656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	STORE_CTRL_FUNC_PTR ctrl;
109656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	};
110656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project
111656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Projectstruct store_st
112656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	{
113656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	const STORE_METHOD *meth;
114656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	/* functional reference if 'meth' is ENGINE-provided */
115656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	ENGINE *engine;
116656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project
117656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	CRYPTO_EX_DATA ex_data;
118656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	int references;
119656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	};
120656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#ifdef  __cplusplus
121656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project}
122656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#endif
123656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project
124656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#endif
125