| RSA BSAFE Micro Edition Suite |
Streamlined security for mobile and embedded devices |
 
![]() |
00001 /* $Id: r_pkey_mth.h,v 1.27 2005/07/25 06:11:44 itaylor Exp $ */
00002 /*
00003 * Copyright (C) 1998-2003 RSA Security Inc. All rights reserved.
00004 *
00005 * This work contains proprietary information of RSA Security.
00006 * Distribution is limited to authorized licensees of RSA
00007 * Security. Any unauthorized reproduction, distribution or
00008 * modification of this work is strictly prohibited.
00009 */
00010
00017 #ifndef HEADER_COMMON_CERT_R_PKEY_MTH_H
00018 #define HEADER_COMMON_CERT_R_PKEY_MTH_H
00019
00020 #ifdef __cplusplus
00021 extern "C" {
00022 #endif
00023
00024 #include "r_pkey.h"
00025
00034 /* Defines for flags - implementation properties and features supported
00035 * for a given certificate (or certificate method).
00036 */
00040 #define R_PKEY_METHOD_FL_NONE 0x0000
00041
00044 #define R_PKEY_METHOD_FL_NORMAL 0x0001
00045
00048 #define R_PKEY_METHOD_FL_COMPACT 0x0002
00049
00052 #define R_PKEY_METHOD_FL_SUPPORT_CONFIG 0x0004
00053
00056 #define R_PKEY_METHOD_FL_SUPPORT_BIO 0x0008
00057
00060 #define R_PKEY_METHOD_FL_SUPPORT_PEM 0x0010
00061
00064 #define R_PKEY_METHOD_FL_SUPPORT_NAME 0x0020
00065
00068 #define R_PKEY_METHOD_FL_ALLOCATED 0x1001
00069
00072 #define R_PKEY_METHOD_FL_ALLOCATED_DATA 0x1002
00073
00087 R_PKEY_METHOD * R_CDECL R_PKEY_get_method(R_PKEY *pkey);
00088
00089 char * R_CDECL R_PKEY_METHOD_get_name(R_PKEY_METHOD *method);
00090 int R_CDECL R_PKEY_METHOD_get_type(R_PKEY_METHOD *method);
00091 int R_CDECL R_PKEY_METHOD_get_flag(R_PKEY_METHOD *method);
00092 int R_CDECL R_PKEY_METHOD_free(R_PKEY_METHOD *method);
00093
00094 int R_CDECL R_PKEY_rsa_blinding_lib_start(R_RES_LIST *list, R_RES_ITEM *item,
00095 void **imp_data);
00096 int R_CDECL R_PKEY_rsa_no_blinding_lib_start(R_RES_LIST *list, R_RES_ITEM *item,
00097 void **imp_data);
00098
00119 #define R_PKEY_RES_DH \
00120 { R_RES_MOD_ID_PKEY, R_RES_IMPL_ID_DEF, R_PKEY_TYPE_DH, \
00121 R_RES_FLAG_DEF, NULL, NULL, (void *(*)(void *))R_PKEY_pk_method, \
00122 NULL }
00123
00128 #define R_PKEY_RES_DSA \
00129 { R_RES_MOD_ID_PKEY, R_RES_IMPL_ID_DEF, R_PKEY_TYPE_DSA, \
00130 R_RES_FLAG_DEF, NULL, NULL, (void *(*)(void *))R_PKEY_pk_method, \
00131 NULL }
00132
00137 #ifdef FIPS140_ONLY
00138 /* Blinding cannot be set in FIPS140 shared library. It is always on. */
00139 #define R_PKEY_RES_RSA \
00140 { R_RES_MOD_ID_PKEY, R_RES_IMPL_ID_DEF, R_PKEY_TYPE_RSA, \
00141 R_RES_FLAG_DEF, NULL, NULL, \
00142 (void *(*)(void *))R_PKEY_pk_method, NULL }
00143 #else /* ! FIPS140_ONLY */
00144 #define R_PKEY_RES_RSA \
00145 { R_RES_MOD_ID_PKEY, R_RES_IMPL_ID_DEF, R_PKEY_TYPE_RSA, \
00146 R_RES_FLAG_DEF, R_PKEY_rsa_blinding_lib_start, NULL, \
00147 (void *(*)(void *))R_PKEY_pk_method, NULL }
00148 #endif /* FIPS140_ONLY */
00149
00154 #define R_PKEY_RES_RSA_NO_BLINDING \
00155 { R_RES_MOD_ID_PKEY, R_RES_IMPL_ID_DEF, R_PKEY_TYPE_RSA, \
00156 R_RES_FLAG_DEF, R_PKEY_rsa_no_blinding_lib_start, NULL, \
00157 (void *(*)(void *))R_PKEY_pk_method, NULL }
00158
00159
00180 #define R_PKEY_RES_CUSTOM(start_fn, fin_fn, meth_fn, data_fn, type) \
00181 { R_RES_MOD_ID_PKEY, R_RES_IMPL_ID_DEF, type, R_RES_FLAG_DEF, \
00182 (int (*)(R_RES_LIST *, R_RES_ITEM *, void **))(start_fn), \
00183 (int (*)(R_RES_LIST *, R_RES_ITEM *, void **))(fin_fn), \
00184 (void *(*)(void *))meth_fn, (void *(*)(void *))data_fn }
00185
00186 #ifndef NO_BIO
00187
00191 #define R_PKEY_RES_PRINT \
00192 { R_RES_MOD_ID_PKEY, R_RES_IMPL_ID_PRINT_FUNC, \
00193 R_RES_SUB_ID_DEF, R_RES_FLAG_DEF, NULL, NULL, NULL, \
00194 (void *(*)(void *))R_PKEY_get_print_func }
00195 #endif /* NO_BIO */
00196
00201 #ifdef __cplusplus
00202 }
00203 #endif
00204
00205 #endif /* HEADER_COMMON_CERT_R_PKEY_MTH_H */
00206