gwenhywfar 4.0.3

ct_be.h

Go to the documentation of this file.
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