iota_types/
passkey_authenticator.rs1use iota_sdk_crypto::{Verifier, passkey::PasskeyVerifier};
6pub use iota_sdk_types::crypto::PasskeyAuthenticator;
7use iota_sdk_types::{Address, crypto::IntentMessage};
8use serde::Serialize;
9
10use crate::{
11 error::{IotaError, IotaResult},
12 signature::{AuthenticatorTrait, VerifyParams},
13};
14
15#[cfg(test)]
16#[path = "unit_tests/passkey_authenticator_test.rs"]
17mod passkey_authenticator_test;
18
19impl AuthenticatorTrait for PasskeyAuthenticator {
20 fn verify_claims<T>(
22 &self,
23 intent_msg: &IntentMessage<T>,
24 author: Address,
25 _aux_verify_data: &VerifyParams,
26 ) -> IotaResult
27 where
28 T: Serialize,
29 {
30 let digest = intent_msg.signing_digest();
31
32 PasskeyVerifier::new()
33 .with_address(author)
34 .verify(&*digest, self)
35 .map_err(|e| IotaError::InvalidSignature {
36 error: format!("Invalid passkey authentication: {e}"),
37 })
38 }
39}