Retry on incorrect passphrase for softraid crypto boot.
authorjsing <jsing@openbsd.org>
Fri, 10 Aug 2018 16:41:35 +0000 (16:41 +0000)
committerjsing <jsing@openbsd.org>
Fri, 10 Aug 2018 16:41:35 +0000 (16:41 +0000)
commit27bea9a3c7fdba43cfa7c5fb6f268efe98f7720b
tree1da260d940b6c8ce23eab4507a7d3b21838c9371
parent3d1af977314e4be8d35fa706b26e969e26d32756
Retry on incorrect passphrase for softraid crypto boot.

Historically, the softraid crypto support in the boot loaders has only
given one attempt to provide the correct passphrase. There were a
few reasons for this, including the fact that pkcs5_pbkdf2() allows an
empty passphrase and that returning EPERM allowed for another attempt.

With the event of KARL and the need for bsd.booted with hibernate resumption,
this becomes much more of an issue - if you get the passphrase wrong you
fail to resume. There are also other situations like using /etc/boot.conf
to switch serial console, but an incorrect passphrase results in the config
not being read. Also, bcrypt_pbkdf() does not permit empty passphrases.

This reworks the softraid crypto support in the boot loaders so that it
loops requesting a valid passphrase until one is provided, or an empty
passphrase is entered (at which point it will abort).

ok mortimer@ tb@
sys/arch/amd64/stand/efiboot/efidev.c
sys/arch/amd64/stand/libsa/biosdev.c
sys/arch/i386/stand/libsa/biosdev.c
sys/arch/sparc64/stand/ofwboot/boot.c
sys/lib/libsa/softraid.c
sys/lib/libsa/softraid.h