diff options
author | Michael Brown | 2010-05-28 02:17:22 +0200 |
---|---|---|
committer | Michael Brown | 2010-05-28 13:44:23 +0200 |
commit | dfcce165a58dc3be7d1c6c1bdf80dd6a28d50d7f (patch) | |
tree | 202eb2047d2c7da2f8e7a0ea71daa6f35c03a4c5 /src/core/base64.c | |
parent | [doc] Re-add README file (diff) | |
download | ipxe-dfcce165a58dc3be7d1c6c1bdf80dd6a28d50d7f.tar.gz ipxe-dfcce165a58dc3be7d1c6c1bdf80dd6a28d50d7f.tar.xz ipxe-dfcce165a58dc3be7d1c6c1bdf80dd6a28d50d7f.zip |
[base64] Allow base64_encode() to handle arbitrary data
Signed-off-by: Michael Brown <mcb30@ipxe.org>
Diffstat (limited to 'src/core/base64.c')
-rw-r--r-- | src/core/base64.c | 16 |
1 files changed, 9 insertions, 7 deletions
diff --git a/src/core/base64.c b/src/core/base64.c index 01bf46e2..05ff424f 100644 --- a/src/core/base64.c +++ b/src/core/base64.c @@ -33,23 +33,24 @@ static const char base64[64] = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/"; /** - * Base64-encode a string + * Base64-encode data * - * @v raw Raw string + * @v raw Raw data + * @v len Length of raw data * @v encoded Buffer for encoded string * * The buffer must be the correct length for the encoded string. Use * something like * - * char buf[ base64_encoded_len ( strlen ( raw ) ) + 1 ]; + * char buf[ base64_encoded_len ( len ) + 1 ]; * * (the +1 is for the terminating NUL) to provide a buffer of the * correct size. */ -void base64_encode ( const char *raw, char *encoded ) { +void base64_encode ( const uint8_t *raw, size_t len, char *encoded ) { const uint8_t *raw_bytes = ( ( const uint8_t * ) raw ); uint8_t *encoded_bytes = ( ( uint8_t * ) encoded ); - size_t raw_bit_len = ( 8 * strlen ( raw ) ); + size_t raw_bit_len = ( 8 * len ); unsigned int bit; unsigned int tmp; @@ -63,6 +64,7 @@ void base64_encode ( const char *raw, char *encoded ) { *(encoded_bytes++) = '='; *(encoded_bytes++) = '\0'; - DBG ( "Base64-encoded \"%s\" as \"%s\"\n", raw, encoded ); - assert ( strlen ( encoded ) == base64_encoded_len ( strlen ( raw ) ) ); + DBG ( "Base64-encoded to \"%s\":\n", encoded ); + DBG_HDA ( 0, raw, len ); + assert ( strlen ( encoded ) == base64_encoded_len ( len ) ); } |