/src/hostap/src/crypto/aes_i.h
Line | Count | Source (jump to first uncovered line) |
1 | | /* |
2 | | * AES (Rijndael) cipher |
3 | | * Copyright (c) 2003-2012, Jouni Malinen <j@w1.fi> |
4 | | * |
5 | | * This software may be distributed under the terms of the BSD license. |
6 | | * See README for more details. |
7 | | */ |
8 | | |
9 | | #ifndef AES_I_H |
10 | | #define AES_I_H |
11 | | |
12 | | #include "aes.h" |
13 | | |
14 | | /* #define FULL_UNROLL */ |
15 | | #define AES_SMALL_TABLES |
16 | | |
17 | | extern const u32 Te0[256]; |
18 | | extern const u32 Te1[256]; |
19 | | extern const u32 Te2[256]; |
20 | | extern const u32 Te3[256]; |
21 | | extern const u32 Te4[256]; |
22 | | extern const u32 Td0[256]; |
23 | | extern const u32 Td1[256]; |
24 | | extern const u32 Td2[256]; |
25 | | extern const u32 Td3[256]; |
26 | | extern const u32 Td4[256]; |
27 | | extern const u32 rcon[10]; |
28 | | extern const u8 Td4s[256]; |
29 | | extern const u8 rcons[10]; |
30 | | |
31 | | #ifndef AES_SMALL_TABLES |
32 | | |
33 | | #define RCON(i) rcon[(i)] |
34 | | |
35 | | #define TE0(i) Te0[((i) >> 24) & 0xff] |
36 | | #define TE1(i) Te1[((i) >> 16) & 0xff] |
37 | | #define TE2(i) Te2[((i) >> 8) & 0xff] |
38 | | #define TE3(i) Te3[(i) & 0xff] |
39 | | #define TE41(i) (Te4[((i) >> 24) & 0xff] & 0xff000000) |
40 | | #define TE42(i) (Te4[((i) >> 16) & 0xff] & 0x00ff0000) |
41 | | #define TE43(i) (Te4[((i) >> 8) & 0xff] & 0x0000ff00) |
42 | | #define TE44(i) (Te4[(i) & 0xff] & 0x000000ff) |
43 | | #define TE421(i) (Te4[((i) >> 16) & 0xff] & 0xff000000) |
44 | | #define TE432(i) (Te4[((i) >> 8) & 0xff] & 0x00ff0000) |
45 | | #define TE443(i) (Te4[(i) & 0xff] & 0x0000ff00) |
46 | | #define TE414(i) (Te4[((i) >> 24) & 0xff] & 0x000000ff) |
47 | | #define TE411(i) (Te4[((i) >> 24) & 0xff] & 0xff000000) |
48 | | #define TE422(i) (Te4[((i) >> 16) & 0xff] & 0x00ff0000) |
49 | | #define TE433(i) (Te4[((i) >> 8) & 0xff] & 0x0000ff00) |
50 | | #define TE444(i) (Te4[(i) & 0xff] & 0x000000ff) |
51 | | #define TE4(i) (Te4[(i)] & 0x000000ff) |
52 | | |
53 | | #define TD0(i) Td0[((i) >> 24) & 0xff] |
54 | | #define TD1(i) Td1[((i) >> 16) & 0xff] |
55 | | #define TD2(i) Td2[((i) >> 8) & 0xff] |
56 | | #define TD3(i) Td3[(i) & 0xff] |
57 | | #define TD41(i) (Td4[((i) >> 24) & 0xff] & 0xff000000) |
58 | | #define TD42(i) (Td4[((i) >> 16) & 0xff] & 0x00ff0000) |
59 | | #define TD43(i) (Td4[((i) >> 8) & 0xff] & 0x0000ff00) |
60 | | #define TD44(i) (Td4[(i) & 0xff] & 0x000000ff) |
61 | | #define TD0_(i) Td0[(i) & 0xff] |
62 | | #define TD1_(i) Td1[(i) & 0xff] |
63 | | #define TD2_(i) Td2[(i) & 0xff] |
64 | | #define TD3_(i) Td3[(i) & 0xff] |
65 | | |
66 | | #else /* AES_SMALL_TABLES */ |
67 | | |
68 | 241k | #define RCON(i) ((u32) rcons[(i)] << 24) |
69 | | |
70 | | static inline u32 rotr(u32 val, int bits) |
71 | 2.61M | { |
72 | 2.61M | return (val >> bits) | (val << (32 - bits)); |
73 | 2.61M | } Unexecuted instantiation: aes-internal-dec.c:rotr Line | Count | Source | 71 | 2.61M | { | 72 | 2.61M | return (val >> bits) | (val << (32 - bits)); | 73 | 2.61M | } |
Unexecuted instantiation: aes-internal.c:rotr |
74 | | |
75 | 870k | #define TE0(i) Te0[((i) >> 24) & 0xff] |
76 | 870k | #define TE1(i) rotr(Te0[((i) >> 16) & 0xff], 8) |
77 | 870k | #define TE2(i) rotr(Te0[((i) >> 8) & 0xff], 16) |
78 | 870k | #define TE3(i) rotr(Te0[(i) & 0xff], 24) |
79 | 96.6k | #define TE41(i) ((Te0[((i) >> 24) & 0xff] << 8) & 0xff000000) |
80 | 96.6k | #define TE42(i) (Te0[((i) >> 16) & 0xff] & 0x00ff0000) |
81 | 96.6k | #define TE43(i) (Te0[((i) >> 8) & 0xff] & 0x0000ff00) |
82 | 96.6k | #define TE44(i) ((Te0[(i) & 0xff] >> 8) & 0x000000ff) |
83 | 241k | #define TE421(i) ((Te0[((i) >> 16) & 0xff] << 8) & 0xff000000) |
84 | 241k | #define TE432(i) (Te0[((i) >> 8) & 0xff] & 0x00ff0000) |
85 | 241k | #define TE443(i) (Te0[(i) & 0xff] & 0x0000ff00) |
86 | 241k | #define TE414(i) ((Te0[((i) >> 24) & 0xff] >> 8) & 0x000000ff) |
87 | 0 | #define TE411(i) ((Te0[((i) >> 24) & 0xff] << 8) & 0xff000000) |
88 | 0 | #define TE422(i) (Te0[((i) >> 16) & 0xff] & 0x00ff0000) |
89 | 0 | #define TE433(i) (Te0[((i) >> 8) & 0xff] & 0x0000ff00) |
90 | 0 | #define TE444(i) ((Te0[(i) & 0xff] >> 8) & 0x000000ff) |
91 | | #define TE4(i) ((Te0[(i)] >> 8) & 0x000000ff) |
92 | | |
93 | 0 | #define TD0(i) Td0[((i) >> 24) & 0xff] |
94 | 0 | #define TD1(i) rotr(Td0[((i) >> 16) & 0xff], 8) |
95 | 0 | #define TD2(i) rotr(Td0[((i) >> 8) & 0xff], 16) |
96 | 0 | #define TD3(i) rotr(Td0[(i) & 0xff], 24) |
97 | 0 | #define TD41(i) ((u32) Td4s[((i) >> 24) & 0xff] << 24) |
98 | 0 | #define TD42(i) ((u32) Td4s[((i) >> 16) & 0xff] << 16) |
99 | 0 | #define TD43(i) ((u32) Td4s[((i) >> 8) & 0xff] << 8) |
100 | 0 | #define TD44(i) ((u32) Td4s[(i) & 0xff]) |
101 | 0 | #define TD0_(i) Td0[(i) & 0xff] |
102 | 0 | #define TD1_(i) rotr(Td0[(i) & 0xff], 8) |
103 | 0 | #define TD2_(i) rotr(Td0[(i) & 0xff], 16) |
104 | 0 | #define TD3_(i) rotr(Td0[(i) & 0xff], 24) |
105 | | |
106 | | #endif /* AES_SMALL_TABLES */ |
107 | | |
108 | | #ifdef _MSC_VER |
109 | | #define SWAP(x) (_lrotl(x, 8) & 0x00ff00ff | _lrotr(x, 8) & 0xff00ff00) |
110 | | #define GETU32(p) SWAP(*((u32 *)(p))) |
111 | | #define PUTU32(ct, st) { *((u32 *)(ct)) = SWAP((st)); } |
112 | | #else |
113 | 193k | #define GETU32(pt) (((u32)(pt)[0] << 24) ^ ((u32)(pt)[1] << 16) ^ \ |
114 | 193k | ((u32)(pt)[2] << 8) ^ ((u32)(pt)[3])) |
115 | 96.6k | #define PUTU32(ct, st) { \ |
116 | 96.6k | (ct)[0] = (u8)((st) >> 24); (ct)[1] = (u8)((st) >> 16); \ |
117 | 96.6k | (ct)[2] = (u8)((st) >> 8); (ct)[3] = (u8)(st); } |
118 | | #endif |
119 | | |
120 | | #define AES_PRIV_SIZE (4 * 4 * 15 + 4) |
121 | 48.3k | #define AES_PRIV_NR_POS (4 * 15) |
122 | | |
123 | | int rijndaelKeySetupEnc(u32 rk[], const u8 cipherKey[], int keyBits); |
124 | | |
125 | | #endif /* AES_I_H */ |