1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
use crate::software_vault::SoftwareVault;
use crate::xeddsa::XEddsaVerifier;
use crate::VaultError;
use arrayref::array_ref;
use ockam_vault_core::{PublicKey, Verifier, CURVE25519_PUBLIC_LENGTH};
impl Verifier for SoftwareVault {
fn verify(
&mut self,
signature: &[u8; 64],
public_key: &PublicKey,
data: &[u8],
) -> ockam_core::Result<bool> {
if public_key.as_ref().len() == CURVE25519_PUBLIC_LENGTH {
Ok(x25519_dalek::PublicKey::from(*array_ref!(
public_key.as_ref(),
0,
CURVE25519_PUBLIC_LENGTH
))
.verify(data.as_ref(), &signature))
} else {
Err(VaultError::InvalidPublicKey.into())
}
}
}