paddalgo.c
Go to the documentation of this file.00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013 #ifdef HAVE_CONFIG_H
00014 # include <config.h>
00015 #endif
00016
00017
00018 #include "paddalgo_p.h"
00019 #include <gwenhywfar/misc.h>
00020 #include <gwenhywfar/debug.h>
00021
00022
00023
00024 GWEN_LIST2_FUNCTIONS(GWEN_CRYPT_PADDALGO, GWEN_Crypt_PaddAlgo)
00025
00026
00027
00028 GWEN_CRYPT_PADDALGOID GWEN_Crypt_PaddAlgoId_fromString(const char *s) {
00029 assert(s);
00030 if (strcasecmp(s, "none")==0)
00031 return GWEN_Crypt_PaddAlgoId_None;
00032 else if (strcasecmp(s, "iso9796_1")==0)
00033 return GWEN_Crypt_PaddAlgoId_Iso9796_1;
00034 else if (strcasecmp(s, "iso9796_1a4")==0)
00035 return GWEN_Crypt_PaddAlgoId_Iso9796_1A4;
00036 else if (strcasecmp(s, "iso9796_2")==0)
00037 return GWEN_Crypt_PaddAlgoId_Iso9796_2;
00038 else if (strcasecmp(s, "pkcs1_1")==0)
00039 return GWEN_Crypt_PaddAlgoId_Pkcs1_1;
00040 else if (strcasecmp(s, "pkcs1_2")==0)
00041 return GWEN_Crypt_PaddAlgoId_Pkcs1_2;
00042 else if (strcasecmp(s, "leftzero")==0)
00043 return GWEN_Crypt_PaddAlgoId_LeftZero;
00044 else if (strcasecmp(s, "rightzero")==0)
00045 return GWEN_Crypt_PaddAlgoId_RightZero;
00046 else if (strcasecmp(s, "ansix9_23")==0)
00047 return GWEN_Crypt_PaddAlgoId_AnsiX9_23;
00048 else if (strcasecmp(s, "any")==0)
00049 return GWEN_Crypt_PaddAlgoId_Any;
00050 return GWEN_Crypt_PaddAlgoId_Unknown;
00051 }
00052
00053
00054
00055 const char *GWEN_Crypt_PaddAlgoId_toString(GWEN_CRYPT_PADDALGOID a) {
00056 switch(a) {
00057 case GWEN_Crypt_PaddAlgoId_None:
00058 return "none";
00059 case GWEN_Crypt_PaddAlgoId_Iso9796_1:
00060 return "iso9796_1";
00061 case GWEN_Crypt_PaddAlgoId_Iso9796_1A4:
00062 return "iso9796_1a4";
00063 case GWEN_Crypt_PaddAlgoId_Iso9796_2:
00064 return "iso9796_2";
00065 case GWEN_Crypt_PaddAlgoId_Pkcs1_1:
00066 return "pkcs1_1";
00067 case GWEN_Crypt_PaddAlgoId_Pkcs1_2:
00068 return "pkcs1_2";
00069 case GWEN_Crypt_PaddAlgoId_LeftZero:
00070 return "leftzero";
00071 case GWEN_Crypt_PaddAlgoId_RightZero:
00072 return "rightzero";
00073 case GWEN_Crypt_PaddAlgoId_AnsiX9_23:
00074 return "ansix9_23";
00075 case GWEN_Crypt_PaddAlgoId_Any:
00076 return "any";
00077 default:
00078 return "unknown";
00079 }
00080 }
00081
00082
00083
00084 GWEN_CRYPT_PADDALGO *GWEN_Crypt_PaddAlgo_new(GWEN_CRYPT_PADDALGOID id) {
00085 GWEN_CRYPT_PADDALGO *a;
00086
00087 GWEN_NEW_OBJECT(GWEN_CRYPT_PADDALGO, a);
00088 a->refCount=1;
00089
00090 a->id=id;
00091
00092 return a;
00093 }
00094
00095
00096
00097 void GWEN_Crypt_PaddAlgo_Attach(GWEN_CRYPT_PADDALGO *a) {
00098 assert(a);
00099 assert(a->refCount);
00100 a->refCount++;
00101 }
00102
00103
00104
00105 GWEN_CRYPT_PADDALGO *GWEN_Crypt_PaddAlgo_fromDb(GWEN_DB_NODE *db) {
00106 const char *s;
00107
00108 assert(db);
00109 s=GWEN_DB_GetCharValue(db, "id", 0, NULL);
00110 if (s) {
00111 GWEN_CRYPT_PADDALGO *a;
00112 GWEN_CRYPT_PADDALGOID id;
00113
00114 id=GWEN_Crypt_PaddAlgoId_fromString(s);
00115 if (id==GWEN_Crypt_PaddAlgoId_Unknown) {
00116 DBG_INFO(GWEN_LOGDOMAIN, "Unknown paddalgo id [%s]", s);
00117 return NULL;
00118 }
00119 a=GWEN_Crypt_PaddAlgo_new(id);
00120 assert(a);
00121
00122 a->paddSize=GWEN_DB_GetIntValue(db, "paddSize", 0, 0);
00123
00124 return a;
00125 }
00126 else {
00127 DBG_INFO(GWEN_LOGDOMAIN, "Missing paddalgo id");
00128 return NULL;
00129 }
00130 }
00131
00132
00133
00134 int GWEN_Crypt_PaddAlgo_toDb(const GWEN_CRYPT_PADDALGO *a, GWEN_DB_NODE *db) {
00135 assert(a);
00136 assert(a->refCount);
00137
00138 GWEN_DB_SetCharValue(db, GWEN_DB_FLAGS_OVERWRITE_VARS,
00139 "id",
00140 GWEN_Crypt_PaddAlgoId_toString(a->id));
00141 GWEN_DB_SetIntValue(db, GWEN_DB_FLAGS_OVERWRITE_VARS,
00142 "paddSize", a->paddSize);
00143 return 0;
00144 }
00145
00146
00147
00148 GWEN_CRYPT_PADDALGO *GWEN_Crypt_PaddAlgo_dup(const GWEN_CRYPT_PADDALGO *na) {
00149 GWEN_CRYPT_PADDALGO *a;
00150
00151 assert(na);
00152 a=GWEN_Crypt_PaddAlgo_new(na->id);
00153 a->paddSize=na->paddSize;
00154 return a;
00155 }
00156
00157
00158
00159 void GWEN_Crypt_PaddAlgo_free(GWEN_CRYPT_PADDALGO *a) {
00160 if (a) {
00161 assert(a->refCount);
00162 if (a->refCount==1) {
00163 a->refCount--;
00164 GWEN_FREE_OBJECT(a);
00165 }
00166 else {
00167 a->refCount--;
00168 }
00169 }
00170 }
00171
00172
00173
00174 GWEN_CRYPT_PADDALGOID GWEN_Crypt_PaddAlgo_GetId(const GWEN_CRYPT_PADDALGO *a){
00175 assert(a);
00176 assert(a->refCount);
00177 return a->id;
00178 }
00179
00180
00181
00182 int GWEN_Crypt_PaddAlgo_GetPaddSize(const GWEN_CRYPT_PADDALGO *a){
00183 assert(a);
00184 assert(a->refCount);
00185 return a->paddSize;
00186 }
00187
00188
00189
00190 void GWEN_Crypt_PaddAlgo_SetPaddSize(GWEN_CRYPT_PADDALGO *a, int s){
00191 assert(a);
00192 assert(a->refCount);
00193 a->paddSize=s;
00194 }
00195
00196
00197
00198