404

[ Avaa Bypassed ]




Upload:

Command:

botdev@18.226.163.178: ~ $
/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _CRYPTO_XTS_H
#define _CRYPTO_XTS_H

#include <crypto/b128ops.h>
#include <crypto/internal/skcipher.h>
#include <linux/fips.h>

struct scatterlist;
struct blkcipher_desc;

#define XTS_BLOCK_SIZE 16

struct xts_crypt_req {
	le128 *tbuf;
	unsigned int tbuflen;

	void *tweak_ctx;
	void (*tweak_fn)(void *ctx, u8* dst, const u8* src);
	void *crypt_ctx;
	void (*crypt_fn)(void *ctx, u8 *blks, unsigned int nbytes);
};

#define XTS_TWEAK_CAST(x) ((void (*)(void *, u8*, const u8*))(x))

int xts_crypt(struct blkcipher_desc *desc, struct scatterlist *dst,
	      struct scatterlist *src, unsigned int nbytes,
	      struct xts_crypt_req *req);

static inline int xts_check_key(struct crypto_tfm *tfm,
				const u8 *key, unsigned int keylen)
{
	u32 *flags = &tfm->crt_flags;

	/*
	 * key consists of keys of equal size concatenated, therefore
	 * the length must be even.
	 */
	if (keylen % 2) {
		*flags |= CRYPTO_TFM_RES_BAD_KEY_LEN;
		return -EINVAL;
	}

	/* ensure that the AES and tweak key are not identical */
	if (fips_enabled &&
	    !crypto_memneq(key, key + (keylen / 2), keylen / 2)) {
		*flags |= CRYPTO_TFM_RES_WEAK_KEY;
		return -EINVAL;
	}

	return 0;
}

static inline int xts_verify_key(struct crypto_skcipher *tfm,
				 const u8 *key, unsigned int keylen)
{
	/*
	 * key consists of keys of equal size concatenated, therefore
	 * the length must be even.
	 */
	if (keylen % 2) {
		crypto_skcipher_set_flags(tfm, CRYPTO_TFM_RES_BAD_KEY_LEN);
		return -EINVAL;
	}

	/* ensure that the AES and tweak key are not identical */
	if ((fips_enabled || crypto_skcipher_get_flags(tfm) &
			     CRYPTO_TFM_REQ_WEAK_KEY) &&
	    !crypto_memneq(key, key + (keylen / 2), keylen / 2)) {
		crypto_skcipher_set_flags(tfm, CRYPTO_TFM_RES_WEAK_KEY);
		return -EINVAL;
	}

	return 0;
}

#endif  /* _CRYPTO_XTS_H */

Filemanager

Name Type Size Permission Actions
internal Folder 0755
ablk_helper.h File 773 B 0644
acompress.h File 7.89 KB 0644
aead.h File 18.1 KB 0644
aes.h File 1.03 KB 0644
akcipher.h File 11.7 KB 0644
algapi.h File 11.12 KB 0644
authenc.h File 845 B 0644
b128ops.h File 2.41 KB 0644
blake2s.h File 2.37 KB 0644
blowfish.h File 415 B 0644
cast5.h File 590 B 0644
cast6.h File 636 B 0644
cast_common.h File 232 B 0644
cbc.h File 3.48 KB 0644
chacha20.h File 1.01 KB 0644
cryptd.h File 2.5 KB 0644
crypto_wq.h File 161 B 0644
ctr.h File 524 B 0644
des.h File 542 B 0644
dh.h File 2.62 KB 0644
drbg.h File 9.05 KB 0644
ecdh.h File 2.67 KB 0644
engine.h File 4 KB 0644
gcm.h File 140 B 0644
gf128mul.h File 9.41 KB 0644
ghash.h File 381 B 0644
hash.h File 31.48 KB 0644
hash_info.h File 1.13 KB 0644
hmac.h File 173 B 0644
if_alg.h File 7 KB 0644
kpp.h File 9.68 KB 0644
lrw.h File 1.22 KB 0644
mcryptd.h File 2.37 KB 0644
md5.h File 497 B 0644
null.h File 569 B 0644
padlock.h File 649 B 0644
pcrypt.h File 1.4 KB 0644
pkcs7.h File 1.21 KB 0644
poly1305.h File 920 B 0644
public_key.h File 2.08 KB 0644
rng.h File 6.66 KB 0644
scatterwalk.h File 3.67 KB 0644
serpent.h File 712 B 0644
sha.h File 2.88 KB 0644
sha1_base.h File 2.47 KB 0644
sha256_base.h File 3.03 KB 0644
sha3.h File 704 B 0644
sha512_base.h File 3.19 KB 0644
skcipher.h File 20.7 KB 0644
sm3.h File 833 B 0644
sm3_base.h File 2.95 KB 0644
twofish.h File 755 B 0644
xts.h File 1.81 KB 0644