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

Private GIT Repository
Merge branch 'master' of ssh://info.iut-bm.univ-fcomte.fr/Cipher_code
[Cipher_code.git] / OneRoundIoT / EnhancedOneRound / Simon_speck / C / speck.h
1 #ifndef SPECK_H
2 #define SPECK_H
3
4 #include "cipher_constants.h"
5
6 typedef struct _bitword24_t{
7   uint32_t data: 24;
8 } bitword24_t;
9
10 typedef struct _bytes3_t{
11         uint8_t data[3];
12 } bytes3_t;
13
14 typedef struct _bitword48_t{
15   uint64_t data: 48;
16 } bitword48_t;
17
18 typedef struct _bytes6_t{
19         uint8_t data[6];
20 } bytes6_t;
21
22
23 uint8_t Speck_Init(SimSpk_Cipher *cipher_object, enum cipher_config_t cipher_cfg, enum mode_t c_mode, void *key, uint8_t *iv, uint8_t *counter);
24
25 uint8_t Speck_Encrypt(SimSpk_Cipher cipher_object, const void *plaintext, void *ciphertext);
26
27 uint8_t Speck_Decrypt(SimSpk_Cipher cipher_object, const void *ciphertext, void *plaintext);
28
29 void Speck_Encrypt_32(const uint8_t round_limit, const uint8_t *key_schedule, const uint8_t *plaintext,
30                       uint8_t *ciphertext);
31 void Speck_Encrypt_48(const uint8_t round_limit, const uint8_t *key_schedule, const uint8_t *plaintext,
32                       uint8_t *ciphertext);
33 void Speck_Encrypt_64(const uint8_t round_limit, const uint8_t *key_schedule, const uint8_t *plaintext,
34                       uint8_t *ciphertext);
35 void Speck_Encrypt_96(const uint8_t round_limit, const uint8_t *key_schedule, const uint8_t *plaintext,
36                       uint8_t *ciphertext);
37 void Speck_Encrypt_128(const uint8_t round_limit, const uint8_t *key_schedule, const uint8_t *plaintext,
38                        uint8_t *ciphertext);
39
40 void Speck_Decrypt_32(const uint8_t round_limit, const uint8_t *key_schedule, const uint8_t *ciphertext,
41                       uint8_t *plaintext);
42 void Speck_Decrypt_48(const uint8_t round_limit, const uint8_t *key_schedule, const uint8_t *ciphertext,
43                       uint8_t *plaintext);
44 void Speck_Decrypt_64(const uint8_t round_limit, const uint8_t *key_schedule, const uint8_t *ciphertext,
45                       uint8_t *plaintext);
46 void Speck_Decrypt_96(const uint8_t round_limit, const uint8_t *key_schedule, const uint8_t *ciphertext,
47                       uint8_t *plaintext);
48 void Speck_Decrypt_128(const uint8_t round_limit, const uint8_t *key_schedule, const uint8_t *ciphertext,
49                        uint8_t *plaintext);
50
51 #endif