diff options
| author | Michael Brown | 2010-05-28 15:58:04 +0200 |
|---|---|---|
| committer | Michael Brown | 2010-05-28 16:41:37 +0200 |
| commit | bc83e4b5d3bd408cdab252715f7e269db174ecbe (patch) | |
| tree | 099eb497f037b8aa1784b16b7f86c5cbf5af08c4 /src/include/ipxe | |
| parent | [base64] Add ability to decode base64 strings (diff) | |
| download | ipxe-bc83e4b5d3bd408cdab252715f7e269db174ecbe.tar.gz ipxe-bc83e4b5d3bd408cdab252715f7e269db174ecbe.tar.xz ipxe-bc83e4b5d3bd408cdab252715f7e269db174ecbe.zip | |
[base16] Add generic base16 encoding and decoding routines
Base16 encoding is currently implemented in both iSCSI and SRP.
Signed-off-by: Michael Brown <mcb30@ipxe.org>
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 ) |
