Merge branch 'linus' of git://git.kernel.org/pub/scm/linux/kernel/git/herbert/crypto-2.6
Pull crypto updates from Herbert Xu: "API: - Add support for allocating transforms on a specific NUMA Node - Introduce the flag CRYPTO_ALG_ALLOCATES_MEMORY for storage users Algorithms: - Drop PMULL based ghash on arm64 - Fixes for building with clang on x86 - Add sha256 helper that does the digest in one go - Add SP800-56A rev 3 validation checks to dh Drivers: - Permit users to specify NUMA node in hisilicon/zip - Add support for i.MX6 in imx-rngc - Add sa2ul crypto driver - Add BA431 hwrng driver - Add Ingenic JZ4780 and X1000 hwrng driver - Spread IRQ affinity in inside-secure and marvell/cesa" * 'linus' of git://git.kernel.org/pub/scm/linux/kernel/git/herbert/crypto-2.6: (157 commits) crypto: sa2ul - Fix inconsistent IS_ERR and PTR_ERR hwrng: core - remove redundant initialization of variable ret crypto: x86/curve25519 - Remove unused carry variables crypto: ingenic - Add hardware RNG for Ingenic JZ4780 and X1000 dt-bindings: RNG: Add Ingenic RNG bindings. crypto: caam/qi2 - add module alias crypto: caam - add more RNG hw error codes crypto: caam/jr - remove incorrect reference to caam_jr_register() crypto: caam - silence .setkey in case of bad key length crypto: caam/qi2 - create ahash shared descriptors only once crypto: caam/qi2 - fix error reporting for caam_hash_alloc crypto: caam - remove deadcode on 32-bit platforms crypto: ccp - use generic power management crypto: xts - Replace memcpy() invocation with simple assignment crypto: marvell/cesa - irq balance crypto: inside-secure - irq balance crypto: ecc - SP800-56A rev 3 local public key validation crypto: dh - SP800-56A rev 3 local public key validation crypto: dh - check validity of Z before export lib/mpi: Add mpi_sub_ui() ...
This commit is contained in:
@@ -32,11 +32,8 @@ void mptcp_crypto_key_sha(u64 key, u32 *token, u64 *idsn)
|
||||
{
|
||||
__be32 mptcp_hashed_key[SHA256_DIGEST_WORDS];
|
||||
__be64 input = cpu_to_be64(key);
|
||||
struct sha256_state state;
|
||||
|
||||
sha256_init(&state);
|
||||
sha256_update(&state, (__force u8 *)&input, sizeof(input));
|
||||
sha256_final(&state, (u8 *)mptcp_hashed_key);
|
||||
sha256((__force u8 *)&input, sizeof(input), (u8 *)mptcp_hashed_key);
|
||||
|
||||
if (token)
|
||||
*token = be32_to_cpu(mptcp_hashed_key[0]);
|
||||
@@ -47,7 +44,6 @@ void mptcp_crypto_key_sha(u64 key, u32 *token, u64 *idsn)
|
||||
void mptcp_crypto_hmac_sha(u64 key1, u64 key2, u8 *msg, int len, void *hmac)
|
||||
{
|
||||
u8 input[SHA256_BLOCK_SIZE + SHA256_DIGEST_SIZE];
|
||||
struct sha256_state state;
|
||||
u8 key1be[8];
|
||||
u8 key2be[8];
|
||||
int i;
|
||||
@@ -67,13 +63,10 @@ void mptcp_crypto_hmac_sha(u64 key1, u64 key2, u8 *msg, int len, void *hmac)
|
||||
|
||||
memcpy(&input[SHA256_BLOCK_SIZE], msg, len);
|
||||
|
||||
sha256_init(&state);
|
||||
sha256_update(&state, input, SHA256_BLOCK_SIZE + len);
|
||||
|
||||
/* emit sha256(K1 || msg) on the second input block, so we can
|
||||
* reuse 'input' for the last hashing
|
||||
*/
|
||||
sha256_final(&state, &input[SHA256_BLOCK_SIZE]);
|
||||
sha256(input, SHA256_BLOCK_SIZE + len, &input[SHA256_BLOCK_SIZE]);
|
||||
|
||||
/* Prepare second part of hmac */
|
||||
memset(input, 0x5C, SHA256_BLOCK_SIZE);
|
||||
@@ -82,9 +75,7 @@ void mptcp_crypto_hmac_sha(u64 key1, u64 key2, u8 *msg, int len, void *hmac)
|
||||
for (i = 0; i < 8; i++)
|
||||
input[i + 8] ^= key2be[i];
|
||||
|
||||
sha256_init(&state);
|
||||
sha256_update(&state, input, SHA256_BLOCK_SIZE + SHA256_DIGEST_SIZE);
|
||||
sha256_final(&state, (u8 *)hmac);
|
||||
sha256(input, SHA256_BLOCK_SIZE + SHA256_DIGEST_SIZE, hmac);
|
||||
}
|
||||
|
||||
#ifdef CONFIG_MPTCP_HMAC_TEST
|
||||
|
Reference in New Issue
Block a user