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}