gwenhywfar
4.3.1
|
00001 /*************************************************************************** 00002 begin : Wed Mar 16 2005 00003 copyright : (C) 2005-2010 by Martin Preuss 00004 email : martin@libchipcard.de 00005 00006 *************************************************************************** 00007 * Please see toplevel file COPYING for license details * 00008 ***************************************************************************/ 00009 00010 #ifdef HAVE_CONFIG_H 00011 # include <config.h> 00012 #endif 00013 00014 #define DISABLE_DEBUGLOG 00015 00016 00017 #include "ctf_context_p.h" 00018 #include <gwenhywfar/misc.h> 00019 #include <gwenhywfar/debug.h> 00020 00021 00022 00023 00024 00025 GWEN_INHERIT(GWEN_CRYPT_TOKEN_CONTEXT, GWEN_CTF_CONTEXT) 00026 00027 00028 00029 00030 GWEN_CRYPT_TOKEN_CONTEXT *GWEN_CTF_Context_new() { 00031 GWEN_CRYPT_TOKEN_CONTEXT *ctx; 00032 GWEN_CTF_CONTEXT *fctx; 00033 00034 ctx=GWEN_Crypt_Token_Context_new(); 00035 GWEN_NEW_OBJECT(GWEN_CTF_CONTEXT, fctx) 00036 GWEN_INHERIT_SETDATA(GWEN_CRYPT_TOKEN_CONTEXT, GWEN_CTF_CONTEXT, ctx, fctx, 00037 GWEN_CTF_Context_freeData) 00038 00039 return ctx; 00040 } 00041 00042 00043 00044 int GWEN_CTF_Context_IsOfThisType(const GWEN_CRYPT_TOKEN_CONTEXT *ctx) { 00045 assert(ctx); 00046 return GWEN_INHERIT_ISOFTYPE(GWEN_CRYPT_TOKEN_CONTEXT, GWEN_CTF_CONTEXT, ctx); 00047 } 00048 00049 00050 00051 GWENHYWFAR_CB 00052 void GWEN_CTF_Context_freeData(GWEN_UNUSED void *bp, void *p) { 00053 GWEN_CTF_CONTEXT *fctx; 00054 00055 fctx=(GWEN_CTF_CONTEXT*) p; 00056 GWEN_Crypt_Key_free(fctx->localSignKey); 00057 GWEN_Crypt_Key_free(fctx->localCryptKey); 00058 GWEN_Crypt_Key_free(fctx->remoteSignKey); 00059 GWEN_Crypt_Key_free(fctx->remoteCryptKey); 00060 GWEN_Crypt_Key_free(fctx->localAuthKey); 00061 GWEN_Crypt_Key_free(fctx->remoteAuthKey); 00062 GWEN_Crypt_Key_free(fctx->tempLocalSignKey); 00063 00064 GWEN_Crypt_Token_KeyInfo_free(fctx->localSignKeyInfo); 00065 GWEN_Crypt_Token_KeyInfo_free(fctx->localCryptKeyInfo); 00066 GWEN_Crypt_Token_KeyInfo_free(fctx->remoteSignKeyInfo); 00067 GWEN_Crypt_Token_KeyInfo_free(fctx->remoteCryptKeyInfo); 00068 GWEN_Crypt_Token_KeyInfo_free(fctx->localAuthKeyInfo); 00069 GWEN_Crypt_Token_KeyInfo_free(fctx->remoteAuthKeyInfo); 00070 GWEN_Crypt_Token_KeyInfo_free(fctx->tempLocalSignKeyInfo); 00071 00072 GWEN_FREE_OBJECT(fctx); 00073 } 00074 00075 00076 00077 GWEN_CRYPT_KEY *GWEN_CTF_Context_GetLocalSignKey(const GWEN_CRYPT_TOKEN_CONTEXT *ctx) { 00078 GWEN_CTF_CONTEXT *fctx; 00079 00080 assert(ctx); 00081 fctx=GWEN_INHERIT_GETDATA(GWEN_CRYPT_TOKEN_CONTEXT, GWEN_CTF_CONTEXT, ctx); 00082 assert(fctx); 00083 00084 return fctx->localSignKey; 00085 } 00086 00087 00088 00089 void GWEN_CTF_Context_SetLocalSignKey(GWEN_CRYPT_TOKEN_CONTEXT *ctx, GWEN_CRYPT_KEY *k) { 00090 GWEN_CTF_CONTEXT *fctx; 00091 00092 assert(ctx); 00093 fctx=GWEN_INHERIT_GETDATA(GWEN_CRYPT_TOKEN_CONTEXT, GWEN_CTF_CONTEXT, ctx); 00094 assert(fctx); 00095 00096 GWEN_Crypt_Key_free(fctx->localSignKey); 00097 fctx->localSignKey=k; 00098 } 00099 00100 00101 00102 GWEN_CRYPT_TOKEN_KEYINFO*GWEN_CTF_Context_GetLocalSignKeyInfo(const GWEN_CRYPT_TOKEN_CONTEXT *ctx) { 00103 GWEN_CTF_CONTEXT *fctx; 00104 00105 assert(ctx); 00106 fctx=GWEN_INHERIT_GETDATA(GWEN_CRYPT_TOKEN_CONTEXT, GWEN_CTF_CONTEXT, ctx); 00107 assert(fctx); 00108 00109 return fctx->localSignKeyInfo; 00110 } 00111 00112 00113 00114 void GWEN_CTF_Context_SetLocalSignKeyInfo(GWEN_CRYPT_TOKEN_CONTEXT *ctx, GWEN_CRYPT_TOKEN_KEYINFO *ki) { 00115 GWEN_CTF_CONTEXT *fctx; 00116 00117 assert(ctx); 00118 fctx=GWEN_INHERIT_GETDATA(GWEN_CRYPT_TOKEN_CONTEXT, GWEN_CTF_CONTEXT, ctx); 00119 assert(fctx); 00120 00121 GWEN_Crypt_Token_KeyInfo_free(fctx->localSignKeyInfo); 00122 fctx->localSignKeyInfo=ki; 00123 } 00124 00125 00126 00127 GWEN_CRYPT_KEY *GWEN_CTF_Context_GetLocalCryptKey(const GWEN_CRYPT_TOKEN_CONTEXT *ctx) { 00128 GWEN_CTF_CONTEXT *fctx; 00129 00130 assert(ctx); 00131 fctx=GWEN_INHERIT_GETDATA(GWEN_CRYPT_TOKEN_CONTEXT, GWEN_CTF_CONTEXT, ctx); 00132 assert(fctx); 00133 00134 return fctx->localCryptKey; 00135 } 00136 00137 00138 00139 void GWEN_CTF_Context_SetLocalCryptKey(GWEN_CRYPT_TOKEN_CONTEXT *ctx, GWEN_CRYPT_KEY *k) { 00140 GWEN_CTF_CONTEXT *fctx; 00141 00142 assert(ctx); 00143 fctx=GWEN_INHERIT_GETDATA(GWEN_CRYPT_TOKEN_CONTEXT, GWEN_CTF_CONTEXT, ctx); 00144 assert(fctx); 00145 00146 GWEN_Crypt_Key_free(fctx->localCryptKey); 00147 fctx->localCryptKey=k; 00148 } 00149 00150 00151 00152 GWEN_CRYPT_TOKEN_KEYINFO *GWEN_CTF_Context_GetLocalCryptKeyInfo(const GWEN_CRYPT_TOKEN_CONTEXT *ctx) { 00153 GWEN_CTF_CONTEXT *fctx; 00154 00155 assert(ctx); 00156 fctx=GWEN_INHERIT_GETDATA(GWEN_CRYPT_TOKEN_CONTEXT, GWEN_CTF_CONTEXT, ctx); 00157 assert(fctx); 00158 00159 return fctx->localCryptKeyInfo; 00160 } 00161 00162 00163 00164 void GWEN_CTF_Context_SetLocalCryptKeyInfo(GWEN_CRYPT_TOKEN_CONTEXT *ctx, GWEN_CRYPT_TOKEN_KEYINFO *ki) { 00165 GWEN_CTF_CONTEXT *fctx; 00166 00167 assert(ctx); 00168 fctx=GWEN_INHERIT_GETDATA(GWEN_CRYPT_TOKEN_CONTEXT, GWEN_CTF_CONTEXT, ctx); 00169 assert(fctx); 00170 00171 GWEN_Crypt_Token_KeyInfo_free(fctx->localCryptKeyInfo); 00172 fctx->localCryptKeyInfo=ki; 00173 } 00174 00175 00176 00177 GWEN_CRYPT_KEY *GWEN_CTF_Context_GetRemoteSignKey(const GWEN_CRYPT_TOKEN_CONTEXT *ctx) { 00178 GWEN_CTF_CONTEXT *fctx; 00179 00180 assert(ctx); 00181 fctx=GWEN_INHERIT_GETDATA(GWEN_CRYPT_TOKEN_CONTEXT, GWEN_CTF_CONTEXT, ctx); 00182 assert(fctx); 00183 00184 return fctx->remoteSignKey; 00185 } 00186 00187 00188 00189 void GWEN_CTF_Context_SetRemoteSignKey(GWEN_CRYPT_TOKEN_CONTEXT *ctx, GWEN_CRYPT_KEY *k) { 00190 GWEN_CTF_CONTEXT *fctx; 00191 00192 assert(ctx); 00193 fctx=GWEN_INHERIT_GETDATA(GWEN_CRYPT_TOKEN_CONTEXT, GWEN_CTF_CONTEXT, ctx); 00194 assert(fctx); 00195 00196 GWEN_Crypt_Key_free(fctx->remoteSignKey); 00197 fctx->remoteSignKey=k; 00198 } 00199 00200 00201 00202 GWEN_CRYPT_TOKEN_KEYINFO *GWEN_CTF_Context_GetRemoteSignKeyInfo(const GWEN_CRYPT_TOKEN_CONTEXT *ctx) { 00203 GWEN_CTF_CONTEXT *fctx; 00204 00205 assert(ctx); 00206 fctx=GWEN_INHERIT_GETDATA(GWEN_CRYPT_TOKEN_CONTEXT, GWEN_CTF_CONTEXT, ctx); 00207 assert(fctx); 00208 00209 return fctx->remoteSignKeyInfo; 00210 } 00211 00212 00213 00214 void GWEN_CTF_Context_SetRemoteSignKeyInfo(GWEN_CRYPT_TOKEN_CONTEXT *ctx, GWEN_CRYPT_TOKEN_KEYINFO *ki) { 00215 GWEN_CTF_CONTEXT *fctx; 00216 00217 assert(ctx); 00218 fctx=GWEN_INHERIT_GETDATA(GWEN_CRYPT_TOKEN_CONTEXT, GWEN_CTF_CONTEXT, ctx); 00219 assert(fctx); 00220 00221 GWEN_Crypt_Token_KeyInfo_free(fctx->remoteSignKeyInfo); 00222 fctx->remoteSignKeyInfo=ki; 00223 } 00224 00225 00226 00227 GWEN_CRYPT_KEY *GWEN_CTF_Context_GetRemoteCryptKey(const GWEN_CRYPT_TOKEN_CONTEXT *ctx) { 00228 GWEN_CTF_CONTEXT *fctx; 00229 00230 assert(ctx); 00231 fctx=GWEN_INHERIT_GETDATA(GWEN_CRYPT_TOKEN_CONTEXT, GWEN_CTF_CONTEXT, ctx); 00232 assert(fctx); 00233 00234 return fctx->remoteCryptKey; 00235 } 00236 00237 00238 00239 void GWEN_CTF_Context_SetRemoteCryptKey(GWEN_CRYPT_TOKEN_CONTEXT *ctx, GWEN_CRYPT_KEY *k) { 00240 GWEN_CTF_CONTEXT *fctx; 00241 00242 assert(ctx); 00243 fctx=GWEN_INHERIT_GETDATA(GWEN_CRYPT_TOKEN_CONTEXT, GWEN_CTF_CONTEXT, ctx); 00244 assert(fctx); 00245 00246 GWEN_Crypt_Key_free(fctx->remoteCryptKey); 00247 fctx->remoteCryptKey=k; 00248 } 00249 00250 00251 00252 GWEN_CRYPT_TOKEN_KEYINFO *GWEN_CTF_Context_GetRemoteCryptKeyInfo(const GWEN_CRYPT_TOKEN_CONTEXT *ctx) { 00253 GWEN_CTF_CONTEXT *fctx; 00254 00255 assert(ctx); 00256 fctx=GWEN_INHERIT_GETDATA(GWEN_CRYPT_TOKEN_CONTEXT, GWEN_CTF_CONTEXT, ctx); 00257 assert(fctx); 00258 00259 return fctx->remoteCryptKeyInfo; 00260 } 00261 00262 00263 00264 void GWEN_CTF_Context_SetRemoteCryptKeyInfo(GWEN_CRYPT_TOKEN_CONTEXT *ctx, GWEN_CRYPT_TOKEN_KEYINFO *ki) { 00265 GWEN_CTF_CONTEXT *fctx; 00266 00267 assert(ctx); 00268 fctx=GWEN_INHERIT_GETDATA(GWEN_CRYPT_TOKEN_CONTEXT, GWEN_CTF_CONTEXT, ctx); 00269 assert(fctx); 00270 00271 GWEN_Crypt_Token_KeyInfo_free(fctx->remoteCryptKeyInfo); 00272 fctx->remoteCryptKeyInfo=ki; 00273 } 00274 00275 00276 00277 GWEN_CRYPT_KEY *GWEN_CTF_Context_GetLocalAuthKey(const GWEN_CRYPT_TOKEN_CONTEXT *ctx) { 00278 GWEN_CTF_CONTEXT *fctx; 00279 00280 assert(ctx); 00281 fctx=GWEN_INHERIT_GETDATA(GWEN_CRYPT_TOKEN_CONTEXT, GWEN_CTF_CONTEXT, ctx); 00282 assert(fctx); 00283 00284 return fctx->localAuthKey; 00285 } 00286 00287 00288 00289 void GWEN_CTF_Context_SetLocalAuthKey(GWEN_CRYPT_TOKEN_CONTEXT *ctx, GWEN_CRYPT_KEY *k) { 00290 GWEN_CTF_CONTEXT *fctx; 00291 00292 assert(ctx); 00293 fctx=GWEN_INHERIT_GETDATA(GWEN_CRYPT_TOKEN_CONTEXT, GWEN_CTF_CONTEXT, ctx); 00294 assert(fctx); 00295 00296 GWEN_Crypt_Key_free(fctx->localAuthKey); 00297 fctx->localAuthKey=k; 00298 } 00299 00300 00301 00302 GWEN_CRYPT_TOKEN_KEYINFO *GWEN_CTF_Context_GetLocalAuthKeyInfo(const GWEN_CRYPT_TOKEN_CONTEXT *ctx) { 00303 GWEN_CTF_CONTEXT *fctx; 00304 00305 assert(ctx); 00306 fctx=GWEN_INHERIT_GETDATA(GWEN_CRYPT_TOKEN_CONTEXT, GWEN_CTF_CONTEXT, ctx); 00307 assert(fctx); 00308 00309 return fctx->localAuthKeyInfo; 00310 } 00311 00312 00313 00314 void GWEN_CTF_Context_SetLocalAuthKeyInfo(GWEN_CRYPT_TOKEN_CONTEXT *ctx, GWEN_CRYPT_TOKEN_KEYINFO *ki) { 00315 GWEN_CTF_CONTEXT *fctx; 00316 00317 assert(ctx); 00318 fctx=GWEN_INHERIT_GETDATA(GWEN_CRYPT_TOKEN_CONTEXT, GWEN_CTF_CONTEXT, ctx); 00319 assert(fctx); 00320 00321 GWEN_Crypt_Token_KeyInfo_free(fctx->localAuthKeyInfo); 00322 fctx->localAuthKeyInfo=ki; 00323 } 00324 00325 00326 00327 GWEN_CRYPT_KEY *GWEN_CTF_Context_GetRemoteAuthKey(const GWEN_CRYPT_TOKEN_CONTEXT *ctx) { 00328 GWEN_CTF_CONTEXT *fctx; 00329 00330 assert(ctx); 00331 fctx=GWEN_INHERIT_GETDATA(GWEN_CRYPT_TOKEN_CONTEXT, GWEN_CTF_CONTEXT, ctx); 00332 assert(fctx); 00333 00334 return fctx->remoteAuthKey; 00335 } 00336 00337 00338 00339 void GWEN_CTF_Context_SetRemoteAuthKey(GWEN_CRYPT_TOKEN_CONTEXT *ctx, GWEN_CRYPT_KEY *k) { 00340 GWEN_CTF_CONTEXT *fctx; 00341 00342 assert(ctx); 00343 fctx=GWEN_INHERIT_GETDATA(GWEN_CRYPT_TOKEN_CONTEXT, GWEN_CTF_CONTEXT, ctx); 00344 assert(fctx); 00345 00346 GWEN_Crypt_Key_free(fctx->remoteAuthKey); 00347 fctx->remoteAuthKey=k; 00348 } 00349 00350 00351 00352 GWEN_CRYPT_TOKEN_KEYINFO *GWEN_CTF_Context_GetRemoteAuthKeyInfo(const GWEN_CRYPT_TOKEN_CONTEXT *ctx) { 00353 GWEN_CTF_CONTEXT *fctx; 00354 00355 assert(ctx); 00356 fctx=GWEN_INHERIT_GETDATA(GWEN_CRYPT_TOKEN_CONTEXT, GWEN_CTF_CONTEXT, ctx); 00357 assert(fctx); 00358 00359 return fctx->remoteAuthKeyInfo; 00360 } 00361 00362 00363 00364 void GWEN_CTF_Context_SetRemoteAuthKeyInfo(GWEN_CRYPT_TOKEN_CONTEXT *ctx, GWEN_CRYPT_TOKEN_KEYINFO *ki) { 00365 GWEN_CTF_CONTEXT *fctx; 00366 00367 assert(ctx); 00368 fctx=GWEN_INHERIT_GETDATA(GWEN_CRYPT_TOKEN_CONTEXT, GWEN_CTF_CONTEXT, ctx); 00369 assert(fctx); 00370 00371 GWEN_Crypt_Token_KeyInfo_free(fctx->remoteAuthKeyInfo); 00372 fctx->remoteAuthKeyInfo=ki; 00373 } 00374 00375 00376 00377 GWEN_CRYPT_KEY *GWEN_CTF_Context_GetTempLocalSignKey(const GWEN_CRYPT_TOKEN_CONTEXT *ctx) { 00378 GWEN_CTF_CONTEXT *fctx; 00379 00380 assert(ctx); 00381 fctx=GWEN_INHERIT_GETDATA(GWEN_CRYPT_TOKEN_CONTEXT, GWEN_CTF_CONTEXT, ctx); 00382 assert(fctx); 00383 00384 return fctx->tempLocalSignKey; 00385 } 00386 00387 00388 00389 void GWEN_CTF_Context_SetTempLocalSignKey(GWEN_CRYPT_TOKEN_CONTEXT *ctx, GWEN_CRYPT_KEY *k) { 00390 GWEN_CTF_CONTEXT *fctx; 00391 00392 assert(ctx); 00393 fctx=GWEN_INHERIT_GETDATA(GWEN_CRYPT_TOKEN_CONTEXT, GWEN_CTF_CONTEXT, ctx); 00394 assert(fctx); 00395 00396 GWEN_Crypt_Key_free(fctx->tempLocalSignKey); 00397 fctx->tempLocalSignKey=k; 00398 } 00399 00400 00401 00402 GWEN_CRYPT_TOKEN_KEYINFO*GWEN_CTF_Context_GetTempLocalSignKeyInfo(const GWEN_CRYPT_TOKEN_CONTEXT *ctx) { 00403 GWEN_CTF_CONTEXT *fctx; 00404 00405 assert(ctx); 00406 fctx=GWEN_INHERIT_GETDATA(GWEN_CRYPT_TOKEN_CONTEXT, GWEN_CTF_CONTEXT, ctx); 00407 assert(fctx); 00408 00409 return fctx->tempLocalSignKeyInfo; 00410 } 00411 00412 00413 00414 void GWEN_CTF_Context_SetTempLocalSignKeyInfo(GWEN_CRYPT_TOKEN_CONTEXT *ctx, GWEN_CRYPT_TOKEN_KEYINFO *ki) { 00415 GWEN_CTF_CONTEXT *fctx; 00416 00417 assert(ctx); 00418 fctx=GWEN_INHERIT_GETDATA(GWEN_CRYPT_TOKEN_CONTEXT, GWEN_CTF_CONTEXT, ctx); 00419 assert(fctx); 00420 00421 GWEN_Crypt_Token_KeyInfo_free(fctx->tempLocalSignKeyInfo); 00422 fctx->tempLocalSignKeyInfo=ki; 00423 } 00424 00425 00426 00427 00428 00429 00430 00431