Skip to content

Commit 87357bf

Browse files
committed
Add tests
1 parent 635b536 commit 87357bf

File tree

1 file changed

+38
-3
lines changed

1 file changed

+38
-3
lines changed

crates/bitwarden-crypto/src/store/context.rs

Lines changed: 38 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -452,10 +452,10 @@ impl<Ids: KeyIds> KeyStoreContext<'_, Ids> {
452452
#[cfg(test)]
453453
#[allow(deprecated)]
454454
mod tests {
455+
use serde::{Deserialize, Serialize};
456+
455457
use crate::{
456-
store::{tests::DataView, KeyStore},
457-
traits::tests::{TestIds, TestSigningKey, TestSymmKey},
458-
Decryptable, Encryptable, SignatureAlgorithm, SigningKey, SymmetricCryptoKey,
458+
store::{tests::DataView, KeyStore}, traits::tests::{TestIds, TestSigningKey, TestSymmKey}, CryptoError, Decryptable, Encryptable, SignatureAlgorithm, SigningKey, SymmetricCryptoKey
459459
};
460460

461461
#[test]
@@ -534,4 +534,39 @@ mod tests {
534534
// Assert that the decrypted data is the same
535535
assert_eq!(decrypted1.0, decrypted2.0);
536536
}
537+
538+
539+
#[test]
540+
fn test_signing() {
541+
let store: KeyStore<TestIds> = KeyStore::default();
542+
543+
// Generate and insert a key
544+
let key_a0_id = TestSigningKey::A(0);
545+
let key_a0 = SigningKey::make(SignatureAlgorithm::Ed25519).unwrap();
546+
let verifying_key = key_a0.to_verifying_key();
547+
store
548+
.context_mut()
549+
.set_signing_key(key_a0_id, key_a0)
550+
.unwrap();
551+
552+
assert!(store.context().has_signing_key(key_a0_id));
553+
554+
// Sign some data with the key
555+
#[derive(Serialize, Deserialize)]
556+
struct TestData {
557+
data: String,
558+
}
559+
let signed_object = store
560+
.context()
561+
.sign(key_a0_id, &TestData { data: "Hello".to_string() }, &&crate::SigningNamespace::ExampleNamespace)
562+
.unwrap();
563+
let payload: Result<TestData, CryptoError> = verifying_key.get_verified_payload(&signed_object, &crate::SigningNamespace::ExampleNamespace);
564+
assert!(payload.is_ok());
565+
566+
let (signature, serialized_message) = store
567+
.context()
568+
.sign_detached(key_a0_id, &TestData { data: "Hello".to_string() }, &&crate::SigningNamespace::ExampleNamespace)
569+
.unwrap();
570+
assert!(verifying_key.verify_signature(&serialized_message, &crate::SigningNamespace::ExampleNamespace, &signature));
571+
}
537572
}

0 commit comments

Comments
 (0)