gwenhywfar  4.6.0beta
paddalgo.c
Go to the documentation of this file.
1 /***************************************************************************
2  begin : Wed Mar 16 2005
3  copyright : (C) 2005 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 
15 #define DISABLE_DEBUGLOG
16 
17 
18 #include "paddalgo_p.h"
19 #include <gwenhywfar/misc.h>
20 #include <gwenhywfar/debug.h>
21 
22 
23 
24 GWEN_LIST2_FUNCTIONS(GWEN_CRYPT_PADDALGO, GWEN_Crypt_PaddAlgo)
25 
26 
27 
29  assert(s);
30  if (strcasecmp(s, "none")==0)
31  return GWEN_Crypt_PaddAlgoId_None;
32  else if (strcasecmp(s, "iso9796_1")==0)
33  return GWEN_Crypt_PaddAlgoId_Iso9796_1;
34  else if (strcasecmp(s, "iso9796_1a4")==0)
35  return GWEN_Crypt_PaddAlgoId_Iso9796_1A4;
36  else if (strcasecmp(s, "iso9796_2")==0)
37  return GWEN_Crypt_PaddAlgoId_Iso9796_2;
38  else if (strcasecmp(s, "pkcs1_1")==0)
39  return GWEN_Crypt_PaddAlgoId_Pkcs1_1;
40  else if (strcasecmp(s, "pkcs1_2")==0)
41  return GWEN_Crypt_PaddAlgoId_Pkcs1_2;
42  else if (strcasecmp(s, "leftzero")==0)
43  return GWEN_Crypt_PaddAlgoId_LeftZero;
44  else if (strcasecmp(s, "rightzero")==0)
45  return GWEN_Crypt_PaddAlgoId_RightZero;
46  else if (strcasecmp(s, "ansix9_23")==0)
47  return GWEN_Crypt_PaddAlgoId_AnsiX9_23;
48  else if (strcasecmp(s, "pkcs1_pss_sha256")==0)
49  return GWEN_Crypt_PaddAlgoId_Pkcs1_Pss_Sha256;
50  else if (strcasecmp(s, "any")==0)
51  return GWEN_Crypt_PaddAlgoId_Any;
52  return GWEN_Crypt_PaddAlgoId_Unknown;
53 }
54 
55 
56 
58  switch(a) {
59  case GWEN_Crypt_PaddAlgoId_None:
60  return "none";
61  case GWEN_Crypt_PaddAlgoId_Iso9796_1:
62  return "iso9796_1";
63  case GWEN_Crypt_PaddAlgoId_Iso9796_1A4:
64  return "iso9796_1a4";
65  case GWEN_Crypt_PaddAlgoId_Iso9796_2:
66  return "iso9796_2";
67  case GWEN_Crypt_PaddAlgoId_Pkcs1_1:
68  return "pkcs1_1";
69  case GWEN_Crypt_PaddAlgoId_Pkcs1_2:
70  return "pkcs1_2";
71  case GWEN_Crypt_PaddAlgoId_LeftZero:
72  return "leftzero";
73  case GWEN_Crypt_PaddAlgoId_RightZero:
74  return "rightzero";
75  case GWEN_Crypt_PaddAlgoId_AnsiX9_23:
76  return "ansix9_23";
77  case GWEN_Crypt_PaddAlgoId_Pkcs1_Pss_Sha256:
78  return "pkcs1_pss_sha256";
79  case GWEN_Crypt_PaddAlgoId_Any:
80  return "any";
81  default:
82  return "unknown";
83  }
84 }
85 
86 
87 
90 
92  a->refCount=1;
93 
94  a->id=id;
95 
96  return a;
97 }
98 
99 
100 
102  assert(a);
103  assert(a->refCount);
104  a->refCount++;
105 }
106 
107 
108 
110  const char *s;
111 
112  assert(db);
113  s=GWEN_DB_GetCharValue(db, "id", 0, NULL);
114  if (s) {
117 
119  if (id==GWEN_Crypt_PaddAlgoId_Unknown) {
120  DBG_INFO(GWEN_LOGDOMAIN, "Unknown paddalgo id [%s]", s);
121  return NULL;
122  }
124  assert(a);
125 
126  a->paddSize=GWEN_DB_GetIntValue(db, "paddSize", 0, 0);
127 
128  return a;
129  }
130  else {
131  DBG_INFO(GWEN_LOGDOMAIN, "Missing paddalgo id");
132  return NULL;
133  }
134 }
135 
136 
137 
139  assert(a);
140  assert(a->refCount);
141 
143  "id",
146  "paddSize", a->paddSize);
147  return 0;
148 }
149 
150 
151 
154 
155  assert(na);
156  a=GWEN_Crypt_PaddAlgo_new(na->id);
157  a->paddSize=na->paddSize;
158  return a;
159 }
160 
161 
162 
164  if (a) {
165  assert(a->refCount);
166  if (a->refCount==1) {
167  a->refCount--;
168  GWEN_FREE_OBJECT(a);
169  }
170  else {
171  a->refCount--;
172  }
173  }
174 }
175 
176 
177 
179  assert(a);
180  assert(a->refCount);
181  return a->id;
182 }
183 
184 
185 
187  assert(a);
188  assert(a->refCount);
189  return a->paddSize;
190 }
191 
192 
193 
195  assert(a);
196  assert(a->refCount);
197  a->paddSize=s;
198 }
199 
200 
201 
202