27 Dec, 2019

1 commit

  • This patch introduces the skcipher_ialg_simple helper which fetches
    the crypto_alg structure from a simple skcipher instance's spawn.

    This allows us to remove the third argument from the function
    skcipher_alloc_instance_simple.

    In doing so the reference count to the algorithm is now maintained
    by the Crypto API and the caller no longer needs to drop the alg
    refcount.

    Signed-off-by: Herbert Xu

    Herbert Xu
     

18 Apr, 2019

1 commit

  • Use subsys_initcall for registration of all templates and generic
    algorithm implementations, rather than module_init. Then change
    cryptomgr to use arch_initcall, to place it before the subsys_initcalls.

    This is needed so that when both a generic and optimized implementation
    of an algorithm are built into the kernel (not loadable modules), the
    generic implementation is registered before the optimized one.
    Otherwise, the self-tests for the optimized implementation are unable to
    allocate the generic implementation for the new comparison fuzz tests.

    Note that on arm, a side effect of this change is that self-tests for
    generic implementations may run before the unaligned access handler has
    been installed. So, unaligned accesses will crash the kernel. This is
    arguably a good thing as it makes it easier to detect that type of bug.

    Signed-off-by: Eric Biggers
    Signed-off-by: Herbert Xu

    Eric Biggers
     

11 Jan, 2019

2 commits

  • The OFB template just wraps a single block cipher algorithm, so simplify
    it by converting it to use skcipher_alloc_instance_simple().

    Cc: Gilad Ben-Yossef
    Signed-off-by: Eric Biggers
    Signed-off-by: Herbert Xu

    Eric Biggers
     
  • Fix multiple bugs in the OFB implementation:

    1. It stored the per-request state 'cnt' in the tfm context, which can be
    used by multiple threads concurrently (e.g. via AF_ALG).
    2. It didn't support messages not a multiple of the block cipher size,
    despite being a stream cipher.
    3. It didn't set cra_blocksize to 1 to indicate it is a stream cipher.

    To fix these, set the 'chunksize' property to the cipher block size to
    guarantee that when walking through the scatterlist, a partial block can
    only occur at the end. Then change the implementation to XOR a block at
    a time at first, then XOR the partial block at the end if needed. This
    is the same way CTR and CFB are implemented. As a bonus, this also
    improves performance in most cases over the current approach.

    Fixes: e497c51896b3 ("crypto: ofb - add output feedback mode")
    Cc: # v4.20+
    Cc: Gilad Ben-Yossef
    Signed-off-by: Eric Biggers
    Reviewed-by: Gilad Ben-Yossef
    Signed-off-by: Herbert Xu

    Eric Biggers
     

28 Sep, 2018

1 commit

  • Add a generic version of output feedback mode. We already have support of
    several hardware based transformations of this mode and the needed test
    vectors but we somehow missed adding a generic software one. Fix this now.

    Signed-off-by: Gilad Ben-Yossef
    Signed-off-by: Herbert Xu

    Gilad Ben-Yossef