u-boot/lib/rsa
Rasmus Villemoes 3f8808ebaa rsa: fix retrieving public exponent on big-endian systems
Commit fdf0819afb (rsa: fix alignment issue when getting public
exponent) changed the logic to avoid doing an 8-byte access to a
possibly-not-8-byte-aligned address.

However, using rsa_convert_big_endian is wrong: That function converts
an array of big-endian (32-bit) words with the most significant word
first (aka a BE byte array) to an array of cpu-endian words with the
least significant word first. While the exponent is indeed _stored_ as
a big-endian 64-bit word (two BE words with MSW first), we want to
extract it as a cpu-endian 64 bit word. On a little-endian host,
swapping the words and byte-swapping each 32-bit word works, because
that's the same as byte-swapping the whole 64 bit word. But on a
big-endian host, the fdt32_to_cpu are no-ops, but
rsa_convert_big_endian() still does the word-swapping, breaking
verified boot.

To fix that, while still ensuring we don't do unaligned accesses, add
a little helper that first memcpy's the bytes to a local fdt64_t, then
applies fdt64_to_cpu(). [The name is chosen based on the
[bl]eXX_to_cpup in linux/byteorder/generic.h].

Fixes: fdf0819afb ("rsa: fix alignment issue when getting public exponent")
Signed-off-by: Rasmus Villemoes <rasmus.villemoes@prevas.dk>
Reviewed-by: Simon Glass <sjg@chromium.org>
2020-10-12 21:30:38 -04:00
..
Kconfig lib: rsa: generate additional parameters for public key 2020-03-12 08:20:39 -04:00
Makefile lib: rsa: take spl/non-spl into account when building rsa_verify_with_pkey() 2020-07-08 17:21:46 -04:00
rsa-checksum.c SPDX: Convert all of our single license tags to Linux Kernel style 2018-05-07 09:34:12 -04:00
rsa-keyprop.c rsa: crash in br_i32_decode() called from rsa_gen_key_prop() 2020-09-14 23:28:52 +02:00
rsa-mod-exp.c rsa: fix retrieving public exponent on big-endian systems 2020-10-12 21:30:38 -04:00
rsa-sign.c lib/rsa: correct check after allocation in fdt_add_bignum() 2020-08-27 11:26:58 -04:00
rsa-verify.c lib: rsa: check algo match in rsa_verify_with_keynode 2020-10-12 21:30:38 -04:00