04 Jan, 2021

1 commit

  • This is the 5.10.4 stable release

    * tag 'v5.10.4': (717 commits)
    Linux 5.10.4
    x86/CPU/AMD: Save AMD NodeId as cpu_die_id
    drm/edid: fix objtool warning in drm_cvt_modes()
    ...

    Signed-off-by: Jason Liu

    Conflicts:
    drivers/gpu/drm/imx/dcss/dcss-plane.c
    drivers/media/i2c/ov5640.c

    Jason Liu
     

30 Dec, 2020

1 commit

  • [ Upstream commit 6569e3097f1c4a490bdf2b23d326855e04942dfd ]

    The extra tests in the manager actually require the manager to be
    selected too. Otherwise the linker gives errors like:

    ld: arch/x86/crypto/chacha_glue.o: in function `chacha_simd_stream_xor':
    chacha_glue.c:(.text+0x422): undefined reference to `crypto_simd_disabled_for_test'

    Fixes: 2343d1529aff ("crypto: Kconfig - allow tests to be disabled when manager is disabled")
    Signed-off-by: Jason A. Donenfeld
    Signed-off-by: Herbert Xu
    Signed-off-by: Sasha Levin

    Jason A. Donenfeld
     

14 Dec, 2020

1 commit

  • This patch adds kernel support for encryption/decryption of TLS 1.0
    records using block ciphers. Implementation is similar to authenc in the
    sense that the base algorithms (AES, SHA1) are combined in a template to
    produce TLS encapsulation frames. The composite algorithm will be called
    "tls10(hmac(),cbc())". The cipher and hmac keys are
    wrapped in the same format used by authenc.c.

    Signed-off-by: Radu Alexe
    Signed-off-by: Cristian Stoica
    Signed-off-by: Horia Geantă

    Merged LF commit (rebase-20200703/crypto/core):
    856fb52acc28 ("crypto: tls - fix logical-not-parentheses compile warning")

    Merged LF commit (next-nxp-20200811):
    0f90a0618247 ("crypto: tls: fix build issue")

    Signed-off-by: Horia Geantă

    Radu Alexe
     

25 Sep, 2020

2 commits

  • This new module implement the SM2 public key algorithm. It was
    published by State Encryption Management Bureau, China.
    List of specifications for SM2 elliptic curve public key cryptography:

    * GM/T 0003.1-2012
    * GM/T 0003.2-2012
    * GM/T 0003.3-2012
    * GM/T 0003.4-2012
    * GM/T 0003.5-2012

    IETF: https://tools.ietf.org/html/draft-shen-sm2-ecdsa-02
    oscca: http://www.oscca.gov.cn/sca/xxgk/2010-12/17/content_1002386.shtml
    scctc: http://www.gmbz.org.cn/main/bzlb.html

    Signed-off-by: Tianjia Zhang
    Tested-by: Xufeng Zhang
    Signed-off-by: Herbert Xu

    Tianjia Zhang
     
  • Extend the user-space RNG interface:
    1. Add entropy input via ALG_SET_DRBG_ENTROPY setsockopt option;
    2. Add additional data input via sendmsg syscall.

    This allows DRBG to be tested with test vectors, for example for the
    purpose of CAVP testing, which otherwise isn't possible.

    To prevent erroneous use of entropy input, it is hidden under
    CRYPTO_USER_API_RNG_CAVP config option and requires CAP_SYS_ADMIN to
    succeed.

    Signed-off-by: Elena Petrova
    Acked-by: Stephan Müller
    Reviewed-by: Eric Biggers
    Signed-off-by: Herbert Xu

    Elena Petrova
     

18 Sep, 2020

1 commit

  • We have a few interesting pieces in our cipher museum, which are never
    used internally, and were only ever provided as generic C implementations.

    Unfortunately, we cannot simply remove this code, as we cannot be sure
    that it is not being used via the AF_ALG socket API, however unlikely.

    So let's mark the Anubis, Khazad, SEED and TEA algorithms as obsolete,
    which means they can only be enabled in the build if the socket API is
    enabled in the first place.

    Signed-off-by: Ard Biesheuvel
    Signed-off-by: Herbert Xu

    Ard Biesheuvel
     

11 Sep, 2020

1 commit

  • Cryptographic algorithms may have a lifespan that is significantly
    shorter than Linux's, and so we need to start phasing out algorithms
    that are known to be broken, and are no longer fit for general use.

    RC4 (or arc4) is a good example here: there are a few areas where its
    use is still somewhat acceptable, e.g., for interoperability with legacy
    wifi hardware that can only use WEP or TKIP data encryption, but that
    should not imply that, for instance, use of RC4 based EAP-TLS by the WPA
    supplicant for negotiating TKIP keys is equally acceptable, or that RC4
    should remain available as a general purpose cryptographic transform for
    all in-kernel and user space clients.

    Now that all in-kernel users that need to retain support have moved to
    the arc4 library interface, and the known users of ecb(arc4) via the
    socket API (iwd [0] and libell [1][2]) have been updated to switch to a
    local implementation, we can take the next step, and mark the ecb(arc4)
    skcipher as obsolete, and only provide it if the socket API is enabled in
    the first place, as well as provide the option to disable all algorithms
    that have been marked as obsolete.

    [0] https://git.kernel.org/pub/scm/network/wireless/iwd.git/commit/?id=1db8a85a60c64523
    [1] https://git.kernel.org/pub/scm/libs/ell/ell.git/commit/?id=53482ce421b727c2
    [2] https://git.kernel.org/pub/scm/libs/ell/ell.git/commit/?id=7f6a137809d42f6b

    Signed-off-by: Ard Biesheuvel
    Signed-off-by: Herbert Xu

    Ard Biesheuvel
     

23 Jul, 2020

1 commit

  • Rationale:
    Reduces attack surface on kernel devs opening the links for MITM
    as HTTPS traffic is much harder to manipulate.

    Deterministic algorithm:
    For each file:
    If not .svg:
    For each line:
    If doesn't contain `\bxmlns\b`:
    For each link, `\bhttp://[^# \t\r\n]*(?:\w|/)`:
    If neither `\bgnu\.org/license`, nor `\bmozilla\.org/MPL\b`:
    If both the HTTP and HTTPS versions
    return 200 OK and serve the same content:
    Replace HTTP with HTTPS.

    Signed-off-by: Alexander A. Klimov
    Signed-off-by: Herbert Xu

    Alexander A. Klimov
     

11 Jun, 2020

1 commit

  • Pull READ/WRITE_ONCE rework from Will Deacon:
    "This the READ_ONCE rework I've been working on for a while, which
    bumps the minimum GCC version and improves code-gen on arm64 when
    stack protector is enabled"

    [ Side note: I'm _really_ tempted to raise the minimum gcc version to
    4.9, so that we can just say that we require _Generic() support.

    That would allow us to more cleanly handle a lot of the cases where we
    depend on very complex macros with 'sizeof' or __builtin_choose_expr()
    with __builtin_types_compatible_p() etc.

    This branch has a workaround for sparse not handling _Generic(),
    either, but that was already fixed in the sparse development branch,
    so it's really just gcc-4.9 that we'd require. - Linus ]

    * 'rwonce/rework' of git://git.kernel.org/pub/scm/linux/kernel/git/will/linux:
    compiler_types.h: Use unoptimized __unqual_scalar_typeof for sparse
    compiler_types.h: Optimize __unqual_scalar_typeof compilation time
    compiler.h: Enforce that READ_ONCE_NOCHECK() access size is sizeof(long)
    compiler-types.h: Include naked type in __pick_integer_type() match
    READ_ONCE: Fix comment describing 2x32-bit atomicity
    gcov: Remove old GCC 3.4 support
    arm64: barrier: Use '__unqual_scalar_typeof' for acquire/release macros
    locking/barriers: Use '__unqual_scalar_typeof' for load-acquire macros
    READ_ONCE: Drop pointer qualifiers when reading from scalar types
    READ_ONCE: Enforce atomicity for {READ,WRITE}_ONCE() memory accesses
    READ_ONCE: Simplify implementations of {READ,WRITE}_ONCE()
    arm64: csum: Disable KASAN for do_csum()
    fault_inject: Don't rely on "return value" from WRITE_ONCE()
    net: tls: Avoid assigning 'const' pointer to non-const pointer
    netfilter: Avoid assigning 'const' pointer to non-const pointer
    compiler/gcc: Raise minimum GCC version for kernel builds to 4.8

    Linus Torvalds
     

30 Apr, 2020

2 commits

  • if CRYPTO_DRBG_CTR is builtin and CTR is module, allocating such algo
    will fail.
    DRBG: could not allocate CTR cipher TFM handle: ctr(aes)
    alg: drbg: Failed to reset rng
    alg: drbg: Test 0 failed for drbg_pr_ctr_aes128
    DRBG: could not allocate CTR cipher TFM handle: ctr(aes)
    alg: drbg: Failed to reset rng
    alg: drbg: Test 0 failed for drbg_nopr_ctr_aes128
    DRBG: could not allocate CTR cipher TFM handle: ctr(aes)
    alg: drbg: Failed to reset rng
    alg: drbg: Test 0 failed for drbg_nopr_ctr_aes192
    DRBG: could not allocate CTR cipher TFM handle: ctr(aes)
    alg: drbg: Failed to reset rng
    alg: drbg: Test 0 failed for drbg_nopr_ctr_aes256

    So let's select CTR instead of just depend on it.

    Signed-off-by: Corentin Labbe
    Signed-off-by: Herbert Xu

    Corentin Labbe
     
  • As comment of the v2, Herbert said: "The SEQIV select from CTR is historical
    and no longer necessary."

    So let's get rid of it.

    Signed-off-by: Corentin Labbe
    Signed-off-by: Herbert Xu

    Corentin Labbe
     

16 Apr, 2020

1 commit

  • It is very rare to see versions of GCC prior to 4.8 being used to build
    the mainline kernel. These old compilers are also know to have codegen
    issues which can lead to silent miscompilation:

    https://gcc.gnu.org/bugzilla/show_bug.cgi?id=58145

    Raise the minimum GCC version for kernel build to 4.8 and remove some
    tautological Kconfig dependencies as a consequence.

    Cc: Masahiro Yamada
    Acked-by: Arnd Bergmann
    Reviewed-by: Nick Desaulniers
    Signed-off-by: Will Deacon

    Will Deacon
     

05 Feb, 2020

1 commit


16 Jan, 2020

1 commit


22 Nov, 2019

1 commit


17 Nov, 2019

13 commits

  • This implementation is the fastest available x86_64 implementation, and
    unlike Sandy2x, it doesn't requie use of the floating point registers at
    all. Instead it makes use of BMI2 and ADX, available on recent
    microarchitectures. The implementation was written by Armando
    Faz-Hernández with contributions (upstream) from Samuel Neves and me,
    in addition to further changes in the kernel implementation from us.

    Signed-off-by: Jason A. Donenfeld
    Signed-off-by: Samuel Neves
    Co-developed-by: Samuel Neves
    [ardb: - move to arch/x86/crypto
    - wire into lib/crypto framework
    - implement crypto API KPP hooks ]
    Signed-off-by: Ard Biesheuvel
    Signed-off-by: Herbert Xu

    Jason A. Donenfeld
     
  • Expose the generic Curve25519 library via the crypto API KPP interface.

    Signed-off-by: Ard Biesheuvel
    Signed-off-by: Herbert Xu

    Ard Biesheuvel
     
  • These implementations from Samuel Neves support AVX and AVX-512VL.
    Originally this used AVX-512F, but Skylake thermal throttling made
    AVX-512VL more attractive and possible to do with negligable difference.

    Signed-off-by: Jason A. Donenfeld
    Signed-off-by: Samuel Neves
    Co-developed-by: Samuel Neves
    [ardb: move to arch/x86/crypto, wire into lib/crypto framework]
    Signed-off-by: Ard Biesheuvel
    Signed-off-by: Herbert Xu

    Jason A. Donenfeld
     
  • Wire up our newly added Blake2s implementation via the shash API.

    Signed-off-by: Ard Biesheuvel
    Signed-off-by: Herbert Xu

    Ard Biesheuvel
     
  • This is a straight import of the OpenSSL/CRYPTOGAMS Poly1305 implementation for
    MIPS authored by Andy Polyakov, a prior 64-bit only version of which has been
    contributed by him to the OpenSSL project. The file 'poly1305-mips.pl' is taken
    straight from this upstream GitHub repository [0] at commit
    d22ade312a7af958ec955620b0d241cf42c37feb, and already contains all the changes
    required to build it as part of a Linux kernel module.

    [0] https://github.com/dot-asm/cryptogams

    Co-developed-by: Andy Polyakov
    Signed-off-by: Andy Polyakov
    Co-developed-by: René van Dorst
    Signed-off-by: René van Dorst
    Signed-off-by: Ard Biesheuvel
    Signed-off-by: Herbert Xu

    Ard Biesheuvel
     
  • Implement the arch init/update/final Poly1305 library routines in the
    accelerated SIMD driver for x86 so they are accessible to users of
    the Poly1305 library interface as well.

    Signed-off-by: Ard Biesheuvel
    Signed-off-by: Herbert Xu

    Ard Biesheuvel
     
  • Remove the dependency on the generic Poly1305 driver. Instead, depend
    on the generic library so that we only reuse code without pulling in
    the generic skcipher implementation as well.

    While at it, remove the logic that prefers the non-SIMD path for short
    inputs - this is no longer necessary after recent FPU handling changes
    on x86.

    Since this removes the last remaining user of the routines exported
    by the generic shash driver, unexport them and make them static.

    Signed-off-by: Ard Biesheuvel
    Signed-off-by: Herbert Xu

    Ard Biesheuvel
     
  • Move the core Poly1305 routines shared between the generic Poly1305
    shash driver and the Adiantum and NHPoly1305 drivers into a separate
    library so that using just this pieces does not pull in the crypto
    API pieces of the generic Poly1305 routine.

    In a subsequent patch, we will augment this generic library with
    init/update/final routines so that Poyl1305 algorithm can be used
    directly without the need for using the crypto API's shash abstraction.

    Signed-off-by: Ard Biesheuvel
    Signed-off-by: Herbert Xu

    Ard Biesheuvel
     
  • This integrates the accelerated MIPS 32r2 implementation of ChaCha
    into both the API and library interfaces of the kernel crypto stack.

    The significance of this is that, in addition to becoming available
    as an accelerated library implementation, it can also be used by
    existing crypto API code such as Adiantum (for block encryption on
    ultra low performance cores) or IPsec using chacha20poly1305. These
    are use cases that have already opted into using the abstract crypto
    API. In order to support Adiantum, the core assembler routine has
    been adapted to take the round count as a function argument rather
    than hardcoding it to 20.

    Co-developed-by: René van Dorst
    Signed-off-by: René van Dorst
    Signed-off-by: Ard Biesheuvel
    Signed-off-by: Herbert Xu

    Ard Biesheuvel
     
  • Wire the existing x86 SIMD ChaCha code into the new ChaCha library
    interface, so that users of the library interface will get the
    accelerated version when available.

    Given that calls into the library API will always go through the
    routines in this module if it is enabled, switch to static keys
    to select the optimal implementation available (which may be none
    at all, in which case we defer to the generic implementation for
    all invocations).

    Signed-off-by: Ard Biesheuvel
    Signed-off-by: Herbert Xu

    Ard Biesheuvel
     
  • In preparation of extending the x86 ChaCha driver to also expose the ChaCha
    library interface, drop the dependency on the chacha_generic crypto driver
    as a non-SIMD fallback, and depend on the generic ChaCha library directly.
    This way, we only pull in the code we actually need, without registering
    a set of ChaCha skciphers that we will never use.

    Since turning the FPU on and off is cheap these days, simplify the SIMD
    routine by dropping the per-page yield, which makes for a cleaner switch
    to the library API as well. This also allows use to invoke the skcipher
    walk routines in non-atomic mode.

    Signed-off-by: Ard Biesheuvel
    Signed-off-by: Herbert Xu

    Ard Biesheuvel
     
  • Currently, our generic ChaCha implementation consists of a permute
    function in lib/chacha.c that operates on the 64-byte ChaCha state
    directly [and which is always included into the core kernel since it
    is used by the /dev/random driver], and the crypto API plumbing to
    expose it as a skcipher.

    In order to support in-kernel users that need the ChaCha streamcipher
    but have no need [or tolerance] for going through the abstractions of
    the crypto API, let's expose the streamcipher bits via a library API
    as well, in a way that permits the implementation to be superseded by
    an architecture specific one if provided.

    So move the streamcipher code into a separate module in lib/crypto,
    and expose the init() and crypt() routines to users of the library.

    Signed-off-by: Ard Biesheuvel
    Signed-off-by: Herbert Xu

    Ard Biesheuvel
     
  • In preparation of introducing a set of crypto library interfaces, tidy
    up the Makefile and split off the Kconfig symbols into a separate file.

    Signed-off-by: Ard Biesheuvel
    Signed-off-by: Herbert Xu

    Ard Biesheuvel
     

01 Nov, 2019

2 commits

  • Now that the blkcipher algorithm type has been removed in favor of
    skcipher, rename the crypto_blkcipher kernel module to crypto_skcipher,
    and rename the config options accordingly:

    CONFIG_CRYPTO_BLKCIPHER => CONFIG_CRYPTO_SKCIPHER
    CONFIG_CRYPTO_BLKCIPHER2 => CONFIG_CRYPTO_SKCIPHER2

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

    Eric Biggers
     
  • The patch brings support of several BLAKE2 variants (2b with various
    digest lengths). The keyed digest is supported, using tfm->setkey call.
    The in-tree user will be btrfs (for checksumming), we're going to use
    the BLAKE2b-256 variant.

    The code is reference implementation taken from the official sources and
    modified in terms of kernel coding style (whitespace, comments, uintXX_t
    -> uXX types, removed unused prototypes and #ifdefs, removed testing
    code, changed secure_zero_memory -> memzero_explicit, used own helpers
    for unaligned reads/writes and rotations).

    Further changes removed sanity checks of key length or output size,
    these values are verified in the crypto API callbacks or hardcoded in
    shash_alg and not exposed to users.

    Signed-off-by: David Sterba
    Signed-off-by: Herbert Xu

    David Sterba
     

25 Oct, 2019

1 commit

  • Convert the glue code for the PowerPC SPE implementations of AES-ECB,
    AES-CBC, AES-CTR, and AES-XTS from the deprecated "blkcipher" API to the
    "skcipher" API. This is needed in order for the blkcipher API to be
    removed.

    Tested with:

    export ARCH=powerpc CROSS_COMPILE=powerpc-linux-gnu-
    make mpc85xx_defconfig
    cat >> .config << EOF
    # CONFIG_MODULES is not set
    # CONFIG_CRYPTO_MANAGER_DISABLE_TESTS is not set
    CONFIG_DEBUG_KERNEL=y
    CONFIG_CRYPTO_MANAGER_EXTRA_TESTS=y
    CONFIG_CRYPTO_AES=y
    CONFIG_CRYPTO_CBC=y
    CONFIG_CRYPTO_CTR=y
    CONFIG_CRYPTO_ECB=y
    CONFIG_CRYPTO_XTS=y
    CONFIG_CRYPTO_AES_PPC_SPE=y
    EOF
    make olddefconfig
    make -j32
    qemu-system-ppc -M mpc8544ds -cpu e500 -nographic \
    -kernel arch/powerpc/boot/zImage \
    -append cryptomgr.fuzz_iterations=1000

    Note that xts-ppc-spe still fails the comparison tests due to the lack
    of ciphertext stealing support. This is not addressed by this patch.

    This patch also cleans up the code by making ->encrypt() and ->decrypt()
    call a common function for each of ECB, CBC, and XTS, and by using a
    clearer way to compute the length to process at each step.

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

    Eric Biggers
     

23 Oct, 2019

3 commits

  • Convert the glue code for the SPARC64 DES opcodes implementations of
    DES-ECB, DES-CBC, 3DES-ECB, and 3DES-CBC from the deprecated "blkcipher"
    API to the "skcipher" API. This is needed in order for the blkcipher
    API to be removed.

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

    Eric Biggers
     
  • Convert the glue code for the SPARC64 Camellia opcodes implementations
    of Camellia-ECB and Camellia-CBC from the deprecated "blkcipher" API to
    the "skcipher" API. This is needed in order for the blkcipher API to be
    removed.

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

    Eric Biggers
     
  • Convert the glue code for the SPARC64 AES opcodes implementations of
    AES-ECB, AES-CBC, and AES-CTR from the deprecated "blkcipher" API to the
    "skcipher" API. This is needed in order for the blkcipher API to be
    removed.

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

    Eric Biggers
     

10 Oct, 2019

1 commit

  • Now that the Clang compiler has taken it upon itself to police the
    compiler command line, and reject combinations for arguments it views
    as incompatible, the AEGIS128 no longer builds correctly, and errors
    out like this:

    clang-10: warning: ignoring extension 'crypto' because the 'armv7-a'
    architecture does not support it [-Winvalid-command-line-argument]

    So let's switch to armv8-a instead, which matches the crypto-neon-fp-armv8
    FPU profile we specify. Since neither were actually supported by GCC
    versions before 4.8, let's tighten the Kconfig dependencies as well so
    we won't run into errors when building with an ancient compiler.

    Signed-off-by: Ard Biesheuvel
    Reviewed-by: Nathan Chancellor
    Tested-by: Nathan Chancellor
    Reviewed-by: Nick Desaulniers
    Tested-by: Nick Desaulniers
    Reported-by:
    Signed-off-by: Herbert Xu

    Ard Biesheuvel
     

22 Sep, 2019

1 commit

  • …device-mapper/linux-dm

    Pull device mapper updates from Mike Snitzer:

    - crypto and DM crypt advances that allow the crypto API to reclaim
    implementation details that do not belong in DM crypt. The wrapper
    template for ESSIV generation that was factored out will also be used
    by fscrypt in the future.

    - Add root hash pkcs#7 signature verification to the DM verity target.

    - Add a new "clone" DM target that allows for efficient remote
    replication of a device.

    - Enhance DM bufio's cache to be tailored to each client based on use.
    Clients that make heavy use of the cache get more of it, and those
    that use less have reduced cache usage.

    - Add a new DM_GET_TARGET_VERSION ioctl to allow userspace to query the
    version number of a DM target (even if the associated module isn't
    yet loaded).

    - Fix invalid memory access in DM zoned target.

    - Fix the max_discard_sectors limit advertised by the DM raid target;
    it was mistakenly storing the limit in bytes rather than sectors.

    - Small optimizations and cleanups in DM writecache target.

    - Various fixes and cleanups in DM core, DM raid1 and space map portion
    of DM persistent data library.

    * tag 'for-5.4/dm-changes' of git://git.kernel.org/pub/scm/linux/kernel/git/device-mapper/linux-dm: (22 commits)
    dm: introduce DM_GET_TARGET_VERSION
    dm bufio: introduce a global cache replacement
    dm bufio: remove old-style buffer cleanup
    dm bufio: introduce a global queue
    dm bufio: refactor adjust_total_allocated
    dm bufio: call adjust_total_allocated from __link_buffer and __unlink_buffer
    dm: add clone target
    dm raid: fix updating of max_discard_sectors limit
    dm writecache: skip writecache_wait for pmem mode
    dm stats: use struct_size() helper
    dm crypt: omit parsing of the encapsulated cipher
    dm crypt: switch to ESSIV crypto API template
    crypto: essiv - create wrapper template for ESSIV generation
    dm space map common: remove check for impossible sm_find_free() return value
    dm raid1: use struct_size() with kzalloc()
    dm writecache: optimize performance by sorting the blocks for writeback_all
    dm writecache: add unlikely for getting two block with same LBA
    dm writecache: remove unused member pointer in writeback_struct
    dm zoned: fix invalid memory access
    dm verity: add root hash pkcs#7 signature verification
    ...

    Linus Torvalds
     

04 Sep, 2019

1 commit

  • Implement a template that wraps a (skcipher,shash) or (aead,shash) tuple
    so that we can consolidate the ESSIV handling in fscrypt and dm-crypt and
    move it into the crypto API. This will result in better test coverage, and
    will allow future changes to make the bare cipher interface internal to the
    crypto subsystem, in order to increase robustness of the API against misuse.

    Signed-off-by: Ard Biesheuvel
    Acked-by: Herbert Xu
    Tested-by: Milan Broz
    Signed-off-by: Mike Snitzer

    Ard Biesheuvel
     

22 Aug, 2019

3 commits

  • Drop the duplicate generic sha256 (and sha224) implementation from
    crypto/sha256_generic.c and use the implementation from
    lib/crypto/sha256.c instead.

    "diff -u lib/crypto/sha256.c sha256_generic.c" shows that the core
    sha256_transform function from both implementations is identical and
    the other code is functionally identical too.

    Suggested-by: Eric Biggers
    Signed-off-by: Hans de Goede
    Signed-off-by: Herbert Xu

    Hans de Goede
     
  • Before this commit lib/crypto/sha256.c has only been used in the s390 and
    x86 purgatory code, make it suitable for generic use:

    * Export interesting symbols
    * Add -D__DISABLE_EXPORTS to CFLAGS_sha256.o for purgatory builds to
    avoid the exports for the purgatory builds
    * Add to lib/crypto/Makefile and crypto/Kconfig

    Signed-off-by: Hans de Goede
    Signed-off-by: Herbert Xu

    Hans de Goede
     
  • Another one for the cipher museum: split off DES core processing into
    a separate module so other drivers (mostly for crypto accelerators)
    can reuse the code without pulling in the generic DES cipher itself.
    This will also permit the cipher interface to be made private to the
    crypto API itself once we move the only user in the kernel (CIFS) to
    this library interface.

    Signed-off-by: Ard Biesheuvel
    Signed-off-by: Herbert Xu

    Ard Biesheuvel