gwenhywfar
4.3.3
|
00001 /*************************************************************************** 00002 begin : Wed Mar 16 2005 00003 copyright : (C) 2005 by Martin Preuss 00004 email : martin@libchipcard.de 00005 00006 *************************************************************************** 00007 * Please see toplevel file COPYING for license details * 00008 ***************************************************************************/ 00009 00010 00011 #ifndef GWEN_CRYPT_CRYPTTOKEN_H 00012 #define GWEN_CRYPT_CRYPTTOKEN_H 00013 00014 #include <gwenhywfar/list1.h> 00015 #include <gwenhywfar/list2.h> 00016 00017 00018 00019 typedef struct GWEN_CRYPT_TOKEN GWEN_CRYPT_TOKEN; 00020 00021 #ifdef __cplusplus 00022 extern "C" { 00023 #endif 00024 00025 00026 GWEN_LIST_FUNCTION_LIB_DEFS(GWEN_CRYPT_TOKEN, GWEN_Crypt_Token, GWENHYWFAR_API) 00027 GWEN_LIST2_FUNCTION_LIB_DEFS(GWEN_CRYPT_TOKEN, GWEN_Crypt_Token, GWENHYWFAR_API) 00028 00029 #ifdef __cplusplus 00030 } 00031 #endif 00032 00033 00034 00035 typedef enum { 00036 GWEN_Crypt_Token_Device_Unknown=-1, 00037 GWEN_Crypt_Token_Device_None=0, 00038 GWEN_Crypt_Token_Device_File, 00039 GWEN_Crypt_Token_Device_Card, 00040 GWEN_Crypt_Token_Device_Any=999 00041 } GWEN_CRYPT_TOKEN_DEVICE; 00042 00043 00044 #ifdef __cplusplus 00045 extern "C" { 00046 #endif 00047 00052 GWENHYWFAR_API GWEN_CRYPT_TOKEN_DEVICE GWEN_Crypt_Token_Device_fromString(const char *s); 00053 GWENHYWFAR_API const char *GWEN_Crypt_Token_Device_toString(GWEN_CRYPT_TOKEN_DEVICE d); 00058 #define GWEN_CRYPT_TOKEN_MODE_SECURE_PIN_ENTRY 0x00000001 00059 #define GWEN_CRYPT_TOKEN_MODE_FORCE_PIN_ENTRY 0x00000002 00060 00061 #define GWEN_CRYPT_TOKEN_MODE_ALLOW_UPDATE 0x00000004 00062 #define GWEN_CRYPT_TOKEN_MODE_EXP_65537 0x00000008 00063 #define GWEN_CRYPT_TOKEN_MODE_DIRECT_SIGN 0x00000010 00064 00065 00066 00067 #define GWEN_CRYPT_TOKEN_FLAGS_MANAGES_SIGNSEQ 0x00000001 00068 00069 00070 00071 #include <gwenhywfar/ct_keyinfo.h> 00072 #include <gwenhywfar/ct_context.h> 00073 #include <gwenhywfar/paddalgo.h> 00074 #include <gwenhywfar/hashalgo.h> 00075 #include <gwenhywfar/cryptalgo.h> 00076 #include <gwenhywfar/cryptdefs.h> 00077 00078 00083 GWENHYWFAR_API void GWEN_Crypt_Token_free(GWEN_CRYPT_TOKEN *ct); 00092 GWENHYWFAR_API uint32_t GWEN_Crypt_Token_GetFlags(const GWEN_CRYPT_TOKEN *ct); 00093 00094 GWENHYWFAR_API uint32_t GWEN_Crypt_Token_GetModes(const GWEN_CRYPT_TOKEN *ct); 00095 00096 GWENHYWFAR_API void GWEN_Crypt_Token_SetModes(GWEN_CRYPT_TOKEN *ct, uint32_t f); 00097 00098 GWENHYWFAR_API void GWEN_Crypt_Token_AddModes(GWEN_CRYPT_TOKEN *ct, uint32_t f); 00099 00100 GWENHYWFAR_API void GWEN_Crypt_Token_SubModes(GWEN_CRYPT_TOKEN *ct, uint32_t f); 00101 00102 GWENHYWFAR_API GWEN_CRYPT_TOKEN_DEVICE GWEN_Crypt_Token_GetDevice(const GWEN_CRYPT_TOKEN *ct); 00103 00104 GWENHYWFAR_API const char *GWEN_Crypt_Token_GetTokenName(const GWEN_CRYPT_TOKEN *ct); 00105 00106 GWENHYWFAR_API const char *GWEN_Crypt_Token_GetTypeName(const GWEN_CRYPT_TOKEN *ct); 00107 00108 GWENHYWFAR_API const char *GWEN_Crypt_Token_GetFriendlyName(const GWEN_CRYPT_TOKEN *ct); 00109 00110 GWENHYWFAR_API void GWEN_Crypt_Token_SetFriendlyName(GWEN_CRYPT_TOKEN *ct, const char *s); 00119 GWENHYWFAR_API int GWEN_Crypt_Token_Open(GWEN_CRYPT_TOKEN *ct, int admin, uint32_t gid); 00120 00121 00122 GWENHYWFAR_API int GWEN_Crypt_Token_Create(GWEN_CRYPT_TOKEN *ct, uint32_t gid); 00123 00124 GWENHYWFAR_API int GWEN_Crypt_Token_Close(GWEN_CRYPT_TOKEN *ct, int abandon, uint32_t gid); 00125 00126 GWENHYWFAR_API int GWEN_Crypt_Token_IsOpen(const GWEN_CRYPT_TOKEN *ct); 00127 00136 GWENHYWFAR_API int GWEN_Crypt_Token_GetKeyIdList(GWEN_CRYPT_TOKEN *ct, 00137 uint32_t *pIdList, 00138 uint32_t *pCount, 00139 uint32_t gid); 00140 00141 GWENHYWFAR_API const GWEN_CRYPT_TOKEN_KEYINFO* GWEN_Crypt_Token_GetKeyInfo(GWEN_CRYPT_TOKEN *ct, 00142 uint32_t id, 00143 uint32_t flags, 00144 uint32_t gid); 00145 00146 GWENHYWFAR_API int GWEN_Crypt_Token_SetKeyInfo(GWEN_CRYPT_TOKEN *ct, 00147 uint32_t id, 00148 const GWEN_CRYPT_TOKEN_KEYINFO *ki, 00149 uint32_t gid); 00150 00151 00152 GWENHYWFAR_API int GWEN_Crypt_Token_GetContextIdList(GWEN_CRYPT_TOKEN *ct, 00153 uint32_t *pIdList, 00154 uint32_t *pCount, 00155 uint32_t gid); 00156 00157 GWENHYWFAR_API const GWEN_CRYPT_TOKEN_CONTEXT* GWEN_Crypt_Token_GetContext(GWEN_CRYPT_TOKEN *ct, 00158 uint32_t id, 00159 uint32_t gid); 00160 00161 GWENHYWFAR_API int GWEN_Crypt_Token_SetContext(GWEN_CRYPT_TOKEN *ct, 00162 uint32_t id, 00163 const GWEN_CRYPT_TOKEN_CONTEXT *ctx, 00164 uint32_t gid); 00173 GWENHYWFAR_API int GWEN_Crypt_Token_Sign(GWEN_CRYPT_TOKEN *ct, 00174 uint32_t keyId, 00175 GWEN_CRYPT_PADDALGO *a, 00176 const uint8_t *pInData, 00177 uint32_t inLen, 00178 uint8_t *pSignatureData, 00179 uint32_t *pSignatureLen, 00180 uint32_t *pSeqCounter, 00181 uint32_t gid); 00182 00183 GWENHYWFAR_API int GWEN_Crypt_Token_Verify(GWEN_CRYPT_TOKEN *ct, 00184 uint32_t keyId, 00185 GWEN_CRYPT_PADDALGO *a, 00186 const uint8_t *pInData, 00187 uint32_t inLen, 00188 const uint8_t *pSignatureData, 00189 uint32_t signatureLen, 00190 uint32_t seqCounter, 00191 uint32_t gid); 00192 00193 GWENHYWFAR_API int GWEN_Crypt_Token_Encipher(GWEN_CRYPT_TOKEN *ct, 00194 uint32_t keyId, 00195 GWEN_CRYPT_PADDALGO *a, 00196 const uint8_t *pInData, 00197 uint32_t inLen, 00198 uint8_t *pOutData, 00199 uint32_t *pOutLen, 00200 uint32_t gid); 00201 00202 GWENHYWFAR_API int GWEN_Crypt_Token_Decipher(GWEN_CRYPT_TOKEN *ct, 00203 uint32_t keyId, 00204 GWEN_CRYPT_PADDALGO *a, 00205 const uint8_t *pInData, 00206 uint32_t inLen, 00207 uint8_t *pOutData, 00208 uint32_t *pOutLen, 00209 uint32_t gid); 00218 GWENHYWFAR_API int GWEN_Crypt_Token_GenerateKey(GWEN_CRYPT_TOKEN *ct, 00219 uint32_t keyId, 00220 const GWEN_CRYPT_CRYPTALGO *a, 00221 uint32_t gid); 00222 00223 GWENHYWFAR_API int GWEN_Crypt_Token_ChangePin(GWEN_CRYPT_TOKEN *ct, int admin, uint32_t gid); 00224 00225 GWENHYWFAR_API int GWEN_Crypt_Token_ActivateKey(GWEN_CRYPT_TOKEN *ct, uint32_t id, uint32_t gid); 00226 00230 #ifdef __cplusplus 00231 } 00232 #endif 00233 00234 00235 00236 #endif 00237 00238