4
我有這樣的緩衝式給出:我是否正確使用OpenSSL對base64進行編碼?
unsigned char *buffer;
int buffer_length;
這是我目前它轉換成一個base64編碼緩衝:
BIO *mem = BIO_new(BIO_s_mem());
BIO *b64 = BIO_new(BIO_f_base64());
mem = BIO_push(b64, mem);
int write_length = BIO_write(mem, buffer, buffer_length);
if (write_length != buffer_length) //*
return -1;
int flush_result = BIO_flush(mem);
if (flush_result != 1)
return -1;
unsigned char *result; //**
int result_length = BIO_get_mem_data(mem, &result);
//use the base64-encoded result to do whatever I need to do
BIO_free_all(mem);
return 0;
到目前爲止,這似乎是工作。但是,這是不錯的代碼?我對標有上述星號的代碼段具體問題:
- (
//*
)它是正確的假設,BIO_write()
總會寫下完整的base64編碼字符串一次,或做我必須創建一個循環這裏? - (
//**
)unsigned char*
或者我必須用char *
代替嗎?