1use defuse_crypto::VerifiableCurve;
2pub use defuse_crypto::{P256CompressedPublicKey, P256Signature};
3use defuse_digest::{Digest, sha2::Sha256};
4
5use crate::Algorithm;
6
7#[derive(Debug, Clone)]
10pub struct P256;
11
12impl Algorithm for P256 {
13 type PublicKey = P256CompressedPublicKey;
14 type Signature = P256Signature;
15
16 #[inline]
17 fn verify(msg: &[u8], public_key: &Self::PublicKey, signature: &Self::Signature) -> bool {
18 let prehashed = Sha256::digest(msg).into();
19
20 defuse_crypto::P256::verify(&signature.0, &prehashed, &public_key.0).is_some()
21 }
22}