Skip to content

Commit cc4f8ae

Browse files
authored
Merge pull request DavyLandman#18 from asajim/multiple_basic_enc_dec
Add multiple data option on basic enc dec
2 parents 7db9c20 + 7334e34 commit cc4f8ae

File tree

2 files changed

+63
-0
lines changed

2 files changed

+63
-0
lines changed

AESLib.c

Lines changed: 47 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -64,6 +64,18 @@ void aes128_enc_single(const uint8_t* key, void* data){
6464
aes128_enc(data, &ctx);
6565
}
6666

67+
// encrypt multiple blocks of 128bit data, data_len must be mod 16
68+
// key is assumed to be 128bit thus 16 uint8_t's
69+
void aes128_enc_multiple(const uint8_t* key, void* data, const uint16_t data_len){
70+
if (data_len % 16 != 0) {
71+
return;
72+
}
73+
aes128_ctx_t ctx;
74+
aes128_init(key, &ctx);
75+
for(int i=0;i<data_len/16;i++)
76+
aes128_enc(&data[i*16], &ctx);
77+
}
78+
6779
// encrypt single 128bit block. data is assumed to be 16 uint8_t's
6880
// key is assumed to be 256bit thus 32 uint8_t's
6981
void aes256_enc_single(const uint8_t* key, void* data){
@@ -72,6 +84,17 @@ void aes256_enc_single(const uint8_t* key, void* data){
7284
aes256_enc(data, &ctx);
7385
}
7486

87+
// encrypt multiple blocks of 128bit data, data_len but be mod 16
88+
// key is assumed to be 256bit thus 32 uint8_t's
89+
void aes256_enc_multiple(const uint8_t* key, void* data, const uint16_t data_len){
90+
if (data_len % 16 != 0) {
91+
return;
92+
}
93+
aes256_ctx_t ctx;
94+
aes256_init(key, &ctx);
95+
for(int i=0;i<data_len/16;i++)
96+
aes256_enc(&data[i*16], &ctx);
97+
}
7598

7699
// prepare an encrypted to use for encrypting multiple blocks lateron.
77100
// key and iv are assumed to be both 128bit thus 16 uint8_t's
@@ -179,6 +202,18 @@ void aes128_dec_single(const uint8_t* key, void* data){
179202
aes128_dec(data, &ctx);
180203
}
181204

205+
// decrypt multiple blocks of 128bit data, data_len must be mod 16
206+
// key is assumed to be 128bit thus 16 uint8_t's
207+
void aes128_dec_multiple(const uint8_t* key, void* data, const uint16_t data_len){
208+
if (data_len % 16 != 0) {
209+
return;
210+
}
211+
aes128_ctx_t ctx;
212+
aes128_init(key, &ctx);
213+
for(int i=0;i<data_len/16;i++)
214+
aes128_dec(&data[i*16], &ctx);
215+
}
216+
182217
// decrypt single 128bit block. data is assumed to be 16 uint8_t's
183218
// key is assumed to be 256bit thus 32 uint8_t's
184219
void aes256_dec_single(const uint8_t* key, void* data){
@@ -187,6 +222,18 @@ void aes256_dec_single(const uint8_t* key, void* data){
187222
aes256_dec(data, &ctx);
188223
}
189224

225+
// decrypt multiple blocks of 128bit data, data_len but be mod 16
226+
// key is assumed to be 256bit thus 32 uint8_t's
227+
void aes256_dec_multiple(const uint8_t* key, void* data, const uint16_t data_len){
228+
if (data_len % 16 != 0) {
229+
return;
230+
}
231+
aes256_ctx_t ctx;
232+
aes256_init(key, &ctx);
233+
for(int i=0;i<data_len/16;i++)
234+
aes256_dec(&data[i*16], &ctx);
235+
}
236+
190237

191238
// prepare an decrypted to use for decrypting multiple blocks lateron.
192239
// key and iv are assumed to be both 128bit thus 16 uint8_t's

AESLib.h

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -33,10 +33,18 @@ void aes192_cbc_enc(const uint8_t* key, const uint8_t* iv, void* data, const uin
3333
// key is assumed to be 128bit thus 16 uint8_t's
3434
void aes128_enc_single(const uint8_t* key, void* data);
3535

36+
// encrypt multiple blocks of 128bit data, data_len but be mod 16
37+
// key is assumed to be 128bit thus 16 uint8_t's
38+
void aes128_enc_multiple(const uint8_t* key, void* data, const uint16_t data_len);
39+
3640
// encrypt single 128bit block. data is assumed to be 16 uint8_t's
3741
// key is assumed to be 256bit thus 32 uint8_t's
3842
void aes256_enc_single(const uint8_t* key, void* data);
3943

44+
// encrypt multiple blocks of 128bit data, data_len but be mod 16
45+
// key is assumed to be 256bit thus 32 uint8_t's
46+
void aes256_enc_multiple(const uint8_t* key, void* data, const uint16_t data_len);
47+
4048
typedef void* aes_context;
4149

4250
// prepare an encrypted to use for encrypting multiple blocks lateron.
@@ -73,10 +81,18 @@ void aes192_cbc_dec(const uint8_t* key, const uint8_t* iv, void* data, const uin
7381
// key is assumed to be 128bit thus 16 uint8_t's
7482
void aes128_dec_single(const uint8_t* key, void* data);
7583

84+
// decrypt multiple blocks of 128bit data, data_len but be mod 16
85+
// key is assumed to be 128bit thus 16 uint8_t's
86+
void aes128_dec_multiple(const uint8_t* key, void* data, const uint16_t data_len);
87+
7688
// decrypt single 128bit block. data is assumed to be 16 uint8_t's
7789
// key is assumed to be 256bit thus 32 uint8_t's
7890
void aes256_dec_single(const uint8_t* key, void* data);
7991

92+
// decrypt multiple blocks of 128bit data, data_len but be mod 16
93+
// key is assumed to be 256bit thus 32 uint8_t's
94+
void aes256_dec_multiple(const uint8_t* key, void* data, const uint16_t data_len);
95+
8096
// prepare an decrypter to use for decrypting multiple blocks lateron.
8197
// key and iv are assumed to be both 128bit thus 16 uint8_t's
8298
aes_context aes128_cbc_dec_start(const uint8_t* key, const void* iv);

0 commit comments

Comments
 (0)