00001
00002
00003
00004
00005
00006
00007
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