epoc32/include/stdapis/openssl/store.h
author William Roberts <williamr@symbian.org>
Wed, 31 Mar 2010 12:33:34 +0100
branchSymbian3
changeset 4 837f303aceeb
parent 0 061f57f2323e
permissions -rw-r--r--
Current Symbian^3 public API header files (from PDK 3.0.h)
This is the epoc32/include tree with the "platform" subtrees removed, and
all but a selected few mbg and rsg files removed.
williamr@2
     1
/* crypto/store/store.h -*- mode:C; c-file-style: "eay" -*- */
williamr@2
     2
/* Written by Richard Levitte (richard@levitte.org) for the OpenSSL
williamr@2
     3
 * project 2003.
williamr@2
     4
 */
williamr@2
     5
/* ====================================================================
williamr@2
     6
 * Copyright (c) 2003 The OpenSSL Project.  All rights reserved.
williamr@2
     7
 *
williamr@2
     8
 * Redistribution and use in source and binary forms, with or without
williamr@2
     9
 * modification, are permitted provided that the following conditions
williamr@2
    10
 * are met:
williamr@2
    11
 *
williamr@2
    12
 * 1. Redistributions of source code must retain the above copyright
williamr@2
    13
 *    notice, this list of conditions and the following disclaimer. 
williamr@2
    14
 *
williamr@2
    15
 * 2. Redistributions in binary form must reproduce the above copyright
williamr@2
    16
 *    notice, this list of conditions and the following disclaimer in
williamr@2
    17
 *    the documentation and/or other materials provided with the
williamr@2
    18
 *    distribution.
williamr@2
    19
 *
williamr@2
    20
 * 3. All advertising materials mentioning features or use of this
williamr@2
    21
 *    software must display the following acknowledgment:
williamr@2
    22
 *    "This product includes software developed by the OpenSSL Project
williamr@2
    23
 *    for use in the OpenSSL Toolkit. (http://www.openssl.org/)"
williamr@2
    24
 *
williamr@2
    25
 * 4. The names "OpenSSL Toolkit" and "OpenSSL Project" must not be used to
williamr@2
    26
 *    endorse or promote products derived from this software without
williamr@2
    27
 *    prior written permission. For written permission, please contact
williamr@2
    28
 *    openssl-core@openssl.org.
williamr@2
    29
 *
williamr@2
    30
 * 5. Products derived from this software may not be called "OpenSSL"
williamr@2
    31
 *    nor may "OpenSSL" appear in their names without prior written
williamr@2
    32
 *    permission of the OpenSSL Project.
williamr@2
    33
 *
williamr@2
    34
 * 6. Redistributions of any form whatsoever must retain the following
williamr@2
    35
 *    acknowledgment:
williamr@2
    36
 *    "This product includes software developed by the OpenSSL Project
williamr@2
    37
 *    for use in the OpenSSL Toolkit (http://www.openssl.org/)"
williamr@2
    38
 *
williamr@2
    39
 * THIS SOFTWARE IS PROVIDED BY THE OpenSSL PROJECT ``AS IS'' AND ANY
williamr@2
    40
 * EXPRESSED OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
williamr@2
    41
 * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
williamr@2
    42
 * PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL THE OpenSSL PROJECT OR
williamr@2
    43
 * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
williamr@2
    44
 * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
williamr@2
    45
 * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
williamr@2
    46
 * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
williamr@2
    47
 * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
williamr@2
    48
 * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
williamr@2
    49
 * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED
williamr@2
    50
 * OF THE POSSIBILITY OF SUCH DAMAGE.
williamr@2
    51
 * ====================================================================
williamr@2
    52
 *
williamr@2
    53
 * This product includes cryptographic software written by Eric Young
williamr@2
    54
 * (eay@cryptsoft.com).  This product includes software written by Tim
williamr@2
    55
 * Hudson (tjh@cryptsoft.com).
williamr@2
    56
 *
williamr@2
    57
 */
williamr@2
    58
/*
williamr@2
    59
 © Portions copyright (c) 2006 Nokia Corporation.  All rights reserved.
williamr@2
    60
 */
williamr@2
    61
williamr@2
    62
#ifndef HEADER_STORE_H
williamr@2
    63
#define HEADER_STORE_H
williamr@2
    64
williamr@2
    65
#if (defined(__SYMBIAN32__) && !defined(SYMBIAN))
williamr@2
    66
#define SYMBIAN
williamr@2
    67
#endif
williamr@2
    68
williamr@2
    69
#ifdef SYMBIAN
williamr@2
    70
#include <e32def.h>
williamr@2
    71
#endif
williamr@2
    72
#include <openssl/ossl_typ.h>
williamr@2
    73
#ifndef OPENSSL_NO_DEPRECATED
williamr@2
    74
#include <openssl/evp.h>
williamr@2
    75
#include <openssl/bn.h>
williamr@2
    76
#include <openssl/x509.h>
williamr@2
    77
#endif
williamr@2
    78
williamr@2
    79
#ifdef  __cplusplus
williamr@2
    80
extern "C" {
williamr@2
    81
#endif
williamr@2
    82
williamr@2
    83
/* Already defined in ossl_typ.h */
williamr@2
    84
/* typedef struct store_st STORE; */
williamr@2
    85
/* typedef struct store_method_st STORE_METHOD; */
williamr@2
    86
williamr@2
    87
williamr@2
    88
/* All the following functions return 0, a negative number or NULL on error.
williamr@2
    89
   When everything is fine, they return a positive value or a non-NULL
williamr@2
    90
   pointer, all depending on their purpose. */
williamr@2
    91
williamr@2
    92
/* Creators and destructor.   */
williamr@2
    93
IMPORT_C STORE *STORE_new_method(const STORE_METHOD *method);
williamr@2
    94
IMPORT_C STORE *STORE_new_engine(ENGINE *engine);
williamr@2
    95
IMPORT_C void STORE_free(STORE *ui);
williamr@2
    96
williamr@2
    97
williamr@2
    98
/* Give a user interface parametrised control commands.  This can be used to
williamr@2
    99
   send down an integer, a data pointer or a function pointer, as well as
williamr@2
   100
   be used to get information from a STORE. */
williamr@2
   101
IMPORT_C int STORE_ctrl(STORE *store, int cmd, long i, void *p, void (*f)(void));
williamr@2
   102
williamr@2
   103
/* A control to set the directory with keys and certificates.  Used by the
williamr@2
   104
   built-in directory level method. */
williamr@2
   105
#define STORE_CTRL_SET_DIRECTORY	0x0001
williamr@2
   106
/* A control to set a file to load.  Used by the built-in file level method. */
williamr@2
   107
#define STORE_CTRL_SET_FILE		0x0002
williamr@2
   108
/* A control to set a configuration file to load.  Can be used by any method
williamr@2
   109
   that wishes to load a configuration file. */
williamr@2
   110
#define STORE_CTRL_SET_CONF_FILE	0x0003
williamr@2
   111
/* A control to set a the section of the loaded configuration file.  Can be
williamr@2
   112
   used by any method that wishes to load a configuration file. */
williamr@2
   113
#define STORE_CTRL_SET_CONF_SECTION	0x0004
williamr@2
   114
williamr@2
   115
williamr@2
   116
/* Some methods may use extra data */
williamr@2
   117
#define STORE_set_app_data(s,arg)	STORE_set_ex_data(s,0,arg)
williamr@2
   118
#define STORE_get_app_data(s)		STORE_get_ex_data(s,0)
williamr@2
   119
IMPORT_C int STORE_get_ex_new_index(long argl, void *argp, CRYPTO_EX_new *new_func,
williamr@2
   120
	CRYPTO_EX_dup *dup_func, CRYPTO_EX_free *free_func);
williamr@2
   121
IMPORT_C int STORE_set_ex_data(STORE *r,int idx,void *arg);
williamr@2
   122
IMPORT_C void *STORE_get_ex_data(STORE *r, int idx);
williamr@2
   123
williamr@2
   124
/* Use specific methods instead of the built-in one */
williamr@2
   125
IMPORT_C const STORE_METHOD *STORE_get_method(STORE *store);
williamr@2
   126
IMPORT_C const STORE_METHOD *STORE_set_method(STORE *store, const STORE_METHOD *meth);
williamr@2
   127
williamr@2
   128
/* The standard OpenSSL methods. */
williamr@2
   129
/* This is the in-memory method.  It does everything except revoking and updating,
williamr@2
   130
   and is of course volatile.  It's used by other methods that have an in-memory
williamr@2
   131
   cache. */
williamr@2
   132
IMPORT_C const STORE_METHOD *STORE_Memory(void);
williamr@2
   133
#if 0 /* Not yet implemented */
williamr@2
   134
/* This is the directory store.  It does everything except revoking and updating,
williamr@2
   135
   and uses STORE_Memory() to cache things in memory. */
williamr@2
   136
IMPORT_C const STORE_METHOD *STORE_Directory(void);
williamr@2
   137
/* This is the file store.  It does everything except revoking and updating,
williamr@2
   138
   and uses STORE_Memory() to cache things in memory.  Certificates are added
williamr@2
   139
   to it with the store operation, and it will only get cached certificates. */
williamr@2
   140
IMPORT_C const STORE_METHOD *STORE_File(void);
williamr@2
   141
#endif
williamr@2
   142
williamr@2
   143
/* Store functions take a type code for the type of data they should store
williamr@2
   144
   or fetch */
williamr@2
   145
typedef enum STORE_object_types
williamr@2
   146
	{
williamr@2
   147
	STORE_OBJECT_TYPE_X509_CERTIFICATE=	0x01, /* X509 * */
williamr@2
   148
	STORE_OBJECT_TYPE_X509_CRL=		0x02, /* X509_CRL * */
williamr@2
   149
	STORE_OBJECT_TYPE_PRIVATE_KEY=		0x03, /* EVP_PKEY * */
williamr@2
   150
	STORE_OBJECT_TYPE_PUBLIC_KEY=		0x04, /* EVP_PKEY * */
williamr@2
   151
	STORE_OBJECT_TYPE_NUMBER=		0x05, /* BIGNUM * */
williamr@2
   152
	STORE_OBJECT_TYPE_ARBITRARY=		0x06, /* BUF_MEM * */
williamr@2
   153
	STORE_OBJECT_TYPE_NUM=			0x06  /* The amount of known
williamr@2
   154
							 object types */
williamr@2
   155
	} STORE_OBJECT_TYPES;
williamr@2
   156
/* List of text strings corresponding to the object types. */
williamr@2
   157
extern const char * const STORE_object_type_string[STORE_OBJECT_TYPE_NUM+1];
williamr@2
   158
williamr@2
   159
/* Some store functions take a parameter list.  Those parameters come with
williamr@2
   160
   one of the following codes. The comments following the codes below indicate
williamr@2
   161
   what type the value should be a pointer to. */
williamr@2
   162
typedef enum STORE_params
williamr@2
   163
	{
williamr@2
   164
	STORE_PARAM_EVP_TYPE=			0x01, /* int */
williamr@2
   165
	STORE_PARAM_BITS=			0x02, /* size_t */
williamr@2
   166
	STORE_PARAM_KEY_PARAMETERS=		0x03, /* ??? */
williamr@2
   167
	STORE_PARAM_KEY_NO_PARAMETERS=		0x04, /* N/A */
williamr@2
   168
	STORE_PARAM_AUTH_PASSPHRASE=		0x05, /* char * */
williamr@2
   169
	STORE_PARAM_AUTH_KRB5_TICKET=		0x06, /* void * */
williamr@2
   170
	STORE_PARAM_TYPE_NUM=			0x06  /* The amount of known
williamr@2
   171
							 parameter types */
williamr@2
   172
	} STORE_PARAM_TYPES;
williamr@2
   173
/* Parameter value sizes.  -1 means unknown, anything else is the required size. */
williamr@2
   174
extern const int STORE_param_sizes[STORE_PARAM_TYPE_NUM+1];
williamr@2
   175
williamr@2
   176
/* Store functions take attribute lists.  Those attributes come with codes.
williamr@2
   177
   The comments following the codes below indicate what type the value should
williamr@2
   178
   be a pointer to. */
williamr@2
   179
typedef enum STORE_attribs
williamr@2
   180
	{
williamr@2
   181
	STORE_ATTR_END=				0x00,
williamr@2
   182
	STORE_ATTR_FRIENDLYNAME=		0x01, /* C string */
williamr@2
   183
	STORE_ATTR_KEYID=			0x02, /* 160 bit string (SHA1) */
williamr@2
   184
	STORE_ATTR_ISSUERKEYID=			0x03, /* 160 bit string (SHA1) */
williamr@2
   185
	STORE_ATTR_SUBJECTKEYID=		0x04, /* 160 bit string (SHA1) */
williamr@2
   186
	STORE_ATTR_ISSUERSERIALHASH=		0x05, /* 160 bit string (SHA1) */
williamr@2
   187
	STORE_ATTR_ISSUER=			0x06, /* X509_NAME * */
williamr@2
   188
	STORE_ATTR_SERIAL=			0x07, /* BIGNUM * */
williamr@2
   189
	STORE_ATTR_SUBJECT=			0x08, /* X509_NAME * */
williamr@2
   190
	STORE_ATTR_CERTHASH=			0x09, /* 160 bit string (SHA1) */
williamr@2
   191
	STORE_ATTR_EMAIL=			0x0a, /* C string */
williamr@2
   192
	STORE_ATTR_FILENAME=			0x0b, /* C string */
williamr@2
   193
	STORE_ATTR_TYPE_NUM=			0x0b, /* The amount of known
williamr@2
   194
							 attribute types */
williamr@2
   195
	STORE_ATTR_OR=				0xff  /* This is a special
williamr@2
   196
							 separator, which
williamr@2
   197
							 expresses the OR
williamr@2
   198
							 operation.  */
williamr@2
   199
	} STORE_ATTR_TYPES;
williamr@2
   200
/* Attribute value sizes.  -1 means unknown, anything else is the required size. */
williamr@2
   201
extern const int STORE_attr_sizes[STORE_ATTR_TYPE_NUM+1];
williamr@2
   202
williamr@2
   203
typedef enum STORE_certificate_status
williamr@2
   204
	{
williamr@2
   205
	STORE_X509_VALID=			0x00,
williamr@2
   206
	STORE_X509_EXPIRED=			0x01,
williamr@2
   207
	STORE_X509_SUSPENDED=			0x02,
williamr@2
   208
	STORE_X509_REVOKED=			0x03
williamr@2
   209
	} STORE_CERTIFICATE_STATUS;
williamr@2
   210
williamr@2
   211
/* Engine store functions will return a structure that contains all the necessary
williamr@2
   212
 * information, including revokation status for certificates.  This is really not
williamr@2
   213
 * needed for application authors, as the ENGINE framework functions will extract
williamr@2
   214
 * the OpenSSL-specific information when at all possible.  However, for engine
williamr@2
   215
 * authors, it's crucial to know this structure.  */
williamr@2
   216
typedef struct STORE_OBJECT_st
williamr@2
   217
	{
williamr@2
   218
	STORE_OBJECT_TYPES type;
williamr@2
   219
	union
williamr@2
   220
		{
williamr@2
   221
		struct
williamr@2
   222
			{
williamr@2
   223
			STORE_CERTIFICATE_STATUS status;
williamr@2
   224
			X509 *certificate;
williamr@2
   225
			} x509;
williamr@2
   226
		X509_CRL *crl;
williamr@2
   227
		EVP_PKEY *key;
williamr@2
   228
		BIGNUM *number;
williamr@2
   229
		BUF_MEM *arbitrary;
williamr@2
   230
		} data;
williamr@2
   231
	} STORE_OBJECT;
williamr@2
   232
DECLARE_STACK_OF(STORE_OBJECT)
williamr@2
   233
STORE_OBJECT *STORE_OBJECT_new(void);
williamr@2
   234
void STORE_OBJECT_free(STORE_OBJECT *data);
williamr@2
   235
williamr@2
   236
williamr@2
   237
williamr@2
   238
/* The following functions handle the storage. They return 0, a negative number
williamr@2
   239
   or NULL on error, anything else on success. */
williamr@2
   240
IMPORT_C X509 *STORE_get_certificate(STORE *e, OPENSSL_ITEM attributes[],
williamr@2
   241
	OPENSSL_ITEM parameters[]);
williamr@2
   242
IMPORT_C int STORE_store_certificate(STORE *e, X509 *data, OPENSSL_ITEM attributes[],
williamr@2
   243
	OPENSSL_ITEM parameters[]);
williamr@2
   244
IMPORT_C int STORE_modify_certificate(STORE *e, OPENSSL_ITEM search_attributes[],
williamr@2
   245
	OPENSSL_ITEM add_attributes[], OPENSSL_ITEM modify_attributes[],
williamr@2
   246
	OPENSSL_ITEM delete_attributes[], OPENSSL_ITEM parameters[]);
williamr@2
   247
IMPORT_C int STORE_revoke_certificate(STORE *e, OPENSSL_ITEM attributes[],
williamr@2
   248
	OPENSSL_ITEM parameters[]);
williamr@2
   249
IMPORT_C int STORE_delete_certificate(STORE *e, OPENSSL_ITEM attributes[],
williamr@2
   250
	OPENSSL_ITEM parameters[]);
williamr@2
   251
IMPORT_C void *STORE_list_certificate_start(STORE *e, OPENSSL_ITEM attributes[],
williamr@2
   252
	OPENSSL_ITEM parameters[]);
williamr@2
   253
IMPORT_C X509 *STORE_list_certificate_next(STORE *e, void *handle);
williamr@2
   254
IMPORT_C int STORE_list_certificate_end(STORE *e, void *handle);
williamr@2
   255
IMPORT_C int STORE_list_certificate_endp(STORE *e, void *handle);
williamr@2
   256
IMPORT_C EVP_PKEY *STORE_generate_key(STORE *e, OPENSSL_ITEM attributes[],
williamr@2
   257
	OPENSSL_ITEM parameters[]);
williamr@2
   258
IMPORT_C EVP_PKEY *STORE_get_private_key(STORE *e, OPENSSL_ITEM attributes[],
williamr@2
   259
	OPENSSL_ITEM parameters[]);
williamr@2
   260
IMPORT_C int STORE_store_private_key(STORE *e, EVP_PKEY *data,
williamr@2
   261
	OPENSSL_ITEM attributes[], OPENSSL_ITEM parameters[]);
williamr@2
   262
IMPORT_C int STORE_modify_private_key(STORE *e, OPENSSL_ITEM search_attributes[],
williamr@2
   263
	OPENSSL_ITEM add_sttributes[], OPENSSL_ITEM modify_attributes[],
williamr@2
   264
	OPENSSL_ITEM delete_attributes[], OPENSSL_ITEM parameters[]);
williamr@2
   265
IMPORT_C int STORE_revoke_private_key(STORE *e, OPENSSL_ITEM attributes[],
williamr@2
   266
	OPENSSL_ITEM parameters[]);
williamr@2
   267
IMPORT_C int STORE_delete_private_key(STORE *e, OPENSSL_ITEM attributes[],
williamr@2
   268
	OPENSSL_ITEM parameters[]);
williamr@2
   269
IMPORT_C void *STORE_list_private_key_start(STORE *e, OPENSSL_ITEM attributes[],
williamr@2
   270
	OPENSSL_ITEM parameters[]);
williamr@2
   271
IMPORT_C EVP_PKEY *STORE_list_private_key_next(STORE *e, void *handle);
williamr@2
   272
IMPORT_C int STORE_list_private_key_end(STORE *e, void *handle);
williamr@2
   273
IMPORT_C int STORE_list_private_key_endp(STORE *e, void *handle);
williamr@2
   274
IMPORT_C EVP_PKEY *STORE_get_public_key(STORE *e, OPENSSL_ITEM attributes[],
williamr@2
   275
	OPENSSL_ITEM parameters[]);
williamr@2
   276
IMPORT_C int STORE_store_public_key(STORE *e, EVP_PKEY *data, OPENSSL_ITEM attributes[],
williamr@2
   277
	OPENSSL_ITEM parameters[]);
williamr@2
   278
IMPORT_C int STORE_modify_public_key(STORE *e, OPENSSL_ITEM search_attributes[],
williamr@2
   279
	OPENSSL_ITEM add_sttributes[], OPENSSL_ITEM modify_attributes[],
williamr@2
   280
	OPENSSL_ITEM delete_attributes[], OPENSSL_ITEM parameters[]);
williamr@2
   281
IMPORT_C int STORE_revoke_public_key(STORE *e, OPENSSL_ITEM attributes[],
williamr@2
   282
	OPENSSL_ITEM parameters[]);
williamr@2
   283
IMPORT_C int STORE_delete_public_key(STORE *e, OPENSSL_ITEM attributes[],
williamr@2
   284
	OPENSSL_ITEM parameters[]);
williamr@2
   285
IMPORT_C void *STORE_list_public_key_start(STORE *e, OPENSSL_ITEM attributes[],
williamr@2
   286
	OPENSSL_ITEM parameters[]);
williamr@2
   287
IMPORT_C EVP_PKEY *STORE_list_public_key_next(STORE *e, void *handle);
williamr@2
   288
IMPORT_C int STORE_list_public_key_end(STORE *e, void *handle);
williamr@2
   289
IMPORT_C int STORE_list_public_key_endp(STORE *e, void *handle);
williamr@2
   290
IMPORT_C X509_CRL *STORE_generate_crl(STORE *e, OPENSSL_ITEM attributes[],
williamr@2
   291
	OPENSSL_ITEM parameters[]);
williamr@2
   292
IMPORT_C X509_CRL *STORE_get_crl(STORE *e, OPENSSL_ITEM attributes[],
williamr@2
   293
	OPENSSL_ITEM parameters[]);
williamr@2
   294
IMPORT_C int STORE_store_crl(STORE *e, X509_CRL *data, OPENSSL_ITEM attributes[],
williamr@2
   295
	OPENSSL_ITEM parameters[]);
williamr@2
   296
IMPORT_C int STORE_modify_crl(STORE *e, OPENSSL_ITEM search_attributes[],
williamr@2
   297
	OPENSSL_ITEM add_sttributes[], OPENSSL_ITEM modify_attributes[],
williamr@2
   298
	OPENSSL_ITEM delete_attributes[], OPENSSL_ITEM parameters[]);
williamr@2
   299
IMPORT_C int STORE_delete_crl(STORE *e, OPENSSL_ITEM attributes[],
williamr@2
   300
	OPENSSL_ITEM parameters[]);
williamr@2
   301
IMPORT_C void *STORE_list_crl_start(STORE *e, OPENSSL_ITEM attributes[],
williamr@2
   302
	OPENSSL_ITEM parameters[]);
williamr@2
   303
IMPORT_C X509_CRL *STORE_list_crl_next(STORE *e, void *handle);
williamr@2
   304
IMPORT_C int STORE_list_crl_end(STORE *e, void *handle);
williamr@2
   305
IMPORT_C int STORE_list_crl_endp(STORE *e, void *handle);
williamr@2
   306
IMPORT_C int STORE_store_number(STORE *e, BIGNUM *data, OPENSSL_ITEM attributes[],
williamr@2
   307
	OPENSSL_ITEM parameters[]);
williamr@2
   308
IMPORT_C int STORE_modify_number(STORE *e, OPENSSL_ITEM search_attributes[],
williamr@2
   309
	OPENSSL_ITEM add_sttributes[], OPENSSL_ITEM modify_attributes[],
williamr@2
   310
	OPENSSL_ITEM delete_attributes[], OPENSSL_ITEM parameters[]);
williamr@2
   311
IMPORT_C BIGNUM *STORE_get_number(STORE *e, OPENSSL_ITEM attributes[],
williamr@2
   312
	OPENSSL_ITEM parameters[]);
williamr@2
   313
IMPORT_C int STORE_delete_number(STORE *e, OPENSSL_ITEM attributes[],
williamr@2
   314
	OPENSSL_ITEM parameters[]);
williamr@2
   315
IMPORT_C int STORE_store_arbitrary(STORE *e, BUF_MEM *data, OPENSSL_ITEM attributes[],
williamr@2
   316
	OPENSSL_ITEM parameters[]);
williamr@2
   317
IMPORT_C int STORE_modify_arbitrary(STORE *e, OPENSSL_ITEM search_attributes[],
williamr@2
   318
	OPENSSL_ITEM add_sttributes[], OPENSSL_ITEM modify_attributes[],
williamr@2
   319
	OPENSSL_ITEM delete_attributes[], OPENSSL_ITEM parameters[]);
williamr@2
   320
IMPORT_C BUF_MEM *STORE_get_arbitrary(STORE *e, OPENSSL_ITEM attributes[],
williamr@2
   321
	OPENSSL_ITEM parameters[]);
williamr@2
   322
IMPORT_C int STORE_delete_arbitrary(STORE *e, OPENSSL_ITEM attributes[],
williamr@2
   323
	OPENSSL_ITEM parameters[]);
williamr@2
   324
williamr@2
   325
williamr@2
   326
/* Create and manipulate methods */
williamr@2
   327
IMPORT_C STORE_METHOD *STORE_create_method(char *name);
williamr@2
   328
IMPORT_C void STORE_destroy_method(STORE_METHOD *store_method);
williamr@2
   329
williamr@2
   330
/* These callback types are use for store handlers */
williamr@2
   331
typedef int (*STORE_INITIALISE_FUNC_PTR)(STORE *);
williamr@2
   332
typedef void (*STORE_CLEANUP_FUNC_PTR)(STORE *);
williamr@2
   333
typedef STORE_OBJECT *(*STORE_GENERATE_OBJECT_FUNC_PTR)(STORE *, STORE_OBJECT_TYPES type, OPENSSL_ITEM attributes[], OPENSSL_ITEM parameters[]);
williamr@2
   334
typedef STORE_OBJECT *(*STORE_GET_OBJECT_FUNC_PTR)(STORE *, STORE_OBJECT_TYPES type, OPENSSL_ITEM attributes[], OPENSSL_ITEM parameters[]);
williamr@2
   335
typedef void *(*STORE_START_OBJECT_FUNC_PTR)(STORE *, STORE_OBJECT_TYPES type, OPENSSL_ITEM attributes[], OPENSSL_ITEM parameters[]);
williamr@2
   336
typedef STORE_OBJECT *(*STORE_NEXT_OBJECT_FUNC_PTR)(STORE *, void *handle);
williamr@2
   337
typedef int (*STORE_END_OBJECT_FUNC_PTR)(STORE *, void *handle);
williamr@2
   338
typedef int (*STORE_HANDLE_OBJECT_FUNC_PTR)(STORE *, STORE_OBJECT_TYPES type, OPENSSL_ITEM attributes[], OPENSSL_ITEM parameters[]);
williamr@2
   339
typedef int (*STORE_STORE_OBJECT_FUNC_PTR)(STORE *, STORE_OBJECT_TYPES type, STORE_OBJECT *data, OPENSSL_ITEM attributes[], OPENSSL_ITEM parameters[]);
williamr@2
   340
typedef 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[]);
williamr@2
   341
typedef int (*STORE_GENERIC_FUNC_PTR)(STORE *, OPENSSL_ITEM attributes[], OPENSSL_ITEM parameters[]);
williamr@2
   342
typedef int (*STORE_CTRL_FUNC_PTR)(STORE *, int cmd, long l, void *p, void (*f)(void));
williamr@2
   343
williamr@2
   344
IMPORT_C int STORE_method_set_initialise_function(STORE_METHOD *sm, STORE_INITIALISE_FUNC_PTR init_f);
williamr@2
   345
IMPORT_C int STORE_method_set_cleanup_function(STORE_METHOD *sm, STORE_CLEANUP_FUNC_PTR clean_f);
williamr@2
   346
IMPORT_C int STORE_method_set_generate_function(STORE_METHOD *sm, STORE_GENERATE_OBJECT_FUNC_PTR generate_f);
williamr@2
   347
IMPORT_C int STORE_method_set_get_function(STORE_METHOD *sm, STORE_GET_OBJECT_FUNC_PTR get_f);
williamr@2
   348
IMPORT_C int STORE_method_set_store_function(STORE_METHOD *sm, STORE_STORE_OBJECT_FUNC_PTR store_f);
williamr@2
   349
IMPORT_C int STORE_method_set_modify_function(STORE_METHOD *sm, STORE_MODIFY_OBJECT_FUNC_PTR store_f);
williamr@2
   350
IMPORT_C int STORE_method_set_revoke_function(STORE_METHOD *sm, STORE_HANDLE_OBJECT_FUNC_PTR revoke_f);
williamr@2
   351
IMPORT_C int STORE_method_set_delete_function(STORE_METHOD *sm, STORE_HANDLE_OBJECT_FUNC_PTR delete_f);
williamr@2
   352
IMPORT_C int STORE_method_set_list_start_function(STORE_METHOD *sm, STORE_START_OBJECT_FUNC_PTR list_start_f);
williamr@2
   353
IMPORT_C int STORE_method_set_list_next_function(STORE_METHOD *sm, STORE_NEXT_OBJECT_FUNC_PTR list_next_f);
williamr@2
   354
IMPORT_C int STORE_method_set_list_end_function(STORE_METHOD *sm, STORE_END_OBJECT_FUNC_PTR list_end_f);
williamr@2
   355
IMPORT_C int STORE_method_set_update_store_function(STORE_METHOD *sm, STORE_GENERIC_FUNC_PTR);
williamr@2
   356
IMPORT_C int STORE_method_set_lock_store_function(STORE_METHOD *sm, STORE_GENERIC_FUNC_PTR);
williamr@2
   357
IMPORT_C int STORE_method_set_unlock_store_function(STORE_METHOD *sm, STORE_GENERIC_FUNC_PTR);
williamr@2
   358
IMPORT_C int STORE_method_set_ctrl_function(STORE_METHOD *sm, STORE_CTRL_FUNC_PTR ctrl_f);
williamr@2
   359
williamr@2
   360
IMPORT_C STORE_INITIALISE_FUNC_PTR STORE_method_get_initialise_function(STORE_METHOD *sm);
williamr@2
   361
IMPORT_C STORE_CLEANUP_FUNC_PTR STORE_method_get_cleanup_function(STORE_METHOD *sm);
williamr@2
   362
IMPORT_C STORE_GENERATE_OBJECT_FUNC_PTR STORE_method_get_generate_function(STORE_METHOD *sm);
williamr@2
   363
IMPORT_C STORE_GET_OBJECT_FUNC_PTR STORE_method_get_get_function(STORE_METHOD *sm);
williamr@2
   364
IMPORT_C STORE_STORE_OBJECT_FUNC_PTR STORE_method_get_store_function(STORE_METHOD *sm);
williamr@2
   365
IMPORT_C STORE_MODIFY_OBJECT_FUNC_PTR STORE_method_get_modify_function(STORE_METHOD *sm);
williamr@2
   366
IMPORT_C STORE_HANDLE_OBJECT_FUNC_PTR STORE_method_get_revoke_function(STORE_METHOD *sm);
williamr@2
   367
IMPORT_C STORE_HANDLE_OBJECT_FUNC_PTR STORE_method_get_delete_function(STORE_METHOD *sm);
williamr@2
   368
IMPORT_C STORE_START_OBJECT_FUNC_PTR STORE_method_get_list_start_function(STORE_METHOD *sm);
williamr@2
   369
IMPORT_C STORE_NEXT_OBJECT_FUNC_PTR STORE_method_get_list_next_function(STORE_METHOD *sm);
williamr@2
   370
IMPORT_C STORE_END_OBJECT_FUNC_PTR STORE_method_get_list_end_function(STORE_METHOD *sm);
williamr@2
   371
IMPORT_C STORE_GENERIC_FUNC_PTR STORE_method_get_update_store_function(STORE_METHOD *sm);
williamr@2
   372
IMPORT_C STORE_GENERIC_FUNC_PTR STORE_method_get_lock_store_function(STORE_METHOD *sm);
williamr@2
   373
IMPORT_C STORE_GENERIC_FUNC_PTR STORE_method_get_unlock_store_function(STORE_METHOD *sm);
williamr@2
   374
IMPORT_C STORE_CTRL_FUNC_PTR STORE_method_get_ctrl_function(STORE_METHOD *sm);
williamr@2
   375
williamr@2
   376
/* Method helper structures and functions. */
williamr@2
   377
williamr@2
   378
/* This structure is the result of parsing through the information in a list
williamr@2
   379
   of OPENSSL_ITEMs.  It stores all the necessary information in a structured
williamr@2
   380
   way.*/
williamr@2
   381
typedef struct STORE_attr_info_st STORE_ATTR_INFO;
williamr@2
   382
williamr@2
   383
/* Parse a list of OPENSSL_ITEMs and return a pointer to a STORE_ATTR_INFO.
williamr@2
   384
   Note that we do this in the list form, since the list of OPENSSL_ITEMs can
williamr@2
   385
   come in blocks separated with STORE_ATTR_OR.  Note that the value returned
williamr@2
   386
   by STORE_parse_attrs_next() must be freed with STORE_ATTR_INFO_free(). */
williamr@2
   387
IMPORT_C void *STORE_parse_attrs_start(OPENSSL_ITEM *attributes);
williamr@2
   388
IMPORT_C STORE_ATTR_INFO *STORE_parse_attrs_next(void *handle);
williamr@2
   389
IMPORT_C int STORE_parse_attrs_end(void *handle);
williamr@2
   390
IMPORT_C int STORE_parse_attrs_endp(void *handle);
williamr@2
   391
williamr@2
   392
/* Creator and destructor */
williamr@2
   393
IMPORT_C STORE_ATTR_INFO *STORE_ATTR_INFO_new(void);
williamr@2
   394
IMPORT_C int STORE_ATTR_INFO_free(STORE_ATTR_INFO *attrs);
williamr@2
   395
williamr@2
   396
/* Manipulators */
williamr@2
   397
IMPORT_C char *STORE_ATTR_INFO_get0_cstr(STORE_ATTR_INFO *attrs, STORE_ATTR_TYPES code);
williamr@2
   398
IMPORT_C unsigned char *STORE_ATTR_INFO_get0_sha1str(STORE_ATTR_INFO *attrs,
williamr@2
   399
	STORE_ATTR_TYPES code);
williamr@2
   400
IMPORT_C X509_NAME *STORE_ATTR_INFO_get0_dn(STORE_ATTR_INFO *attrs, STORE_ATTR_TYPES code);
williamr@2
   401
IMPORT_C BIGNUM *STORE_ATTR_INFO_get0_number(STORE_ATTR_INFO *attrs, STORE_ATTR_TYPES code);
williamr@2
   402
IMPORT_C int STORE_ATTR_INFO_set_cstr(STORE_ATTR_INFO *attrs, STORE_ATTR_TYPES code,
williamr@2
   403
	char *cstr, size_t cstr_size);
williamr@2
   404
IMPORT_C int STORE_ATTR_INFO_set_sha1str(STORE_ATTR_INFO *attrs, STORE_ATTR_TYPES code,
williamr@2
   405
	unsigned char *sha1str, size_t sha1str_size);
williamr@2
   406
IMPORT_C int STORE_ATTR_INFO_set_dn(STORE_ATTR_INFO *attrs, STORE_ATTR_TYPES code,
williamr@2
   407
	X509_NAME *dn);
williamr@2
   408
IMPORT_C int STORE_ATTR_INFO_set_number(STORE_ATTR_INFO *attrs, STORE_ATTR_TYPES code,
williamr@2
   409
	BIGNUM *number);
williamr@2
   410
IMPORT_C int STORE_ATTR_INFO_modify_cstr(STORE_ATTR_INFO *attrs, STORE_ATTR_TYPES code,
williamr@2
   411
	char *cstr, size_t cstr_size);
williamr@2
   412
IMPORT_C int STORE_ATTR_INFO_modify_sha1str(STORE_ATTR_INFO *attrs, STORE_ATTR_TYPES code,
williamr@2
   413
	unsigned char *sha1str, size_t sha1str_size);
williamr@2
   414
IMPORT_C int STORE_ATTR_INFO_modify_dn(STORE_ATTR_INFO *attrs, STORE_ATTR_TYPES code,
williamr@2
   415
	X509_NAME *dn);
williamr@2
   416
IMPORT_C int STORE_ATTR_INFO_modify_number(STORE_ATTR_INFO *attrs, STORE_ATTR_TYPES code,
williamr@2
   417
	BIGNUM *number);
williamr@2
   418
williamr@2
   419
/* Compare on basis of a bit pattern formed by the STORE_ATTR_TYPES values
williamr@2
   420
   in each contained attribute. */
williamr@2
   421
IMPORT_C int STORE_ATTR_INFO_compare(STORE_ATTR_INFO *a, STORE_ATTR_INFO *b);
williamr@2
   422
/* Check if the set of attributes in a is within the range of attributes
williamr@2
   423
   set in b. */
williamr@2
   424
IMPORT_C int STORE_ATTR_INFO_in_range(STORE_ATTR_INFO *a, STORE_ATTR_INFO *b);
williamr@2
   425
/* Check if the set of attributes in a are also set in b. */
williamr@2
   426
IMPORT_C int STORE_ATTR_INFO_in(STORE_ATTR_INFO *a, STORE_ATTR_INFO *b);
williamr@2
   427
/* Same as STORE_ATTR_INFO_in(), but also checks the attribute values. */
williamr@2
   428
IMPORT_C int STORE_ATTR_INFO_in_ex(STORE_ATTR_INFO *a, STORE_ATTR_INFO *b);
williamr@2
   429
williamr@2
   430
williamr@2
   431
/* BEGIN ERROR CODES */
williamr@2
   432
/* The following lines are auto generated by the script mkerr.pl. Any changes
williamr@2
   433
 * made after this point may be overwritten when the script is next run.
williamr@2
   434
 */
williamr@2
   435
IMPORT_C void ERR_load_STORE_strings(void);
williamr@2
   436
williamr@2
   437
/* Error codes for the STORE functions. */
williamr@2
   438
williamr@2
   439
/* Function codes. */
williamr@2
   440
#define STORE_F_MEM_DELETE				 134
williamr@2
   441
#define STORE_F_MEM_GENERATE				 135
williamr@2
   442
#define STORE_F_MEM_LIST_END				 168
williamr@2
   443
#define STORE_F_MEM_LIST_NEXT				 136
williamr@2
   444
#define STORE_F_MEM_LIST_START				 137
williamr@2
   445
#define STORE_F_MEM_MODIFY				 169
williamr@2
   446
#define STORE_F_MEM_STORE				 138
williamr@2
   447
#define STORE_F_STORE_ATTR_INFO_GET0_CSTR		 139
williamr@2
   448
#define STORE_F_STORE_ATTR_INFO_GET0_DN			 140
williamr@2
   449
#define STORE_F_STORE_ATTR_INFO_GET0_NUMBER		 141
williamr@2
   450
#define STORE_F_STORE_ATTR_INFO_GET0_SHA1STR		 142
williamr@2
   451
#define STORE_F_STORE_ATTR_INFO_MODIFY_CSTR		 143
williamr@2
   452
#define STORE_F_STORE_ATTR_INFO_MODIFY_DN		 144
williamr@2
   453
#define STORE_F_STORE_ATTR_INFO_MODIFY_NUMBER		 145
williamr@2
   454
#define STORE_F_STORE_ATTR_INFO_MODIFY_SHA1STR		 146
williamr@2
   455
#define STORE_F_STORE_ATTR_INFO_SET_CSTR		 147
williamr@2
   456
#define STORE_F_STORE_ATTR_INFO_SET_DN			 148
williamr@2
   457
#define STORE_F_STORE_ATTR_INFO_SET_NUMBER		 149
williamr@2
   458
#define STORE_F_STORE_ATTR_INFO_SET_SHA1STR		 150
williamr@2
   459
#define STORE_F_STORE_CERTIFICATE			 170
williamr@2
   460
#define STORE_F_STORE_CTRL				 161
williamr@2
   461
#define STORE_F_STORE_DELETE_ARBITRARY			 158
williamr@2
   462
#define STORE_F_STORE_DELETE_CERTIFICATE		 102
williamr@2
   463
#define STORE_F_STORE_DELETE_CRL			 103
williamr@2
   464
#define STORE_F_STORE_DELETE_NUMBER			 104
williamr@2
   465
#define STORE_F_STORE_DELETE_PRIVATE_KEY		 105
williamr@2
   466
#define STORE_F_STORE_DELETE_PUBLIC_KEY			 106
williamr@2
   467
#define STORE_F_STORE_GENERATE_CRL			 107
williamr@2
   468
#define STORE_F_STORE_GENERATE_KEY			 108
williamr@2
   469
#define STORE_F_STORE_GET_ARBITRARY			 159
williamr@2
   470
#define STORE_F_STORE_GET_CERTIFICATE			 109
williamr@2
   471
#define STORE_F_STORE_GET_CRL				 110
williamr@2
   472
#define STORE_F_STORE_GET_NUMBER			 111
williamr@2
   473
#define STORE_F_STORE_GET_PRIVATE_KEY			 112
williamr@2
   474
#define STORE_F_STORE_GET_PUBLIC_KEY			 113
williamr@2
   475
#define STORE_F_STORE_LIST_CERTIFICATE_END		 114
williamr@2
   476
#define STORE_F_STORE_LIST_CERTIFICATE_ENDP		 153
williamr@2
   477
#define STORE_F_STORE_LIST_CERTIFICATE_NEXT		 115
williamr@2
   478
#define STORE_F_STORE_LIST_CERTIFICATE_START		 116
williamr@2
   479
#define STORE_F_STORE_LIST_CRL_END			 117
williamr@2
   480
#define STORE_F_STORE_LIST_CRL_ENDP			 154
williamr@2
   481
#define STORE_F_STORE_LIST_CRL_NEXT			 118
williamr@2
   482
#define STORE_F_STORE_LIST_CRL_START			 119
williamr@2
   483
#define STORE_F_STORE_LIST_PRIVATE_KEY_END		 120
williamr@2
   484
#define STORE_F_STORE_LIST_PRIVATE_KEY_ENDP		 155
williamr@2
   485
#define STORE_F_STORE_LIST_PRIVATE_KEY_NEXT		 121
williamr@2
   486
#define STORE_F_STORE_LIST_PRIVATE_KEY_START		 122
williamr@2
   487
#define STORE_F_STORE_LIST_PUBLIC_KEY_END		 123
williamr@2
   488
#define STORE_F_STORE_LIST_PUBLIC_KEY_ENDP		 156
williamr@2
   489
#define STORE_F_STORE_LIST_PUBLIC_KEY_NEXT		 124
williamr@2
   490
#define STORE_F_STORE_LIST_PUBLIC_KEY_START		 125
williamr@2
   491
#define STORE_F_STORE_MODIFY_ARBITRARY			 162
williamr@2
   492
#define STORE_F_STORE_MODIFY_CERTIFICATE		 163
williamr@2
   493
#define STORE_F_STORE_MODIFY_CRL			 164
williamr@2
   494
#define STORE_F_STORE_MODIFY_NUMBER			 165
williamr@2
   495
#define STORE_F_STORE_MODIFY_PRIVATE_KEY		 166
williamr@2
   496
#define STORE_F_STORE_MODIFY_PUBLIC_KEY			 167
williamr@2
   497
#define STORE_F_STORE_NEW_ENGINE			 133
williamr@2
   498
#define STORE_F_STORE_NEW_METHOD			 132
williamr@2
   499
#define STORE_F_STORE_PARSE_ATTRS_END			 151
williamr@2
   500
#define STORE_F_STORE_PARSE_ATTRS_ENDP			 172
williamr@2
   501
#define STORE_F_STORE_PARSE_ATTRS_NEXT			 152
williamr@2
   502
#define STORE_F_STORE_PARSE_ATTRS_START			 171
williamr@2
   503
#define STORE_F_STORE_REVOKE_CERTIFICATE		 129
williamr@2
   504
#define STORE_F_STORE_REVOKE_PRIVATE_KEY		 130
williamr@2
   505
#define STORE_F_STORE_REVOKE_PUBLIC_KEY			 131
williamr@2
   506
#define STORE_F_STORE_STORE_ARBITRARY			 157
williamr@2
   507
#define STORE_F_STORE_STORE_CERTIFICATE			 100
williamr@2
   508
#define STORE_F_STORE_STORE_CRL				 101
williamr@2
   509
#define STORE_F_STORE_STORE_NUMBER			 126
williamr@2
   510
#define STORE_F_STORE_STORE_PRIVATE_KEY			 127
williamr@2
   511
#define STORE_F_STORE_STORE_PUBLIC_KEY			 128
williamr@2
   512
williamr@2
   513
/* Reason codes. */
williamr@2
   514
#define STORE_R_ALREADY_HAS_A_VALUE			 127
williamr@2
   515
#define STORE_R_FAILED_DELETING_ARBITRARY		 132
williamr@2
   516
#define STORE_R_FAILED_DELETING_CERTIFICATE		 100
williamr@2
   517
#define STORE_R_FAILED_DELETING_KEY			 101
williamr@2
   518
#define STORE_R_FAILED_DELETING_NUMBER			 102
williamr@2
   519
#define STORE_R_FAILED_GENERATING_CRL			 103
williamr@2
   520
#define STORE_R_FAILED_GENERATING_KEY			 104
williamr@2
   521
#define STORE_R_FAILED_GETTING_ARBITRARY		 133
williamr@2
   522
#define STORE_R_FAILED_GETTING_CERTIFICATE		 105
williamr@2
   523
#define STORE_R_FAILED_GETTING_KEY			 106
williamr@2
   524
#define STORE_R_FAILED_GETTING_NUMBER			 107
williamr@2
   525
#define STORE_R_FAILED_LISTING_CERTIFICATES		 108
williamr@2
   526
#define STORE_R_FAILED_LISTING_KEYS			 109
williamr@2
   527
#define STORE_R_FAILED_MODIFYING_ARBITRARY		 138
williamr@2
   528
#define STORE_R_FAILED_MODIFYING_CERTIFICATE		 139
williamr@2
   529
#define STORE_R_FAILED_MODIFYING_CRL			 140
williamr@2
   530
#define STORE_R_FAILED_MODIFYING_NUMBER			 141
williamr@2
   531
#define STORE_R_FAILED_MODIFYING_PRIVATE_KEY		 142
williamr@2
   532
#define STORE_R_FAILED_MODIFYING_PUBLIC_KEY		 143
williamr@2
   533
#define STORE_R_FAILED_REVOKING_CERTIFICATE		 110
williamr@2
   534
#define STORE_R_FAILED_REVOKING_KEY			 111
williamr@2
   535
#define STORE_R_FAILED_STORING_ARBITRARY		 134
williamr@2
   536
#define STORE_R_FAILED_STORING_CERTIFICATE		 112
williamr@2
   537
#define STORE_R_FAILED_STORING_KEY			 113
williamr@2
   538
#define STORE_R_FAILED_STORING_NUMBER			 114
williamr@2
   539
#define STORE_R_NOT_IMPLEMENTED				 128
williamr@2
   540
#define STORE_R_NO_CONTROL_FUNCTION			 144
williamr@2
   541
#define STORE_R_NO_DELETE_ARBITRARY_FUNCTION		 135
williamr@2
   542
#define STORE_R_NO_DELETE_NUMBER_FUNCTION		 115
williamr@2
   543
#define STORE_R_NO_DELETE_OBJECT_FUNCTION		 116
williamr@2
   544
#define STORE_R_NO_GENERATE_CRL_FUNCTION		 117
williamr@2
   545
#define STORE_R_NO_GENERATE_OBJECT_FUNCTION		 118
williamr@2
   546
#define STORE_R_NO_GET_OBJECT_ARBITRARY_FUNCTION	 136
williamr@2
   547
#define STORE_R_NO_GET_OBJECT_FUNCTION			 119
williamr@2
   548
#define STORE_R_NO_GET_OBJECT_NUMBER_FUNCTION		 120
williamr@2
   549
#define STORE_R_NO_LIST_OBJECT_ENDP_FUNCTION		 131
williamr@2
   550
#define STORE_R_NO_LIST_OBJECT_END_FUNCTION		 121
williamr@2
   551
#define STORE_R_NO_LIST_OBJECT_NEXT_FUNCTION		 122
williamr@2
   552
#define STORE_R_NO_LIST_OBJECT_START_FUNCTION		 123
williamr@2
   553
#define STORE_R_NO_MODIFY_OBJECT_FUNCTION		 145
williamr@2
   554
#define STORE_R_NO_REVOKE_OBJECT_FUNCTION		 124
williamr@2
   555
#define STORE_R_NO_STORE				 129
williamr@2
   556
#define STORE_R_NO_STORE_OBJECT_ARBITRARY_FUNCTION	 137
williamr@2
   557
#define STORE_R_NO_STORE_OBJECT_FUNCTION		 125
williamr@2
   558
#define STORE_R_NO_STORE_OBJECT_NUMBER_FUNCTION		 126
williamr@2
   559
#define STORE_R_NO_VALUE				 130
williamr@2
   560
williamr@2
   561
#ifdef  __cplusplus
williamr@2
   562
}
williamr@2
   563
#endif
williamr@2
   564
#endif