• Eric Biggers's avatar
    crypto: blake2s - share the "shash" API boilerplate code · 8c4a93a1
    Eric Biggers authored
    Add helper functions for shash implementations of BLAKE2s to
    include/crypto/internal/blake2s.h, taking advantage of
    __blake2s_update() and __blake2s_final() that were added by the previous
    patch to share more code between the library and shash implementations.
    
    crypto_blake2s_setkey() and crypto_blake2s_init() are usable as
    shash_alg::setkey and shash_alg::init directly, while
    crypto_blake2s_update() and crypto_blake2s_final() take an extra
    'blake2s_compress_t' function pointer parameter.  This allows the
    implementation of the compression function to be overridden, which is
    the only part that optimized implementations really care about.
    
    The new functions are inline functions (similar to those in sha1_base.h,
    sha256_base.h, and sm3_base.h) because this avoids needing to add a new
    module blake2s_helpers.ko, they aren't *too* long, and this avoids
    indirect calls which are expensive these days.  Note that they can't go
    in blake2s_generic.ko, as that would require selecting CRYPTO_BLAKE2S
    from CRYPTO_BLAKE2S_X86, which would cause a recursive dependency.
    
    Finally, use these new helper functions in the x86 implementation of
    BLAKE2s.  (This part should be a separate patch, but unfortunately the
    x86 implementation used the exact same function names like
    "crypto_blake2s_update()", so it had to be updated at the same time.)
    Signed-off-by: default avatarEric Biggers <ebiggers@google.com>
    Acked-by: default avatarArd Biesheuvel <ardb@kernel.org>
    Signed-off-by: default avatarHerbert Xu <herbert@gondor.apana.org.au>
    8c4a93a1
blake2s_generic.c 2.26 KB