1 /*************************************************************************** 2 $RCSfile$ 3 ------------------- 4 cvs : $Id: crypttoken.h 1113 2007-01-10 09:14:16Z martin $ 5 begin : Wed Mar 16 2005 6 copyright : (C) 2005 by Martin Preuss 7 email : martin@libchipcard.de 8 9 *************************************************************************** 10 * Please see toplevel file COPYING for license details * 11 ***************************************************************************/ 12 13 14 #ifndef GWEN_CRYPT_CRYPTALGO_H 15 #define GWEN_CRYPT_CRYPTALGO_H 16 17 18 #include <gwenhywfar/list2.h> 19 20 typedef struct GWEN_CRYPT_CRYPTALGO GWEN_CRYPT_CRYPTALGO; 21 22 #ifdef __cplusplus 23 extern "C" { 24 #endif 25 26 GWEN_LIST2_FUNCTION_LIB_DEFS(GWEN_CRYPT_CRYPTALGO, 27 GWEN_Crypt_CryptAlgo, 28 GWENHYWFAR_API) 29 #ifdef __cplusplus 30 } 31 #endif 32 33 34 typedef enum { 35 GWEN_Crypt_CryptAlgoId_Unknown=-1, 36 GWEN_Crypt_CryptAlgoId_None=0, 37 GWEN_Crypt_CryptAlgoId_Any, 38 /** RSA */ 39 GWEN_Crypt_CryptAlgoId_Rsa, 40 /** DSA */ 41 GWEN_Crypt_CryptAlgoId_Dsa, 42 /* DES */ 43 GWEN_Crypt_CryptAlgoId_Des, 44 /** triple-key DES */ 45 GWEN_Crypt_CryptAlgoId_Des3K, 46 /* blowfish */ 47 GWEN_Crypt_CryptAlgoId_BlowFish, 48 /* AES-128 */ 49 GWEN_Crypt_CryptAlgoId_Aes128, 50 /* AES-246 */ 51 GWEN_Crypt_CryptAlgoId_Aes256, 52 } GWEN_CRYPT_CRYPTALGOID; 53 54 55 typedef enum { 56 GWEN_Crypt_CryptMode_Unknown=-1, 57 GWEN_Crypt_CryptMode_None=0, 58 GWEN_Crypt_CryptMode_Ecb, /* electronic codebook */ 59 GWEN_Crypt_CryptMode_Cfb, /* cipher feedback */ 60 GWEN_Crypt_CryptMode_Cbc /* cipher block chaining */ 61 } GWEN_CRYPT_CRYPTMODE; 62 63 64 #include <gwenhywfar/db.h> 65 66 67 #ifdef __cplusplus 68 extern "C" { 69 #endif 70 71 GWENHYWFAR_API GWEN_CRYPT_CRYPTALGOID GWEN_Crypt_CryptAlgoId_fromString(const char *s); 72 GWENHYWFAR_API const char *GWEN_Crypt_CryptAlgoId_toString(GWEN_CRYPT_CRYPTALGOID a); 73 74 GWENHYWFAR_API GWEN_CRYPT_CRYPTMODE GWEN_Crypt_CryptMode_fromString(const char *s); 75 GWENHYWFAR_API const char *GWEN_Crypt_CryptMode_toString(GWEN_CRYPT_CRYPTMODE m); 76 77 78 GWENHYWFAR_API GWEN_CRYPT_CRYPTALGO *GWEN_Crypt_CryptAlgo_new(GWEN_CRYPT_CRYPTALGOID id, 79 GWEN_CRYPT_CRYPTMODE m); 80 GWENHYWFAR_API GWEN_CRYPT_CRYPTALGO *GWEN_Crypt_CryptAlgo_dup(const GWEN_CRYPT_CRYPTALGO *a); 81 GWENHYWFAR_API GWEN_CRYPT_CRYPTALGO *GWEN_Crypt_CryptAlgo_fromDb(GWEN_DB_NODE *db); 82 GWENHYWFAR_API int GWEN_Crypt_CryptAlgo_toDb(const GWEN_CRYPT_CRYPTALGO *a, GWEN_DB_NODE *db); 83 GWENHYWFAR_API void GWEN_Crypt_CryptAlgo_Attach(GWEN_CRYPT_CRYPTALGO *a); 84 GWENHYWFAR_API void GWEN_Crypt_CryptAlgo_free(GWEN_CRYPT_CRYPTALGO *a); 85 86 GWENHYWFAR_API GWEN_CRYPT_CRYPTALGOID GWEN_Crypt_CryptAlgo_GetId(const GWEN_CRYPT_CRYPTALGO *a); 87 GWENHYWFAR_API GWEN_CRYPT_CRYPTMODE GWEN_Crypt_CryptAlgo_GetMode(const GWEN_CRYPT_CRYPTALGO *a); 88 GWENHYWFAR_API uint8_t *GWEN_Crypt_CryptAlgo_GetInitVectorPtr(const GWEN_CRYPT_CRYPTALGO *a); 89 GWENHYWFAR_API uint32_t GWEN_Crypt_CryptAlgo_GetInitVectorLen(const GWEN_CRYPT_CRYPTALGO *a); 90 GWENHYWFAR_API int GWEN_Crypt_CryptAlgo_SetInitVector(GWEN_CRYPT_CRYPTALGO *a, 91 const uint8_t *pv, 92 uint32_t lv); 93 94 95 GWENHYWFAR_API int GWEN_Crypt_CryptAlgo_GetChunkSize(const GWEN_CRYPT_CRYPTALGO *a); 96 GWENHYWFAR_API void GWEN_Crypt_CryptAlgo_SetChunkSize(GWEN_CRYPT_CRYPTALGO *a, int s); 97 98 99 GWENHYWFAR_API int GWEN_Crypt_CryptAlgo_GetKeySizeInBits(const GWEN_CRYPT_CRYPTALGO *a); 100 GWENHYWFAR_API void GWEN_Crypt_CryptAlgo_SetKeySizeInBits(GWEN_CRYPT_CRYPTALGO *a, int s); 101 102 103 #ifdef __cplusplus 104 } 105 #endif 106 107 #endif 108 109 110