Bonjour,

Je tourne en rond depuis quelques jours. J'ai cette fonction pour l'encodage en base64. je travaille egalement avec openssl

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
char * base_64_encode(char *message, long length)
{
	BIO *b64;
	BIO *buffer;
	char * b64_encoded_file;
	int ret, size;
 
	if(!(b64 = BIO_new(BIO_f_base64())))
	{
		//LOG_ERROR( "BIO cannot be created" );
		return NULL;
	}
	if(!(buffer = BIO_new(BIO_s_mem())))
	{
		//LOG_ERROR( "BIO cannot be created" );
		return NULL;
	}
	BIO_write(buffer,"\n",1);
	BIO_flush(buffer);
	BIO_push(b64,buffer);
	ret = BIO_write(b64,message,length);
	BIO_flush(b64);
 
	if(ret<length)
	{
		//LOG_ERROR( "ERROR while encoding into b64" );
		return NULL;
	}
 
	BIO_pop(b64);
	ret = BIO_write(buffer,"\n",1);
	ret = BIO_write(buffer,"\0",1);
	BIO_flush(buffer);
 
	if(ret<1)
	{
		//LOG_ERROR( "ERROR while encoding into b64" );
		return NULL;
	}
	size = buffer->num_write;
	b64_encoded_file = (char*)malloc(size*sizeof(char));
	memset(b64_encoded_file,'\0',size);
 
	ret = BIO_read(buffer,b64_encoded_file,size);
	if(ret<size)
	{
		//LOG_ERROR( "ERROR while encoding into b64" );
		return NULL;
	}
	BIO_free(b64);
	BIO_free(buffer);
 
	return b64_encoded_file;
}
Maintenant je recupere mon image ou mon fichier xml sur disque que j'essaye de stocker dans mon buffer. Quand je verifie la taille du buffer elle est correcte mais impossible de recuperer correctement le contenu du buffer pour le passer en parametre à ma fonction d'encodage. Quand j'essaye de l'afficher j'ai des choses comme ca "Yà*^".
Quelqu'un à une idée.

Merci d'avance