xref: /openbmc/linux/include/crypto/xts.h (revision ce0045561e1edb92e4a509eb433ff52d3afaa258)
1*ce004556SJussi Kivilinna #ifndef _CRYPTO_XTS_H
2*ce004556SJussi Kivilinna #define _CRYPTO_XTS_H
3*ce004556SJussi Kivilinna 
4*ce004556SJussi Kivilinna #include <crypto/b128ops.h>
5*ce004556SJussi Kivilinna 
6*ce004556SJussi Kivilinna struct scatterlist;
7*ce004556SJussi Kivilinna struct blkcipher_desc;
8*ce004556SJussi Kivilinna 
9*ce004556SJussi Kivilinna #define XTS_BLOCK_SIZE 16
10*ce004556SJussi Kivilinna 
11*ce004556SJussi Kivilinna struct xts_crypt_req {
12*ce004556SJussi Kivilinna 	be128 *tbuf;
13*ce004556SJussi Kivilinna 	unsigned int tbuflen;
14*ce004556SJussi Kivilinna 
15*ce004556SJussi Kivilinna 	void *tweak_ctx;
16*ce004556SJussi Kivilinna 	void (*tweak_fn)(void *ctx, u8* dst, const u8* src);
17*ce004556SJussi Kivilinna 	void *crypt_ctx;
18*ce004556SJussi Kivilinna 	void (*crypt_fn)(void *ctx, u8 *blks, unsigned int nbytes);
19*ce004556SJussi Kivilinna };
20*ce004556SJussi Kivilinna 
21*ce004556SJussi Kivilinna #define XTS_TWEAK_CAST(x) ((void (*)(void *, u8*, const u8*))(x))
22*ce004556SJussi Kivilinna 
23*ce004556SJussi Kivilinna int xts_crypt(struct blkcipher_desc *desc, struct scatterlist *dst,
24*ce004556SJussi Kivilinna 	      struct scatterlist *src, unsigned int nbytes,
25*ce004556SJussi Kivilinna 	      struct xts_crypt_req *req);
26*ce004556SJussi Kivilinna 
27*ce004556SJussi Kivilinna #endif  /* _CRYPTO_XTS_H */
28