salut tout le monde,
j'utilise la fonction SHA1 de l'openssl pour générer des hash à des fichier. dans le main je fait appel a la fonction traitement_sha1(filename); definie comme suite:
void traitement_sha1(char * filename){
u_char * sha1_key=NULL;
char * hexa_key=NULL;
sha1_key=sha1_of_file(filename);
hexa_key=sha2hexa(sha1_key);
printf("le Hash calcule = %s\n",hexa_key);
}
avec:
u_char * sha1_of_file(const char * path){
strfromfile *sff;
u_char *key;
/*recuperer la taille et le contenu du fichier specifie dans path*/
sff=get_str_from_file(path);
if(sff<=0) return 0;
/*calcul et retour du hash correspondant au fichier*/
if(SHA1(sff->buffer,sff->len,key)==NULL) return 0;
return key;
}
et
char * sha2hexa(u_char *key){
int i;
char *clef;
clef=(char *) malloc(SHA_DIGEST_LENGTH);
if(clef==NULL) return NULL;
for (i = 0; i < SHA_DIGEST_LENGTH; ++i)
sprintf(clef + i * 2, "%02x", key[i]);
return clef;
}
le problème c'est que le hash est affiché suivé d'une erreur de segmentation.ce que je ne comprends pas est que si j'utilise l'ensemble de ces instruction dans un seul bloc( c-à-d sans fonction, directement dans le main) ça marche bien.
je n'arrive pas à trouver de solutions.
merci d'avance.
Partager