coreboot/src/include
Vadim Bendebury 243c614134 lib: add base64 decoder
It became necessary to decode base64 data retrieved from VPD and
convert it into binary for inclusion in the device tree.

The patch introduces the decoder function based on the description
found in http://en.wikipedia.org/wiki/Base64.

An open source implementation from http://base64.sourceforge.net was
considered, in the end the only thing borrowed from it is the table to
translate base64 ascii characters into numbers in 0..63 range.

BRANCH=none
BUG=chromium:450169

TEST=created a test harness generating random contents of random size
     (in 8 to 32766 bytes range), then converting the contents into
     base64 using the Linux utility, and then converting it back to
     binary using this function and comparing the results.

     It succeeded 1700 iterations before it was stopped.

Change-Id: I502f2c9494c99ba95ece37a7220c0c70c4755be2
Signed-off-by: Patrick Georgi <pgeorgi@chromium.org>
Original-Commit-Id: 6609f76e1559d3cdd402276055c99e0de7da27c8
Original-Change-Id: I5ed68af3a4daead50c44ae0f0c63d836f4b66851
Original-Signed-off-by: Vadim Bendebury <vbendeb@chromium.org>
Original-Reviewed-on: https://chromium-review.googlesource.com/262945
Original-Reviewed-by: Aaron Durbin <adurbin@chromium.org>
Reviewed-on: http://review.coreboot.org/9892
Tested-by: build bot (Jenkins)
Reviewed-by: Stefan Reinauer <stefan.reinauer@coreboot.org>
2015-04-22 08:50:54 +02:00
..
boot vpd: populate coreboot table with serialno 2015-04-22 08:47:25 +02:00
console Add console wrapper for UART driver 2015-04-14 21:25:34 +02:00
cpu baytrail: Switch from ACPI mode to PCI mode for legacy support 2015-04-10 19:21:49 +02:00
device Unify byte order macros and clrsetbits 2015-04-21 08:23:25 +02:00
pc80 drivers/pc80/mc146818rtc: Reduce superfluous preprocessor use 2015-02-06 23:56:04 +01:00
smp atomic.h: Fix doxygen errors 2015-01-04 20:03:28 +01:00
superio superio/common/conf_mode.c: Introduce 'new' enter/exit keys for SIO's 2014-11-01 21:27:50 +01:00
tpm_lite vboot2: read secdata and nvdata 2015-03-23 19:51:47 +01:00
antirollback.h chromeos: vboot2: Add TPM PCR extension support 2015-04-20 17:06:28 +02:00
assert.h Fix non-x86 __PRE_RAM__ assertions and add FATAL_ASSERTS Kconfig option 2015-04-17 10:11:33 +02:00
b64_decode.h lib: add base64 decoder 2015-04-22 08:50:54 +02:00
base3.h gpio: Remove non-ternary tristate mode, make ternaries easier 2015-04-10 11:57:44 +02:00
bcd.h rtc: Add an RTC API, and implement it for x86. 2014-12-30 19:28:27 +01:00
boardid.h google/urara: use board ID information to set up hardware 2015-04-22 08:50:10 +02:00
bootmem.h coreboot: introduce notion of bootmem for memory map at boot 2014-03-03 21:47:27 +01:00
bootmode.h vboot: when configured, pass the wipeout request to vboot 2015-04-22 08:41:11 +02:00
bootstate.h bootstate: use structure pointers for scheduling callbacks 2015-03-18 16:41:43 +01:00
cbfs.h cbfs: look for CBFS header in a predefined place 2015-04-17 09:54:40 +02:00
cbfs_core.h cbfs: add cbfs_serialized.h header file 2015-03-31 23:01:39 +02:00
cbfs_serialized.h CBFS: Automate ROM image layout and remove hardcoded offsets 2015-04-14 09:01:27 +02:00
cbmem.h Arrange CBMEM table entries' IDs alphanumerically 2015-04-21 08:08:19 +02:00
delay.h timer: Reestablish init_timer(), consolidate timer initialization calls 2015-04-14 09:03:28 +02:00
edid.h edid: remove float use 2014-12-16 21:31:35 +01:00
elog.h nyan*: Add an empty elog functions for the !CONFIG_ELOG case 2014-12-30 21:28:50 +01:00
endian.h Unify byte order macros and clrsetbits 2015-04-21 08:23:25 +02:00
fallback.h Make set_boot_successful depend on PC80_SYSTEM 2012-11-30 21:33:35 +01:00
gic.h drivers: add GIC support 2015-03-28 07:05:03 +01:00
gpio.h gpio: add a function to read GPIO array as base-2 value 2015-04-10 11:59:30 +02:00
halt.h Introduce halt() 2014-11-30 12:20:05 +01:00
inttypes.h x86: provide more C standard environment 2013-03-20 04:20:25 +01:00
ip_checksum.h Drop prototype guarding for romcc 2013-05-10 00:06:46 +02:00
kconfig.h Add config_enabled() from Linux 2012-05-08 00:36:09 +02:00
lib.h New mechanism to define SRAM/memory map with automatic bounds checking 2015-04-06 22:05:01 +02:00
memlayout.h cbfs: look for CBFS header in a predefined place 2015-04-17 09:54:40 +02:00
memory_info.h smbios: add funtion for smbios type17 2015-03-27 09:55:21 +01:00
memrange.h coreboot memrange: Two changes for zero size or empty memrange 2015-03-04 19:55:19 +01:00
option.h option: Add arch-agnostic get_option() 2014-03-04 15:23:10 +01:00
program_loading.h program loading: unify on struct prog 2015-04-03 14:53:11 +02:00
ramstage_cache.h ramstage_cache: allow ramstage usage add valid helper 2014-05-10 06:31:45 +02:00
reg_script.h Add table driven way to add platform specific reg_script routines 2015-04-04 12:40:29 +02:00
reset.h vboot2: implement select_firmware for pre-romstage verification 2015-01-27 01:43:01 +01:00
rmodule-defs.h rmodules: use rmodtool to create rmodules 2014-03-20 23:55:55 +01:00
rmodule.h rmodule: use struct prog while loading rmodules 2015-04-03 14:53:35 +02:00
romstage_handoff.h romstage_handoff: Fix for changing CBMEM structure 2015-04-21 08:20:50 +02:00
rtc.h drivers/pc80/mc146818rtc: Assume we always have ALTCENTURY 2014-12-30 22:10:41 +01:00
rules.h build system: rename __BOOT_BLOCK__ and __VER_STAGE__ 2015-04-04 20:07:18 +02:00
sdram_mode.h GPLv2 notice: Unify all files to just use one space in »MA 02110-1301« 2013-03-01 10:16:08 +01:00
smbios.h smbios: add a family id in smbios type1 family 2015-04-02 13:26:05 +02:00
spd.h smbios: add funtion for smbios type17 2015-03-27 09:55:21 +01:00
spd_cache.h gizmosphere/gizmo: Move support of SPD data in CBFS 2014-07-05 11:41:52 +02:00
spd_ddr2.h GPLv2 notice: Unify all files to just use one space in »MA 02110-1301« 2013-03-01 10:16:08 +01:00
spi-generic.h spi: support controllers with limited transfer size capabilities 2015-04-13 13:01:33 +02:00
spi_flash.h spi: Add function to read flash status register 2015-04-17 09:21:22 +02:00
stddef.h stddef: Add KHz, MHz and GHz constants 2015-04-04 15:01:51 +02:00
stdlib.h stdlib: Add IS_ALIGNED macro 2015-03-20 10:01:22 +01:00
string.h Replace includes of build.h with version.h 2014-11-20 07:28:37 +01:00
swab.h include: Fix spelling 2013-07-11 22:36:19 +02:00
symbols.h cbfs: look for CBFS header in a predefined place 2015-04-17 09:54:40 +02:00
thread.h Possible thread stack implementation. 2014-08-07 23:55:15 +02:00
timer.h timer: remove rela_time type 2015-03-26 08:53:53 +01:00
timestamp.h timestamps: You can never have enough of them! 2015-04-14 09:03:40 +02:00
tpm.h tpm: Clean up I2C TPM driver 2014-09-10 19:37:49 +02:00
trace.h GPLv2 notice: Unify all files to just use one space in »MA 02110-1301« 2013-03-01 10:16:08 +01:00
types.h include/types.h: Provide BIT() macro 2015-02-06 19:25:57 +01:00
vbe.h intel/gma: Clarify code and use dedicated init for Google Peppy 2014-08-25 22:36:03 +02:00
version.h build.h: remove variable for the builduser, -hostname and -domain 2015-03-09 17:53:16 +01:00
watchdog.h watchdog.h: Fix compile time error on disabling watchdog handling 2013-03-12 12:06:43 +01:00