diff options
Diffstat (limited to 'src/include/ipxe')
| -rw-r--r-- | src/include/ipxe/base16.h | 38 | ||||
| -rw-r--r-- | src/include/ipxe/errfile.h | 1 |
2 files changed, 39 insertions, 0 deletions
diff --git a/src/include/ipxe/base16.h b/src/include/ipxe/base16.h new file mode 100644 index 000000000..f0c9842f9 --- /dev/null +++ b/src/include/ipxe/base16.h @@ -0,0 +1,38 @@ +#ifndef _IPXE_BASE16_H +#define _IPXE_BASE16_H + +/** @file + * + * Base16 encoding + * + */ + +FILE_LICENCE ( GPL2_OR_LATER ); + +#include <stdint.h> +#include <string.h> + +/** + * Calculate length of base16-encoded data + * + * @v raw_len Raw data length + * @ret encoded_len Encoded string length (excluding NUL) + */ +static inline size_t base16_encoded_len ( size_t raw_len ) { + return ( 2 * raw_len ); +} + +/** + * Calculate maximum length of base16-decoded string + * + * @v encoded Encoded string + * @v max_raw_len Maximum length of raw data + */ +static inline size_t base16_decoded_max_len ( const char *encoded ) { + return ( ( strlen ( encoded ) + 1 ) / 2 ); +} + +extern void base16_encode ( const uint8_t *raw, size_t len, char *encoded ); +extern int base16_decode ( const char *encoded, uint8_t *raw ); + +#endif /* _IPXE_BASE16_H */ diff --git a/src/include/ipxe/errfile.h b/src/include/ipxe/errfile.h index c62a5b7d3..2bb655fd7 100644 --- a/src/include/ipxe/errfile.h +++ b/src/include/ipxe/errfile.h @@ -54,6 +54,7 @@ FILE_LICENCE ( GPL2_OR_LATER ); #define ERRFILE_xfer ( ERRFILE_CORE | 0x000e0000 ) #define ERRFILE_bitmap ( ERRFILE_CORE | 0x000f0000 ) #define ERRFILE_base64 ( ERRFILE_CORE | 0x00100000 ) +#define ERRFILE_base16 ( ERRFILE_CORE | 0x00110000 ) #define ERRFILE_eisa ( ERRFILE_DRIVER | 0x00000000 ) #define ERRFILE_isa ( ERRFILE_DRIVER | 0x00010000 ) |
