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

Private GIT Repository
update
[Cipher_code.git] / OneRoundIoT / EnhancedOneRound / Simon_speck / C / simon.h
1 #ifndef SIMON_H
2 #define SIMON_H
3
4 #include "cipher_constants.h"
5
6 typedef struct _bword_24{
7   uint32_t data: 24;
8 } bword_24;
9
10 typedef struct _bword_48{
11   uint64_t data: 48;
12 } bword_48;
13
14 uint8_t Simon_Init(SimSpk_Cipher *cipher_object, enum cipher_config_t cipher_cfg, enum mode_t c_mode, void *key, uint8_t *iv, uint8_t *counter);
15
16 uint8_t Simon_Encrypt(SimSpk_Cipher cipher_object, const void *plaintext, void *ciphertext);
17
18 void Simon_Encrypt_32(uint8_t round_limit, const uint8_t *key_schedule, const uint8_t *plaintext,
19                       uint8_t *ciphertext);
20 void Simon_Encrypt_48(const uint8_t round_limit, const uint8_t *key_schedule, const uint8_t *plaintext,
21                       uint8_t *ciphertext);
22 void Simon_Encrypt_64(const uint8_t round_limit, const uint8_t *key_schedule, const uint8_t *plaintext,
23                       uint8_t *ciphertext);
24 void Simon_Encrypt_96(const uint8_t round_limit, const uint8_t *key_schedule, const uint8_t *plaintext,
25                       uint8_t *ciphertext);
26 void Simon_Encrypt_128(const uint8_t round_limit, const uint8_t *key_schedule, const uint8_t *plaintext,
27                        uint8_t *ciphertext);
28
29 uint8_t Simon_Decrypt(SimSpk_Cipher cipher_object, const void *ciphertext, void *plaintext);
30 void Simon_Decrypt_32(const uint8_t round_limit, const uint8_t *key_schedule, const uint8_t *ciphertext,
31                       uint8_t *plaintext);
32 void Simon_Decrypt_48(const uint8_t round_limit, const uint8_t *key_schedule, const uint8_t *ciphertext,
33                       uint8_t *plaintext);
34 void Simon_Decrypt_64(const uint8_t round_limit, const uint8_t *key_schedule, const uint8_t *ciphertext,
35                       uint8_t *plaintext);
36 void Simon_Decrypt_96(const uint8_t round_limit, const uint8_t *key_schedule, const uint8_t *ciphertext,
37                       uint8_t *plaintext);
38 void Simon_Decrypt_128(const uint8_t round_limit, const uint8_t *key_schedule, const uint8_t *ciphertext,
39                        uint8_t *plaintext);
40
41 #endif