Skip to content
This repository was archived by the owner on Mar 5, 2024. It is now read-only.

Commit 8e89499

Browse files
author
Constanza Heath
committed
Fix whitespace, update comments, remove unused headers and variables
Signed-off-by: Constanza Heath <[email protected]>
1 parent 5c4da94 commit 8e89499

File tree

15 files changed

+794
-862
lines changed

15 files changed

+794
-862
lines changed

lib/aes.h

Lines changed: 17 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -27,8 +27,11 @@
2727
* CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
2828
* OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
2929
* OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
30-
*
31-
* aes.h -- Interface to an AES-128 implementation.
30+
*/
31+
32+
/**
33+
* @file
34+
* @brief -- Interface to an AES-128 implementation.
3235
*
3336
* Overview: AES-128 is a NIST approved block cipher specified in
3437
* FIPS 197. Block ciphers are deterministic algorithms that
@@ -47,31 +50,29 @@
4750

4851
#include<stdint.h>
4952

50-
#define Nb (4) // number of columns (32-bit words) comprising the state
51-
#define Nk (4) // number of 32-bit words comprising the key
52-
#define Nr (10) // number of rounds
53+
#define Nb (4) /* number of columns (32-bit words) comprising the state */
54+
#define Nk (4) /* number of 32-bit words comprising the key */
55+
#define Nr (10) /* number of rounds */
5356
#define TC_AES_BLOCK_SIZE (Nb*Nk)
5457
#define TC_AES_KEY_SIZE (Nb*Nk)
5558

5659
struct tc_aes_key_sched_struct {
57-
uint32_t words[Nb*(Nr+1)];
60+
uint32_t words[Nb*(Nr+1)];
5861
};
5962
typedef struct tc_aes_key_sched_struct *TCAesKeySched_t;
6063

6164
/**
6265
* @brief Set AES-128 encryption key
6366
* Uses key k to initialize s
6467
* @return returns TC_SUCCESS (1)
65-
* @exception returns TC_FAIL (0) if: s == NULL or k == NULL
68+
* returns TC_FAIL (0) if: s == NULL or k == NULL
6669
* @note This implementation skips the additional steps required for keys
6770
* larger than 128 bits, and must not be used for AES-192 or
6871
* AES-256 key schedule -- see FIPS 197 for details
6972
* @param s IN/OUT -- inited struct tc_aes_key_sched_struct
7073
* @param k IN -- points to the AES key
7174
*/
72-
int32_t tc_aes128_set_encrypt_key (
73-
TCAesKeySched_t s,
74-
const uint8_t *k);
75+
int32_t tc_aes128_set_encrypt_key(TCAesKeySched_t s, const uint8_t *k);
7576

7677
/**
7778
* @brief AES-128 Encryption procedure
@@ -80,21 +81,18 @@ int32_t tc_aes128_set_encrypt_key (
8081
* @note Assumes s was initialized by aes_set_encrypt_key;
8182
* out and in point to 16 byte buffers
8283
* @return returns TC_SUCCESS (1)
83-
* @exception returns TC_FAIL (0) if: out == NULL or in == NULL or s == NULL
84+
* returns TC_FAIL (0) if: out == NULL or in == NULL or s == NULL
8485
* @param out IN/OUT -- buffer to receive ciphertext block
8586
* @param in IN -- a plaintext block to encrypt
8687
* @param s IN -- initialized AES key schedule
8788
*/
88-
int32_t tc_aes_encrypt (
89-
uint8_t *out,
90-
const uint8_t *in,
91-
const TCAesKeySched_t s);
89+
int32_t tc_aes_encrypt(uint8_t *out, const uint8_t *in, const TCAesKeySched_t s);
9290

9391
/**
9492
* @brief Set the AES-128 decryption key
9593
* Uses key k to initialize s
9694
* @return returns TC_SUCCESS (1)
97-
* @exeption returns TC_FAIL (0) if: s == NULL or k == NULL
95+
* returns TC_FAIL (0) if: s == NULL or k == NULL
9896
* @note This is the implementation of the straightforward inverse cipher
9997
* using the cipher documented in FIPS-197 figure 12, not the
10098
* equivalent inverse cipher presented in Figure 15
@@ -104,24 +102,19 @@ int32_t tc_aes_encrypt (
104102
* @param s IN/OUT -- inited struct tc_aes_key_sched_struct
105103
* @param k IN -- points to the AES key
106104
*/
107-
int32_t tc_aes128_set_decrypt_key (
108-
TCAesKeySched_t s,
109-
const uint8_t *k);
105+
int32_t tc_aes128_set_decrypt_key(TCAesKeySched_t s, const uint8_t *k);
110106

111107
/**
112108
* @brief AES-128 Encryption procedure
113109
* Decrypts in buffer into out buffer under key schedule s
114110
* @return returns TC_SUCCESS (1)
115-
* @exception Returns TC_FAIL (0) if: out is NULL or in is NULL or s is NULL
111+
* returns TC_FAIL (0) if: out is NULL or in is NULL or s is NULL
116112
* @note Assumes s was initialized by aes_set_encrypt_key
117113
* out and in point to 16 byte buffers
118114
* @param out IN/OUT -- buffer to receive ciphertext block
119115
* @param in IN -- a plaintext block to encrypt
120116
* @param s IN -- initialized AES key schedule
121117
*/
122-
int32_t tc_aes_decrypt (
123-
uint8_t *out,
124-
const uint8_t *in,
125-
const TCAesKeySched_t s);
118+
int32_t tc_aes_decrypt(uint8_t *out, const uint8_t *in, const TCAesKeySched_t s);
126119

127120
#endif

lib/aes_decrypt.c

Lines changed: 97 additions & 96 deletions
Original file line numberDiff line numberDiff line change
@@ -27,11 +27,6 @@
2727
* CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
2828
* OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
2929
* OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
30-
*
31-
* aes_decrypt.c -- An implementation of AES decryption procedure.
32-
*
33-
* See the corresponding header file for more information.
34-
*
3530
*/
3631

3732
#include <aes.h>
@@ -40,122 +35,128 @@
4035
#define ZERO_BYTE 0x00
4136

4237
static const uint8_t inv_sbox[256] = {
43-
0x52, 0x09, 0x6a, 0xd5, 0x30, 0x36, 0xa5, 0x38, 0xbf, 0x40, 0xa3, 0x9e,
44-
0x81, 0xf3, 0xd7, 0xfb, 0x7c, 0xe3, 0x39, 0x82, 0x9b, 0x2f, 0xff, 0x87,
45-
0x34, 0x8e, 0x43, 0x44, 0xc4, 0xde, 0xe9, 0xcb, 0x54, 0x7b, 0x94, 0x32,
46-
0xa6, 0xc2, 0x23, 0x3d, 0xee, 0x4c, 0x95, 0x0b, 0x42, 0xfa, 0xc3, 0x4e,
47-
0x08, 0x2e, 0xa1, 0x66, 0x28, 0xd9, 0x24, 0xb2, 0x76, 0x5b, 0xa2, 0x49,
48-
0x6d, 0x8b, 0xd1, 0x25, 0x72, 0xf8, 0xf6, 0x64, 0x86, 0x68, 0x98, 0x16,
49-
0xd4, 0xa4, 0x5c, 0xcc, 0x5d, 0x65, 0xb6, 0x92, 0x6c, 0x70, 0x48, 0x50,
50-
0xfd, 0xed, 0xb9, 0xda, 0x5e, 0x15, 0x46, 0x57, 0xa7, 0x8d, 0x9d, 0x84,
51-
0x90, 0xd8, 0xab, 0x00, 0x8c, 0xbc, 0xd3, 0x0a, 0xf7, 0xe4, 0x58, 0x05,
52-
0xb8, 0xb3, 0x45, 0x06, 0xd0, 0x2c, 0x1e, 0x8f, 0xca, 0x3f, 0x0f, 0x02,
53-
0xc1, 0xaf, 0xbd, 0x03, 0x01, 0x13, 0x8a, 0x6b, 0x3a, 0x91, 0x11, 0x41,
54-
0x4f, 0x67, 0xdc, 0xea, 0x97, 0xf2, 0xcf, 0xce, 0xf0, 0xb4, 0xe6, 0x73,
55-
0x96, 0xac, 0x74, 0x22, 0xe7, 0xad, 0x35, 0x85, 0xe2, 0xf9, 0x37, 0xe8,
56-
0x1c, 0x75, 0xdf, 0x6e, 0x47, 0xf1, 0x1a, 0x71, 0x1d, 0x29, 0xc5, 0x89,
57-
0x6f, 0xb7, 0x62, 0x0e, 0xaa, 0x18, 0xbe, 0x1b, 0xfc, 0x56, 0x3e, 0x4b,
58-
0xc6, 0xd2, 0x79, 0x20, 0x9a, 0xdb, 0xc0, 0xfe, 0x78, 0xcd, 0x5a, 0xf4,
59-
0x1f, 0xdd, 0xa8, 0x33, 0x88, 0x07, 0xc7, 0x31, 0xb1, 0x12, 0x10, 0x59,
60-
0x27, 0x80, 0xec, 0x5f, 0x60, 0x51, 0x7f, 0xa9, 0x19, 0xb5, 0x4a, 0x0d,
61-
0x2d, 0xe5, 0x7a, 0x9f, 0x93, 0xc9, 0x9c, 0xef, 0xa0, 0xe0, 0x3b, 0x4d,
62-
0xae, 0x2a, 0xf5, 0xb0, 0xc8, 0xeb, 0xbb, 0x3c, 0x83, 0x53, 0x99, 0x61,
63-
0x17, 0x2b, 0x04, 0x7e, 0xba, 0x77, 0xd6, 0x26, 0xe1, 0x69, 0x14, 0x63,
64-
0x55, 0x21, 0x0c, 0x7d
38+
0x52, 0x09, 0x6a, 0xd5, 0x30, 0x36, 0xa5, 0x38, 0xbf, 0x40, 0xa3, 0x9e,
39+
0x81, 0xf3, 0xd7, 0xfb, 0x7c, 0xe3, 0x39, 0x82, 0x9b, 0x2f, 0xff, 0x87,
40+
0x34, 0x8e, 0x43, 0x44, 0xc4, 0xde, 0xe9, 0xcb, 0x54, 0x7b, 0x94, 0x32,
41+
0xa6, 0xc2, 0x23, 0x3d, 0xee, 0x4c, 0x95, 0x0b, 0x42, 0xfa, 0xc3, 0x4e,
42+
0x08, 0x2e, 0xa1, 0x66, 0x28, 0xd9, 0x24, 0xb2, 0x76, 0x5b, 0xa2, 0x49,
43+
0x6d, 0x8b, 0xd1, 0x25, 0x72, 0xf8, 0xf6, 0x64, 0x86, 0x68, 0x98, 0x16,
44+
0xd4, 0xa4, 0x5c, 0xcc, 0x5d, 0x65, 0xb6, 0x92, 0x6c, 0x70, 0x48, 0x50,
45+
0xfd, 0xed, 0xb9, 0xda, 0x5e, 0x15, 0x46, 0x57, 0xa7, 0x8d, 0x9d, 0x84,
46+
0x90, 0xd8, 0xab, 0x00, 0x8c, 0xbc, 0xd3, 0x0a, 0xf7, 0xe4, 0x58, 0x05,
47+
0xb8, 0xb3, 0x45, 0x06, 0xd0, 0x2c, 0x1e, 0x8f, 0xca, 0x3f, 0x0f, 0x02,
48+
0xc1, 0xaf, 0xbd, 0x03, 0x01, 0x13, 0x8a, 0x6b, 0x3a, 0x91, 0x11, 0x41,
49+
0x4f, 0x67, 0xdc, 0xea, 0x97, 0xf2, 0xcf, 0xce, 0xf0, 0xb4, 0xe6, 0x73,
50+
0x96, 0xac, 0x74, 0x22, 0xe7, 0xad, 0x35, 0x85, 0xe2, 0xf9, 0x37, 0xe8,
51+
0x1c, 0x75, 0xdf, 0x6e, 0x47, 0xf1, 0x1a, 0x71, 0x1d, 0x29, 0xc5, 0x89,
52+
0x6f, 0xb7, 0x62, 0x0e, 0xaa, 0x18, 0xbe, 0x1b, 0xfc, 0x56, 0x3e, 0x4b,
53+
0xc6, 0xd2, 0x79, 0x20, 0x9a, 0xdb, 0xc0, 0xfe, 0x78, 0xcd, 0x5a, 0xf4,
54+
0x1f, 0xdd, 0xa8, 0x33, 0x88, 0x07, 0xc7, 0x31, 0xb1, 0x12, 0x10, 0x59,
55+
0x27, 0x80, 0xec, 0x5f, 0x60, 0x51, 0x7f, 0xa9, 0x19, 0xb5, 0x4a, 0x0d,
56+
0x2d, 0xe5, 0x7a, 0x9f, 0x93, 0xc9, 0x9c, 0xef, 0xa0, 0xe0, 0x3b, 0x4d,
57+
0xae, 0x2a, 0xf5, 0xb0, 0xc8, 0xeb, 0xbb, 0x3c, 0x83, 0x53, 0x99, 0x61,
58+
0x17, 0x2b, 0x04, 0x7e, 0xba, 0x77, 0xd6, 0x26, 0xe1, 0x69, 0x14, 0x63,
59+
0x55, 0x21, 0x0c, 0x7d
6560
};
6661

67-
int32_t tc_aes128_set_decrypt_key (
68-
TCAesKeySched_t s, const uint8_t *k) {
69-
return tc_aes128_set_encrypt_key (s, k);
62+
int32_t tc_aes128_set_decrypt_key(TCAesKeySched_t s, const uint8_t *k)
63+
{
64+
return tc_aes128_set_encrypt_key(s, k);
7065
}
7166

72-
#define mult8(a) (double_byte (double_byte (double_byte (a))))
73-
#define mult9(a) (mult8(a)^(a))
74-
#define multb(a) (mult8(a)^double_byte(a)^(a))
75-
#define multd(a) (mult8(a)^double_byte(double_byte(a))^(a))
76-
#define multe(a) (mult8(a)^double_byte(double_byte(a))^double_byte(a))
67+
#define mult8(a)(_double_byte(_double_byte(_double_byte(a))))
68+
#define mult9(a)(mult8(a)^(a))
69+
#define multb(a)(mult8(a)^_double_byte(a)^(a))
70+
#define multd(a)(mult8(a)^_double_byte(_double_byte(a))^(a))
71+
#define multe(a)(mult8(a)^_double_byte(_double_byte(a))^_double_byte(a))
72+
73+
static inline void mult_row_column(uint8_t *out, const uint8_t *in)
74+
{
75+
out[0] = multe(in[0]) ^ multb(in[1]) ^ multd(in[2]) ^ mult9(in[3]);
76+
out[1] = mult9(in[0]) ^ multe(in[1]) ^ multb(in[2]) ^ multd(in[3]);
77+
out[2] = multd(in[0]) ^ mult9(in[1]) ^ multe(in[2]) ^ multb(in[3]);
78+
out[3] = multb(in[0]) ^ multd(in[1]) ^ mult9(in[2]) ^ multe(in[3]);
79+
}
7780

78-
static inline void mult_row_column (
79-
uint8_t *out, const uint8_t *in) {
81+
static inline void inv_mix_columns(uint8_t *s)
82+
{
83+
uint8_t t[Nb*Nk];
8084

81-
out[0] = multe (in[0]) ^ multb (in[1]) ^ multd (in[2]) ^ mult9 (in[3]);
82-
out[1] = mult9 (in[0]) ^ multe (in[1]) ^ multb (in[2]) ^ multd (in[3]);
83-
out[2] = multd (in[0]) ^ mult9 (in[1]) ^ multe (in[2]) ^ multb (in[3]);
84-
out[3] = multb (in[0]) ^ multd (in[1]) ^ mult9 (in[2]) ^ multe (in[3]);
85+
mult_row_column(t, s);
86+
mult_row_column(&t[Nb], s+Nb);
87+
mult_row_column(&t[2*Nb], s+(2*Nb));
88+
mult_row_column(&t[3*Nb], s+(3*Nb));
89+
(void)_copy(s, sizeof(t), t, sizeof(t));
8590
}
8691

87-
static inline void inv_mix_columns (uint8_t *s) {
88-
uint8_t t[Nb*Nk];
89-
mult_row_column (t, s);
90-
mult_row_column (&t[Nb], s+Nb);
91-
mult_row_column (&t[2*Nb], s+(2*Nb));
92-
mult_row_column (&t[3*Nb], s+(3*Nb));
93-
(void) copy (s, sizeof (t), t, sizeof (t));
92+
static inline void add_round_key(uint8_t *s, const uint32_t *k)
93+
{
94+
s[0] ^= (uint8_t)(k[0] >> 24); s[1] ^= (uint8_t)(k[0] >> 16);
95+
s[2] ^= (uint8_t)(k[0] >> 8); s[3] ^= (uint8_t)(k[0]);
96+
s[4] ^= (uint8_t)(k[1] >> 24); s[5] ^= (uint8_t)(k[1] >> 16);
97+
s[6] ^= (uint8_t)(k[1] >> 8); s[7] ^= (uint8_t)(k[1]);
98+
s[8] ^= (uint8_t)(k[2] >> 24); s[9] ^= (uint8_t)(k[2] >> 16);
99+
s[10] ^= (uint8_t)(k[2] >> 8); s[11] ^= (uint8_t)(k[2]);
100+
s[12] ^= (uint8_t)(k[3] >> 24); s[13] ^= (uint8_t)(k[3] >> 16);
101+
s[14] ^= (uint8_t)(k[3] >> 8); s[15] ^= (uint8_t)(k[3]);
94102
}
95103

96-
static inline void add_round_key (uint8_t *s, const uint32_t *k) {
97-
s[ 0] ^= (uint8_t)(k[0]>>24); s[ 1] ^= (uint8_t)(k[0]>>16);
98-
s[ 2] ^= (uint8_t)(k[0]>> 8); s[ 3] ^= (uint8_t)(k[0]);
99-
s[ 4] ^= (uint8_t)(k[1]>>24); s[ 5] ^= (uint8_t)(k[1]>>16);
100-
s[ 6] ^= (uint8_t)(k[1]>> 8); s[ 7] ^= (uint8_t)(k[1]);
101-
s[ 8] ^= (uint8_t)(k[2]>>24); s[ 9] ^= (uint8_t)(k[2]>>16);
102-
s[10] ^= (uint8_t)(k[2]>> 8); s[11] ^= (uint8_t)(k[2]);
103-
s[12] ^= (uint8_t)(k[3]>>24); s[13] ^= (uint8_t)(k[3]>>16);
104-
s[14] ^= (uint8_t)(k[3]>> 8); s[15] ^= (uint8_t)(k[3]);
105-
}
104+
static inline void inv_sub_bytes(uint8_t *s)
105+
{
106+
uint32_t i;
106107

107-
static inline void inv_sub_bytes (uint8_t *s) {
108-
uint32_t i;
109-
for (i = 0; i < (Nb*Nk); ++i) {
110-
s[i] = inv_sbox[s[i]];
111-
}
108+
for (i = 0; i < (Nb*Nk); ++i) {
109+
s[i] = inv_sbox[s[i]];
110+
}
112111
}
113112

114113
/*
115114
* This inv_shift_rows also implements the matrix flip required for
116115
* inv_mix_columns, but performs it here to reduce the number of memory
117116
* operations.
118117
*/
119-
static inline void inv_shift_rows (uint8_t *s) {
120-
uint8_t t[Nb*Nk];
121-
t[0] = s[ 0]; t[ 1] = s[13]; t[ 2] = s[10]; t[ 3] = s[ 7];
122-
t[4] = s[ 4]; t[ 5] = s[ 1]; t[ 6] = s[14]; t[ 7] = s[11];
123-
t[8] = s[ 8]; t[ 9] = s[ 5]; t[10] = s[ 2]; t[11] = s[15];
124-
t[12] = s[12]; t[13] = s[ 9]; t[14] = s[ 6]; t[15] = s[ 3];
125-
(void) copy (s, sizeof (t), t, sizeof (t));
118+
static inline void inv_shift_rows(uint8_t *s)
119+
{
120+
uint8_t t[Nb*Nk];
121+
122+
t[0] = s[0]; t[1] = s[13]; t[2] = s[10]; t[3] = s[7];
123+
t[4] = s[4]; t[5] = s[1]; t[6] = s[14]; t[7] = s[11];
124+
t[8] = s[8]; t[9] = s[5]; t[10] = s[2]; t[11] = s[15];
125+
t[12] = s[12]; t[13] = s[9]; t[14] = s[6]; t[15] = s[3];
126+
(void)_copy(s, sizeof(t), t, sizeof(t));
126127
}
127128

128-
int32_t tc_aes_decrypt (
129-
uint8_t *out, const uint8_t *in, const TCAesKeySched_t s) {
130-
uint8_t state[Nk*Nb];
131-
uint32_t i;
129+
int32_t tc_aes_decrypt(uint8_t *out, const uint8_t *in, const TCAesKeySched_t s)
130+
{
131+
uint8_t state[Nk*Nb];
132+
uint32_t i;
132133

133-
if (out == (uint8_t *) 0) {
134-
return TC_FAIL;
135-
} else if (in == (const uint8_t *) 0) {
136-
return TC_FAIL;
137-
} else if (s == (TCAesKeySched_t) 0) {
138-
return TC_FAIL;
139-
}
134+
if (out == (uint8_t *) 0) {
135+
return TC_FAIL;
136+
} else if (in == (const uint8_t *) 0) {
137+
return TC_FAIL;
138+
} else if (s == (TCAesKeySched_t) 0) {
139+
return TC_FAIL;
140+
}
140141

141-
(void) copy (state, sizeof (state), in, sizeof (state));
142+
(void)_copy(state, sizeof(state), in, sizeof(state));
142143

143-
add_round_key (state, s->words + Nb*Nr);
144+
add_round_key(state, s->words + Nb*Nr);
144145

145-
for (i = Nr-1; i > 0; --i) {
146-
inv_shift_rows (state);
147-
inv_sub_bytes (state);
148-
add_round_key (state, s->words + Nb*i);
149-
inv_mix_columns (state);
150-
}
146+
for (i = Nr-1; i > 0; --i) {
147+
inv_shift_rows(state);
148+
inv_sub_bytes(state);
149+
add_round_key(state, s->words + Nb*i);
150+
inv_mix_columns(state);
151+
}
151152

152-
inv_shift_rows (state);
153-
inv_sub_bytes (state);
154-
add_round_key (state, s->words);
153+
inv_shift_rows(state);
154+
inv_sub_bytes(state);
155+
add_round_key(state, s->words);
155156

156-
(void) copy (out, sizeof (state), state, sizeof (state));
157-
//zeroing out one byte state buffer
158-
set (state, ZERO_BYTE, sizeof (state));
157+
(void)_copy(out, sizeof(state), state, sizeof(state));
158+
/*zeroing out one byte state buffer */
159+
_set(state, ZERO_BYTE, sizeof(state));
159160

160-
return TC_SUCCESS;
161+
return TC_SUCCESS;
161162
}

0 commit comments

Comments
 (0)