8 #define HASH_TYPE GCRY_MD_SHA1
29 int loadbuffer(char *buff
, int size
, int nfile
)
31 if (nfile
<0 || nfile
>2) return 0;
33 basefsize
[nfile
]=size
;
37 unsigned int hash(int nfile
,int from
, int size
)
39 if (size
<=0) return 0;
40 char *txt
=malloc(size
);
42 fprintf(stderr
,"hash(nfile:%d,from:%d,size:%d) > malloc failed! ",nfile
,from
, size
);
45 // memcpy(txt,&buffer[nfile][from],size);
53 ch
=buffer
[nfile
][from
+i
];
54 if (ch
>='a' && ch
<='z') ch
-='a'-'A';
57 if (ch
>='A' && ch
<='Z' && !port
)
62 if (port
=='&' && ch
==';') port
=0;
65 // Longitud del hash resultante - gcry_md_get_algo_dlen
66 // devuelve la longitud del resumen hash para un algoritmo
67 int hash_len
= gcry_md_get_algo_dlen( HASH_TYPE
);
69 // Salida del hash SHA1 - esto serán datos binarios
70 unsigned char hash
[ hash_len
];
72 // Calcular el resumen SHA1. Esto es una especie de función-atajo,
73 // ya que la mayoría de funciones gcrypt requieren
74 // la creación de un handle, etc.
75 gcry_md_hash_buffer( HASH_TYPE
, hash
, txt
, txt_size
);
77 // unsigned int ihash=*((unsigned int *)hash);
78 return *((unsigned int *)hash
);