cryptalgo.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_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