• Nicolai Stange's avatar
    crypto: api - allow algs only in specific constructions in FIPS mode · d6097b8d
    Nicolai Stange authored
    Currently we do not distinguish between algorithms that fail on
    the self-test vs. those which are disabled in FIPS mode (not allowed).
    Both are marked as having failed the self-test.
    
    Recently the need arose to allow the usage of certain algorithms only
    as arguments to specific template instantiations in FIPS mode. For
    example, standalone "dh" must be blocked, but e.g. "ffdhe2048(dh)" is
    allowed. Other potential use cases include "cbcmac(aes)", which must
    only be used with ccm(), or "ghash", which must be used only for
    gcm().
    
    This patch allows this scenario by adding a new flag FIPS_INTERNAL to
    indicate those algorithms that are not FIPS-allowed. They can then be
    used as template arguments only, i.e. when looked up via
    crypto_grab_spawn() to be more specific. The FIPS_INTERNAL bit gets
    propagated upwards recursively into the surrounding template
    instances, until the construction eventually matches an explicit
    testmgr entry with ->fips_allowed being set, if any.
    
    The behaviour to skip !->fips_allowed self-test executions in FIPS
    mode will be retained. Note that this effectively means that
    FIPS_INTERNAL algorithms are handled very similarly to the INTERNAL
    ones in this regard. It is expected that the FIPS_INTERNAL algorithms
    will receive sufficient testing when the larger constructions they're
    a part of, if any, get exercised by testmgr.
    
    Note that as a side-effect of this patch algorithms which are not
    FIPS-allowed will now return ENOENT instead of ELIBBAD. Hopefully
    this is not an issue as some people were relying on this already.
    
    Link: https://lore.kernel.org/r/YeEVSaMEVJb3cQkq@gondor.apana.org.auOriginally-by: default avatarHerbert Xu <herbert@gondor.apana.org.au>
    Signed-off-by: default avatarNicolai Stange <nstange@suse.de>
    Reviewed-by: default avatarHannes Reinecke <hare@suse.de>
    Signed-off-by: default avatarHerbert Xu <herbert@gondor.apana.org.au>
    d6097b8d
testmgr.c 146 KB