gwenhywfar
4.3.3
|
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_TOKEN_KEYINFO_H 00015 #define GWEN_CRYPT_TOKEN_KEYINFO_H 00016 00017 00018 #include <gwenhywfar/list1.h> 00019 #include <gwenhywfar/list2.h> 00020 00021 00022 00023 typedef struct GWEN_CRYPT_TOKEN_KEYINFO GWEN_CRYPT_TOKEN_KEYINFO; 00024 00025 #ifdef __cplusplus 00026 extern "C" { 00027 #endif 00028 00029 GWEN_LIST_FUNCTION_LIB_DEFS(GWEN_CRYPT_TOKEN_KEYINFO, GWEN_Crypt_Token_KeyInfo, GWENHYWFAR_API) 00030 GWEN_LIST2_FUNCTION_LIB_DEFS(GWEN_CRYPT_TOKEN_KEYINFO, GWEN_Crypt_Token_KeyInfo, GWENHYWFAR_API) 00031 00032 #ifdef __cplusplus 00033 } 00034 #endif 00035 00036 00037 00042 typedef enum { 00043 GWEN_Crypt_Token_KeyStatusUnknown=-1, 00044 GWEN_Crypt_Token_KeyStatusFree=0, 00045 GWEN_Crypt_Token_KeyStatusNew, 00046 GWEN_Crypt_Token_KeyStatusActive 00047 } GWEN_CRYPT_TOKEN_KEYSTATUS; 00056 #define GWEN_CRYPT_TOKEN_KEYFLAGS_HASSTATUS 0x00010000 00057 #define GWEN_CRYPT_TOKEN_KEYFLAGS_HASMODULUS 0x00020000 00058 #define GWEN_CRYPT_TOKEN_KEYFLAGS_HASEXPONENT 0x00040000 00059 #define GWEN_CRYPT_TOKEN_KEYFLAGS_HASACTIONFLAGS 0x00080000 00060 #define GWEN_CRYPT_TOKEN_KEYFLAGS_HASKEYVERSION 0x00100000 00061 #define GWEN_CRYPT_TOKEN_KEYFLAGS_HASSIGNCOUNTER 0x00200000 00062 #define GWEN_CRYPT_TOKEN_KEYFLAGS_HASKEYNUMBER 0x00400000 00063 00064 #define GWEN_CRYPT_TOKEN_KEYFLAGS_ACTIONMASK 0x0000000f 00065 #define GWEN_CRYPT_TOKEN_KEYFLAGS_CANSIGN 0x00000001 00066 #define GWEN_CRYPT_TOKEN_KEYFLAGS_CANVERIFY 0x00000002 00067 #define GWEN_CRYPT_TOKEN_KEYFLAGS_CANENCIPHER 0x00000004 00068 #define GWEN_CRYPT_TOKEN_KEYFLAGS_CANDECIPHER 0x00000008 00069 00073 #include <gwenhywfar/cryptalgo.h> 00074 #include <gwenhywfar/cryptalgo.h> 00075 00076 00077 #ifdef __cplusplus 00078 extern "C" { 00079 #endif 00080 00081 00082 GWENHYWFAR_API 00083 GWEN_CRYPT_TOKEN_KEYINFO *GWEN_Crypt_Token_KeyInfo_new(uint32_t kid, 00084 GWEN_CRYPT_CRYPTALGOID a, 00085 int keySize); 00086 00087 GWENHYWFAR_API 00088 void GWEN_Crypt_Token_KeyInfo_free(GWEN_CRYPT_TOKEN_KEYINFO *ki); 00089 00090 GWENHYWFAR_API 00091 GWEN_CRYPT_TOKEN_KEYINFO *GWEN_Crypt_Token_KeyInfo_dup(const GWEN_CRYPT_TOKEN_KEYINFO *ki); 00092 00093 GWENHYWFAR_API 00094 uint32_t GWEN_Crypt_Token_KeyInfo_GetKeyId(const GWEN_CRYPT_TOKEN_KEYINFO *ki); 00095 00096 GWENHYWFAR_API 00097 const char *GWEN_Crypt_Token_KeyInfo_GetKeyDescr(const GWEN_CRYPT_TOKEN_KEYINFO *ki); 00098 00099 GWENHYWFAR_API 00100 void GWEN_Crypt_Token_KeyInfo_SetKeyDescr(GWEN_CRYPT_TOKEN_KEYINFO *ki, const char *s); 00101 00102 00103 GWENHYWFAR_API 00104 GWEN_CRYPT_CRYPTALGOID GWEN_Crypt_Token_KeyInfo_GetCryptAlgoId(const GWEN_CRYPT_TOKEN_KEYINFO *ki); 00105 00106 GWENHYWFAR_API 00107 int GWEN_Crypt_Token_KeyInfo_GetKeySize(const GWEN_CRYPT_TOKEN_KEYINFO *ki); 00108 00109 GWENHYWFAR_API 00110 void GWEN_Crypt_Token_KeyInfo_SetKeySize(GWEN_CRYPT_TOKEN_KEYINFO *ki, int i); 00111 00112 GWENHYWFAR_API 00113 uint32_t GWEN_Crypt_Token_KeyInfo_GetFlags(const GWEN_CRYPT_TOKEN_KEYINFO *ki); 00114 00115 GWENHYWFAR_API 00116 void GWEN_Crypt_Token_KeyInfo_SetFlags(GWEN_CRYPT_TOKEN_KEYINFO *ki, uint32_t f); 00117 00118 GWENHYWFAR_API 00119 void GWEN_Crypt_Token_KeyInfo_AddFlags(GWEN_CRYPT_TOKEN_KEYINFO *ki, uint32_t f); 00120 00121 GWENHYWFAR_API 00122 void GWEN_Crypt_Token_KeyInfo_SubFlags(GWEN_CRYPT_TOKEN_KEYINFO *ki, uint32_t f); 00123 00124 GWENHYWFAR_API 00125 const uint8_t *GWEN_Crypt_Token_KeyInfo_GetModulusData(const GWEN_CRYPT_TOKEN_KEYINFO *ki); 00126 00127 GWENHYWFAR_API 00128 uint32_t GWEN_Crypt_Token_KeyInfo_GetModulusLen(const GWEN_CRYPT_TOKEN_KEYINFO *ki); 00129 00130 GWENHYWFAR_API 00131 void GWEN_Crypt_Token_KeyInfo_SetModulus(GWEN_CRYPT_TOKEN_KEYINFO *ki, 00132 const uint8_t *p, 00133 uint32_t len); 00134 00135 GWENHYWFAR_API 00136 const uint8_t *GWEN_Crypt_Token_KeyInfo_GetExponentData(const GWEN_CRYPT_TOKEN_KEYINFO *ki); 00137 00138 GWENHYWFAR_API 00139 uint32_t GWEN_Crypt_Token_KeyInfo_GetExponentLen(const GWEN_CRYPT_TOKEN_KEYINFO *ki); 00140 00141 GWENHYWFAR_API 00142 void GWEN_Crypt_Token_KeyInfo_SetExponent(GWEN_CRYPT_TOKEN_KEYINFO *ki, 00143 const uint8_t *p, 00144 uint32_t len); 00145 00146 GWENHYWFAR_API 00147 uint32_t GWEN_Crypt_Token_KeyInfo_GetKeyNumber(const GWEN_CRYPT_TOKEN_KEYINFO *ki); 00148 00149 GWENHYWFAR_API 00150 void GWEN_Crypt_Token_KeyInfo_SetKeyNumber(GWEN_CRYPT_TOKEN_KEYINFO *ki, 00151 uint32_t i); 00152 00153 GWENHYWFAR_API 00154 uint32_t GWEN_Crypt_Token_KeyInfo_GetKeyVersion(const GWEN_CRYPT_TOKEN_KEYINFO *ki); 00155 00156 GWENHYWFAR_API 00157 void GWEN_Crypt_Token_KeyInfo_SetKeyVersion(GWEN_CRYPT_TOKEN_KEYINFO *ki, 00158 uint32_t i); 00159 00160 GWENHYWFAR_API 00161 uint32_t GWEN_Crypt_Token_KeyInfo_GetSignCounter(const GWEN_CRYPT_TOKEN_KEYINFO *ki); 00162 00163 GWENHYWFAR_API 00164 void GWEN_Crypt_Token_KeyInfo_SetSignCounter(GWEN_CRYPT_TOKEN_KEYINFO *ki, 00165 uint32_t i); 00166 00167 00168 #ifdef __cplusplus 00169 } 00170 #endif 00171 00172 00173 #endif 00174 00175 00176