gwenhywfar  4.99.8beta
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 
int GWEN_Crypt_PaddAlgo_GetPaddSize(const GWEN_CRYPT_PADDALGO *a)
Definition: paddalgo.c:186
#define GWEN_DB_FLAGS_OVERWRITE_VARS
Definition: db.h:121
struct GWEN_DB_NODE GWEN_DB_NODE
Definition: db.h:228
GWEN_CRYPT_PADDALGO * GWEN_Crypt_PaddAlgo_new(GWEN_CRYPT_PADDALGOID id)
Definition: paddalgo.c:88
#define GWEN_FREE_OBJECT(varname)
Definition: memory.h:92
#define NULL
Definition: binreloc.c:290
GWEN_CRYPT_PADDALGO * GWEN_Crypt_PaddAlgo_fromDb(GWEN_DB_NODE *db)
Definition: paddalgo.c:109
struct GWEN_CRYPT_PADDALGO GWEN_CRYPT_PADDALGO
Definition: paddalgo.h:21
#define GWEN_LOGDOMAIN
Definition: logger.h:35
void GWEN_Crypt_PaddAlgo_free(GWEN_CRYPT_PADDALGO *a)
Definition: paddalgo.c:163
void GWEN_Crypt_PaddAlgo_SetPaddSize(GWEN_CRYPT_PADDALGO *a, int s)
Definition: paddalgo.c:194
#define GWEN_NEW_OBJECT(typ, varname)
Definition: memory.h:86
const char * GWEN_Crypt_PaddAlgoId_toString(GWEN_CRYPT_PADDALGOID a)
Definition: paddalgo.c:57
const char * GWEN_DB_GetCharValue(GWEN_DB_NODE *n, const char *path, int idx, const char *defVal)
Definition: db.c:897
GWEN_CRYPT_PADDALGOID GWEN_Crypt_PaddAlgo_GetId(const GWEN_CRYPT_PADDALGO *a)
Definition: paddalgo.c:178
GWEN_LIST2_FUNCTIONS(TYPEMAKER2_TYPE, Typemaker2_Type)
GWEN_CRYPT_PADDALGOID GWEN_Crypt_PaddAlgoId_fromString(const char *s)
Definition: paddalgo.c:28
int GWEN_Crypt_PaddAlgo_toDb(const GWEN_CRYPT_PADDALGO *a, GWEN_DB_NODE *db)
Definition: paddalgo.c:138
GWEN_CRYPT_PADDALGOID
Definition: paddalgo.h:58
int GWEN_DB_SetCharValue(GWEN_DB_NODE *n, uint32_t flags, const char *path, const char *val)
Definition: db.c:922
GWEN_CRYPT_PADDALGO * GWEN_Crypt_PaddAlgo_dup(const GWEN_CRYPT_PADDALGO *na)
Definition: paddalgo.c:152
#define DBG_INFO(dbg_logger, format, args...)
Definition: debug.h:164
int GWEN_DB_GetIntValue(GWEN_DB_NODE *n, const char *path, int idx, int defVal)
Definition: db.c:1048
int GWEN_DB_SetIntValue(GWEN_DB_NODE *n, uint32_t flags, const char *path, int val)
Definition: db.c:1086
void GWEN_Crypt_PaddAlgo_Attach(GWEN_CRYPT_PADDALGO *a)
Definition: paddalgo.c:101