Commit | Line | Data |
---|---|---|
c8c36413 EB |
1 | // SPDX-License-Identifier: GPL-2.0 |
2 | /* | |
3 | * Common values for the Speck algorithm | |
4 | */ | |
5 | ||
6 | #ifndef _CRYPTO_SPECK_H | |
7 | #define _CRYPTO_SPECK_H | |
8 | ||
9 | #include <linux/types.h> | |
10 | ||
11 | /* Speck128 */ | |
12 | ||
13 | #define SPECK128_BLOCK_SIZE 16 | |
14 | ||
15 | #define SPECK128_128_KEY_SIZE 16 | |
16 | #define SPECK128_128_NROUNDS 32 | |
17 | ||
18 | #define SPECK128_192_KEY_SIZE 24 | |
19 | #define SPECK128_192_NROUNDS 33 | |
20 | ||
21 | #define SPECK128_256_KEY_SIZE 32 | |
22 | #define SPECK128_256_NROUNDS 34 | |
23 | ||
24 | struct speck128_tfm_ctx { | |
25 | u64 round_keys[SPECK128_256_NROUNDS]; | |
26 | int nrounds; | |
27 | }; | |
28 | ||
29 | void crypto_speck128_encrypt(const struct speck128_tfm_ctx *ctx, | |
30 | u8 *out, const u8 *in); | |
31 | ||
32 | void crypto_speck128_decrypt(const struct speck128_tfm_ctx *ctx, | |
33 | u8 *out, const u8 *in); | |
34 | ||
35 | int crypto_speck128_setkey(struct speck128_tfm_ctx *ctx, const u8 *key, | |
36 | unsigned int keysize); | |
37 | ||
38 | /* Speck64 */ | |
39 | ||
40 | #define SPECK64_BLOCK_SIZE 8 | |
41 | ||
42 | #define SPECK64_96_KEY_SIZE 12 | |
43 | #define SPECK64_96_NROUNDS 26 | |
44 | ||
45 | #define SPECK64_128_KEY_SIZE 16 | |
46 | #define SPECK64_128_NROUNDS 27 | |
47 | ||
48 | struct speck64_tfm_ctx { | |
49 | u32 round_keys[SPECK64_128_NROUNDS]; | |
50 | int nrounds; | |
51 | }; | |
52 | ||
53 | void crypto_speck64_encrypt(const struct speck64_tfm_ctx *ctx, | |
54 | u8 *out, const u8 *in); | |
55 | ||
56 | void crypto_speck64_decrypt(const struct speck64_tfm_ctx *ctx, | |
57 | u8 *out, const u8 *in); | |
58 | ||
59 | int crypto_speck64_setkey(struct speck64_tfm_ctx *ctx, const u8 *key, | |
60 | unsigned int keysize); | |
61 | ||
62 | #endif /* _CRYPTO_SPECK_H */ |