examples-features/ctap: Require Hmac driver for CtapPlatform Signed-off-by: Alistair Francis <alistair.francis@wdc.com>
diff --git a/examples-features/ctap.rs b/examples-features/ctap.rs index 76cb829..63753ea 100644 --- a/examples-features/ctap.rs +++ b/examples-features/ctap.rs
@@ -5,7 +5,7 @@ use core::alloc::Layout; use core::cell::Cell; -use core::fmt::{Debug, Error, Formatter}; +use core::fmt::{self, Debug, Error, Formatter}; use core::time::Duration; use ctap2_authenticator::credentials::{RpCredential, UserCredential}; use ctap2_authenticator::usbhid::{ @@ -16,6 +16,7 @@ AuthenticatorPlatform, CredentialDescriptorList, CtapOptions, PublicKey, Signature, }; use libtock::ctap::{CtapRecvBuffer, CtapSendBuffer}; +use libtock::hmac::HmacDriverFactory; use libtock::println; use libtock::result::TockResult; use libtock::syscalls; @@ -150,8 +151,22 @@ } } -#[derive(Debug)] -pub(crate) struct CtapPlatform; +pub(crate) struct CtapPlatform { + hmac: HmacDriverFactory, +} + +impl CtapPlatform { + fn new(hmac: HmacDriverFactory) -> Self { + Self { hmac } + } +} + +impl fmt::Debug for CtapPlatform { + fn fmt(&self, _f: &mut fmt::Formatter<'_>) -> fmt::Result { + Ok(()) + } +} + impl AuthenticatorPlatform for CtapPlatform { const AAGUID: [u8; 16] = [ 0xf8, 0xa0, 0x11, 0xf3, 0x8c, 0x0a, 0x4d, 0x15, 0x80, 0x06, 0x17, 0x11, 0x1f, 0x9e, 0xdc, @@ -259,7 +274,7 @@ tp = Cell::new(TransactionProcessor::new(BUFFER, UsbKeyHidPlatform::new())); } - let mut authenticator = Authenticator::create(CtapPlatform); + let mut authenticator = Authenticator::create(CtapPlatform::new(drivers.hmac)); let mut callback = |sent, _| { let mut looping = true;