@@ -182,7 +182,16 @@ impl DerivedKey {
182
182
183
183
Self {
184
184
template,
185
- handle : 0 ,
185
+ handle : cryptoki_sys:: CK_INVALID_HANDLE ,
186
+ }
187
+ }
188
+
189
+ /// Return handle for derived key, if it has been created yet
190
+ pub fn handle ( & self ) -> Option < ObjectHandle > {
191
+ if self . handle == cryptoki_sys:: CK_INVALID_HANDLE {
192
+ None
193
+ } else {
194
+ Some ( ObjectHandle :: new ( self . handle ) )
186
195
}
187
196
}
188
197
}
@@ -207,7 +216,7 @@ impl From<&mut DerivedKey> for cryptoki_sys::CK_DERIVED_KEY {
207
216
#[ derive( Debug ) ]
208
217
pub struct KbkdfParams < ' a > {
209
218
/// Holds own data so that we have a contiguous memory region to give to backend
210
- additional_derived_keys : Option < Pin < Box < [ cryptoki_sys:: CK_DERIVED_KEY ] > > > ,
219
+ _additional_derived_keys : Option < Pin < Box < [ cryptoki_sys:: CK_DERIVED_KEY ] > > > ,
211
220
212
221
inner : cryptoki_sys:: CK_SP800_108_KDF_PARAMS ,
213
222
/// Marker type to ensure we don't outlive the data
@@ -258,7 +267,7 @@ impl<'a> KbkdfParams<'a> {
258
267
} ;
259
268
260
269
Self {
261
- additional_derived_keys,
270
+ _additional_derived_keys : additional_derived_keys,
262
271
263
272
inner,
264
273
_marker : PhantomData ,
@@ -268,18 +277,6 @@ impl<'a> KbkdfParams<'a> {
268
277
pub ( crate ) fn inner ( & self ) -> & cryptoki_sys:: CK_SP800_108_KDF_PARAMS {
269
278
& self . inner
270
279
}
271
-
272
- /// The additional keys derived by the KDF, as per the params
273
- pub ( crate ) fn additional_derived_keys ( & self ) -> Option < Vec < ObjectHandle > > {
274
- self . additional_derived_keys . as_ref ( ) . map ( |keys| {
275
- keys. iter ( )
276
- . map ( |key| {
277
- // SAFETY: a value is always provided during construction
278
- ObjectHandle :: new ( unsafe { * key. phKey } )
279
- } )
280
- . collect ( )
281
- } )
282
- }
283
280
}
284
281
285
282
/// NIST SP 800-108 (aka KBKDF) feedback-mode parameters.
@@ -288,7 +285,7 @@ impl<'a> KbkdfParams<'a> {
288
285
#[ derive( Debug ) ]
289
286
pub struct KbkdfFeedbackParams < ' a > {
290
287
/// Holds own data so that we have a contiguous memory region to give to backend
291
- additional_derived_keys : Option < Pin < Box < [ cryptoki_sys:: CK_DERIVED_KEY ] > > > ,
288
+ _additional_derived_keys : Option < Pin < Box < [ cryptoki_sys:: CK_DERIVED_KEY ] > > > ,
292
289
293
290
inner : cryptoki_sys:: CK_SP800_108_FEEDBACK_KDF_PARAMS ,
294
291
/// Marker type to ensure we don't outlive the data
@@ -348,7 +345,7 @@ impl<'a> KbkdfFeedbackParams<'a> {
348
345
} ;
349
346
350
347
Self {
351
- additional_derived_keys,
348
+ _additional_derived_keys : additional_derived_keys,
352
349
353
350
inner,
354
351
_marker : PhantomData ,
@@ -358,16 +355,4 @@ impl<'a> KbkdfFeedbackParams<'a> {
358
355
pub ( crate ) fn inner ( & self ) -> & cryptoki_sys:: CK_SP800_108_FEEDBACK_KDF_PARAMS {
359
356
& self . inner
360
357
}
361
-
362
- /// The additional keys derived by the KDF, as per the params
363
- pub ( crate ) fn additional_derived_keys ( & self ) -> Option < Vec < ObjectHandle > > {
364
- self . additional_derived_keys . as_ref ( ) . map ( |keys| {
365
- keys. iter ( )
366
- . map ( |key| {
367
- // SAFETY: a value is always provided during construction
368
- ObjectHandle :: new ( unsafe { * key. phKey } )
369
- } )
370
- . collect ( )
371
- } )
372
- }
373
358
}
0 commit comments