gwenhywfar
4.3.1
|
00001 /*************************************************************************** 00002 $RCSfile$ 00003 ------------------- 00004 cvs : $Id: crypttoken.h 1113 2007-01-10 09:14:16Z martin $ 00005 begin : Wed Mar 16 2005 00006 copyright : (C) 2005 by Martin Preuss 00007 email : martin@libchipcard.de 00008 00009 *************************************************************************** 00010 * Please see toplevel file COPYING for license details * 00011 ***************************************************************************/ 00012 00013 00014 #ifndef GWEN_CRYPT_CRYPTTOKEN_BE_H 00015 #define GWEN_CRYPT_CRYPTTOKEN_BE_H 00016 00017 00018 #include <gwenhywfar/ct.h> 00019 #include <gwenhywfar/inherit.h> 00020 #include <gwenhywfar/buffer.h> 00021 #include <gwenhywfar/hashalgo.h> 00022 00023 00024 00025 GWEN_INHERIT_FUNCTION_LIB_DEFS(GWEN_CRYPT_TOKEN, GWENHYWFAR_API) 00026 00027 00028 00029 00030 00034 typedef int GWENHYWFAR_CB 00035 (*GWEN_CRYPT_TOKEN_OPEN_FN)(GWEN_CRYPT_TOKEN *ct, int admin, uint32_t gid); 00036 typedef int GWENHYWFAR_CB 00037 (*GWEN_CRYPT_TOKEN_CREATE_FN)(GWEN_CRYPT_TOKEN *ct, uint32_t gid); 00038 typedef int GWENHYWFAR_CB 00039 (*GWEN_CRYPT_TOKEN_CLOSE_FN)(GWEN_CRYPT_TOKEN *ct, int abandon, uint32_t gid); 00040 00041 typedef int GWENHYWFAR_CB 00042 (*GWEN_CRYPT_TOKEN_GETKEYIDLIST_FN)(GWEN_CRYPT_TOKEN *ct, 00043 uint32_t *pIdList, 00044 uint32_t *pCount, 00045 uint32_t gid); 00046 typedef const GWEN_CRYPT_TOKEN_KEYINFO* GWENHYWFAR_CB 00047 (*GWEN_CRYPT_TOKEN_GETKEYINFO_FN)(GWEN_CRYPT_TOKEN *ct, 00048 uint32_t id, 00049 uint32_t flags, 00050 uint32_t gid); 00051 00052 typedef int GWENHYWFAR_CB 00053 (*GWEN_CRYPT_TOKEN_SETKEYINFO_FN)(GWEN_CRYPT_TOKEN *ct, 00054 uint32_t id, 00055 const GWEN_CRYPT_TOKEN_KEYINFO *ki, 00056 uint32_t gid); 00057 00058 typedef int GWENHYWFAR_CB 00059 (*GWEN_CRYPT_TOKEN_GETCONTEXTIDLIST_FN)(GWEN_CRYPT_TOKEN *ct, 00060 uint32_t *pIdList, 00061 uint32_t *pCount, 00062 uint32_t gid); 00063 typedef const GWEN_CRYPT_TOKEN_CONTEXT* GWENHYWFAR_CB 00064 (*GWEN_CRYPT_TOKEN_GETCONTEXT_FN)(GWEN_CRYPT_TOKEN *ct, 00065 uint32_t id, 00066 uint32_t gid); 00067 00068 typedef int GWENHYWFAR_CB 00069 (*GWEN_CRYPT_TOKEN_SETCONTEXT_FN)(GWEN_CRYPT_TOKEN *ct, 00070 uint32_t id, 00071 const GWEN_CRYPT_TOKEN_CONTEXT *ctx, 00072 uint32_t gid); 00073 00074 00075 typedef int GWENHYWFAR_CB 00076 (*GWEN_CRYPT_TOKEN_SIGN_FN)(GWEN_CRYPT_TOKEN *ct, 00077 uint32_t keyId, 00078 GWEN_CRYPT_PADDALGO *a, 00079 const uint8_t *pInData, 00080 uint32_t inLen, 00081 uint8_t *pSignatureData, 00082 uint32_t *pSignatureLen, 00083 uint32_t *pSeqCounter, 00084 uint32_t gid); 00085 00086 typedef int GWENHYWFAR_CB 00087 (*GWEN_CRYPT_TOKEN_VERIFY_FN)(GWEN_CRYPT_TOKEN *ct, 00088 uint32_t keyId, 00089 GWEN_CRYPT_PADDALGO *a, 00090 const uint8_t *pInData, 00091 uint32_t inLen, 00092 const uint8_t *pSignatureData, 00093 uint32_t signatureLen, 00094 uint32_t seqCounter, 00095 uint32_t gid); 00096 00097 typedef int GWENHYWFAR_CB 00098 (*GWEN_CRYPT_TOKEN_ENCIPHER_FN)(GWEN_CRYPT_TOKEN *ct, 00099 uint32_t keyId, 00100 GWEN_CRYPT_PADDALGO *a, 00101 const uint8_t *pInData, 00102 uint32_t inLen, 00103 uint8_t *pOutData, 00104 uint32_t *pOutLen, 00105 uint32_t gid); 00106 00107 typedef int GWENHYWFAR_CB 00108 (*GWEN_CRYPT_TOKEN_DECIPHER_FN)(GWEN_CRYPT_TOKEN *ct, 00109 uint32_t keyId, 00110 GWEN_CRYPT_PADDALGO *a, 00111 const uint8_t *pInData, 00112 uint32_t inLen, 00113 uint8_t *pOutData, 00114 uint32_t *pOutLen, 00115 uint32_t gid); 00116 00117 00118 typedef int GWENHYWFAR_CB 00119 (*GWEN_CRYPT_TOKEN_GENERATEKEY_FN)(GWEN_CRYPT_TOKEN *ct, 00120 uint32_t keyId, 00121 const GWEN_CRYPT_CRYPTALGO *a, 00122 uint32_t gid); 00123 00124 typedef int GWENHYWFAR_CB 00125 (*GWEN_CRYPT_TOKEN_CHANGEPIN_FN)(GWEN_CRYPT_TOKEN *ct, int admin, uint32_t gid); 00126 00127 typedef int GWENHYWFAR_CB 00128 (*GWEN_CRYPT_TOKEN_ACTIVATEKEY_FN)(GWEN_CRYPT_TOKEN *ct, uint32_t id, uint32_t gid); 00129 00139 GWENHYWFAR_API GWEN_CRYPT_TOKEN *GWEN_Crypt_Token_new(GWEN_CRYPT_TOKEN_DEVICE dev, 00140 const char *typeName, 00141 const char *tokenName); 00150 GWENHYWFAR_API void GWEN_Crypt_Token_SetTokenName(GWEN_CRYPT_TOKEN *ct, const char *s); 00151 00152 GWENHYWFAR_API void GWEN_Crypt_Token_SetFlags(GWEN_CRYPT_TOKEN *ct, uint32_t f); 00153 GWENHYWFAR_API void GWEN_Crypt_Token_AddFlags(GWEN_CRYPT_TOKEN *ct, uint32_t f); 00154 GWENHYWFAR_API void GWEN_Crypt_Token_SubFlags(GWEN_CRYPT_TOKEN *ct, uint32_t f); 00163 GWENHYWFAR_API int GWEN_Crypt_Token_GetPin(GWEN_CRYPT_TOKEN *ct, 00164 GWEN_CRYPT_PINTYPE pt, 00165 GWEN_CRYPT_PINENCODING pe, 00166 uint32_t flags, 00167 unsigned char *pwbuffer, 00168 unsigned int minLength, 00169 unsigned int maxLength, 00170 unsigned int *pinLength, 00171 uint32_t gid); 00172 00173 00174 GWENHYWFAR_API int GWEN_Crypt_Token_SetPinStatus(GWEN_CRYPT_TOKEN *ct, 00175 GWEN_CRYPT_PINTYPE pt, 00176 GWEN_CRYPT_PINENCODING pe, 00177 uint32_t flags, 00178 const unsigned char *buffer, 00179 unsigned int pinLength, 00180 int isOk, 00181 uint32_t gid); 00182 00183 GWENHYWFAR_API uint32_t GWEN_Crypt_Token_BeginEnterPin(GWEN_CRYPT_TOKEN *ct, 00184 GWEN_CRYPT_PINTYPE pt, 00185 uint32_t gid); 00186 00187 GWENHYWFAR_API int GWEN_Crypt_Token_EndEnterPin(GWEN_CRYPT_TOKEN *ct, 00188 GWEN_CRYPT_PINTYPE pt, 00189 int ok, 00190 uint32_t id); 00191 00192 GWENHYWFAR_API int GWEN_Crypt_Token_InsertToken(GWEN_CRYPT_TOKEN *ct, uint32_t gid); 00193 00194 GWENHYWFAR_API int GWEN_Crypt_Token_InsertCorrectToken(GWEN_CRYPT_TOKEN *ct, uint32_t gid); 00204 GWENHYWFAR_API GWEN_CRYPT_TOKEN_OPEN_FN GWEN_Crypt_Token_SetOpenFn(GWEN_CRYPT_TOKEN *ct, 00205 GWEN_CRYPT_TOKEN_OPEN_FN f); 00206 00207 GWENHYWFAR_API GWEN_CRYPT_TOKEN_CREATE_FN GWEN_Crypt_Token_SetCreateFn(GWEN_CRYPT_TOKEN *ct, 00208 GWEN_CRYPT_TOKEN_CREATE_FN f); 00209 00210 GWENHYWFAR_API GWEN_CRYPT_TOKEN_CLOSE_FN GWEN_Crypt_Token_SetCloseFn(GWEN_CRYPT_TOKEN *ct, 00211 GWEN_CRYPT_TOKEN_CLOSE_FN f); 00212 00213 GWENHYWFAR_API 00214 GWEN_CRYPT_TOKEN_GETKEYIDLIST_FN GWEN_Crypt_Token_SetGetKeyIdListFn(GWEN_CRYPT_TOKEN *ct, 00215 GWEN_CRYPT_TOKEN_GETKEYIDLIST_FN f); 00216 00217 GWENHYWFAR_API GWEN_CRYPT_TOKEN_GETKEYINFO_FN GWEN_Crypt_Token_SetGetKeyInfoFn(GWEN_CRYPT_TOKEN *ct, 00218 GWEN_CRYPT_TOKEN_GETKEYINFO_FN f); 00219 00220 GWENHYWFAR_API GWEN_CRYPT_TOKEN_SETKEYINFO_FN GWEN_Crypt_Token_SetSetKeyInfoFn(GWEN_CRYPT_TOKEN *ct, 00221 GWEN_CRYPT_TOKEN_SETKEYINFO_FN f); 00222 00223 GWENHYWFAR_API 00224 GWEN_CRYPT_TOKEN_GETCONTEXTIDLIST_FN GWEN_Crypt_Token_SetGetContextIdListFn(GWEN_CRYPT_TOKEN *ct, 00225 GWEN_CRYPT_TOKEN_GETCONTEXTIDLIST_FN f); 00226 00227 GWENHYWFAR_API GWEN_CRYPT_TOKEN_GETCONTEXT_FN GWEN_Crypt_Token_SetGetContextFn(GWEN_CRYPT_TOKEN *ct, 00228 GWEN_CRYPT_TOKEN_GETCONTEXT_FN f); 00229 00230 GWENHYWFAR_API GWEN_CRYPT_TOKEN_SETCONTEXT_FN GWEN_Crypt_Token_SetSetContextFn(GWEN_CRYPT_TOKEN *ct, 00231 GWEN_CRYPT_TOKEN_SETCONTEXT_FN f); 00232 00233 GWENHYWFAR_API GWEN_CRYPT_TOKEN_SIGN_FN GWEN_Crypt_Token_SetSignFn(GWEN_CRYPT_TOKEN *ct, 00234 GWEN_CRYPT_TOKEN_SIGN_FN f); 00235 00236 GWENHYWFAR_API GWEN_CRYPT_TOKEN_VERIFY_FN GWEN_Crypt_Token_SetVerifyFn(GWEN_CRYPT_TOKEN *ct, 00237 GWEN_CRYPT_TOKEN_VERIFY_FN f); 00238 00239 GWENHYWFAR_API GWEN_CRYPT_TOKEN_ENCIPHER_FN GWEN_Crypt_Token_SetEncipherFn(GWEN_CRYPT_TOKEN *ct, 00240 GWEN_CRYPT_TOKEN_ENCIPHER_FN f); 00241 00242 GWENHYWFAR_API GWEN_CRYPT_TOKEN_DECIPHER_FN GWEN_Crypt_Token_SetDecipherFn(GWEN_CRYPT_TOKEN *ct, 00243 GWEN_CRYPT_TOKEN_DECIPHER_FN f); 00244 00245 GWENHYWFAR_API GWEN_CRYPT_TOKEN_GENERATEKEY_FN GWEN_Crypt_Token_SetGenerateKeyFn(GWEN_CRYPT_TOKEN *ct, 00246 GWEN_CRYPT_TOKEN_GENERATEKEY_FN f); 00247 00248 GWENHYWFAR_API GWEN_CRYPT_TOKEN_CHANGEPIN_FN GWEN_Crypt_Token_SetChangePinFn(GWEN_CRYPT_TOKEN *ct, 00249 GWEN_CRYPT_TOKEN_CHANGEPIN_FN f); 00250 00251 GWEN_CRYPT_TOKEN_ACTIVATEKEY_FN GWEN_Crypt_Token_SetActivateKeyFn(GWEN_CRYPT_TOKEN *ct, 00252 GWEN_CRYPT_TOKEN_ACTIVATEKEY_FN f); 00253 00259 #endif 00260 00261