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