gwenhywfar  5.10.1
ctf_context.c
Go to the documentation of this file.
1 /***************************************************************************
2  begin : Wed Mar 16 2005
3  copyright : (C) 2005-2010 by Martin Preuss
4  email : martin@libchipcard.de
5 
6  ***************************************************************************
7  * Please see toplevel file COPYING for license details *
8  ***************************************************************************/
9 
10 #ifdef HAVE_CONFIG_H
11 # include <config.h>
12 #endif
13 
14 #define DISABLE_DEBUGLOG
15 
16 
17 #include "ctf_context_p.h"
18 #include <gwenhywfar/misc.h>
19 #include <gwenhywfar/debug.h>
20 
21 
22 
23 
24 
25 GWEN_INHERIT(GWEN_CRYPT_TOKEN_CONTEXT, GWEN_CTF_CONTEXT)
26 
27 
28 
29 
31 {
33  GWEN_CTF_CONTEXT *fctx;
34 
36  GWEN_NEW_OBJECT(GWEN_CTF_CONTEXT, fctx)
37  GWEN_INHERIT_SETDATA(GWEN_CRYPT_TOKEN_CONTEXT, GWEN_CTF_CONTEXT, ctx, fctx,
39 
40  return ctx;
41 }
42 
43 
44 
46 {
47  assert(ctx);
48  return GWEN_INHERIT_ISOFTYPE(GWEN_CRYPT_TOKEN_CONTEXT, GWEN_CTF_CONTEXT, ctx);
49 }
50 
51 
52 
54 void GWEN_CTF_Context_freeData(GWEN_UNUSED void *bp, void *p)
55 {
56  GWEN_CTF_CONTEXT *fctx;
57 
58  fctx=(GWEN_CTF_CONTEXT *) p;
59  GWEN_Crypt_Key_free(fctx->localSignKey);
60  GWEN_Crypt_Key_free(fctx->localCryptKey);
61  GWEN_Crypt_Key_free(fctx->remoteSignKey);
62  GWEN_Crypt_Key_free(fctx->remoteCryptKey);
63  GWEN_Crypt_Key_free(fctx->localAuthKey);
64  GWEN_Crypt_Key_free(fctx->remoteAuthKey);
65  GWEN_Crypt_Key_free(fctx->tempLocalSignKey);
66 
67  GWEN_Crypt_Token_KeyInfo_free(fctx->localSignKeyInfo);
68  GWEN_Crypt_Token_KeyInfo_free(fctx->localCryptKeyInfo);
69  GWEN_Crypt_Token_KeyInfo_free(fctx->remoteSignKeyInfo);
70  GWEN_Crypt_Token_KeyInfo_free(fctx->remoteCryptKeyInfo);
71  GWEN_Crypt_Token_KeyInfo_free(fctx->localAuthKeyInfo);
72  GWEN_Crypt_Token_KeyInfo_free(fctx->remoteAuthKeyInfo);
73  GWEN_Crypt_Token_KeyInfo_free(fctx->tempLocalSignKeyInfo);
74 
75  GWEN_FREE_OBJECT(fctx);
76 }
77 
78 
79 
81 {
82  GWEN_CTF_CONTEXT *fctx;
83 
84  assert(ctx);
85  fctx=GWEN_INHERIT_GETDATA(GWEN_CRYPT_TOKEN_CONTEXT, GWEN_CTF_CONTEXT, ctx);
86  assert(fctx);
87 
88  return fctx->localSignKey;
89 }
90 
91 
92 
94 {
95  GWEN_CTF_CONTEXT *fctx;
96 
97  assert(ctx);
98  fctx=GWEN_INHERIT_GETDATA(GWEN_CRYPT_TOKEN_CONTEXT, GWEN_CTF_CONTEXT, ctx);
99  assert(fctx);
100 
101  GWEN_Crypt_Key_free(fctx->localSignKey);
102  fctx->localSignKey=k;
103 }
104 
105 
106 
108 {
109  GWEN_CTF_CONTEXT *fctx;
110 
111  assert(ctx);
112  fctx=GWEN_INHERIT_GETDATA(GWEN_CRYPT_TOKEN_CONTEXT, GWEN_CTF_CONTEXT, ctx);
113  assert(fctx);
114 
115  return fctx->localSignKeyInfo;
116 }
117 
118 
119 
121 {
122  GWEN_CTF_CONTEXT *fctx;
123 
124  assert(ctx);
125  fctx=GWEN_INHERIT_GETDATA(GWEN_CRYPT_TOKEN_CONTEXT, GWEN_CTF_CONTEXT, ctx);
126  assert(fctx);
127 
128  GWEN_Crypt_Token_KeyInfo_free(fctx->localSignKeyInfo);
129  fctx->localSignKeyInfo=ki;
130 }
131 
132 
133 
135 {
136  GWEN_CTF_CONTEXT *fctx;
137 
138  assert(ctx);
139  fctx=GWEN_INHERIT_GETDATA(GWEN_CRYPT_TOKEN_CONTEXT, GWEN_CTF_CONTEXT, ctx);
140  assert(fctx);
141 
142  return fctx->localCryptKey;
143 }
144 
145 
146 
148 {
149  GWEN_CTF_CONTEXT *fctx;
150 
151  assert(ctx);
152  fctx=GWEN_INHERIT_GETDATA(GWEN_CRYPT_TOKEN_CONTEXT, GWEN_CTF_CONTEXT, ctx);
153  assert(fctx);
154 
155  GWEN_Crypt_Key_free(fctx->localCryptKey);
156  fctx->localCryptKey=k;
157 }
158 
159 
160 
162 {
163  GWEN_CTF_CONTEXT *fctx;
164 
165  assert(ctx);
166  fctx=GWEN_INHERIT_GETDATA(GWEN_CRYPT_TOKEN_CONTEXT, GWEN_CTF_CONTEXT, ctx);
167  assert(fctx);
168 
169  return fctx->localCryptKeyInfo;
170 }
171 
172 
173 
175 {
176  GWEN_CTF_CONTEXT *fctx;
177 
178  assert(ctx);
179  fctx=GWEN_INHERIT_GETDATA(GWEN_CRYPT_TOKEN_CONTEXT, GWEN_CTF_CONTEXT, ctx);
180  assert(fctx);
181 
182  GWEN_Crypt_Token_KeyInfo_free(fctx->localCryptKeyInfo);
183  fctx->localCryptKeyInfo=ki;
184 }
185 
186 
187 
189 {
190  GWEN_CTF_CONTEXT *fctx;
191 
192  assert(ctx);
193  fctx=GWEN_INHERIT_GETDATA(GWEN_CRYPT_TOKEN_CONTEXT, GWEN_CTF_CONTEXT, ctx);
194  assert(fctx);
195 
196  return fctx->remoteSignKey;
197 }
198 
199 
200 
202 {
203  GWEN_CTF_CONTEXT *fctx;
204 
205  assert(ctx);
206  fctx=GWEN_INHERIT_GETDATA(GWEN_CRYPT_TOKEN_CONTEXT, GWEN_CTF_CONTEXT, ctx);
207  assert(fctx);
208 
209  GWEN_Crypt_Key_free(fctx->remoteSignKey);
210  fctx->remoteSignKey=k;
211 }
212 
213 
214 
216 {
217  GWEN_CTF_CONTEXT *fctx;
218 
219  assert(ctx);
220  fctx=GWEN_INHERIT_GETDATA(GWEN_CRYPT_TOKEN_CONTEXT, GWEN_CTF_CONTEXT, ctx);
221  assert(fctx);
222 
223  return fctx->remoteSignKeyInfo;
224 }
225 
226 
227 
229 {
230  GWEN_CTF_CONTEXT *fctx;
231 
232  assert(ctx);
233  fctx=GWEN_INHERIT_GETDATA(GWEN_CRYPT_TOKEN_CONTEXT, GWEN_CTF_CONTEXT, ctx);
234  assert(fctx);
235 
236  GWEN_Crypt_Token_KeyInfo_free(fctx->remoteSignKeyInfo);
237  fctx->remoteSignKeyInfo=ki;
238 }
239 
240 
241 
243 {
244  GWEN_CTF_CONTEXT *fctx;
245 
246  assert(ctx);
247  fctx=GWEN_INHERIT_GETDATA(GWEN_CRYPT_TOKEN_CONTEXT, GWEN_CTF_CONTEXT, ctx);
248  assert(fctx);
249 
250  return fctx->remoteCryptKey;
251 }
252 
253 
254 
256 {
257  GWEN_CTF_CONTEXT *fctx;
258 
259  assert(ctx);
260  fctx=GWEN_INHERIT_GETDATA(GWEN_CRYPT_TOKEN_CONTEXT, GWEN_CTF_CONTEXT, ctx);
261  assert(fctx);
262 
263  GWEN_Crypt_Key_free(fctx->remoteCryptKey);
264  fctx->remoteCryptKey=k;
265 }
266 
267 
268 
270 {
271  GWEN_CTF_CONTEXT *fctx;
272 
273  assert(ctx);
274  fctx=GWEN_INHERIT_GETDATA(GWEN_CRYPT_TOKEN_CONTEXT, GWEN_CTF_CONTEXT, ctx);
275  assert(fctx);
276 
277  return fctx->remoteCryptKeyInfo;
278 }
279 
280 
281 
283 {
284  GWEN_CTF_CONTEXT *fctx;
285 
286  assert(ctx);
287  fctx=GWEN_INHERIT_GETDATA(GWEN_CRYPT_TOKEN_CONTEXT, GWEN_CTF_CONTEXT, ctx);
288  assert(fctx);
289 
290  GWEN_Crypt_Token_KeyInfo_free(fctx->remoteCryptKeyInfo);
291  fctx->remoteCryptKeyInfo=ki;
292 }
293 
294 
295 
297 {
298  GWEN_CTF_CONTEXT *fctx;
299 
300  assert(ctx);
301  fctx=GWEN_INHERIT_GETDATA(GWEN_CRYPT_TOKEN_CONTEXT, GWEN_CTF_CONTEXT, ctx);
302  assert(fctx);
303 
304  return fctx->localAuthKey;
305 }
306 
307 
308 
310 {
311  GWEN_CTF_CONTEXT *fctx;
312 
313  assert(ctx);
314  fctx=GWEN_INHERIT_GETDATA(GWEN_CRYPT_TOKEN_CONTEXT, GWEN_CTF_CONTEXT, ctx);
315  assert(fctx);
316 
317  GWEN_Crypt_Key_free(fctx->localAuthKey);
318  fctx->localAuthKey=k;
319 }
320 
321 
322 
324 {
325  GWEN_CTF_CONTEXT *fctx;
326 
327  assert(ctx);
328  fctx=GWEN_INHERIT_GETDATA(GWEN_CRYPT_TOKEN_CONTEXT, GWEN_CTF_CONTEXT, ctx);
329  assert(fctx);
330 
331  return fctx->localAuthKeyInfo;
332 }
333 
334 
335 
337 {
338  GWEN_CTF_CONTEXT *fctx;
339 
340  assert(ctx);
341  fctx=GWEN_INHERIT_GETDATA(GWEN_CRYPT_TOKEN_CONTEXT, GWEN_CTF_CONTEXT, ctx);
342  assert(fctx);
343 
344  GWEN_Crypt_Token_KeyInfo_free(fctx->localAuthKeyInfo);
345  fctx->localAuthKeyInfo=ki;
346 }
347 
348 
349 
351 {
352  GWEN_CTF_CONTEXT *fctx;
353 
354  assert(ctx);
355  fctx=GWEN_INHERIT_GETDATA(GWEN_CRYPT_TOKEN_CONTEXT, GWEN_CTF_CONTEXT, ctx);
356  assert(fctx);
357 
358  return fctx->remoteAuthKey;
359 }
360 
361 
362 
364 {
365  GWEN_CTF_CONTEXT *fctx;
366 
367  assert(ctx);
368  fctx=GWEN_INHERIT_GETDATA(GWEN_CRYPT_TOKEN_CONTEXT, GWEN_CTF_CONTEXT, ctx);
369  assert(fctx);
370 
371  GWEN_Crypt_Key_free(fctx->remoteAuthKey);
372  fctx->remoteAuthKey=k;
373 }
374 
375 
376 
378 {
379  GWEN_CTF_CONTEXT *fctx;
380 
381  assert(ctx);
382  fctx=GWEN_INHERIT_GETDATA(GWEN_CRYPT_TOKEN_CONTEXT, GWEN_CTF_CONTEXT, ctx);
383  assert(fctx);
384 
385  return fctx->remoteAuthKeyInfo;
386 }
387 
388 
389 
391 {
392  GWEN_CTF_CONTEXT *fctx;
393 
394  assert(ctx);
395  fctx=GWEN_INHERIT_GETDATA(GWEN_CRYPT_TOKEN_CONTEXT, GWEN_CTF_CONTEXT, ctx);
396  assert(fctx);
397 
398  GWEN_Crypt_Token_KeyInfo_free(fctx->remoteAuthKeyInfo);
399  fctx->remoteAuthKeyInfo=ki;
400 }
401 
402 
403 
405 {
406  GWEN_CTF_CONTEXT *fctx;
407 
408  assert(ctx);
409  fctx=GWEN_INHERIT_GETDATA(GWEN_CRYPT_TOKEN_CONTEXT, GWEN_CTF_CONTEXT, ctx);
410  assert(fctx);
411 
412  return fctx->tempLocalSignKey;
413 }
414 
415 
416 
418 {
419  GWEN_CTF_CONTEXT *fctx;
420 
421  assert(ctx);
422  fctx=GWEN_INHERIT_GETDATA(GWEN_CRYPT_TOKEN_CONTEXT, GWEN_CTF_CONTEXT, ctx);
423  assert(fctx);
424 
425  GWEN_Crypt_Key_free(fctx->tempLocalSignKey);
426  fctx->tempLocalSignKey=k;
427 }
428 
429 
430 
432 {
433  GWEN_CTF_CONTEXT *fctx;
434 
435  assert(ctx);
436  fctx=GWEN_INHERIT_GETDATA(GWEN_CRYPT_TOKEN_CONTEXT, GWEN_CTF_CONTEXT, ctx);
437  assert(fctx);
438 
439  return fctx->tempLocalSignKeyInfo;
440 }
441 
442 
443 
445 {
446  GWEN_CTF_CONTEXT *fctx;
447 
448  assert(ctx);
449  fctx=GWEN_INHERIT_GETDATA(GWEN_CRYPT_TOKEN_CONTEXT, GWEN_CTF_CONTEXT, ctx);
450  assert(fctx);
451 
452  GWEN_Crypt_Token_KeyInfo_free(fctx->tempLocalSignKeyInfo);
453  fctx->tempLocalSignKeyInfo=ki;
454 }
455 
456 
457 
458 
459 
460 
461 
462 
GWEN_CRYPT_KEY * GWEN_CTF_Context_GetRemoteSignKey(const GWEN_CRYPT_TOKEN_CONTEXT *ctx)
Definition: ctf_context.c:188
GWEN_CRYPT_TOKEN_KEYINFO * GWEN_CTF_Context_GetLocalSignKeyInfo(const GWEN_CRYPT_TOKEN_CONTEXT *ctx)
Definition: ctf_context.c:107
void GWEN_CTF_Context_SetLocalSignKeyInfo(GWEN_CRYPT_TOKEN_CONTEXT *ctx, GWEN_CRYPT_TOKEN_KEYINFO *ki)
Definition: ctf_context.c:120
GWEN_CRYPT_KEY * GWEN_CTF_Context_GetLocalSignKey(const GWEN_CRYPT_TOKEN_CONTEXT *ctx)
Definition: ctf_context.c:80
void GWEN_Crypt_Token_KeyInfo_free(GWEN_CRYPT_TOKEN_KEYINFO *p_struct)
Definition: ct_keyinfo.c:78
void GWEN_CTF_Context_SetLocalCryptKey(GWEN_CRYPT_TOKEN_CONTEXT *ctx, GWEN_CRYPT_KEY *k)
Definition: ctf_context.c:147
GWEN_CRYPT_KEY * GWEN_CTF_Context_GetLocalAuthKey(const GWEN_CRYPT_TOKEN_CONTEXT *ctx)
Definition: ctf_context.c:296
void GWEN_CTF_Context_SetLocalAuthKey(GWEN_CRYPT_TOKEN_CONTEXT *ctx, GWEN_CRYPT_KEY *k)
Definition: ctf_context.c:309
void GWEN_CTF_Context_SetRemoteSignKey(GWEN_CRYPT_TOKEN_CONTEXT *ctx, GWEN_CRYPT_KEY *k)
Definition: ctf_context.c:201
GWEN_CRYPT_TOKEN_CONTEXT * GWEN_Crypt_Token_Context_new(void)
Definition: ct_context.c:25
void GWEN_Crypt_Key_free(GWEN_CRYPT_KEY *k)
Definition: cryptkey.c:154
void GWEN_CTF_Context_SetLocalSignKey(GWEN_CRYPT_TOKEN_CONTEXT *ctx, GWEN_CRYPT_KEY *k)
Definition: ctf_context.c:93
#define GWEN_FREE_OBJECT(varname)
Definition: memory.h:61
GWEN_CRYPT_TOKEN_CONTEXT * GWEN_CTF_Context_new()
Definition: ctf_context.c:30
GWEN_CRYPT_TOKEN_KEYINFO * GWEN_CTF_Context_GetLocalCryptKeyInfo(const GWEN_CRYPT_TOKEN_CONTEXT *ctx)
Definition: ctf_context.c:161
GWEN_CRYPT_KEY * GWEN_CTF_Context_GetLocalCryptKey(const GWEN_CRYPT_TOKEN_CONTEXT *ctx)
Definition: ctf_context.c:134
#define GWEN_INHERIT_ISOFTYPE(bt, t, element)
Definition: inherit.h:305
void GWEN_CTF_Context_SetRemoteCryptKeyInfo(GWEN_CRYPT_TOKEN_CONTEXT *ctx, GWEN_CRYPT_TOKEN_KEYINFO *ki)
Definition: ctf_context.c:282
void GWEN_CTF_Context_SetRemoteCryptKey(GWEN_CRYPT_TOKEN_CONTEXT *ctx, GWEN_CRYPT_KEY *k)
Definition: ctf_context.c:255
void GWEN_CTF_Context_SetRemoteAuthKeyInfo(GWEN_CRYPT_TOKEN_CONTEXT *ctx, GWEN_CRYPT_TOKEN_KEYINFO *ki)
Definition: ctf_context.c:390
GWEN_CRYPT_KEY * GWEN_CTF_Context_GetRemoteCryptKey(const GWEN_CRYPT_TOKEN_CONTEXT *ctx)
Definition: ctf_context.c:242
int GWEN_CTF_Context_IsOfThisType(const GWEN_CRYPT_TOKEN_CONTEXT *ctx)
Definition: ctf_context.c:45
GWEN_CRYPT_TOKEN_KEYINFO * GWEN_CTF_Context_GetTempLocalSignKeyInfo(const GWEN_CRYPT_TOKEN_CONTEXT *ctx)
Definition: ctf_context.c:431
#define GWEN_NEW_OBJECT(typ, varname)
Definition: memory.h:55
#define GWENHYWFAR_CB
Definition: gwenhywfarapi.h:89
void GWEN_CTF_Context_SetRemoteSignKeyInfo(GWEN_CRYPT_TOKEN_CONTEXT *ctx, GWEN_CRYPT_TOKEN_KEYINFO *ki)
Definition: ctf_context.c:228
void GWEN_CTF_Context_SetRemoteAuthKey(GWEN_CRYPT_TOKEN_CONTEXT *ctx, GWEN_CRYPT_KEY *k)
Definition: ctf_context.c:363
GWENHYWFAR_CB void GWEN_CTF_Context_freeData(GWEN_UNUSED void *bp, void *p)
Definition: ctf_context.c:54
struct GWEN_CRYPT_KEY GWEN_CRYPT_KEY
Definition: cryptkey.h:26
GWEN_CRYPT_TOKEN_KEYINFO * GWEN_CTF_Context_GetRemoteCryptKeyInfo(const GWEN_CRYPT_TOKEN_CONTEXT *ctx)
Definition: ctf_context.c:269
struct GWEN_CRYPT_TOKEN_KEYINFO GWEN_CRYPT_TOKEN_KEYINFO
Definition: ct_keyinfo.h:127
void GWEN_CTF_Context_SetTempLocalSignKey(GWEN_CRYPT_TOKEN_CONTEXT *ctx, GWEN_CRYPT_KEY *k)
Definition: ctf_context.c:417
GWEN_CRYPT_KEY * GWEN_CTF_Context_GetTempLocalSignKey(const GWEN_CRYPT_TOKEN_CONTEXT *ctx)
Definition: ctf_context.c:404
struct GWEN_CRYPT_TOKEN_CONTEXT GWEN_CRYPT_TOKEN_CONTEXT
Definition: ct_context.h:221
void GWEN_CTF_Context_SetLocalCryptKeyInfo(GWEN_CRYPT_TOKEN_CONTEXT *ctx, GWEN_CRYPT_TOKEN_KEYINFO *ki)
Definition: ctf_context.c:174
GWEN_CRYPT_TOKEN_KEYINFO * GWEN_CTF_Context_GetRemoteAuthKeyInfo(const GWEN_CRYPT_TOKEN_CONTEXT *ctx)
Definition: ctf_context.c:377
void GWEN_CTF_Context_SetTempLocalSignKeyInfo(GWEN_CRYPT_TOKEN_CONTEXT *ctx, GWEN_CRYPT_TOKEN_KEYINFO *ki)
Definition: ctf_context.c:444
GWEN_CRYPT_TOKEN_KEYINFO * GWEN_CTF_Context_GetRemoteSignKeyInfo(const GWEN_CRYPT_TOKEN_CONTEXT *ctx)
Definition: ctf_context.c:215
GWEN_CRYPT_KEY * GWEN_CTF_Context_GetRemoteAuthKey(const GWEN_CRYPT_TOKEN_CONTEXT *ctx)
Definition: ctf_context.c:350
#define GWEN_INHERIT(bt, t)
Definition: inherit.h:264
#define GWEN_INHERIT_SETDATA(bt, t, element, data, fn)
Definition: inherit.h:292
GWEN_CRYPT_TOKEN_KEYINFO * GWEN_CTF_Context_GetLocalAuthKeyInfo(const GWEN_CRYPT_TOKEN_CONTEXT *ctx)
Definition: ctf_context.c:323
#define GWEN_UNUSED
#define GWEN_INHERIT_GETDATA(bt, t, element)
Definition: inherit.h:271
void GWEN_CTF_Context_SetLocalAuthKeyInfo(GWEN_CRYPT_TOKEN_CONTEXT *ctx, GWEN_CRYPT_TOKEN_KEYINFO *ki)
Definition: ctf_context.c:336