Cómo encontrar el tamaño de los datos base64 decodificados en C
Pregunta
Tengo una función que decodifica los datos de base64 codificados en datos binarios, pero no sé cómo encontrar la longitud de los datos decodificados. Uso las funciones BIO en openssl.
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;
}
Solución
BIO_read devolverá el número de bytes leídos. De todos modos, debe verificar los valores de retorno.
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow