defuse_webauthn/ed25519.rs
1use defuse_crypto::Curve;
2pub use defuse_crypto::{Ed25519PublicKey, Ed25519Signature};
3
4use crate::Algorithm;
5
6/// [COSE EdDSA (-8) algorithm](https://www.iana.org/assignments/cose/cose.xhtml#algorithms):
7/// ed25519 curve
8#[derive(Debug, Clone)]
9pub struct Ed25519;
10
11impl Algorithm for Ed25519 {
12 type PublicKey = Ed25519PublicKey;
13 type Signature = Ed25519Signature;
14
15 #[inline]
16 fn verify(msg: &[u8], public_key: &Self::PublicKey, signature: &Self::Signature) -> bool {
17 defuse_crypto::Ed25519::verify(&signature.0, msg, &public_key.0).is_some()
18 }
19}