@@ -68,7 +68,7 @@ constant sboxLookupTable : t_arrX1_std_logic_vector(0 to 255)(7 downto 0) := (
68
68
240 => x"8c" , 241 => x"a1" , 242 => x"89" , 243 => x"0d" , 244 => x"bf" , 245 => x"e6" , 246 => x"42" , 247 => x"68" ,
69
69
248 => x"41" , 249 => x"99" , 250 => x"2d" , 251 => x"0f" , 252 => x"b0" , 253 => x"54" , 254 => x"bb" , 255 => x"16"
70
70
);
71
- constant Rcon : t_arrX1_t_opaque_AESWord(0 to 10 ) := (
71
+ constant Rcon : t_arrX1_t_opaque_AESWord(0 to 10 ) := (
72
72
0 => (0 => x"00" , 1 => x"00" , 2 => x"00" , 3 => x"00" ), 1 => (0 => x"01" , 1 => x"00" , 2 => x"00" , 3 => x"00" ),
73
73
2 => (0 => x"02" , 1 => x"00" , 2 => x"00" , 3 => x"00" ), 3 => (0 => x"04" , 1 => x"00" , 2 => x"00" , 3 => x"00" ),
74
74
4 => (0 => x"08" , 1 => x"00" , 2 => x"00" , 3 => x"00" ), 5 => (0 => x"10" , 1 => x"00" , 2 => x"00" , 3 => x"00" ),
@@ -80,42 +80,56 @@ end package CipherNoOpaques_pkg;
80
80
81
81
package body CipherNoOpaques_pkg is
82
82
function to_t_opaque_AESByte(A : std_logic_vector ) return t_opaque_AESByte is
83
+ variable A0 : std_logic_vector (A'length - 1 downto 0 );
83
84
begin
84
- return A;
85
+ A0 := A;
86
+ return A0;
85
87
end ;
86
88
function to_t_opaque_AESWord(A : std_logic_vector ) return t_opaque_AESWord is
89
+ variable A0 : std_logic_vector (A'length - 1 downto 0 );
87
90
begin
88
- return to_t_arrX1_t_opaque_AESByte(A, 4 );
91
+ A0 := A;
92
+ return to_t_arrX1_t_opaque_AESByte(A0, 4 );
89
93
end ;
90
94
function to_t_opaque_AESKey(A : std_logic_vector ) return t_opaque_AESKey is
95
+ variable A0 : std_logic_vector (A'length - 1 downto 0 );
91
96
begin
92
- return to_t_arrX1_t_opaque_AESWord(A, 4 );
97
+ A0 := A;
98
+ return to_t_arrX1_t_opaque_AESWord(A0, 4 );
93
99
end ;
94
100
function to_t_opaque_AESData(A : std_logic_vector ) return t_opaque_AESData is
101
+ variable A0 : std_logic_vector (A'length - 1 downto 0 );
95
102
begin
96
- return to_t_arrX1_t_opaque_AESWord(A, 4 );
103
+ A0 := A;
104
+ return to_t_arrX1_t_opaque_AESWord(A0, 4 );
97
105
end ;
98
106
function to_t_opaque_AESKeySchedule(A : std_logic_vector ) return t_opaque_AESKeySchedule is
107
+ variable A0 : std_logic_vector (A'length - 1 downto 0 );
99
108
begin
100
- return to_t_arrX1_t_opaque_AESWord(A, 44 );
109
+ A0 := A;
110
+ return to_t_arrX1_t_opaque_AESWord(A0, 44 );
101
111
end ;
102
112
function to_t_opaque_AESState(A : std_logic_vector ) return t_opaque_AESState is
113
+ variable A0 : std_logic_vector (A'length - 1 downto 0 );
103
114
begin
104
- return to_t_arrX1_t_opaque_AESWord(A, 4 );
115
+ A0 := A;
116
+ return to_t_arrX1_t_opaque_AESWord(A0, 4 );
105
117
end ;
106
118
function to_t_opaque_AESRoundKey(A : std_logic_vector ) return t_opaque_AESRoundKey is
119
+ variable A0 : std_logic_vector (A'length - 1 downto 0 );
107
120
begin
108
- return to_t_arrX1_t_opaque_AESWord(A, 4 );
121
+ A0 := A;
122
+ return to_t_arrX1_t_opaque_AESWord(A0, 4 );
109
123
end ;
110
124
function bitWidth(A : t_arrX1_std_logic_vector) return integer is
111
125
begin
112
126
return A'length * bitWidth(A(0 ));
113
127
end ;
114
128
function to_slv(A : t_arrX1_std_logic_vector) return std_logic_vector is
115
- variable hi : integer ;
116
- variable lo : integer ;
117
- variable cellBitWidth : integer ;
118
- variable ret : std_logic_vector (bitWidth(A) - 1 downto 0 );
129
+ variable hi : integer ;
130
+ variable lo : integer ;
131
+ variable cellBitWidth: integer ;
132
+ variable ret : std_logic_vector (bitWidth(A) - 1 downto 0 );
119
133
begin
120
134
cellBitWidth := bitWidth(A(0 ));
121
135
lo := bitWidth(A);
@@ -126,10 +140,10 @@ begin
126
140
return ret;
127
141
end ;
128
142
function to_t_arrX1_std_logic_vector(A : std_logic_vector ; D1 : integer ; D0 : integer ) return t_arrX1_std_logic_vector is
129
- variable hi : integer ;
130
- variable lo : integer ;
131
- variable cellBitWidth : integer ;
132
- variable ret : t_arrX1_std_logic_vector(0 to D1 - 1 )(D0 - 1 downto 0 );
143
+ variable hi : integer ;
144
+ variable lo : integer ;
145
+ variable cellBitWidth: integer ;
146
+ variable ret : t_arrX1_std_logic_vector(0 to D1 - 1 )(D0 - 1 downto 0 );
133
147
begin
134
148
cellBitWidth := bitWidth(ret(0 ));
135
149
lo := A'high + 1 ;
@@ -152,10 +166,10 @@ begin
152
166
return A'length * bitWidth(A(0 ));
153
167
end ;
154
168
function to_slv(A : t_arrX1_t_opaque_AESByte) return std_logic_vector is
155
- variable hi : integer ;
156
- variable lo : integer ;
157
- variable cellBitWidth : integer ;
158
- variable ret : std_logic_vector (bitWidth(A) - 1 downto 0 );
169
+ variable hi : integer ;
170
+ variable lo : integer ;
171
+ variable cellBitWidth: integer ;
172
+ variable ret : std_logic_vector (bitWidth(A) - 1 downto 0 );
159
173
begin
160
174
cellBitWidth := bitWidth(A(0 ));
161
175
lo := bitWidth(A);
@@ -166,10 +180,10 @@ begin
166
180
return ret;
167
181
end ;
168
182
function to_t_arrX1_t_opaque_AESByte(A : std_logic_vector ; D1 : integer ) return t_arrX1_t_opaque_AESByte is
169
- variable hi : integer ;
170
- variable lo : integer ;
171
- variable cellBitWidth : integer ;
172
- variable ret : t_arrX1_t_opaque_AESByte(0 to D1 - 1 );
183
+ variable hi : integer ;
184
+ variable lo : integer ;
185
+ variable cellBitWidth: integer ;
186
+ variable ret : t_arrX1_t_opaque_AESByte(0 to D1 - 1 );
173
187
begin
174
188
cellBitWidth := bitWidth(ret(0 ));
175
189
lo := A'high + 1 ;
@@ -192,10 +206,10 @@ begin
192
206
return A'length * bitWidth(A(0 ));
193
207
end ;
194
208
function to_slv(A : t_arrX1_t_opaque_AESWord) return std_logic_vector is
195
- variable hi : integer ;
196
- variable lo : integer ;
197
- variable cellBitWidth : integer ;
198
- variable ret : std_logic_vector (bitWidth(A) - 1 downto 0 );
209
+ variable hi : integer ;
210
+ variable lo : integer ;
211
+ variable cellBitWidth: integer ;
212
+ variable ret : std_logic_vector (bitWidth(A) - 1 downto 0 );
199
213
begin
200
214
cellBitWidth := bitWidth(A(0 ));
201
215
lo := bitWidth(A);
@@ -206,10 +220,10 @@ begin
206
220
return ret;
207
221
end ;
208
222
function to_t_arrX1_t_opaque_AESWord(A : std_logic_vector ; D1 : integer ) return t_arrX1_t_opaque_AESWord is
209
- variable hi : integer ;
210
- variable lo : integer ;
211
- variable cellBitWidth : integer ;
212
- variable ret : t_arrX1_t_opaque_AESWord(0 to D1 - 1 );
223
+ variable hi : integer ;
224
+ variable lo : integer ;
225
+ variable cellBitWidth: integer ;
226
+ variable ret : t_arrX1_t_opaque_AESWord(0 to D1 - 1 );
213
227
begin
214
228
cellBitWidth := bitWidth(ret(0 ));
215
229
lo := A'high + 1 ;
0 commit comments