18 #include "cryptdefs_p.h"
19 #include <gwenhywfar/misc.h>
20 #include <gwenhywfar/debug.h>
22 #include <gwenhywfar/mdigest.h>
31 if (strcasecmp(s,
"none")==0)
33 else if (strcasecmp(s,
"access")==0)
35 else if (strcasecmp(s,
"manage")==0)
59 if (strcasecmp(s,
"none")==0)
61 else if (strcasecmp(s,
"bin")==0)
63 else if (strcasecmp(s,
"bcd")==0)
65 else if (strcasecmp(s,
"ascii")==0)
67 else if (strcasecmp(s,
"fpin2")==0)
94 unsigned int bufLength,
95 unsigned int *pinLength) {
96 unsigned char *newBuf;
105 newSize=*pinLength*2;
106 newBuf=(
unsigned char*)malloc(newSize);
108 for (i=0; i<*pinLength; i++) {
134 memset(buffer, 0, bufLength);
135 memmove(buffer, newBuf, cnt);
144 unsigned int bufLength,
145 unsigned int *pinLength) {
146 unsigned char *newBuf;
148 unsigned int newSize;
157 len=(buffer[0] & 0x0f);
159 newBuf=(
unsigned char*)malloc(newSize);
161 for (i=1; i<8; i++) {
193 memset(buffer, 0, bufLength);
194 memmove(buffer, newBuf, cnt);
202 unsigned int bufLength,
203 unsigned int *pinLength) {
205 unsigned char *newBuf;
207 unsigned int newSize;
213 newBuf=(
unsigned char*)malloc(newSize);
216 for (i=0; i<*pinLength; i++) {
227 memset(buffer, 0, bufLength);
228 memmove(buffer, newBuf, *pinLength);
237 unsigned int bufLength,
238 unsigned int *pinLength) {
239 unsigned char *newBuf;
241 unsigned int newSize;
245 newSize=*pinLength/2+1;
246 newBuf=(
unsigned char*)malloc(newSize);
247 memset(newBuf, 0xff, newSize);
250 while (i<*pinLength) {
256 if (c1<'0' || c1>
'9') {
271 if (c2<'0' || c2>
'9') {
289 memset(buffer, 0, bufLength);
290 for (i=0; i<cnt; i++)
300 unsigned int bufLength,
301 unsigned int *pinLength) {
302 unsigned char *newBuf;
304 unsigned int newSize;
319 newBuf=(
unsigned char*)malloc(newSize);
320 memset(newBuf, 0xff, newSize);
322 *(p++)=0x20+*pinLength;
324 while (i<*pinLength) {
330 if (c1<'0' || c1>
'9') {
344 if (c2<'0' || c2>
'9') {
355 memset(buffer, 0, bufLength);
367 unsigned int bufLength,
368 unsigned int *pinLength) {
370 unsigned char *newBuf;
372 unsigned int newSize;
378 newBuf=(
unsigned char*)malloc(newSize);
381 for (i=0; i<*pinLength; i++) {
385 if (c<'0' || c>
'9') {
392 memset(buffer, 0, bufLength);
393 memmove(buffer, newBuf, *pinLength);
403 unsigned char *buffer,
404 unsigned int bufLength,
405 unsigned int *pinLength) {
426 "Unhandled source encoding \"%s\"",
450 "Unhandled destination encoding \"%s\"",
466 unsigned char *buffer,
467 unsigned int bufLength) {
495 (
const uint8_t*)text,
521 unsigned char *buffer,
522 unsigned int bufLength) {
529 memmove(buffer+16, buffer, 8);
539 enum gcry_random_level q;
546 q=GCRY_STRONG_RANDOM;
550 q=GCRY_VERY_STRONG_RANDOM;
554 gcry_randomize(buffer, len, q);
void GWEN_MDigest_free(GWEN_MDIGEST *md)
#define GWEN_ERROR_INVALID
int GWEN_Crypt__TransformToFPIN2(unsigned char *buffer, unsigned int bufLength, unsigned int *pinLength)
int GWEN_Crypt__TransformToBCD(unsigned char *buffer, unsigned int bufLength, unsigned int *pinLength)
int GWEN_Crypt_TransformPin(GWEN_CRYPT_PINENCODING peSrc, GWEN_CRYPT_PINENCODING peDst, unsigned char *buffer, unsigned int bufLength, unsigned int *pinLength)
const char * GWEN_Crypt_PinEncoding_toString(GWEN_CRYPT_PINENCODING pe)
int GWEN_MDigest_Update(GWEN_MDIGEST *md, const uint8_t *buf, unsigned int l)
#define GWEN_ERROR_BUFFER_OVERFLOW
GWEN_CRYPT_PINENCODING GWEN_Crypt_PinEncoding_fromString(const char *s)
uint8_t * GWEN_MDigest_GetDigestPtr(GWEN_MDIGEST *md)
int GWEN_MDigest_Begin(GWEN_MDIGEST *md)
int GWEN_Crypt__TransformToBin(unsigned char *buffer, unsigned int bufLength, unsigned int *pinLength)
GWENHYWFAR_API GWEN_MDIGEST * GWEN_MDigest_Rmd160_new(void)
const char * GWEN_Crypt_PinType_toString(GWEN_CRYPT_PINTYPE pt)
int GWEN_Crypt__TransformFromBCD(unsigned char *buffer, unsigned int bufLength, unsigned int *pinLength)
struct GWEN_MDIGEST GWEN_MDIGEST
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)
int GWEN_MDigest_End(GWEN_MDIGEST *md)
#define DBG_ERROR(dbg_logger, format, args...)
GWENHYWFAR_API GWEN_MDIGEST * GWEN_MDigest_Md5_new(void)
static int GWEN_Crypt__KeyDataFromText(const char *text, unsigned char *buffer, unsigned int bufLength)
#define DBG_INFO(dbg_logger, format, args...)
GWEN_CRYPT_PINTYPE GWEN_Crypt_PinType_fromString(const char *s)
int GWEN_Crypt__TransformFromBin(unsigned char *buffer, unsigned int bufLength, unsigned int *pinLength)
#define GWEN_ERROR_BAD_SIZE
int GWEN_Crypt__TransformFromFPIN2(unsigned char *buffer, unsigned int bufLength, unsigned int *pinLength)