Skip to content

Commit 5f7a922

Browse files
Simplified CounterFormat and DkmLengthFormat wrapper structs
Signed-off-by: Jacob Prud'homme <[email protected]>
1 parent 799469a commit 5f7a922

File tree

1 file changed

+24
-32
lines changed

1 file changed

+24
-32
lines changed

cryptoki/src/mechanism/kbkdf.rs

Lines changed: 24 additions & 32 deletions
Original file line numberDiff line numberDiff line change
@@ -23,9 +23,7 @@ pub enum Endianness {
2323
/// This structure wraps a `CK_SP800_108_COUNTER_FORMAT` structure.
2424
#[derive(Debug, Clone, Copy)]
2525
#[repr(transparent)]
26-
pub struct KbkdfCounterFormat {
27-
inner: cryptoki_sys::CK_SP800_108_COUNTER_FORMAT,
28-
}
26+
pub struct KbkdfCounterFormat(cryptoki_sys::CK_SP800_108_COUNTER_FORMAT);
2927

3028
impl KbkdfCounterFormat {
3129
/// Construct encoding format for KDF's internal counter variable.
@@ -36,14 +34,12 @@ impl KbkdfCounterFormat {
3634
///
3735
/// * `width_in_bits` - The number of bits used to represent the counter value.
3836
pub fn new(endianness: Endianness, width_in_bits: usize) -> Self {
39-
Self {
40-
inner: cryptoki_sys::CK_SP800_108_COUNTER_FORMAT {
41-
bLittleEndian: (endianness == Endianness::Little).into(),
42-
ulWidthInBits: width_in_bits
37+
Self(cryptoki_sys::CK_SP800_108_COUNTER_FORMAT {
38+
bLittleEndian: (endianness == Endianness::Little).into(),
39+
ulWidthInBits: width_in_bits
4340
.try_into()
4441
.expect("bit width of KBKDF internal counter does not fit in CK_ULONG"),
45-
},
46-
}
42+
})
4743
}
4844
}
4945

@@ -63,9 +59,7 @@ pub enum DkmLengthMethod {
6359
/// This structure wraps a `CK_SP800_108_DKM_LENGTH_FORMAT` structure.
6460
#[derive(Debug, Clone, Copy)]
6561
#[repr(transparent)]
66-
pub struct KbkdfDkmLengthFormat {
67-
inner: cryptoki_sys::CK_SP800_108_DKM_LENGTH_FORMAT,
68-
}
62+
pub struct KbkdfDkmLengthFormat(cryptoki_sys::CK_SP800_108_DKM_LENGTH_FORMAT);
6963

7064
impl KbkdfDkmLengthFormat {
7165
/// Construct encoding format for length value of DKM (derived key material) from KDF.
@@ -78,24 +72,22 @@ impl KbkdfDkmLengthFormat {
7872
///
7973
/// * `width_in_bits` - The number of bits used to represent the DKM length value.
8074
pub fn new(
81-
dkm_length_method: DkmLengthMethod,
82-
endianness: Endianness,
83-
width_in_bits: usize,
75+
dkm_length_method: DkmLengthMethod,
76+
endianness: Endianness,
77+
width_in_bits: usize,
8478
) -> Self {
85-
Self {
86-
inner: cryptoki_sys::CK_SP800_108_DKM_LENGTH_FORMAT {
87-
dkmLengthMethod: match dkm_length_method {
88-
DkmLengthMethod::SumOfKeys => cryptoki_sys::CK_SP800_108_DKM_LENGTH_SUM_OF_KEYS,
89-
DkmLengthMethod::SumOfSegments => {
90-
cryptoki_sys::CK_SP800_108_DKM_LENGTH_SUM_OF_SEGMENTS
91-
}
92-
},
93-
bLittleEndian: (endianness == Endianness::Little).into(),
94-
ulWidthInBits: width_in_bits.try_into().expect(
95-
"bit width of KBKDF derived key material length value does not fit in CK_ULONG",
96-
),
79+
Self(cryptoki_sys::CK_SP800_108_DKM_LENGTH_FORMAT {
80+
dkmLengthMethod: match dkm_length_method {
81+
DkmLengthMethod::SumOfKeys => cryptoki_sys::CK_SP800_108_DKM_LENGTH_SUM_OF_KEYS,
82+
DkmLengthMethod::SumOfSegments => {
83+
cryptoki_sys::CK_SP800_108_DKM_LENGTH_SUM_OF_SEGMENTS
84+
}
9785
},
98-
}
86+
bLittleEndian: (endianness == Endianness::Little).into(),
87+
ulWidthInBits: width_in_bits.try_into().expect(
88+
"bit width of KBKDF derived key material length value does not fit in CK_ULONG",
89+
),
90+
})
9991
}
10092
}
10193

@@ -139,13 +131,13 @@ impl<'a> PrfDataParam<'a> {
139131
},
140132
PrfDataParamType::Counter(counter_format) => cryptoki_sys::CK_PRF_DATA_PARAM {
141133
type_: cryptoki_sys::CK_SP800_108_COUNTER,
142-
pValue: &counter_format.inner as *const _ as *mut _,
134+
pValue: counter_format as *const _ as *mut _,
143135
ulValueLen: size_of::<cryptoki_sys::CK_SP800_108_COUNTER_FORMAT>()
144136
as cryptoki_sys::CK_ULONG,
145137
},
146138
PrfDataParamType::DkmLength(dkm_length_format) => cryptoki_sys::CK_PRF_DATA_PARAM {
147139
type_: cryptoki_sys::CK_SP800_108_DKM_LENGTH,
148-
pValue: &dkm_length_format.inner as *const _ as *mut _,
140+
pValue: dkm_length_format as *const _ as *mut _,
149141
ulValueLen: size_of::<cryptoki_sys::CK_SP800_108_DKM_LENGTH_FORMAT>()
150142
as cryptoki_sys::CK_ULONG,
151143
},
@@ -197,15 +189,15 @@ impl<'a> PrfCounterDataParam<'a> {
197189
PrfCounterDataParamType::IterationVariable(counter_format) => {
198190
cryptoki_sys::CK_PRF_DATA_PARAM {
199191
type_: cryptoki_sys::CK_SP800_108_ITERATION_VARIABLE,
200-
pValue: &counter_format.inner as *const _ as *mut _,
192+
pValue: counter_format as *const _ as *mut _,
201193
ulValueLen: size_of::<cryptoki_sys::CK_SP800_108_COUNTER_FORMAT>()
202194
as cryptoki_sys::CK_ULONG,
203195
}
204196
}
205197
PrfCounterDataParamType::DkmLength(dkm_length_format) => {
206198
cryptoki_sys::CK_PRF_DATA_PARAM {
207199
type_: cryptoki_sys::CK_SP800_108_DKM_LENGTH,
208-
pValue: &dkm_length_format.inner as *const _ as *mut _,
200+
pValue: dkm_length_format as *const _ as *mut _,
209201
ulValueLen: size_of::<cryptoki_sys::CK_SP800_108_DKM_LENGTH_FORMAT>()
210202
as cryptoki_sys::CK_ULONG,
211203
}

0 commit comments

Comments
 (0)