18#include "cryptdefs_p.h"
19#include <gwenhywfar/misc.h>
20#include <gwenhywfar/debug.h>
22#include <gwenhywfar/mdigest.h>
32 if (strcasecmp(s,
"none")==0)
34 else if (strcasecmp(s,
"access")==0)
36 else if (strcasecmp(s,
"manage")==0)
62 if (strcasecmp(s,
"none")==0)
64 else if (strcasecmp(s,
"bin")==0)
66 else if (strcasecmp(s,
"bcd")==0)
68 else if (strcasecmp(s,
"ascii")==0)
70 else if (strcasecmp(s,
"fpin2")==0)
98 unsigned int bufLength,
99 unsigned int *pinLength)
101 unsigned char *newBuf;
103 unsigned int newSize;
110 newSize=*pinLength*2;
111 newBuf=(
unsigned char *)malloc(newSize);
113 for (i=0; i<*pinLength; i++) {
139 memset(buffer, 0, bufLength);
140 memmove(buffer, newBuf, cnt);
149 unsigned int bufLength,
150 unsigned int *pinLength)
152 unsigned char *newBuf;
154 unsigned int newSize;
163 len=(buffer[0] & 0x0f);
165 newBuf=(
unsigned char *)malloc(newSize);
167 for (i=1; i<8; i++) {
199 memset(buffer, 0, bufLength);
200 memmove(buffer, newBuf, cnt);
208 unsigned int bufLength,
209 unsigned int *pinLength)
212 unsigned char *newBuf;
214 unsigned int newSize;
220 newBuf=(
unsigned char *)malloc(newSize);
223 for (i=0; i<*pinLength; i++) {
234 memset(buffer, 0, bufLength);
235 memmove(buffer, newBuf, *pinLength);
244 unsigned int bufLength,
245 unsigned int *pinLength)
247 unsigned char *newBuf;
249 unsigned int newSize;
253 newSize=*pinLength/2+1;
254 newBuf=(
unsigned char *)malloc(newSize);
255 memset(newBuf, 0xff, newSize);
258 while (i<*pinLength) {
264 if (c1<
'0' || c1>
'9') {
279 if (c2<
'0' || c2>
'9') {
297 memset(buffer, 0, bufLength);
298 for (i=0; i<cnt; i++)
308 unsigned int bufLength,
309 unsigned int *pinLength)
311 unsigned char *newBuf;
313 unsigned int newSize;
328 newBuf=(
unsigned char *)malloc(newSize);
329 memset(newBuf, 0xff, newSize);
331 *(p++)=0x20+*pinLength;
333 while (i<*pinLength) {
339 if (c1<
'0' || c1>
'9') {
353 if (c2<
'0' || c2>
'9') {
364 memset(buffer, 0, bufLength);
376 unsigned int bufLength,
377 unsigned int *pinLength)
380 unsigned char *newBuf;
382 unsigned int newSize;
388 newBuf=(
unsigned char *)malloc(newSize);
391 for (i=0; i<*pinLength; i++) {
395 if (c<
'0' || c>
'9') {
402 memset(buffer, 0, bufLength);
403 memmove(buffer, newBuf, *pinLength);
413 unsigned char *buffer,
414 unsigned int bufLength,
415 unsigned int *pinLength)
437 "Unhandled source encoding \"%s\"",
461 "Unhandled destination encoding \"%s\"",
477 unsigned char *buffer,
478 unsigned int bufLength)
507 (
const uint8_t *)text,
533 unsigned char *buffer,
534 unsigned int bufLength)
542 memmove(buffer+16, buffer, 8);
553 enum gcry_random_level q;
560 q=GCRY_STRONG_RANDOM;
564 q=GCRY_VERY_STRONG_RANDOM;
568 gcry_randomize(buffer, len, q);
const char * GWEN_Crypt_PinType_toString(GWEN_CRYPT_PINTYPE pt)
int GWEN_Crypt__TransformToBin(unsigned char *buffer, unsigned int bufLength, unsigned int *pinLength)
GWEN_CRYPT_PINTYPE GWEN_Crypt_PinType_fromString(const char *s)
int GWEN_Crypt_TransformPin(GWEN_CRYPT_PINENCODING peSrc, GWEN_CRYPT_PINENCODING peDst, unsigned char *buffer, unsigned int bufLength, unsigned int *pinLength)
int GWEN_Crypt__TransformToFPIN2(unsigned char *buffer, unsigned int bufLength, unsigned int *pinLength)
int GWEN_Crypt__TransformFromBCD(unsigned char *buffer, unsigned int bufLength, unsigned int *pinLength)
int GWEN_Crypt__TransformFromFPIN2(unsigned char *buffer, unsigned int bufLength, unsigned int *pinLength)
GWEN_CRYPT_PINENCODING GWEN_Crypt_PinEncoding_fromString(const char *s)
int GWEN_Crypt__TransformFromBin(unsigned char *buffer, unsigned int bufLength, unsigned int *pinLength)
void GWEN_Crypt_Random(int quality, uint8_t *buffer, uint32_t len)
int GWEN_Crypt_KeyDataFromText(const char *text, unsigned char *buffer, unsigned int bufLength)
static int GWEN_Crypt__KeyDataFromText(const char *text, unsigned char *buffer, unsigned int bufLength)
const char * GWEN_Crypt_PinEncoding_toString(GWEN_CRYPT_PINENCODING pe)
int GWEN_Crypt__TransformToBCD(unsigned char *buffer, unsigned int bufLength, unsigned int *pinLength)
@ GWEN_Crypt_PinEncoding_Bcd
@ GWEN_Crypt_PinEncoding_FPin2
@ GWEN_Crypt_PinEncoding_None
@ GWEN_Crypt_PinEncoding_Unknown
@ GWEN_Crypt_PinEncoding_Bin
@ GWEN_Crypt_PinEncoding_Ascii
@ GWEN_Crypt_PinType_Access
@ GWEN_Crypt_PinType_None
@ GWEN_Crypt_PinType_Manage
@ GWEN_Crypt_PinType_Unknown
#define DBG_INFO(dbg_logger, format,...)
#define DBG_ERROR(dbg_logger, format,...)
#define GWEN_ERROR_INVALID
#define GWEN_ERROR_BUFFER_OVERFLOW
#define GWEN_ERROR_BAD_SIZE
int GWEN_MDigest_Begin(GWEN_MDIGEST *md)
int GWEN_MDigest_End(GWEN_MDIGEST *md)
uint8_t * GWEN_MDigest_GetDigestPtr(GWEN_MDIGEST *md)
void GWEN_MDigest_free(GWEN_MDIGEST *md)
int GWEN_MDigest_Update(GWEN_MDIGEST *md, const uint8_t *buf, unsigned int l)
GWENHYWFAR_API GWEN_MDIGEST * GWEN_MDigest_Md5_new(void)
GWENHYWFAR_API GWEN_MDIGEST * GWEN_MDigest_Rmd160_new(void)
struct GWEN_MDIGEST GWEN_MDIGEST