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