This patchset introduces support for crypt-style passwords to unlock the console in autoboot mode.
The implementation of crypt-sha256 and crypt-sha512 originate from libxcrypt at https://github.com/besser82/libxcrypt.git Version v4.4.17 Git commit hash 6b110bc I didn't re-format those two files to make diffing to the original versions from libxcrypt easier, which leads to a huge load of checkpatch.pl warnings&errors. Please advise on whether they should be re-formatted or can be kept as is. The remaining warnings from checkpatch.pl are intentional resp. open for discussion. A sandbox defconfig with password entry has been added. I'm not sure whether this should be kept or not, it's just there as an example. Cheers, Steffen Changes in v5: Take review comments into account Changes in v4: Fix depends for unit-tests Take review comments into account Add another test with `bootstopusesha256` unset Changes in v3: Add unit-tests for autoboot Introduce `bootstopusesha256` to allow fallback to plain SHA256-based hashing Add AUTOBOOT_FLUSH_STDIN option Drop the changes to bcm963158_ram_defconfig Changes in v2: Update Kconfig way of enabling, setting hashes etc. Changes in v1: Added unit-tests of crypt_compare() Wrapped crypt functions to encapsulate errno Steffen Jaeckel (8): lib: add crypt subsystem lib: wrap crypt API to hide errno usage common: integrate crypt-based passwords common: Rename macro appropriately common: allow disabling of timeout for password entry common: add AUTOBOOT_FLUSH_STDIN option common: add support to fallback to plain SHA256 test: add first autoboot unit tests common/Kconfig.boot | 65 ++++++- common/autoboot.c | 136 ++++++++++++-- common/console.c | 5 + configs/sandbox_defconfig | 13 +- include/console.h | 17 ++ include/crypt.h | 14 ++ include/test/common.h | 15 ++ include/test/suites.h | 1 + lib/Kconfig | 1 + lib/Makefile | 1 + lib/crypt/Kconfig | 28 +++ lib/crypt/Makefile | 7 + lib/crypt/alg-sha256.h | 11 ++ lib/crypt/alg-sha512.h | 11 ++ lib/crypt/crypt-port.h | 30 +++ lib/crypt/crypt-sha256.c | 336 ++++++++++++++++++++++++++++++++++ lib/crypt/crypt-sha512.c | 351 ++++++++++++++++++++++++++++++++++++ lib/crypt/crypt.c | 76 ++++++++ test/Kconfig | 10 + test/Makefile | 1 + test/cmd_ut.c | 1 + test/common/Makefile | 3 + test/common/cmd_ut_common.c | 22 +++ test/common/test_autoboot.c | 90 +++++++++ test/lib/Makefile | 1 + test/lib/test_crypt.c | 64 +++++++ 26 files changed, 1287 insertions(+), 23 deletions(-) create mode 100644 include/crypt.h create mode 100644 include/test/common.h create mode 100644 lib/crypt/Kconfig create mode 100644 lib/crypt/Makefile create mode 100644 lib/crypt/alg-sha256.h create mode 100644 lib/crypt/alg-sha512.h create mode 100644 lib/crypt/crypt-port.h create mode 100644 lib/crypt/crypt-sha256.c create mode 100644 lib/crypt/crypt-sha512.c create mode 100644 lib/crypt/crypt.c create mode 100644 test/common/Makefile create mode 100644 test/common/cmd_ut_common.c create mode 100644 test/common/test_autoboot.c create mode 100644 test/lib/test_crypt.c -- 2.32.0