str_meth.c revision 296465
1/* crypto/store/str_meth.c -*- mode:C; c-file-style: "eay" -*- */ 2/* 3 * Written by Richard Levitte (richard@levitte.org) for the OpenSSL project 4 * 2003. 5 */ 6/* ==================================================================== 7 * Copyright (c) 2003 The OpenSSL Project. All rights reserved. 8 * 9 * Redistribution and use in source and binary forms, with or without 10 * modification, are permitted provided that the following conditions 11 * are met: 12 * 13 * 1. Redistributions of source code must retain the above copyright 14 * notice, this list of conditions and the following disclaimer. 15 * 16 * 2. Redistributions in binary form must reproduce the above copyright 17 * notice, this list of conditions and the following disclaimer in 18 * the documentation and/or other materials provided with the 19 * distribution. 20 * 21 * 3. All advertising materials mentioning features or use of this 22 * software must display the following acknowledgment: 23 * "This product includes software developed by the OpenSSL Project 24 * for use in the OpenSSL Toolkit. (http://www.openssl.org/)" 25 * 26 * 4. The names "OpenSSL Toolkit" and "OpenSSL Project" must not be used to 27 * endorse or promote products derived from this software without 28 * prior written permission. For written permission, please contact 29 * openssl-core@openssl.org. 30 * 31 * 5. Products derived from this software may not be called "OpenSSL" 32 * nor may "OpenSSL" appear in their names without prior written 33 * permission of the OpenSSL Project. 34 * 35 * 6. Redistributions of any form whatsoever must retain the following 36 * acknowledgment: 37 * "This product includes software developed by the OpenSSL Project 38 * for use in the OpenSSL Toolkit (http://www.openssl.org/)" 39 * 40 * THIS SOFTWARE IS PROVIDED BY THE OpenSSL PROJECT ``AS IS'' AND ANY 41 * EXPRESSED OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 42 * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR 43 * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE OpenSSL PROJECT OR 44 * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, 45 * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT 46 * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; 47 * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 48 * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, 49 * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) 50 * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED 51 * OF THE POSSIBILITY OF SUCH DAMAGE. 52 * ==================================================================== 53 * 54 * This product includes cryptographic software written by Eric Young 55 * (eay@cryptsoft.com). This product includes software written by Tim 56 * Hudson (tjh@cryptsoft.com). 57 * 58 */ 59 60#include <string.h> 61#include <openssl/buffer.h> 62#include "str_locl.h" 63 64STORE_METHOD *STORE_create_method(char *name) 65{ 66 STORE_METHOD *store_method = 67 (STORE_METHOD *)OPENSSL_malloc(sizeof(STORE_METHOD)); 68 69 if (store_method) { 70 memset(store_method, 0, sizeof(*store_method)); 71 store_method->name = BUF_strdup(name); 72 } 73 return store_method; 74} 75 76/* 77 * BIG FSCKING WARNING!!!! If you use this on a statically allocated method 78 * (that is, it hasn't been allocated using STORE_create_method(), you 79 * deserve anything Murphy can throw at you and more! You have been warned. 80 */ 81void STORE_destroy_method(STORE_METHOD *store_method) 82{ 83 if (!store_method) 84 return; 85 OPENSSL_free(store_method->name); 86 store_method->name = NULL; 87 OPENSSL_free(store_method); 88} 89 90int STORE_method_set_initialise_function(STORE_METHOD *sm, 91 STORE_INITIALISE_FUNC_PTR init_f) 92{ 93 sm->init = init_f; 94 return 1; 95} 96 97int STORE_method_set_cleanup_function(STORE_METHOD *sm, 98 STORE_CLEANUP_FUNC_PTR clean_f) 99{ 100 sm->clean = clean_f; 101 return 1; 102} 103 104int STORE_method_set_generate_function(STORE_METHOD *sm, 105 STORE_GENERATE_OBJECT_FUNC_PTR 106 generate_f) 107{ 108 sm->generate_object = generate_f; 109 return 1; 110} 111 112int STORE_method_set_get_function(STORE_METHOD *sm, 113 STORE_GET_OBJECT_FUNC_PTR get_f) 114{ 115 sm->get_object = get_f; 116 return 1; 117} 118 119int STORE_method_set_store_function(STORE_METHOD *sm, 120 STORE_STORE_OBJECT_FUNC_PTR store_f) 121{ 122 sm->store_object = store_f; 123 return 1; 124} 125 126int STORE_method_set_modify_function(STORE_METHOD *sm, 127 STORE_MODIFY_OBJECT_FUNC_PTR modify_f) 128{ 129 sm->modify_object = modify_f; 130 return 1; 131} 132 133int STORE_method_set_revoke_function(STORE_METHOD *sm, 134 STORE_HANDLE_OBJECT_FUNC_PTR revoke_f) 135{ 136 sm->revoke_object = revoke_f; 137 return 1; 138} 139 140int STORE_method_set_delete_function(STORE_METHOD *sm, 141 STORE_HANDLE_OBJECT_FUNC_PTR delete_f) 142{ 143 sm->delete_object = delete_f; 144 return 1; 145} 146 147int STORE_method_set_list_start_function(STORE_METHOD *sm, 148 STORE_START_OBJECT_FUNC_PTR 149 list_start_f) 150{ 151 sm->list_object_start = list_start_f; 152 return 1; 153} 154 155int STORE_method_set_list_next_function(STORE_METHOD *sm, 156 STORE_NEXT_OBJECT_FUNC_PTR 157 list_next_f) 158{ 159 sm->list_object_next = list_next_f; 160 return 1; 161} 162 163int STORE_method_set_list_end_function(STORE_METHOD *sm, 164 STORE_END_OBJECT_FUNC_PTR list_end_f) 165{ 166 sm->list_object_end = list_end_f; 167 return 1; 168} 169 170int STORE_method_set_update_store_function(STORE_METHOD *sm, 171 STORE_GENERIC_FUNC_PTR update_f) 172{ 173 sm->update_store = update_f; 174 return 1; 175} 176 177int STORE_method_set_lock_store_function(STORE_METHOD *sm, 178 STORE_GENERIC_FUNC_PTR lock_f) 179{ 180 sm->lock_store = lock_f; 181 return 1; 182} 183 184int STORE_method_set_unlock_store_function(STORE_METHOD *sm, 185 STORE_GENERIC_FUNC_PTR unlock_f) 186{ 187 sm->unlock_store = unlock_f; 188 return 1; 189} 190 191int STORE_method_set_ctrl_function(STORE_METHOD *sm, 192 STORE_CTRL_FUNC_PTR ctrl_f) 193{ 194 sm->ctrl = ctrl_f; 195 return 1; 196} 197 198STORE_INITIALISE_FUNC_PTR STORE_method_get_initialise_function(STORE_METHOD 199 *sm) 200{ 201 return sm->init; 202} 203 204STORE_CLEANUP_FUNC_PTR STORE_method_get_cleanup_function(STORE_METHOD *sm) 205{ 206 return sm->clean; 207} 208 209STORE_GENERATE_OBJECT_FUNC_PTR STORE_method_get_generate_function(STORE_METHOD 210 *sm) 211{ 212 return sm->generate_object; 213} 214 215STORE_GET_OBJECT_FUNC_PTR STORE_method_get_get_function(STORE_METHOD *sm) 216{ 217 return sm->get_object; 218} 219 220STORE_STORE_OBJECT_FUNC_PTR STORE_method_get_store_function(STORE_METHOD *sm) 221{ 222 return sm->store_object; 223} 224 225STORE_MODIFY_OBJECT_FUNC_PTR STORE_method_get_modify_function(STORE_METHOD 226 *sm) 227{ 228 return sm->modify_object; 229} 230 231STORE_HANDLE_OBJECT_FUNC_PTR STORE_method_get_revoke_function(STORE_METHOD 232 *sm) 233{ 234 return sm->revoke_object; 235} 236 237STORE_HANDLE_OBJECT_FUNC_PTR STORE_method_get_delete_function(STORE_METHOD 238 *sm) 239{ 240 return sm->delete_object; 241} 242 243STORE_START_OBJECT_FUNC_PTR STORE_method_get_list_start_function(STORE_METHOD 244 *sm) 245{ 246 return sm->list_object_start; 247} 248 249STORE_NEXT_OBJECT_FUNC_PTR STORE_method_get_list_next_function(STORE_METHOD 250 *sm) 251{ 252 return sm->list_object_next; 253} 254 255STORE_END_OBJECT_FUNC_PTR STORE_method_get_list_end_function(STORE_METHOD *sm) 256{ 257 return sm->list_object_end; 258} 259 260STORE_GENERIC_FUNC_PTR STORE_method_get_update_store_function(STORE_METHOD 261 *sm) 262{ 263 return sm->update_store; 264} 265 266STORE_GENERIC_FUNC_PTR STORE_method_get_lock_store_function(STORE_METHOD *sm) 267{ 268 return sm->lock_store; 269} 270 271STORE_GENERIC_FUNC_PTR STORE_method_get_unlock_store_function(STORE_METHOD 272 *sm) 273{ 274 return sm->unlock_store; 275} 276 277STORE_CTRL_FUNC_PTR STORE_method_get_ctrl_function(STORE_METHOD *sm) 278{ 279 return sm->ctrl; 280} 281