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;
} |
Partager