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_CRYPTALGO_H 00015 #define GWEN_CRYPT_CRYPTALGO_H 00016 00017 00018 #include <gwenhywfar/list2.h> 00019 00020 typedef struct GWEN_CRYPT_CRYPTALGO GWEN_CRYPT_CRYPTALGO; 00021 00022 #ifdef __cplusplus 00023 extern "C" { 00024 #endif 00025 00026 GWEN_LIST2_FUNCTION_LIB_DEFS(GWEN_CRYPT_CRYPTALGO, 00027 GWEN_Crypt_CryptAlgo, 00028 GWENHYWFAR_API) 00029 #ifdef __cplusplus 00030 } 00031 #endif 00032 00033 00034 typedef enum { 00035 GWEN_Crypt_CryptAlgoId_Unknown=-1, 00036 GWEN_Crypt_CryptAlgoId_None=0, 00037 GWEN_Crypt_CryptAlgoId_Any, 00039 GWEN_Crypt_CryptAlgoId_Rsa, 00041 GWEN_Crypt_CryptAlgoId_Dsa, 00042 /* DES */ 00043 GWEN_Crypt_CryptAlgoId_Des, 00045 GWEN_Crypt_CryptAlgoId_Des3K, 00046 /* blowfish */ 00047 GWEN_Crypt_CryptAlgoId_BlowFish, 00048 /* AES-128 */ 00049 GWEN_Crypt_CryptAlgoId_Aes128, 00050 } GWEN_CRYPT_CRYPTALGOID; 00051 00052 00053 typedef enum { 00054 GWEN_Crypt_CryptMode_Unknown=-1, 00055 GWEN_Crypt_CryptMode_None=0, 00056 GWEN_Crypt_CryptMode_Ecb, /* electronic codebook */ 00057 GWEN_Crypt_CryptMode_Cfb, /* cipher feedback */ 00058 GWEN_Crypt_CryptMode_Cbc /* cipher block chaining */ 00059 } GWEN_CRYPT_CRYPTMODE; 00060 00061 00062 #include <gwenhywfar/db.h> 00063 00064 00065 #ifdef __cplusplus 00066 extern "C" { 00067 #endif 00068 00069 GWENHYWFAR_API GWEN_CRYPT_CRYPTALGOID GWEN_Crypt_CryptAlgoId_fromString(const char *s); 00070 GWENHYWFAR_API const char *GWEN_Crypt_CryptAlgoId_toString(GWEN_CRYPT_CRYPTALGOID a); 00071 00072 GWENHYWFAR_API GWEN_CRYPT_CRYPTMODE GWEN_Crypt_CryptMode_fromString(const char *s); 00073 GWENHYWFAR_API const char *GWEN_Crypt_CryptMode_toString(GWEN_CRYPT_CRYPTMODE m); 00074 00075 00076 GWENHYWFAR_API GWEN_CRYPT_CRYPTALGO *GWEN_Crypt_CryptAlgo_new(GWEN_CRYPT_CRYPTALGOID id, 00077 GWEN_CRYPT_CRYPTMODE m); 00078 GWENHYWFAR_API GWEN_CRYPT_CRYPTALGO *GWEN_Crypt_CryptAlgo_dup(const GWEN_CRYPT_CRYPTALGO *a); 00079 GWENHYWFAR_API GWEN_CRYPT_CRYPTALGO *GWEN_Crypt_CryptAlgo_fromDb(GWEN_DB_NODE *db); 00080 GWENHYWFAR_API int GWEN_Crypt_CryptAlgo_toDb(const GWEN_CRYPT_CRYPTALGO *a, GWEN_DB_NODE *db); 00081 GWENHYWFAR_API void GWEN_Crypt_CryptAlgo_Attach(GWEN_CRYPT_CRYPTALGO *a); 00082 GWENHYWFAR_API void GWEN_Crypt_CryptAlgo_free(GWEN_CRYPT_CRYPTALGO *a); 00083 00084 GWENHYWFAR_API GWEN_CRYPT_CRYPTALGOID GWEN_Crypt_CryptAlgo_GetId(const GWEN_CRYPT_CRYPTALGO *a); 00085 GWENHYWFAR_API GWEN_CRYPT_CRYPTMODE GWEN_Crypt_CryptAlgo_GetMode(const GWEN_CRYPT_CRYPTALGO *a); 00086 GWENHYWFAR_API uint8_t *GWEN_Crypt_CryptAlgo_GetInitVectorPtr(const GWEN_CRYPT_CRYPTALGO *a); 00087 GWENHYWFAR_API uint32_t GWEN_Crypt_CryptAlgo_GetInitVectorLen(const GWEN_CRYPT_CRYPTALGO *a); 00088 GWENHYWFAR_API int GWEN_Crypt_CryptAlgo_SetInitVector(GWEN_CRYPT_CRYPTALGO *a, 00089 const uint8_t *pv, 00090 uint32_t lv); 00091 00092 00093 GWENHYWFAR_API int GWEN_Crypt_CryptAlgo_GetChunkSize(const GWEN_CRYPT_CRYPTALGO *a); 00094 GWENHYWFAR_API void GWEN_Crypt_CryptAlgo_SetChunkSize(GWEN_CRYPT_CRYPTALGO *a, int s); 00095 00096 00097 GWENHYWFAR_API int GWEN_Crypt_CryptAlgo_GetKeySizeInBits(const GWEN_CRYPT_CRYPTALGO *a); 00098 GWENHYWFAR_API void GWEN_Crypt_CryptAlgo_SetKeySizeInBits(GWEN_CRYPT_CRYPTALGO *a, int s); 00099 00100 00101 #ifdef __cplusplus 00102 } 00103 #endif 00104 00105 #endif 00106 00107