2008-12-05 3 views
1

У меня есть функция, которая декодирует кодированные данные base64 в двоичных данных, но я не знаю, как найти длину декодированных данных. Я использую функции BIO в openssl.Как найти размер декодированных данных base64 в C

unsigned char *unbase64(unsigned char *input, int length) 
{ 
    BIO *b64, *bmem; 

    unsigned char *buffer = (unsigned char *)malloc(length); 
    memset(buffer, 0, length); 

    b64 = BIO_new(BIO_f_base64()); 
    bmem = BIO_new_mem_buf(input, length); 
    bmem = BIO_push(b64, bmem); 

    BIO_read(bmem, buffer, length); 

    BIO_free_all(bmem); 

    return buffer; 
} 
+0

BTW: Вы можете использовать calloc() вместо malloc() + memset(). – stesch 2008-12-05 17:52:36

ответ

3

BIO_read вернет количество прочитанных байтов. Во всяком случае, вы должны проверять значения возврата.