diff options
author | Michael Brown | 2015-04-24 14:54:40 +0200 |
---|---|---|
committer | Michael Brown | 2015-04-24 16:36:41 +0200 |
commit | dc15a5a77942abf2c39f2de4ee5a2b7150ea89e1 (patch) | |
tree | f7802ca1decc81b35d0ba99ff6d5980f8d7f61bf /src/core/settings.c | |
parent | [base64] Add buffer size parameter to base64_encode() and base64_decode() (diff) | |
download | ipxe-dc15a5a77942abf2c39f2de4ee5a2b7150ea89e1.tar.gz ipxe-dc15a5a77942abf2c39f2de4ee5a2b7150ea89e1.tar.xz ipxe-dc15a5a77942abf2c39f2de4ee5a2b7150ea89e1.zip |
[settings] Add "base64" setting type
Signed-off-by: Michael Brown <mcb30@ipxe.org>
Diffstat (limited to 'src/core/settings.c')
-rw-r--r-- | src/core/settings.c | 41 |
1 files changed, 41 insertions, 0 deletions
diff --git a/src/core/settings.c b/src/core/settings.c index be48ea7a..12e6c7d6 100644 --- a/src/core/settings.c +++ b/src/core/settings.c @@ -39,6 +39,7 @@ FILE_LICENCE ( GPL2_OR_LATER_OR_UBDL ); #include <ipxe/uuid.h> #include <ipxe/uri.h> #include <ipxe/base16.h> +#include <ipxe/base64.h> #include <ipxe/pci.h> #include <ipxe/init.h> #include <ipxe/version.h> @@ -2121,6 +2122,46 @@ const struct setting_type setting_type_hexraw __setting_type = { }; /** + * Parse Base64-encoded setting value + * + * @v type Setting type + * @v value Formatted setting value + * @v buf Buffer to contain raw value + * @v len Length of buffer + * @v size Integer size, in bytes + * @ret len Length of raw value, or negative error + */ +static int parse_base64_setting ( const struct setting_type *type __unused, + const char *value, void *buf, size_t len ) { + + return base64_decode ( value, buf, len ); +} + +/** + * Format Base64-encoded setting value + * + * @v type Setting type + * @v raw Raw setting value + * @v raw_len Length of raw setting value + * @v buf Buffer to contain formatted value + * @v len Length of buffer + * @ret len Length of formatted value, or negative error + */ +static int format_base64_setting ( const struct setting_type *type __unused, + const void *raw, size_t raw_len, + char *buf, size_t len ) { + + return base64_encode ( raw, raw_len, buf, len ); +} + +/** A Base64-encoded setting */ +const struct setting_type setting_type_base64 __setting_type = { + .name = "base64", + .parse = parse_base64_setting, + .format = format_base64_setting, +}; + +/** * Format UUID setting value * * @v type Setting type |