gwenhywfar  4.99.8beta
ct_keyinfo.c
Go to the documentation of this file.
1 /**********************************************************
2  * This file has been automatically created by "typemaker2"
3  * from the file "ct_keyinfo.xml".
4  * Please do not edit this file, all changes will be lost.
5  * Better edit the mentioned source file instead.
6  **********************************************************/
7 
8 #ifdef HAVE_CONFIG_H
9 # include <config.h>
10 #endif
11 
12 #include "ct_keyinfo_p.h"
13 
14 #include <gwenhywfar/misc.h>
15 #include <gwenhywfar/debug.h>
16 
17 /* code headers */
18 
19 /* macro functions */
20 GWEN_LIST_FUNCTIONS(GWEN_CRYPT_TOKEN_KEYINFO, GWEN_Crypt_Token_KeyInfo)
21 GWEN_LIST2_FUNCTIONS(GWEN_CRYPT_TOKEN_KEYINFO, GWEN_Crypt_Token_KeyInfo)
22 GWEN_INHERIT_FUNCTIONS(GWEN_CRYPT_TOKEN_KEYINFO)
23 
24 
26 {
27  if (p_s && *p_s) {
28  if (strcasecmp(p_s, "free") == 0)
30  else if (strcasecmp(p_s, "new") == 0)
32  else if (strcasecmp(p_s, "active") == 0)
34  }
36 }
37 
39 {
40  switch(p_i) {
42  return "free";
44  return "new";
46  return "active";
47  default:
48  return "unknown";
49  }
50 }
51 
53 {
54  GWEN_CRYPT_TOKEN_KEYINFO *p_struct;
55 
57  p_struct->_refCount = 1;
60  /* members */
61  p_struct->id = 0;
62  p_struct->keyDescr = NULL;
63  p_struct->flags = 0;
64  p_struct->keySize = 0;
65  p_struct->cryptAlgoId = 0;
66  p_struct->modulus = NULL;
67  p_struct->exponent = NULL;
68  p_struct->keyNumber = 0;
69  p_struct->keyVersion = 0;
70  p_struct->signCounter = 0;
71  p_struct->certificate = NULL;
72  /* virtual functions */
73 
74  return p_struct;
75 }
76 
78 {
79  if (p_struct) {
80  assert(p_struct->_refCount);
81  if (p_struct->_refCount == 1) {
84  /* members */
85  free(p_struct->keyDescr);
86  p_struct->keyDescr = NULL;
87  GWEN_Buffer_free(p_struct->modulus);
88  p_struct->modulus = NULL;
89  GWEN_Buffer_free(p_struct->exponent);
90  p_struct->exponent = NULL;
91  GWEN_Buffer_free(p_struct->certificate);
92  p_struct->certificate = NULL;
93  p_struct->_refCount = 0;
94  GWEN_FREE_OBJECT(p_struct);
95  } else
96  p_struct->_refCount--;
97  }
98 }
99 
101 {
102  assert(p_struct);
103  assert(p_struct->_refCount);
104  p_struct->_refCount++;
105 }
106 
108 {
109  GWEN_CRYPT_TOKEN_KEYINFO *p_struct;
110 
111  assert(p_src);
112  p_struct = GWEN_Crypt_Token_KeyInfo__new();
113  /* member "id" */
114  p_struct->id = p_src->id;
115 
116  /* member "keyDescr" */
117  if (p_struct->keyDescr) {
118  free(p_struct->keyDescr);
119  p_struct->keyDescr = NULL;
120  p_struct->keyDescr = NULL;
121  }
122  if (p_src->keyDescr) {
123  p_struct->keyDescr = strdup(p_src->keyDescr);
124  }
125 
126  /* member "flags" */
127  p_struct->flags = p_src->flags;
128 
129  /* member "keySize" */
130  p_struct->keySize = p_src->keySize;
131 
132  /* member "cryptAlgoId" */
133  p_struct->cryptAlgoId = p_src->cryptAlgoId;
134 
135  /* member "modulus" */
136  if (p_struct->modulus) {
137  GWEN_Buffer_free(p_struct->modulus);
138  p_struct->modulus = NULL;
139  p_struct->modulus = NULL;
140  }
141  if (p_src->modulus) {
142  p_struct->modulus = GWEN_Buffer_dup(p_src->modulus);
143  }
144 
145  /* member "exponent" */
146  if (p_struct->exponent) {
147  GWEN_Buffer_free(p_struct->exponent);
148  p_struct->exponent = NULL;
149  p_struct->exponent = NULL;
150  }
151  if (p_src->exponent) {
152  p_struct->exponent = GWEN_Buffer_dup(p_src->exponent);
153  }
154 
155  /* member "keyNumber" */
156  p_struct->keyNumber = p_src->keyNumber;
157 
158  /* member "keyVersion" */
159  p_struct->keyVersion = p_src->keyVersion;
160 
161  /* member "signCounter" */
162  p_struct->signCounter = p_src->signCounter;
163 
164  /* member "certificate" */
165  if (p_struct->certificate) {
166  GWEN_Buffer_free(p_struct->certificate);
167  p_struct->certificate = NULL;
168  p_struct->certificate = NULL;
169  }
170  if (p_src->certificate) {
171  p_struct->certificate = GWEN_Buffer_dup(p_src->certificate);
172  }
173 
174  return p_struct;
175 }
176 
178 {
179  assert(p_struct);
180  assert(p_src);
181  /* member "id" */
182  p_struct->id = p_src->id;
183 
184  /* member "keyDescr" */
185  if (p_struct->keyDescr) {
186  free(p_struct->keyDescr);
187  p_struct->keyDescr = NULL;
188  p_struct->keyDescr = NULL;
189  }
190  if (p_src->keyDescr) {
191  p_struct->keyDescr = strdup(p_src->keyDescr);
192  }
193 
194  /* member "flags" */
195  p_struct->flags = p_src->flags;
196 
197  /* member "keySize" */
198  p_struct->keySize = p_src->keySize;
199 
200  /* member "cryptAlgoId" */
201  p_struct->cryptAlgoId = p_src->cryptAlgoId;
202 
203  /* member "modulus" */
204  if (p_struct->modulus) {
205  GWEN_Buffer_free(p_struct->modulus);
206  p_struct->modulus = NULL;
207  p_struct->modulus = NULL;
208  }
209  if (p_src->modulus) {
210  p_struct->modulus = GWEN_Buffer_dup(p_src->modulus);
211  }
212 
213  /* member "exponent" */
214  if (p_struct->exponent) {
215  GWEN_Buffer_free(p_struct->exponent);
216  p_struct->exponent = NULL;
217  p_struct->exponent = NULL;
218  }
219  if (p_src->exponent) {
220  p_struct->exponent = GWEN_Buffer_dup(p_src->exponent);
221  }
222 
223  /* member "keyNumber" */
224  p_struct->keyNumber = p_src->keyNumber;
225 
226  /* member "keyVersion" */
227  p_struct->keyVersion = p_src->keyVersion;
228 
229  /* member "signCounter" */
230  p_struct->signCounter = p_src->signCounter;
231 
232  /* member "certificate" */
233  if (p_struct->certificate) {
234  GWEN_Buffer_free(p_struct->certificate);
235  p_struct->certificate = NULL;
236  p_struct->certificate = NULL;
237  }
238  if (p_src->certificate) {
239  p_struct->certificate = GWEN_Buffer_dup(p_src->certificate);
240  }
241 
242  return p_struct;
243 }
244 
246 {
247  assert(p_struct);
248  return p_struct->id;
249 }
250 
252 {
253  assert(p_struct);
254  return p_struct->keyDescr;
255 }
256 
258 {
259  assert(p_struct);
260  return p_struct->flags;
261 }
262 
264 {
265  assert(p_struct);
266  return p_struct->keySize;
267 }
268 
270 {
271  assert(p_struct);
272  return p_struct->cryptAlgoId;
273 }
274 
276 {
277  assert(p_struct);
278  return p_struct->keyNumber;
279 }
280 
282 {
283  assert(p_struct);
284  return p_struct->keyVersion;
285 }
286 
288 {
289  assert(p_struct);
290  return p_struct->signCounter;
291 }
292 
294 {
295  assert(p_struct);
296  p_struct->id = p_src;
297 }
298 
300 {
301  assert(p_struct);
302  if (p_struct->keyDescr) {
303  free(p_struct->keyDescr);
304  p_struct->keyDescr = NULL;
305  }
306  if (p_src) {
307  p_struct->keyDescr = strdup(p_src);
308  } else {
309  p_struct->keyDescr = NULL;
310  }
311 }
312 
314 {
315  assert(p_struct);
316  p_struct->flags = p_src;
317 }
318 
320 {
321  assert(p_struct);
322  p_struct->flags |= p_src;
323 }
324 
326 {
327  assert(p_struct);
328  p_struct->flags &= ~p_src;
329 }
330 
332 {
333  assert(p_struct);
334  p_struct->keySize = p_src;
335 }
336 
338 {
339  assert(p_struct);
340  p_struct->cryptAlgoId = p_src;
341 }
342 
344 {
345  assert(p_struct);
346  p_struct->keyNumber = p_src;
347 }
348 
350 {
351  assert(p_struct);
352  p_struct->keyVersion = p_src;
353 }
354 
356 {
357  assert(p_struct);
358  p_struct->signCounter = p_src;
359 }
360 
361 /* list1 functions */
363 {
365  GWEN_CRYPT_TOKEN_KEYINFO *p_elem;
366 
367  assert(p_src);
369  p_elem = GWEN_Crypt_Token_KeyInfo_List_First(p_src);
370  while(p_elem) {
372 
373  p_cpy = GWEN_Crypt_Token_KeyInfo_dup(p_elem);
374  GWEN_Crypt_Token_KeyInfo_List_Add(p_cpy, p_dest);
375  p_elem = GWEN_Crypt_Token_KeyInfo_List_Next(p_elem);
376  }
377 
378  return p_dest;
379 }
380 
382 {
383  assert(p_struct);
384  /* member "id" */
385  p_struct->id = GWEN_DB_GetIntValue(p_db, "id", 0, 0);
386 
387  /* member "keyDescr" */
388  if (p_struct->keyDescr) {
389  free(p_struct->keyDescr);
390  p_struct->keyDescr = NULL;
391  }
392  {
393  const char *s;
394  s = GWEN_DB_GetCharValue(p_db, "keyDescr", 0, NULL);
395  if (s) p_struct->keyDescr = strdup(s);
396  }
397  if (p_struct->keyDescr == NULL) {
398  p_struct->keyDescr = NULL;
399  }
400 
401  /* member "flags" */
402  p_struct->flags = GWEN_DB_GetIntValue(p_db, "flags", 0, 0);
403 
404  /* member "keySize" */
405  p_struct->keySize = GWEN_DB_GetIntValue(p_db, "keySize", 0, 0);
406 
407  /* member "cryptAlgoId" */
408  p_struct->cryptAlgoId = GWEN_DB_GetIntValue(p_db, "cryptAlgoId", 0, 0);
409 
410  /* member "modulus" */
411  if (p_struct->modulus) {
412  GWEN_Buffer_free(p_struct->modulus);
413  p_struct->modulus = NULL;
414  }
415  {
416  const uint8_t *ptr;
417  uint32_t len;
418  ptr = GWEN_DB_GetBinValue(p_db, "modulus", 0, NULL, 0, &len);
419  if (ptr && len) {
420  p_struct->modulus = GWEN_Buffer_new(0, len, 0, 1);
421  GWEN_Buffer_AppendBytes(p_struct->modulus, (const char*)ptr, len);
422  }
423  }
424  if (p_struct->modulus == NULL) {
425  p_struct->modulus = NULL;
426  }
427 
428  /* member "exponent" */
429  if (p_struct->exponent) {
430  GWEN_Buffer_free(p_struct->exponent);
431  p_struct->exponent = NULL;
432  }
433  {
434  const uint8_t *ptr;
435  uint32_t len;
436  ptr = GWEN_DB_GetBinValue(p_db, "exponent", 0, NULL, 0, &len);
437  if (ptr && len) {
438  p_struct->exponent = GWEN_Buffer_new(0, len, 0, 1);
439  GWEN_Buffer_AppendBytes(p_struct->exponent, (const char*)ptr, len);
440  }
441  }
442  if (p_struct->exponent == NULL) {
443  p_struct->exponent = NULL;
444  }
445 
446  /* member "keyNumber" */
447  p_struct->keyNumber = GWEN_DB_GetIntValue(p_db, "keyNumber", 0, 0);
448 
449  /* member "keyVersion" */
450  p_struct->keyVersion = GWEN_DB_GetIntValue(p_db, "keyVersion", 0, 0);
451 
452  /* member "signCounter" */
453  p_struct->signCounter = GWEN_DB_GetIntValue(p_db, "signCounter", 0, 0);
454 
455  /* member "certificate" */
456  if (p_struct->certificate) {
457  GWEN_Buffer_free(p_struct->certificate);
458  p_struct->certificate = NULL;
459  }
460  {
461  const uint8_t *ptr;
462  uint32_t len;
463  ptr = GWEN_DB_GetBinValue(p_db, "certificate", 0, NULL, 0, &len);
464  if (ptr && len) {
465  p_struct->certificate = GWEN_Buffer_new(0, len, 0, 1);
466  GWEN_Buffer_AppendBytes(p_struct->certificate, (const char*)ptr, len);
467  }
468  }
469  if (p_struct->certificate == NULL) {
470  p_struct->certificate = NULL;
471  }
472 
473 }
474 
476 {
477  int p_rv;
478 
479  assert(p_struct);
480  /* member "id" */
481  p_rv = GWEN_DB_SetIntValue(p_db, GWEN_DB_FLAGS_OVERWRITE_VARS, "id", p_struct->id);
482  if (p_rv < 0) {
483  DBG_INFO(GWEN_LOGDOMAIN, "here (%d)\n", p_rv);
484  return p_rv;
485  }
486 
487  /* member "keyDescr" */
488  if (p_struct->keyDescr) p_rv = GWEN_DB_SetCharValue(p_db, GWEN_DB_FLAGS_OVERWRITE_VARS, "keyDescr", p_struct->keyDescr);
489  else {
490  GWEN_DB_DeleteVar(p_db, "keyDescr");
491  p_rv = 0;
492  }
493  if (p_rv < 0) {
494  DBG_INFO(GWEN_LOGDOMAIN, "here (%d)\n", p_rv);
495  return p_rv;
496  }
497 
498  /* member "flags" */
499  p_rv = GWEN_DB_SetIntValue(p_db, GWEN_DB_FLAGS_OVERWRITE_VARS, "flags", p_struct->flags);
500  if (p_rv < 0) {
501  DBG_INFO(GWEN_LOGDOMAIN, "here (%d)\n", p_rv);
502  return p_rv;
503  }
504 
505  /* member "keySize" */
506  p_rv = GWEN_DB_SetIntValue(p_db, GWEN_DB_FLAGS_OVERWRITE_VARS, "keySize", p_struct->keySize);
507  if (p_rv < 0) {
508  DBG_INFO(GWEN_LOGDOMAIN, "here (%d)\n", p_rv);
509  return p_rv;
510  }
511 
512  /* member "cryptAlgoId" */
513  p_rv = GWEN_DB_SetIntValue(p_db, GWEN_DB_FLAGS_OVERWRITE_VARS, "cryptAlgoId", p_struct->cryptAlgoId);
514  if (p_rv < 0) {
515  DBG_INFO(GWEN_LOGDOMAIN, "here (%d)\n", p_rv);
516  return p_rv;
517  }
518 
519  /* member "modulus" */
520  if (p_struct->modulus) p_rv = GWEN_DB_SetBinValue(p_db, GWEN_DB_FLAGS_OVERWRITE_VARS, "modulus", GWEN_Buffer_GetStart(p_struct->modulus), GWEN_Buffer_GetUsedBytes(p_struct->modulus));
521  else {
522  GWEN_DB_DeleteVar(p_db, "modulus");
523  p_rv = 0;
524  }
525  if (p_rv < 0) {
526  DBG_INFO(GWEN_LOGDOMAIN, "here (%d)\n", p_rv);
527  return p_rv;
528  }
529 
530  /* member "exponent" */
531  if (p_struct->exponent) p_rv = GWEN_DB_SetBinValue(p_db, GWEN_DB_FLAGS_OVERWRITE_VARS, "exponent", GWEN_Buffer_GetStart(p_struct->exponent), GWEN_Buffer_GetUsedBytes(p_struct->exponent));
532  else {
533  GWEN_DB_DeleteVar(p_db, "exponent");
534  p_rv = 0;
535  }
536  if (p_rv < 0) {
537  DBG_INFO(GWEN_LOGDOMAIN, "here (%d)\n", p_rv);
538  return p_rv;
539  }
540 
541  /* member "keyNumber" */
542  p_rv = GWEN_DB_SetIntValue(p_db, GWEN_DB_FLAGS_OVERWRITE_VARS, "keyNumber", p_struct->keyNumber);
543  if (p_rv < 0) {
544  DBG_INFO(GWEN_LOGDOMAIN, "here (%d)\n", p_rv);
545  return p_rv;
546  }
547 
548  /* member "keyVersion" */
549  p_rv = GWEN_DB_SetIntValue(p_db, GWEN_DB_FLAGS_OVERWRITE_VARS, "keyVersion", p_struct->keyVersion);
550  if (p_rv < 0) {
551  DBG_INFO(GWEN_LOGDOMAIN, "here (%d)\n", p_rv);
552  return p_rv;
553  }
554 
555  /* member "signCounter" */
556  p_rv = GWEN_DB_SetIntValue(p_db, GWEN_DB_FLAGS_OVERWRITE_VARS, "signCounter", p_struct->signCounter);
557  if (p_rv < 0) {
558  DBG_INFO(GWEN_LOGDOMAIN, "here (%d)\n", p_rv);
559  return p_rv;
560  }
561 
562  /* member "certificate" */
563  if (p_struct->certificate) p_rv = GWEN_DB_SetBinValue(p_db, GWEN_DB_FLAGS_OVERWRITE_VARS, "certificate", GWEN_Buffer_GetStart(p_struct->certificate), GWEN_Buffer_GetUsedBytes(p_struct->certificate));
564  else {
565  GWEN_DB_DeleteVar(p_db, "certificate");
566  p_rv = 0;
567  }
568  if (p_rv < 0) {
569  DBG_INFO(GWEN_LOGDOMAIN, "here (%d)\n", p_rv);
570  return p_rv;
571  }
572 
573  return 0;
574 }
575 
577 {
578  GWEN_CRYPT_TOKEN_KEYINFO *p_struct;
579  p_struct = GWEN_Crypt_Token_KeyInfo__new();
580  GWEN_Crypt_Token_KeyInfo_ReadDb(p_struct, p_db);
581  return p_struct;
582 }
583 
585 {
586  return GWEN_Crypt_Token_KeyInfo_WriteDb(p_struct, p_db);
587 }
588 
590 {
591  assert(p_struct);
592  /* member "id" */
593  p_struct->id = GWEN_XMLNode_GetIntValue(p_db, "id", 0);
594 
595  /* member "keyDescr" */
596  if (p_struct->keyDescr) {
597  free(p_struct->keyDescr);
598  p_struct->keyDescr = NULL;
599  }
600  {
601  const char *s;
602  s = GWEN_XMLNode_GetCharValue(p_db, "keyDescr", NULL);
603  if (s) p_struct->keyDescr = strdup(s);
604  }
605  if (p_struct->keyDescr == NULL) { /* preset member "keyDescr" if empty */
606  p_struct->keyDescr = NULL;
607  }
608 
609  /* member "flags" */
610  p_struct->flags = GWEN_XMLNode_GetIntValue(p_db, "flags", 0);
611 
612  /* member "keySize" */
613  p_struct->keySize = GWEN_XMLNode_GetIntValue(p_db, "keySize", 0);
614 
615  /* member "cryptAlgoId" */
616  p_struct->cryptAlgoId = GWEN_XMLNode_GetIntValue(p_db, "cryptAlgoId", 0);
617 
618  /* member "modulus" */
619  if (p_struct->modulus) {
620  GWEN_Buffer_free(p_struct->modulus);
621  p_struct->modulus = NULL;
622  }
623  {
624  const char *s;
625  s = GWEN_XMLNode_GetCharValue(p_db, "modulus", NULL);
626  if (s) {
627  p_struct->modulus = GWEN_Buffer_new(0, strlen(s) / 2, 0, 1);
628  GWEN_Text_FromHexBuffer(s, p_struct->modulus);
629  }
630  }
631  if (p_struct->modulus == NULL) { /* preset member "modulus" if empty */
632  p_struct->modulus = NULL;
633  }
634 
635  /* member "exponent" */
636  if (p_struct->exponent) {
637  GWEN_Buffer_free(p_struct->exponent);
638  p_struct->exponent = NULL;
639  }
640  {
641  const char *s;
642  s = GWEN_XMLNode_GetCharValue(p_db, "exponent", NULL);
643  if (s) {
644  p_struct->exponent = GWEN_Buffer_new(0, strlen(s) / 2, 0, 1);
645  GWEN_Text_FromHexBuffer(s, p_struct->exponent);
646  }
647  }
648  if (p_struct->exponent == NULL) { /* preset member "exponent" if empty */
649  p_struct->exponent = NULL;
650  }
651 
652  /* member "keyNumber" */
653  p_struct->keyNumber = GWEN_XMLNode_GetIntValue(p_db, "keyNumber", 0);
654 
655  /* member "keyVersion" */
656  p_struct->keyVersion = GWEN_XMLNode_GetIntValue(p_db, "keyVersion", 0);
657 
658  /* member "signCounter" */
659  p_struct->signCounter = GWEN_XMLNode_GetIntValue(p_db, "signCounter", 0);
660 
661  /* member "certificate" */
662  if (p_struct->certificate) {
663  GWEN_Buffer_free(p_struct->certificate);
664  p_struct->certificate = NULL;
665  }
666  {
667  const char *s;
668  s = GWEN_XMLNode_GetCharValue(p_db, "certificate", NULL);
669  if (s) {
670  p_struct->certificate = GWEN_Buffer_new(0, strlen(s) / 2, 0, 1);
671  GWEN_Text_FromHexBuffer(s, p_struct->certificate);
672  }
673  }
674  if (p_struct->certificate == NULL) { /* preset member "certificate" if empty */
675  p_struct->certificate = NULL;
676  }
677 
678 }
679 
681 {
682  assert(p_struct);
683  /* member "id" */
684  GWEN_XMLNode_SetIntValue(p_db, "id", p_struct->id);
685 
686  /* member "keyDescr" */
687  GWEN_XMLNode_SetCharValue(p_db, "keyDescr", p_struct->keyDescr);
688 
689  /* member "flags" */
690  GWEN_XMLNode_SetIntValue(p_db, "flags", p_struct->flags);
691 
692  /* member "keySize" */
693  GWEN_XMLNode_SetIntValue(p_db, "keySize", p_struct->keySize);
694 
695  /* member "cryptAlgoId" */
696  GWEN_XMLNode_SetIntValue(p_db, "cryptAlgoId", p_struct->cryptAlgoId);
697 
698  /* member "modulus" */
699  if (p_struct->modulus) {
700  GWEN_BUFFER *tbuf;
701  tbuf = GWEN_Buffer_new(0, GWEN_Buffer_GetUsedBytes(p_struct->modulus) * 2, 0, 1);
702  GWEN_Text_ToHexBuffer(GWEN_Buffer_GetStart(p_struct->modulus), GWEN_Buffer_GetUsedBytes(p_struct->modulus), tbuf, 0, 0, 0);
703  GWEN_XMLNode_SetCharValue(p_db, "modulus", GWEN_Buffer_GetStart(tbuf));
704  GWEN_Buffer_free(tbuf);
705  }
706 
707  /* member "exponent" */
708  if (p_struct->exponent) {
709  GWEN_BUFFER *tbuf;
710  tbuf = GWEN_Buffer_new(0, GWEN_Buffer_GetUsedBytes(p_struct->exponent) * 2, 0, 1);
711  GWEN_Text_ToHexBuffer(GWEN_Buffer_GetStart(p_struct->exponent), GWEN_Buffer_GetUsedBytes(p_struct->exponent), tbuf, 0, 0, 0);
712  GWEN_XMLNode_SetCharValue(p_db, "exponent", GWEN_Buffer_GetStart(tbuf));
713  GWEN_Buffer_free(tbuf);
714  }
715 
716  /* member "keyNumber" */
717  GWEN_XMLNode_SetIntValue(p_db, "keyNumber", p_struct->keyNumber);
718 
719  /* member "keyVersion" */
720  GWEN_XMLNode_SetIntValue(p_db, "keyVersion", p_struct->keyVersion);
721 
722  /* member "signCounter" */
723  GWEN_XMLNode_SetIntValue(p_db, "signCounter", p_struct->signCounter);
724 
725  /* member "certificate" */
726  if (p_struct->certificate) {
727  GWEN_BUFFER *tbuf;
728  tbuf = GWEN_Buffer_new(0, GWEN_Buffer_GetUsedBytes(p_struct->certificate) * 2, 0, 1);
729  GWEN_Text_ToHexBuffer(GWEN_Buffer_GetStart(p_struct->certificate), GWEN_Buffer_GetUsedBytes(p_struct->certificate), tbuf, 0, 0, 0);
730  GWEN_XMLNode_SetCharValue(p_db, "certificate", GWEN_Buffer_GetStart(tbuf));
731  GWEN_Buffer_free(tbuf);
732  }
733 
734 }
735 
737 {
738  GWEN_Crypt_Token_KeyInfo_WriteXml(p_struct, p_db);
739 }
740 
742 {
743  GWEN_CRYPT_TOKEN_KEYINFO *p_struct;
744  p_struct = GWEN_Crypt_Token_KeyInfo__new();
745  GWEN_Crypt_Token_KeyInfo_ReadXml(p_struct, p_db);
746  return p_struct;
747 }
748 
750 {
751  GWEN_CRYPT_TOKEN_KEYINFO *p_struct;
752 
753  assert(p_list);
754  p_struct = GWEN_Crypt_Token_KeyInfo_List_First(p_list);
755  while(p_struct) {
756  int p_rv;
757 
758  if (p_struct->id == p_cmp) p_rv = 0;
759  else if (p_cmp < p_struct->id) p_rv = -1;
760  else p_rv = 1;
761  if (p_rv == 0)
762  return p_struct;
763  p_struct = GWEN_Crypt_Token_KeyInfo_List_Next(p_struct);
764  }
765  return NULL;
766 }
767 
769 {
772  ki->id = kid;
773  ki->cryptAlgoId = a;
774  ki->keySize = keySize;
775  return ki;
776 }
777 void GWEN_Crypt_Token_KeyInfo_SetModulus(GWEN_CRYPT_TOKEN_KEYINFO *st, const uint8_t *p, uint32_t len)
778 {
779  assert(st);
780  if (st->modulus) GWEN_Buffer_free(st->modulus);
781  if (p && len) {
782  st->modulus = GWEN_Buffer_new(0, len, 0, 1);
783  GWEN_Buffer_AppendBytes(st->modulus, (const char*) p, len);
784  } else st->modulus = NULL;
785 }
787 {
788  assert(st);
789  if (st->modulus) return (const uint8_t*) GWEN_Buffer_GetStart(st->modulus);
790  else return NULL;
791 }
793 {
794  assert(st);
795  if (st->modulus) return GWEN_Buffer_GetUsedBytes(st->modulus);
796  else return 0;
797 }
798 void GWEN_Crypt_Token_KeyInfo_SetExponent(GWEN_CRYPT_TOKEN_KEYINFO *st, const uint8_t *p, uint32_t len)
799 {
800  assert(st);
801  if (st->exponent) GWEN_Buffer_free(st->exponent);
802  if (p && len) {
803  st->exponent = GWEN_Buffer_new(0, len, 0, 1);
804  GWEN_Buffer_AppendBytes(st->exponent, (const char*) p, len);
805  } else st->exponent = NULL;
806 }
808 {
809  assert(st);
810  if (st->exponent) return (const uint8_t*) GWEN_Buffer_GetStart(st->exponent);
811  else return NULL;
812 }
814 {
815  assert(st);
816  if (st->exponent) return GWEN_Buffer_GetUsedBytes(st->exponent);
817  else return 0;
818 }
819 void GWEN_Crypt_Token_KeyInfo_SetCertificate(GWEN_CRYPT_TOKEN_KEYINFO *st, const uint8_t *p, uint32_t len)
820 {
821  assert(st);
822  if (st->certificate) GWEN_Buffer_free(st->certificate);
823  if (p && len) {
824  st->certificate = GWEN_Buffer_new(0, len, 0, 1);
825  GWEN_Buffer_AppendBytes(st->certificate, (const char*) p, len);
826  } else st->certificate = NULL;
827 }
829 {
830  assert(st);
831  if (st->certificate) return (const uint8_t*) GWEN_Buffer_GetStart(st->certificate);
832  else return NULL;
833 }
835 {
836  assert(st);
837  if (st->certificate) return GWEN_Buffer_GetUsedBytes(st->certificate);
838  else return 0;
839 }
840 
841 /* code headers */
842 
char * GWEN_Buffer_GetStart(const GWEN_BUFFER *bf)
Definition: buffer.c:223
#define GWEN_DB_FLAGS_OVERWRITE_VARS
Definition: db.h:121
struct GWEN_DB_NODE GWEN_DB_NODE
Definition: db.h:228
#define GWEN_INHERIT_FINI(t, element)
Definition: inherit.h:238
const uint8_t * GWEN_Crypt_Token_KeyInfo_GetModulusData(const GWEN_CRYPT_TOKEN_KEYINFO *st)
Definition: ct_keyinfo.c:786
void GWEN_Crypt_Token_KeyInfo_SetCertificate(GWEN_CRYPT_TOKEN_KEYINFO *st, const uint8_t *p, uint32_t len)
Definition: ct_keyinfo.c:819
uint32_t GWEN_Crypt_Token_KeyInfo_GetId(const GWEN_CRYPT_TOKEN_KEYINFO *p_struct)
Definition: ct_keyinfo.c:245
void GWEN_Crypt_Token_KeyInfo_free(GWEN_CRYPT_TOKEN_KEYINFO *p_struct)
Definition: ct_keyinfo.c:77
void GWEN_Crypt_Token_KeyInfo_Attach(GWEN_CRYPT_TOKEN_KEYINFO *p_struct)
Definition: ct_keyinfo.c:100
uint32_t GWEN_Buffer_GetUsedBytes(const GWEN_BUFFER *bf)
Definition: buffer.c:266
GWEN_CRYPT_TOKEN_KEYINFO * GWEN_Crypt_Token_KeyInfo__new(void)
Definition: ct_keyinfo.c:52
#define GWEN_FREE_OBJECT(varname)
Definition: memory.h:92
#define NULL
Definition: binreloc.c:290
void GWEN_Crypt_Token_KeyInfo_SetModulus(GWEN_CRYPT_TOKEN_KEYINFO *st, const uint8_t *p, uint32_t len)
Definition: ct_keyinfo.c:777
GWEN_CRYPT_TOKEN_KEYINFO_LIST * GWEN_Crypt_Token_KeyInfo_List_dup(const GWEN_CRYPT_TOKEN_KEYINFO_LIST *p_src)
Definition: ct_keyinfo.c:362
void GWEN_XMLNode_SetCharValue(GWEN_XMLNODE *n, const char *name, const char *value)
Definition: xml.c:812
#define GWEN_LOGDOMAIN
Definition: logger.h:35
uint32_t GWEN_Crypt_Token_KeyInfo_GetCertificateLen(const GWEN_CRYPT_TOKEN_KEYINFO *st)
Definition: ct_keyinfo.c:834
void GWEN_Crypt_Token_KeyInfo_toXml(const GWEN_CRYPT_TOKEN_KEYINFO *p_struct, GWEN_XMLNODE *p_db)
Definition: ct_keyinfo.c:736
uint32_t GWEN_Crypt_Token_KeyInfo_GetSignCounter(const GWEN_CRYPT_TOKEN_KEYINFO *p_struct)
Definition: ct_keyinfo.c:287
GWEN_CRYPT_TOKEN_KEYINFO * GWEN_Crypt_Token_KeyInfo_List_GetById(const GWEN_CRYPT_TOKEN_KEYINFO_LIST *p_list, uint32_t p_cmp)
Definition: ct_keyinfo.c:749
GWEN_BUFFER * GWEN_Buffer_new(char *buffer, uint32_t size, uint32_t used, int take)
Definition: buffer.c:38
int GWEN_XMLNode_GetIntValue(const GWEN_XMLNODE *n, const char *name, int defValue)
Definition: xml.c:837
GWEN_CRYPT_TOKEN_KEYINFO * GWEN_Crypt_Token_KeyInfo_dup(const GWEN_CRYPT_TOKEN_KEYINFO *p_src)
Definition: ct_keyinfo.c:107
uint32_t GWEN_Crypt_Token_KeyInfo_GetModulusLen(const GWEN_CRYPT_TOKEN_KEYINFO *st)
Definition: ct_keyinfo.c:792
GWEN_CRYPT_TOKEN_KEYINFO * GWEN_Crypt_Token_KeyInfo_copy(GWEN_CRYPT_TOKEN_KEYINFO *p_struct, const GWEN_CRYPT_TOKEN_KEYINFO *p_src)
Definition: ct_keyinfo.c:177
GWEN_CRYPT_TOKEN_KEYINFO_LIST * GWEN_Crypt_Token_KeyInfo_List_new()
int GWEN_DB_SetBinValue(GWEN_DB_NODE *n, uint32_t flags, const char *path, const void *val, unsigned int valSize)
Definition: db.c:1151
#define GWEN_NEW_OBJECT(typ, varname)
Definition: memory.h:86
GWEN_CRYPT_TOKEN_KEYSTATUS
Definition: ct_keyinfo.h:128
uint32_t GWEN_Crypt_Token_KeyInfo_GetKeyVersion(const GWEN_CRYPT_TOKEN_KEYINFO *p_struct)
Definition: ct_keyinfo.c:281
GWEN_CRYPT_TOKEN_KEYINFO * GWEN_Crypt_Token_KeyInfo_fromDb(GWEN_DB_NODE *p_db)
Definition: ct_keyinfo.c:576
GWEN_CRYPT_CRYPTALGOID
Definition: cryptalgo.h:50
const char * GWEN_XMLNode_GetCharValue(const GWEN_XMLNODE *n, const char *name, const char *defValue)
Definition: xml.c:729
int GWEN_Crypt_Token_KeyInfo_GetKeySize(const GWEN_CRYPT_TOKEN_KEYINFO *p_struct)
Definition: ct_keyinfo.c:263
const uint8_t * GWEN_Crypt_Token_KeyInfo_GetExponentData(const GWEN_CRYPT_TOKEN_KEYINFO *st)
Definition: ct_keyinfo.c:807
void GWEN_Crypt_Token_KeyInfo_SetKeyVersion(GWEN_CRYPT_TOKEN_KEYINFO *p_struct, uint32_t p_src)
Definition: ct_keyinfo.c:349
const void * GWEN_DB_GetBinValue(GWEN_DB_NODE *n, const char *path, int idx, const void *defVal, unsigned int defValSize, unsigned int *returnValueSize)
Definition: db.c:1120
const char * GWEN_Crypt_Token_KeyStatus_toString(GWEN_CRYPT_TOKEN_KEYSTATUS p_i)
Definition: ct_keyinfo.c:38
const char * GWEN_DB_GetCharValue(GWEN_DB_NODE *n, const char *path, int idx, const char *defVal)
Definition: db.c:897
uint32_t GWEN_Crypt_Token_KeyInfo_GetFlags(const GWEN_CRYPT_TOKEN_KEYINFO *p_struct)
Definition: ct_keyinfo.c:257
#define GWEN_INHERIT_INIT(t, element)
Definition: inherit.h:223
int GWEN_Crypt_Token_KeyInfo_GetCryptAlgoId(const GWEN_CRYPT_TOKEN_KEYINFO *p_struct)
Definition: ct_keyinfo.c:269
GWEN_CRYPT_TOKEN_KEYINFO * GWEN_Crypt_Token_KeyInfo_List_First(const GWEN_CRYPT_TOKEN_KEYINFO_LIST *l)
void GWEN_Crypt_Token_KeyInfo_SetCryptAlgoId(GWEN_CRYPT_TOKEN_KEYINFO *p_struct, int p_src)
Definition: ct_keyinfo.c:337
GWEN_BUFFER * GWEN_Buffer_dup(GWEN_BUFFER *bf)
Definition: buffer.c:102
void GWEN_Buffer_free(GWEN_BUFFER *bf)
Definition: buffer.c:83
int GWEN_DB_DeleteVar(GWEN_DB_NODE *n, const char *path)
Definition: db.c:828
struct GWEN_BUFFER GWEN_BUFFER
A dynamically resizeable text buffer.
Definition: buffer.h:41
GWEN_LIST2_FUNCTIONS(TYPEMAKER2_TYPE, Typemaker2_Type)
GWEN_CRYPT_TOKEN_KEYSTATUS GWEN_Crypt_Token_KeyStatus_fromString(const char *p_s)
Definition: ct_keyinfo.c:25
const char * GWEN_Crypt_Token_KeyInfo_GetKeyDescr(const GWEN_CRYPT_TOKEN_KEYINFO *p_struct)
Definition: ct_keyinfo.c:251
struct GWEN_CRYPT_TOKEN_KEYINFO GWEN_CRYPT_TOKEN_KEYINFO
Definition: ct_keyinfo.h:121
int GWEN_Crypt_Token_KeyInfo_toDb(const GWEN_CRYPT_TOKEN_KEYINFO *p_struct, GWEN_DB_NODE *p_db)
Definition: ct_keyinfo.c:584
void GWEN_Crypt_Token_KeyInfo_List_Add(GWEN_CRYPT_TOKEN_KEYINFO *element, GWEN_CRYPT_TOKEN_KEYINFO_LIST *list)
int GWEN_DB_SetCharValue(GWEN_DB_NODE *n, uint32_t flags, const char *path, const char *val)
Definition: db.c:922
void GWEN_Crypt_Token_KeyInfo_SetExponent(GWEN_CRYPT_TOKEN_KEYINFO *st, const uint8_t *p, uint32_t len)
Definition: ct_keyinfo.c:798
#define DBG_INFO(dbg_logger, format, args...)
Definition: debug.h:164
void GWEN_Crypt_Token_KeyInfo_WriteXml(const GWEN_CRYPT_TOKEN_KEYINFO *p_struct, GWEN_XMLNODE *p_db)
Definition: ct_keyinfo.c:680
void GWEN_Crypt_Token_KeyInfo_SetFlags(GWEN_CRYPT_TOKEN_KEYINFO *p_struct, uint32_t p_src)
Definition: ct_keyinfo.c:313
uint32_t GWEN_Crypt_Token_KeyInfo_GetExponentLen(const GWEN_CRYPT_TOKEN_KEYINFO *st)
Definition: ct_keyinfo.c:813
void GWEN_Crypt_Token_KeyInfo_SetKeyNumber(GWEN_CRYPT_TOKEN_KEYINFO *p_struct, uint32_t p_src)
Definition: ct_keyinfo.c:343
#define GWEN_LIST_INIT(t, element)
Definition: list1.h:465
void GWEN_Crypt_Token_KeyInfo_ReadDb(GWEN_CRYPT_TOKEN_KEYINFO *p_struct, GWEN_DB_NODE *p_db)
Definition: ct_keyinfo.c:381
GWEN_CRYPT_TOKEN_KEYINFO * GWEN_Crypt_Token_KeyInfo_new(uint32_t kid, GWEN_CRYPT_CRYPTALGOID a, int keySize)
Definition: ct_keyinfo.c:768
int GWEN_DB_GetIntValue(GWEN_DB_NODE *n, const char *path, int idx, int defVal)
Definition: db.c:1048
void GWEN_Crypt_Token_KeyInfo_SetSignCounter(GWEN_CRYPT_TOKEN_KEYINFO *p_struct, uint32_t p_src)
Definition: ct_keyinfo.c:355
void GWEN_Crypt_Token_KeyInfo_SubFlags(GWEN_CRYPT_TOKEN_KEYINFO *p_struct, uint32_t p_src)
Definition: ct_keyinfo.c:325
int GWEN_Buffer_AppendBytes(GWEN_BUFFER *bf, const char *buffer, uint32_t size)
Definition: buffer.c:348
void GWEN_Crypt_Token_KeyInfo_ReadXml(GWEN_CRYPT_TOKEN_KEYINFO *p_struct, GWEN_XMLNODE *p_db)
Definition: ct_keyinfo.c:589
int GWEN_DB_SetIntValue(GWEN_DB_NODE *n, uint32_t flags, const char *path, int val)
Definition: db.c:1086
#define GWEN_LIST_FUNCTIONS(t, pr)
Definition: list1.h:366
void GWEN_Crypt_Token_KeyInfo_SetKeySize(GWEN_CRYPT_TOKEN_KEYINFO *p_struct, int p_src)
Definition: ct_keyinfo.c:331
GWEN_CRYPT_TOKEN_KEYINFO * GWEN_Crypt_Token_KeyInfo_fromXml(GWEN_XMLNODE *p_db)
Definition: ct_keyinfo.c:741
void GWEN_Crypt_Token_KeyInfo_SetId(GWEN_CRYPT_TOKEN_KEYINFO *p_struct, uint32_t p_src)
Definition: ct_keyinfo.c:293
GWEN_CRYPT_TOKEN_KEYINFO * GWEN_Crypt_Token_KeyInfo_List_Next(const GWEN_CRYPT_TOKEN_KEYINFO *element)
int GWEN_Text_FromHexBuffer(const char *src, GWEN_BUFFER *buf)
Definition: text.c:858
void GWEN_Crypt_Token_KeyInfo_SetKeyDescr(GWEN_CRYPT_TOKEN_KEYINFO *p_struct, const char *p_src)
Definition: ct_keyinfo.c:299
#define GWEN_LIST_FINI(t, element)
Definition: list1.h:474
#define GWEN_INHERIT_FUNCTIONS(t)
Definition: inherit.h:163
int GWEN_Text_ToHexBuffer(const char *src, unsigned l, GWEN_BUFFER *buf, unsigned int groupsize, char delimiter, int skipLeadingZeroes)
Definition: text.c:740
struct GWEN__XMLNODE GWEN_XMLNODE
Definition: xml.h:148
uint32_t GWEN_Crypt_Token_KeyInfo_GetKeyNumber(const GWEN_CRYPT_TOKEN_KEYINFO *p_struct)
Definition: ct_keyinfo.c:275
void GWEN_Crypt_Token_KeyInfo_AddFlags(GWEN_CRYPT_TOKEN_KEYINFO *p_struct, uint32_t p_src)
Definition: ct_keyinfo.c:319
void GWEN_XMLNode_SetIntValue(GWEN_XMLNODE *n, const char *name, int value)
Definition: xml.c:853
int GWEN_Crypt_Token_KeyInfo_WriteDb(const GWEN_CRYPT_TOKEN_KEYINFO *p_struct, GWEN_DB_NODE *p_db)
Definition: ct_keyinfo.c:475
const uint8_t * GWEN_Crypt_Token_KeyInfo_GetCertificateData(const GWEN_CRYPT_TOKEN_KEYINFO *st)
Definition: ct_keyinfo.c:828