Skip to content

Commit b0c3dae

Browse files
committed
Add test vector
1 parent 2ad9f59 commit b0c3dae

File tree

1 file changed

+26
-5
lines changed

1 file changed

+26
-5
lines changed

crates/bitwarden-crypto/src/keys/signing_crypto_key.rs

Lines changed: 26 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -320,12 +320,12 @@ impl From<CoseSign1> for Signature {
320320

321321
#[allow(unused)]
322322
impl Signature {
323-
fn from_bytes(bytes: &[u8]) -> Result<Self> {
323+
fn from_cose(bytes: &[u8]) -> Result<Self> {
324324
let cose_sign1 = CoseSign1::from_slice(bytes).map_err(|_| CryptoError::InvalidSignature)?;
325325
Ok(Signature(cose_sign1))
326326
}
327327

328-
fn to_bytes(&self) -> Result<Vec<u8>> {
328+
fn to_cose(&self) -> Result<Vec<u8>> {
329329
self.0
330330
.clone()
331331
.to_vec()
@@ -360,11 +360,32 @@ impl Signature {
360360
mod tests {
361361
use super::*;
362362

363+
const SIGNING_KEY: &[u8] = &[167, 1, 1, 2, 80, 222, 105, 244, 28, 22, 106, 70, 109, 171, 83, 154, 97, 23, 20, 115, 137, 3, 39, 4, 130, 1, 2, 33, 88, 32, 92, 186, 140, 91, 228, 10, 169, 163, 132, 55, 210, 79, 96, 186, 198, 251, 255, 79, 157, 58, 28, 182, 213, 118, 51, 15, 60, 110, 161, 114, 222, 168, 35, 88, 32, 59, 136, 203, 0, 108, 23, 82, 84, 206, 163, 86, 62, 187, 196, 156, 156, 150, 80, 101, 129, 247, 112, 117, 10, 34, 54, 254, 181, 239, 214, 195, 78, 32, 6];
364+
const VERIFYING_KEY: &[u8] = &[166, 1, 1, 2, 80, 222, 105, 244, 28, 22, 106, 70, 109, 171, 83, 154, 97, 23, 20, 115, 137, 3, 39, 4, 129, 2, 32, 6, 33, 88, 32, 92, 186, 140, 91, 228, 10, 169, 163, 132, 55, 210, 79, 96, 186, 198, 251, 255, 79, 157, 58, 28, 182, 213, 118, 51, 15, 60, 110, 161, 114, 222, 168];
365+
/// Uses the ´SigningNamespace::EncryptionMetadata´ namespace, "Test message" as data
366+
const SIGNATURE: &[u8] = &[132, 88, 27, 163, 1, 39, 4, 80, 222, 105, 244, 28, 22, 106, 70, 109, 171, 83, 154, 97, 23, 20, 115, 137, 58, 0, 1, 56, 127, 1, 160, 246, 88, 64, 143, 218, 162, 76, 208, 117, 94, 215, 224, 98, 89, 193, 194, 226, 144, 214, 91, 130, 129, 130, 77, 36, 79, 196, 45, 105, 120, 151, 136, 57, 230, 27, 37, 142, 55, 191, 23, 200, 237, 215, 252, 42, 182, 140, 201, 173, 199, 214, 97, 105, 107, 101, 140, 182, 105, 9, 206, 106, 210, 29, 203, 174, 178, 12];
367+
368+
#[test]
369+
fn test_using_test_vectors() {
370+
let signing_key = SigningKey::from_cose(SIGNING_KEY).unwrap();
371+
let verifying_key = VerifyingKey::from_cose(VERIFYING_KEY).unwrap();
372+
let signature = Signature::from_cose(SIGNATURE).unwrap();
373+
374+
let data = b"Test message";
375+
let namespace = SigningNamespace::EncryptionMetadata;
376+
377+
assert_eq!(signing_key.to_cose().unwrap(), SIGNING_KEY);
378+
assert_eq!(verifying_key.to_cose().unwrap(), VERIFYING_KEY);
379+
assert_eq!(signature.to_cose().unwrap(), SIGNATURE);
380+
381+
assert!(verifying_key.verify(&namespace, &signature, data));
382+
}
383+
363384
#[test]
364385
fn test_sign_roundtrip() {
365386
let signing_key = SigningKey::make_ed25519().unwrap();
366387
let verifying_key = signing_key.to_verifying_key();
367-
let data = b"Hello, world!";
388+
let data = b"Test message";
368389
let namespace = SigningNamespace::EncryptionMetadata;
369390

370391
let signature = signing_key.sign(&namespace, data);
@@ -375,7 +396,7 @@ mod tests {
375396
fn test_changed_signature_fails() {
376397
let signing_key = SigningKey::make_ed25519().unwrap();
377398
let verifying_key = signing_key.to_verifying_key();
378-
let data = b"Hello, world!";
399+
let data = b"Test message";
379400
let namespace = SigningNamespace::EncryptionMetadata;
380401

381402
let signature = signing_key.sign(&namespace, data);
@@ -386,7 +407,7 @@ mod tests {
386407
fn test_changed_namespace_fails() {
387408
let signing_key = SigningKey::make_ed25519().unwrap();
388409
let verifying_key = signing_key.to_verifying_key();
389-
let data = b"Hello, world!";
410+
let data = b"Test message";
390411
let namespace = SigningNamespace::EncryptionMetadata;
391412
let other_namespace = SigningNamespace::Test;
392413

0 commit comments

Comments
 (0)