Skip to content

Commit 369bdfd

Browse files
committed
make keys a type
1 parent 440522c commit 369bdfd

File tree

3 files changed

+27
-25
lines changed

3 files changed

+27
-25
lines changed

deoxys/src/deoxys_bc.rs

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@ use aead::{
33
consts::{U15, U16, U17, U32, U48},
44
};
55

6-
use crate::{DeoxysBcType, Tweak};
6+
use crate::{DeoxysBcType, DeoxysKey, Tweak};
77

88
const H_PERM: [u8; 16] = [1, 6, 11, 12, 5, 10, 15, 0, 9, 14, 3, 4, 13, 2, 7, 8];
99

@@ -47,9 +47,9 @@ pub trait DeoxysBcInternal {
4747

4848
fn key_schedule(
4949
tweak: &Tweak,
50-
subkeys: &Array<[u8; 16], Self::SubkeysSize>,
51-
) -> Array<[u8; 16], Self::SubkeysSize> {
52-
let mut subtweakeys: Array<[u8; 16], Self::SubkeysSize> = Default::default();
50+
subkeys: &Array<DeoxysKey, Self::SubkeysSize>,
51+
) -> Array<DeoxysKey, Self::SubkeysSize> {
52+
let mut subtweakeys: Array<DeoxysKey, Self::SubkeysSize> = Default::default();
5353
let mut tweak = *tweak;
5454

5555
// First key
@@ -78,8 +78,8 @@ impl DeoxysBcInternal for DeoxysBc256 {
7878
impl DeoxysBcType for DeoxysBc256 {
7979
type KeySize = U16;
8080

81-
fn precompute_subkeys(key: &Array<u8, Self::KeySize>) -> Array<[u8; 16], Self::SubkeysSize> {
82-
let mut subkeys: Array<[u8; 16], Self::SubkeysSize> = Default::default();
81+
fn precompute_subkeys(key: &Array<u8, Self::KeySize>) -> Array<DeoxysKey, Self::SubkeysSize> {
82+
let mut subkeys: Array<DeoxysKey, Self::SubkeysSize> = Default::default();
8383

8484
let mut tk2 = [0u8; 16];
8585

@@ -116,8 +116,8 @@ impl DeoxysBcInternal for DeoxysBc384 {
116116
impl DeoxysBcType for DeoxysBc384 {
117117
type KeySize = U32;
118118

119-
fn precompute_subkeys(key: &Array<u8, Self::KeySize>) -> Array<[u8; 16], Self::SubkeysSize> {
120-
let mut subkeys: Array<[u8; 16], Self::SubkeysSize> = Default::default();
119+
fn precompute_subkeys(key: &Array<u8, Self::KeySize>) -> Array<DeoxysKey, Self::SubkeysSize> {
120+
let mut subkeys: Array<DeoxysKey, Self::SubkeysSize> = Default::default();
121121

122122
let mut tk3 = [0u8; 16];
123123
let mut tk2 = [0u8; 16];

deoxys/src/lib.rs

Lines changed: 11 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -143,6 +143,8 @@ type Block = Array<u8, U16>;
143143

144144
type Tweak = Array<u8, U16>;
145145

146+
type DeoxysKey = Array<u8, U16>;
147+
146148
/// Deoxys encryption modes.
147149
/// This type contains the public API for a Deoxys mode, like Deoxys-I and Deoxys-II.
148150
pub trait DeoxysMode<B>: modes::DeoxysModeInternal<B>
@@ -158,7 +160,7 @@ where
158160
nonce: &Array<u8, Self::NonceSize>,
159161
associated_data: &[u8],
160162
buffer: &mut [u8],
161-
subkeys: &Array<[u8; 16], B::SubkeysSize>,
163+
subkeys: &Array<DeoxysKey, B::SubkeysSize>,
162164
) -> Tag;
163165

164166
/// Decrypts the data in place with the specified parameters
@@ -168,7 +170,7 @@ where
168170
associated_data: &[u8],
169171
buffer: &mut [u8],
170172
tag: &Tag,
171-
subkeys: &Array<[u8; 16], B::SubkeysSize>,
173+
subkeys: &Array<DeoxysKey, B::SubkeysSize>,
172174
) -> Result<(), aead::Error>;
173175
}
174176

@@ -179,13 +181,13 @@ pub trait DeoxysBcType: deoxys_bc::DeoxysBcInternal {
179181
type KeySize: ArraySize;
180182

181183
/// Precompute the subkeys
182-
fn precompute_subkeys(key: &Array<u8, Self::KeySize>) -> Array<[u8; 16], Self::SubkeysSize>;
184+
fn precompute_subkeys(key: &Array<u8, Self::KeySize>) -> Array<DeoxysKey, Self::SubkeysSize>;
183185

184186
/// Encrypts a block of data in place.
185187
fn encrypt_in_place(
186188
block: &mut Block,
187189
tweak: &Tweak,
188-
subkeys: &Array<[u8; 16], Self::SubkeysSize>,
190+
subkeys: &Array<DeoxysKey, Self::SubkeysSize>,
189191
) {
190192
let keys = Self::key_schedule(tweak, subkeys);
191193

@@ -194,15 +196,15 @@ pub trait DeoxysBcType: deoxys_bc::DeoxysBcInternal {
194196
}
195197

196198
for k in &keys[1..] {
197-
aes::hazmat::cipher_round(block, k.into());
199+
aes::hazmat::cipher_round(block, k);
198200
}
199201
}
200202

201203
/// Decrypts a block of data in place.
202204
fn decrypt_in_place(
203205
block: &mut Block,
204206
tweak: &Tweak,
205-
subkeys: &Array<[u8; 16], Self::SubkeysSize>,
207+
subkeys: &Array<DeoxysKey, Self::SubkeysSize>,
206208
) {
207209
let mut keys = Self::key_schedule(tweak, subkeys);
208210

@@ -215,8 +217,8 @@ pub trait DeoxysBcType: deoxys_bc::DeoxysBcInternal {
215217
aes::hazmat::inv_mix_columns(block);
216218

217219
for k in keys[..r - 1].iter_mut().rev() {
218-
aes::hazmat::inv_mix_columns(k.into());
219-
aes::hazmat::equiv_inv_cipher_round(block, (&*k).into());
220+
aes::hazmat::inv_mix_columns(k);
221+
aes::hazmat::equiv_inv_cipher_round(block, k);
220222
}
221223

222224
aes::hazmat::mix_columns(block);
@@ -231,7 +233,7 @@ where
231233
M: DeoxysMode<B>,
232234
B: DeoxysBcType,
233235
{
234-
subkeys: Array<[u8; 16], B::SubkeysSize>,
236+
subkeys: Array<DeoxysKey, B::SubkeysSize>,
235237
mode: PhantomData<M>,
236238
}
237239

deoxys/src/modes.rs

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
use super::{Block, DeoxysBcType, DeoxysMode, Tag, Tweak};
1+
use super::{Block, DeoxysBcType, DeoxysKey, DeoxysMode, Tag, Tweak};
22
use aead::{
33
array::Array,
44
consts::{U8, U15, U16},
@@ -33,7 +33,7 @@ where
3333
fn compute_ad_tag(
3434
associated_data: &[u8],
3535
tweak: &mut Tweak,
36-
subkeys: &Array<[u8; 16], B::SubkeysSize>,
36+
subkeys: &Array<DeoxysKey, B::SubkeysSize>,
3737
tag: &mut Tag,
3838
) {
3939
if !associated_data.is_empty() {
@@ -86,7 +86,7 @@ where
8686
nonce: &Array<u8, Self::NonceSize>,
8787
associated_data: &[u8],
8888
buffer: &mut [u8],
89-
subkeys: &Array<[u8; 16], B::SubkeysSize>,
89+
subkeys: &Array<DeoxysKey, B::SubkeysSize>,
9090
) -> Tag {
9191
let mut tag = Tag::default();
9292
let mut checksum = Checksum::default();
@@ -186,7 +186,7 @@ where
186186
associated_data: &[u8],
187187
buffer: &mut [u8],
188188
tag: &Array<u8, U16>,
189-
subkeys: &Array<[u8; 16], B::SubkeysSize>,
189+
subkeys: &Array<DeoxysKey, B::SubkeysSize>,
190190
) -> Result<(), aead::Error> {
191191
let mut computed_tag = Tag::default();
192192
let mut checksum = Checksum::default();
@@ -291,7 +291,7 @@ where
291291
fn authenticate_message(
292292
buffer: &[u8],
293293
tweak: &mut Tweak,
294-
subkeys: &Array<[u8; 16], B::SubkeysSize>,
294+
subkeys: &Array<DeoxysKey, B::SubkeysSize>,
295295
tag: &mut Tag,
296296
) {
297297
if !buffer.is_empty() {
@@ -332,7 +332,7 @@ where
332332
fn encrypt_decrypt_message(
333333
buffer: &mut [u8],
334334
tweak: &mut Tweak,
335-
subkeys: &Array<[u8; 16], B::SubkeysSize>,
335+
subkeys: &Array<DeoxysKey, B::SubkeysSize>,
336336
tag: &Array<u8, U16>,
337337
nonce: &Array<u8, U15>,
338338
) {
@@ -376,7 +376,7 @@ where
376376
nonce: &Array<u8, Self::NonceSize>,
377377
associated_data: &[u8],
378378
buffer: &mut [u8],
379-
subkeys: &Array<[u8; 16], B::SubkeysSize>,
379+
subkeys: &Array<DeoxysKey, B::SubkeysSize>,
380380
) -> Tag {
381381
let mut tag = Tag::default();
382382
let mut tweak = Tweak::default();
@@ -407,7 +407,7 @@ where
407407
associated_data: &[u8],
408408
buffer: &mut [u8],
409409
tag: &Array<u8, U16>,
410-
subkeys: &Array<[u8; 16], B::SubkeysSize>,
410+
subkeys: &Array<DeoxysKey, B::SubkeysSize>,
411411
) -> Result<(), aead::Error> {
412412
let mut computed_tag = Tag::default();
413413
let mut tweak = Tweak::default();

0 commit comments

Comments
 (0)