e45108ecff
As per the new guidance from the lab, the module must block crypto operations until the tests have completed. It's unclear what this means exactly (given that technically this is impossible), but let's make some changes that should be enough to comply with the requirement's intent. First, register the library functions and update the live algorithms after the tests rather than before the tests. This is a trivial change. Much more problematic is the fact that the algorithms are registered with the kernel's crypto framework before the tests run, as the tests depend on the framework. Unfortunately, the lab believes that the kernel isn't allowed to enforce the ordering here; the module itself must. Moreover, trying to solve this by copying the crypto API framework into the module proved to be heavily problematic. Thus, implement an alternate solution: make the module override the tfm initialization function of every algorithm it registers, so that it can wait for the tests to complete before allowing the use of any algorithm. This is sufficient if the user makes a supported sequence of API calls. Bug: 153614920 Bug: 188620248 Change-Id: I11ffba90c08114dda4e91c4be7ce8b608c4e14c1 Signed-off-by: Eric Biggers <ebiggers@google.com> (cherry picked from commit 02e48f383b2acb42c85028563cc75453842f11ce)
26 lines
1.3 KiB
C
26 lines
1.3 KiB
C
/* SPDX-License-Identifier: GPL-2.0-only */
|
|
/*
|
|
* Copyright 2021 Google LLC
|
|
*
|
|
* This file is automatically included by all files built into fips140.ko, via
|
|
* the "-include" compiler flag. It redirects all calls to algorithm
|
|
* registration functions to the wrapper functions defined within the module.
|
|
*/
|
|
|
|
#define aead_register_instance fips140_aead_register_instance
|
|
#define ahash_register_instance fips140_ahash_register_instance
|
|
#define crypto_register_aead fips140_crypto_register_aead
|
|
#define crypto_register_aeads fips140_crypto_register_aeads
|
|
#define crypto_register_ahash fips140_crypto_register_ahash
|
|
#define crypto_register_ahashes fips140_crypto_register_ahashes
|
|
#define crypto_register_alg fips140_crypto_register_alg
|
|
#define crypto_register_algs fips140_crypto_register_algs
|
|
#define crypto_register_rng fips140_crypto_register_rng
|
|
#define crypto_register_rngs fips140_crypto_register_rngs
|
|
#define crypto_register_shash fips140_crypto_register_shash
|
|
#define crypto_register_shashes fips140_crypto_register_shashes
|
|
#define crypto_register_skcipher fips140_crypto_register_skcipher
|
|
#define crypto_register_skciphers fips140_crypto_register_skciphers
|
|
#define shash_register_instance fips140_shash_register_instance
|
|
#define skcipher_register_instance fips140_skcipher_register_instance
|