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