]> AND Private Git Repository - Cipher_code.git/blob - OneRoundIoT/EnhancedOneRound/Simon_speck/C/cipher_constants.h
Logo AND Algorithmique Numérique Distribuée

Private GIT Repository
update
[Cipher_code.git] / OneRoundIoT / EnhancedOneRound / Simon_speck / C / cipher_constants.h
1 // cipher_constants.h
2 #ifndef CIPHER_CONSTANTS_H
3 #define CIPHER_CONSTANTS_H
4
5 enum mode_t { ECB, CTR, CBC, CFB, OFB };
6
7 static const uint8_t block_sizes[] = {32, 48, 48, 64, 64, 96, 96, 128, 128, 128};
8
9 static const uint16_t key_sizes[] = {64, 72, 96, 96, 128, 96, 144, 128, 192, 256};
10
11 enum cipher_config_t {
12     cfg_64_32,
13     cfg_72_48,
14     cfg_96_48,
15     cfg_96_64,
16     cfg_128_64,
17     cfg_96_96,
18     cfg_144_96,
19     cfg_128_128,
20     cfg_192_128,
21     cfg_256_128
22 } ;
23
24 typedef struct {
25     enum cipher_config_t cipher_cfg;
26     void (*encryptPtr)(const uint8_t, const uint8_t *, const uint8_t *, uint8_t *);
27     void (*decryptPtr)(const uint8_t, const uint8_t *, const uint8_t *, uint8_t *);
28     uint16_t key_size;
29     uint8_t block_size;
30     uint8_t round_limit;
31     uint8_t init_vector[16];
32     uint8_t counter[16];
33     uint8_t key_schedule[576];
34     uint8_t alpha;
35     uint8_t beta;
36     uint8_t z_seq;
37 } SimSpk_Cipher;
38
39 #endif