gwenhywfar  4.6.0beta
ct_keyinfo.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 #define DISABLE_DEBUGLOG
15 
16 
17 #include "ct_keyinfo_p.h"
18 #include <gwenhywfar/misc.h>
19 #include <gwenhywfar/debug.h>
20 
21 
22 
23 GWEN_LIST_FUNCTIONS(GWEN_CRYPT_TOKEN_KEYINFO, GWEN_Crypt_Token_KeyInfo)
24 GWEN_LIST2_FUNCTIONS(GWEN_CRYPT_TOKEN_KEYINFO, GWEN_Crypt_Token_KeyInfo)
25 
26 
27 
28 
29 GWEN_CRYPT_TOKEN_KEYINFO *GWEN_Crypt_Token_KeyInfo_new(uint32_t kid,
31  int keySize) {
32  GWEN_CRYPT_TOKEN_KEYINFO *ki;
33 
34  GWEN_NEW_OBJECT(GWEN_CRYPT_TOKEN_KEYINFO, ki)
35  ki->refCount=1;
36  GWEN_LIST_INIT(GWEN_CRYPT_TOKEN_KEYINFO, ki)
37 
38  ki->keyId=kid;
39  ki->cryptAlgoId=a;
40  ki->keySize=keySize;
41 
42  return ki;
43 }
44 
45 
46 
48  if (ki) {
49  assert(ki->refCount);
50  if (ki->refCount==1) {
51  free(ki->keyDescr);
52  if (ki->modulusData)
53  free(ki->modulusData);
54  ki->modulusData=NULL;
55  if (ki->exponentData)
56  free(ki->exponentData);
57  ki->exponentData=NULL;
58 
59  ki->refCount=0;
60  GWEN_FREE_OBJECT(ki);
61  }
62  else {
63  ki->refCount--;
64  }
65  }
66 }
67 
68 
69 
72 
73  nki=GWEN_Crypt_Token_KeyInfo_new(ki->keyId,
74  ki->cryptAlgoId,
75  ki->keySize);
76  nki->flags=ki->flags;
77 
78  if (ki->modulusData && ki->modulusLen) {
79  nki->modulusData=(uint8_t*)malloc(ki->modulusLen);
80  assert(nki->modulusData);
81  memmove(nki->modulusData, ki->modulusData, ki->modulusLen);
82  nki->modulusLen=ki->modulusLen;
83  }
84 
85  if (ki->exponentData && ki->exponentLen) {
86  nki->exponentData=(uint8_t*)malloc(ki->exponentLen);
87  assert(nki->exponentData);
88  memmove(nki->exponentData, ki->exponentData, ki->exponentLen);
89  nki->exponentLen=ki->exponentLen;
90  }
91 
92  if (ki->keyDescr)
93  nki->keyDescr=strdup(ki->keyDescr);
94 
95  nki->keyNumber=ki->keyNumber;
96  nki->keyVersion=ki->keyVersion;
97  nki->signCounter=ki->signCounter;
98 
99  return nki;
100 }
101 
102 
103 
105  assert(ki);
106  assert(ki->refCount);
107  return ki->keyId;
108 }
109 
110 
111 
113  assert(ki);
114  assert(ki->refCount);
115  return ki->cryptAlgoId;
116 }
117 
118 
119 
121  assert(ki);
122  assert(ki->refCount);
123  return ki->keySize;
124 }
125 
126 
127 
129  assert(ki);
130  assert(ki->refCount);
131  ki->keySize=i;
132 }
133 
134 
135 
137  assert(ki);
138  assert(ki->refCount);
139  return ki->flags;
140 }
141 
142 
143 
145  assert(ki);
146  assert(ki->refCount);
147  ki->flags=f;
148 }
149 
150 
151 
153  assert(ki);
154  assert(ki->refCount);
155  ki->flags|=f;
156 }
157 
158 
159 
161  assert(ki);
162  assert(ki->refCount);
163  ki->flags&=~f;
164 }
165 
166 
167 
169  assert(ki);
170  assert(ki->refCount);
171  return ki->modulusData;
172 }
173 
174 
175 
177  assert(ki);
178  assert(ki->refCount);
179  return ki->modulusLen;
180 }
181 
182 
183 
185  const uint8_t *p,
186  uint32_t len) {
187  assert(ki);
188  assert(ki->refCount);
189 
190  assert(p);
191  assert(len);
192 
193  if (ki->modulusData)
194  free(ki->modulusData);
195  ki->modulusData=(uint8_t*) malloc(len);
196  assert(ki->modulusData);
197  memmove(ki->modulusData, p, len);
198  ki->modulusLen=len;
199 }
200 
201 
202 
204  assert(ki);
205  assert(ki->refCount);
206  return ki->exponentData;
207 }
208 
209 
210 
212  assert(ki);
213  assert(ki->refCount);
214  return ki->exponentLen;
215 }
216 
217 
218 
220  const uint8_t *p,
221  uint32_t len) {
222  assert(ki);
223  assert(ki->refCount);
224 
225  assert(p);
226  assert(len);
227 
228  if (ki->exponentData)
229  free(ki->exponentData);
230  ki->exponentData=(uint8_t*) malloc(len);
231  assert(ki->exponentData);
232  memmove(ki->exponentData, p, len);
233  ki->exponentLen=len;
234 }
235 
236 
237 
239  assert(ki);
240  assert(ki->refCount);
241 
242  return ki->keyVersion;
243 }
244 
245 
246 
248  uint32_t i) {
249  assert(ki);
250  assert(ki->refCount);
251 
252  ki->keyVersion=i;
253 }
254 
255 
256 
258  assert(ki);
259  assert(ki->refCount);
260 
261  return ki->keyNumber;
262 }
263 
264 
265 
267  uint32_t i) {
268  assert(ki);
269  assert(ki->refCount);
270 
271  ki->keyNumber=i;
272 }
273 
274 
275 
277  assert(ki);
278  assert(ki->refCount);
279 
280  return ki->signCounter;
281 }
282 
283 
284 
286  uint32_t i) {
287  assert(ki);
288  assert(ki->refCount);
289 
290  ki->signCounter=i;
291 }
292 
293 
294 
296  assert(ki);
297  assert(ki->refCount);
298 
299  return ki->keyDescr;
300 }
301 
302 
303 
305  assert(ki);
306  assert(ki->refCount);
307 
308  free(ki->keyDescr);
309  if (s)
310  ki->keyDescr=strdup(s);
311  else
312  ki->keyDescr=NULL;
313 }
314 
315 
316 
317 
318 
319 
320 
321 
322 
323 
324 
325 
326 
327