@@ -265,7 +265,7 @@ macro_rules! blake2_mac_impl {
265
265
core: $hash,
266
266
buffer: LazyBuffer <<$hash as BlockSizeUser >:: BlockSize >,
267
267
#[ cfg( feature = "reset" ) ]
268
- key_block: Block <$hash >,
268
+ key_block: Key < Self >,
269
269
_out: PhantomData <OutSize >,
270
270
}
271
271
@@ -291,14 +291,17 @@ macro_rules! blake2_mac_impl {
291
291
if kl > bs || salt. len( ) > qbs || persona. len( ) > qbs {
292
292
return Err ( InvalidLength ) ;
293
293
}
294
- let mut key_block = Block :: <$hash>:: default ( ) ;
295
- key_block[ ..kl] . copy_from_slice( key) ;
296
- let buffer = LazyBuffer :: new( & key_block) ;
294
+ let mut padded_key = Block :: <$hash>:: default ( ) ;
295
+ padded_key[ ..kl] . copy_from_slice( key) ;
297
296
Ok ( Self {
298
297
core: <$hash>:: new_with_params( salt, persona, key. len( ) , OutSize :: USIZE ) ,
299
- buffer,
298
+ buffer: LazyBuffer :: new ( & padded_key ) ,
300
299
#[ cfg( feature = "reset" ) ]
301
- key_block,
300
+ key_block: {
301
+ let mut t = Key :: <Self >:: default ( ) ;
302
+ t[ ..kl] . copy_from_slice( key) ;
303
+ t
304
+ } ,
302
305
_out: PhantomData ,
303
306
} )
304
307
}
@@ -309,7 +312,7 @@ macro_rules! blake2_mac_impl {
309
312
OutSize : ArrayLength <u8 > + IsLessOrEqual <$max_size>,
310
313
LeEq <OutSize , $max_size>: NonZero ,
311
314
{
312
- type KeySize = <$hash as BlockSizeUser > :: BlockSize ;
315
+ type KeySize = $max_size ;
313
316
}
314
317
315
318
impl <OutSize > KeyInit for $name<OutSize >
@@ -318,9 +321,12 @@ macro_rules! blake2_mac_impl {
318
321
LeEq <OutSize , $max_size>: NonZero ,
319
322
{
320
323
fn new( key: & Key <Self >) -> Self {
324
+ let kl = key. len( ) ;
325
+ let mut padded_key = Block :: <$hash>:: default ( ) ;
326
+ padded_key[ ..kl] . copy_from_slice( key) ;
321
327
Self {
322
328
core: <$hash>:: new_with_params( key, & [ ] , key. len( ) , OutSize :: USIZE ) ,
323
- buffer: LazyBuffer :: new( key ) ,
329
+ buffer: LazyBuffer :: new( & padded_key ) ,
324
330
#[ cfg( feature = "reset" ) ]
325
331
key_block: key. clone( ) ,
326
332
_out: PhantomData ,
@@ -329,16 +335,20 @@ macro_rules! blake2_mac_impl {
329
335
330
336
fn new_from_slice( key: & [ u8 ] ) -> Result <Self , InvalidLength > {
331
337
let kl = key. len( ) ;
332
- if kl > <$hash as BlockSizeUser >:: BlockSize :: USIZE {
338
+ if kl > <Self as KeySizeUser >:: KeySize :: USIZE {
333
339
return Err ( InvalidLength ) ;
334
340
}
335
- let mut key_block = Block :: <$hash>:: default ( ) ;
336
- key_block [ ..kl] . copy_from_slice( key) ;
341
+ let mut padded_key = Block :: <$hash>:: default ( ) ;
342
+ padded_key [ ..kl] . copy_from_slice( key) ;
337
343
Ok ( Self {
338
344
core: <$hash>:: new_with_params( & [ ] , & [ ] , key. len( ) , OutSize :: USIZE ) ,
339
- buffer: LazyBuffer :: new( & key_block ) ,
345
+ buffer: LazyBuffer :: new( & padded_key ) ,
340
346
#[ cfg( feature = "reset" ) ]
341
- key_block,
347
+ key_block: {
348
+ let mut t = Key :: <Self >:: default ( ) ;
349
+ t[ ..kl] . copy_from_slice( key) ;
350
+ t
351
+ } ,
342
352
_out: PhantomData ,
343
353
} )
344
354
}
@@ -386,7 +396,10 @@ macro_rules! blake2_mac_impl {
386
396
{
387
397
fn reset( & mut self ) {
388
398
self . core. reset( ) ;
389
- self . buffer = LazyBuffer :: new( & self . key_block) ;
399
+ let kl = self . key_block. len( ) ;
400
+ let mut padded_key = Block :: <$hash>:: default ( ) ;
401
+ padded_key[ ..kl] . copy_from_slice( & self . key_block) ;
402
+ self . buffer = LazyBuffer :: new( & padded_key) ;
390
403
}
391
404
}
392
405
@@ -398,17 +411,11 @@ macro_rules! blake2_mac_impl {
398
411
{
399
412
#[ inline]
400
413
fn finalize_into_reset( & mut self , out: & mut Output <Self >) {
401
- let Self {
402
- core,
403
- buffer,
404
- key_block,
405
- ..
406
- } = self ;
414
+ let Self { core, buffer, .. } = self ;
407
415
let mut full_res = Default :: default ( ) ;
408
416
core. finalize_variable_core( buffer, & mut full_res) ;
409
417
out. copy_from_slice( & full_res[ ..OutSize :: USIZE ] ) ;
410
- core. reset( ) ;
411
- * buffer = LazyBuffer :: new( key_block) ;
418
+ self . reset( ) ;
412
419
}
413
420
}
414
421
0 commit comments