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.
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.
Signed-off-by: Patrick Georgi <firstname.lastname@example.org>
Original-Signed-off-by: Vadim Bendebury <email@example.com>
Original-Reviewed-by: Aaron Durbin <firstname.lastname@example.org>
Tested-by: build bot (Jenkins)
Reviewed-by: Stefan Reinauer <email@example.com>
3 files changed