From b92428214aebb4feff61236c75274125cfcd3599 Mon Sep 17 00:00:00 2001 From: Shimun Date: Thu, 26 Dec 2019 18:02:20 +0100 Subject: [PATCH] removed unsafe --- src/extensions/hmac.rs | 14 ++++++++------ 1 file changed, 8 insertions(+), 6 deletions(-) diff --git a/src/extensions/hmac.rs b/src/extensions/hmac.rs index 96abd2d..5a72645 100644 --- a/src/extensions/hmac.rs +++ b/src/extensions/hmac.rs @@ -185,16 +185,18 @@ impl HmacExtension for FidoDevice { }), _ => Err(FidoErrorKind::CborDecode), }?; - let mut hmac_secret = ([0u8; 32], [0u8; 32]); + let mut hmac_secret = [0u8; 64]; decryptor .decrypt( &mut RefReadBuffer::new(&hmac_secret_enc), - &mut RefWriteBuffer::new(unsafe { - std::mem::transmute::<_, &mut [u8; 64]>(&mut hmac_secret) - }), + &mut RefWriteBuffer::new(&mut hmac_secret), true, ) - .expect("failed to decrypt secret"); - Ok((hmac_secret.0, salt2.map(|_| hmac_secret.1))) + .map_err(|_| FidoErrorKind::ReadPacket)?; + let mut hmac_secret_0 = [0u8; 32]; + let mut hmac_secret_1 = [0u8; 32]; + hmac_secret_0.copy_from_slice(&hmac_secret[0..32]); + hmac_secret_1.copy_from_slice(&hmac_secret[32..]); + Ok((hmac_secret_0, salt2.map(|_| hmac_secret_1))) } }