2
0
mirror of https://github.com/xcat2/xNBA.git synced 2026-06-25 08:50:43 +00:00
Files
xNBA/src/include/ipxe/base64.h
T
Michael Brown 97ea628484 [base64] Add ability to decode base64 strings
Inspired-by: Piotr Jaroszyński <p.jaroszynski@gmail.com>
Signed-off-by: Michael Brown <mcb30@ipxe.org>
2010-05-28 12:47:10 +01:00

42 lines
948 B
C

#ifndef _IPXE_BASE64_H
#define _IPXE_BASE64_H
/** @file
*
* Base64 encoding
*
*/
FILE_LICENCE ( GPL2_OR_LATER );
#include <stdint.h>
#include <string.h>
/**
* Calculate length of base64-encoded data
*
* @v raw_len Raw data length
* @ret encoded_len Encoded string length (excluding NUL)
*/
static inline size_t base64_encoded_len ( size_t raw_len ) {
return ( ( ( raw_len + 3 - 1 ) / 3 ) * 4 );
}
/**
* Calculate maximum length of base64-decoded string
*
* @v encoded Encoded string
* @v max_raw_len Maximum length of raw data
*
* Note that the exact length of the raw data cannot be known until
* the string is decoded.
*/
static inline size_t base64_decoded_max_len ( const char *encoded ) {
return ( ( ( strlen ( encoded ) + 4 - 1 ) / 4 ) * 3 );
}
extern void base64_encode ( const uint8_t *raw, size_t len, char *encoded );
extern int base64_decode ( const char *encoded, uint8_t *raw );
#endif /* _IPXE_BASE64_H */