ct.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_H
00015 #define GWEN_CRYPT_CRYPTTOKEN_H
00016 
00017 #include <gwenhywfar/list1.h>
00018 #include <gwenhywfar/list2.h>
00019 
00020 
00021 
00022 typedef struct GWEN_CRYPT_TOKEN GWEN_CRYPT_TOKEN;
00023 
00024 #ifdef __cplusplus
00025 extern "C" {
00026 #endif
00027 
00028 
00029 GWEN_LIST_FUNCTION_LIB_DEFS(GWEN_CRYPT_TOKEN, GWEN_Crypt_Token, GWENHYWFAR_API)
00030 GWEN_LIST2_FUNCTION_LIB_DEFS(GWEN_CRYPT_TOKEN, GWEN_Crypt_Token, GWENHYWFAR_API)
00031 
00032 #ifdef __cplusplus
00033 }
00034 #endif
00035 
00036 
00037 
00038 typedef enum {
00039   GWEN_Crypt_Token_Device_Unknown=-1,
00040   GWEN_Crypt_Token_Device_None=0,
00041   GWEN_Crypt_Token_Device_File,
00042   GWEN_Crypt_Token_Device_Card,
00043   GWEN_Crypt_Token_Device_Any=999
00044 } GWEN_CRYPT_TOKEN_DEVICE;
00045 
00046 
00047 #ifdef __cplusplus
00048 extern "C" {
00049 #endif
00050 
00055 GWENHYWFAR_API GWEN_CRYPT_TOKEN_DEVICE GWEN_Crypt_Token_Device_fromString(const char *s);
00056 GWENHYWFAR_API const char *GWEN_Crypt_Token_Device_toString(GWEN_CRYPT_TOKEN_DEVICE d);
00061 #define GWEN_CRYPT_TOKEN_MODE_SECURE_PIN_ENTRY   0x00000001
00062 #define GWEN_CRYPT_TOKEN_MODE_FORCE_PIN_ENTRY    0x00000002
00063 
00064 #define GWEN_CRYPT_TOKEN_MODE_ALLOW_UPDATE       0x00000004
00065 #define GWEN_CRYPT_TOKEN_MODE_EXP_65537          0x00000008
00066 #define GWEN_CRYPT_TOKEN_MODE_DIRECT_SIGN        0x00000010
00067 
00068 
00069 
00070 #define GWEN_CRYPT_TOKEN_FLAGS_MANAGES_SIGNSEQ   0x00000001
00071 
00072 
00073 
00074 #include <gwenhywfar/ct_keyinfo.h>
00075 #include <gwenhywfar/ct_context.h>
00076 #include <gwenhywfar/paddalgo.h>
00077 #include <gwenhywfar/hashalgo.h>
00078 #include <gwenhywfar/cryptalgo.h>
00079 #include <gwenhywfar/cryptdefs.h>
00080 
00081 
00086 GWENHYWFAR_API void GWEN_Crypt_Token_free(GWEN_CRYPT_TOKEN *ct);
00095 GWENHYWFAR_API uint32_t GWEN_Crypt_Token_GetFlags(const GWEN_CRYPT_TOKEN *ct);
00096 
00097 GWENHYWFAR_API uint32_t GWEN_Crypt_Token_GetModes(const GWEN_CRYPT_TOKEN *ct);
00098 
00099 GWENHYWFAR_API void GWEN_Crypt_Token_SetModes(GWEN_CRYPT_TOKEN *ct, uint32_t f);
00100 
00101 GWENHYWFAR_API void GWEN_Crypt_Token_AddModes(GWEN_CRYPT_TOKEN *ct, uint32_t f);
00102 
00103 GWENHYWFAR_API void GWEN_Crypt_Token_SubModes(GWEN_CRYPT_TOKEN *ct, uint32_t f);
00104 
00105 GWENHYWFAR_API GWEN_CRYPT_TOKEN_DEVICE GWEN_Crypt_Token_GetDevice(const GWEN_CRYPT_TOKEN *ct);
00106 
00107 GWENHYWFAR_API const char *GWEN_Crypt_Token_GetTokenName(const GWEN_CRYPT_TOKEN *ct);
00108 
00109 GWENHYWFAR_API const char *GWEN_Crypt_Token_GetTypeName(const GWEN_CRYPT_TOKEN *ct);
00110 
00111 GWENHYWFAR_API const char *GWEN_Crypt_Token_GetFriendlyName(const GWEN_CRYPT_TOKEN *ct);
00112 
00113 GWENHYWFAR_API void GWEN_Crypt_Token_SetFriendlyName(GWEN_CRYPT_TOKEN *ct, const char *s);
00122 GWENHYWFAR_API int GWEN_Crypt_Token_Open(GWEN_CRYPT_TOKEN *ct, int admin, uint32_t gid);
00123 
00124 
00125 GWENHYWFAR_API int GWEN_Crypt_Token_Create(GWEN_CRYPT_TOKEN *ct, uint32_t gid);
00126 
00127 GWENHYWFAR_API int GWEN_Crypt_Token_Close(GWEN_CRYPT_TOKEN *ct, int abandon, uint32_t gid);
00128 
00129 GWENHYWFAR_API int GWEN_Crypt_Token_IsOpen(const GWEN_CRYPT_TOKEN *ct);
00130 
00139 GWENHYWFAR_API int GWEN_Crypt_Token_GetKeyIdList(GWEN_CRYPT_TOKEN *ct,
00140                                                  uint32_t *pIdList,
00141                                                  uint32_t *pCount,
00142                                                  uint32_t gid);
00143 
00144 GWENHYWFAR_API const GWEN_CRYPT_TOKEN_KEYINFO* GWEN_Crypt_Token_GetKeyInfo(GWEN_CRYPT_TOKEN *ct,
00145                                                                            uint32_t id,
00146                                                                            uint32_t flags,
00147                                                                            uint32_t gid);
00148 
00149 GWENHYWFAR_API int GWEN_Crypt_Token_SetKeyInfo(GWEN_CRYPT_TOKEN *ct,
00150                                                uint32_t id,
00151                                                const GWEN_CRYPT_TOKEN_KEYINFO *ki,
00152                                                uint32_t gid);
00153 
00154 
00155 GWENHYWFAR_API int GWEN_Crypt_Token_GetContextIdList(GWEN_CRYPT_TOKEN *ct,
00156                                                      uint32_t *pIdList,
00157                                                      uint32_t *pCount,
00158                                                      uint32_t gid);
00159 
00160 GWENHYWFAR_API const GWEN_CRYPT_TOKEN_CONTEXT* GWEN_Crypt_Token_GetContext(GWEN_CRYPT_TOKEN *ct,
00161                                                                            uint32_t id,
00162                                                                            uint32_t gid);
00163 
00164 GWENHYWFAR_API int GWEN_Crypt_Token_SetContext(GWEN_CRYPT_TOKEN *ct,
00165                                                uint32_t id,
00166                                                const GWEN_CRYPT_TOKEN_CONTEXT *ctx,
00167                                                uint32_t gid);
00176 GWENHYWFAR_API int GWEN_Crypt_Token_Sign(GWEN_CRYPT_TOKEN *ct,
00177                                          uint32_t keyId,
00178                                          GWEN_CRYPT_PADDALGO *a,
00179                                          const uint8_t *pInData,
00180                                          uint32_t inLen,
00181                                          uint8_t *pSignatureData,
00182                                          uint32_t *pSignatureLen,
00183                                          uint32_t *pSeqCounter,
00184                                          uint32_t gid);
00185 
00186 GWENHYWFAR_API int GWEN_Crypt_Token_Verify(GWEN_CRYPT_TOKEN *ct,
00187                                            uint32_t keyId,
00188                                            GWEN_CRYPT_PADDALGO *a,
00189                                            const uint8_t *pInData,
00190                                            uint32_t inLen,
00191                                            const uint8_t *pSignatureData,
00192                                            uint32_t signatureLen,
00193                                            uint32_t seqCounter,
00194                                            uint32_t gid);
00195 
00196 GWENHYWFAR_API int GWEN_Crypt_Token_Encipher(GWEN_CRYPT_TOKEN *ct,
00197                                              uint32_t keyId,
00198                                              GWEN_CRYPT_PADDALGO *a,
00199                                              const uint8_t *pInData,
00200                                              uint32_t inLen,
00201                                              uint8_t *pOutData,
00202                                              uint32_t *pOutLen,
00203                                              uint32_t gid);
00204 
00205 GWENHYWFAR_API int GWEN_Crypt_Token_Decipher(GWEN_CRYPT_TOKEN *ct,
00206                                              uint32_t keyId,
00207                                              GWEN_CRYPT_PADDALGO *a,
00208                                              const uint8_t *pInData,
00209                                              uint32_t inLen,
00210                                              uint8_t *pOutData,
00211                                              uint32_t *pOutLen,
00212                                              uint32_t gid);
00221 GWENHYWFAR_API int GWEN_Crypt_Token_GenerateKey(GWEN_CRYPT_TOKEN *ct,
00222                                                 uint32_t keyId,
00223                                                 const GWEN_CRYPT_CRYPTALGO *a,
00224                                                 uint32_t gid);
00225 
00226 GWENHYWFAR_API int GWEN_Crypt_Token_ChangePin(GWEN_CRYPT_TOKEN *ct, int admin, uint32_t gid);
00230 #ifdef __cplusplus
00231 }
00232 #endif
00233 
00234 
00235 
00236 #endif
00237 
00238 

Generated on Wed Sep 3 15:21:57 2008 for gwenhywfar by  doxygen 1.5.6