ct.h

Go to the documentation of this file.
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);
00227 #ifdef __cplusplus
00228 }
00229 #endif
00230 
00231 
00232 
00233 #endif
00234 
00235 

Generated on Mon Jan 25 12:56:01 2010 for gwenhywfar by  doxygen 1.5.6