twizzler_security/keys/
mod.rs1mod sig;
2mod sign;
3mod verify;
4pub use sig::*;
5pub use sign::*;
6pub use verify::*;
7
8pub const MAX_KEY_SIZE: usize = 128;
11type KeyBuffer = heapless::Vec<u8, MAX_KEY_SIZE>;
12
13#[cfg(test)]
16#[cfg(feature = "user")]
17#[allow(unused_imports)]
18mod tests {
19
20 use super::*;
21
22 extern crate test;
23
24 use twizzler::object::Object;
25 use twizzler_abi::{object::Protections, syscall::ObjectCreate};
26
27 use super::VerifyingKey;
28 use crate::{SecurityError, SigningScheme};
29
30 #[test]
31 fn test_key_creation() {
32 let object_create_spec = ObjectCreate::new(
33 Default::default(),
34 twizzler_abi::syscall::LifetimeType::Persistent,
35 Default::default(),
36 Default::default(),
37 Protections::all(),
38 );
39
40 SigningKey::new_keypair(&SigningScheme::Ecdsa, object_create_spec)
41 .expect("keys should be generated properly");
42 }
43
44 fn create_default_key_pair() -> (Object<SigningKey>, Object<VerifyingKey>) {
46 let object_create_spec = ObjectCreate::new(
47 Default::default(),
48 twizzler_abi::syscall::LifetimeType::Persistent,
49 Default::default(),
50 Default::default(),
51 Protections::all(),
52 );
53
54 SigningKey::new_keypair(&SigningScheme::Ecdsa, object_create_spec)
55 .expect("Keys should be generated properly")
56 }
57
58 #[test]
59 fn test_signing() {
60 use twizzler::object::TypedObject;
61
62 let (s_obj, _) = create_default_key_pair();
63
64 let message = "deadbeef".as_bytes();
65
66 s_obj
67 .base()
68 .sign(message)
69 .expect("Signature should succeed");
70 }
71
72 #[test]
73 fn test_verifying() {
74 use twizzler::object::TypedObject;
75
76 let (s_obj, v_obj) = create_default_key_pair();
77
78 let message = "deadbeef".as_bytes();
79
80 let sig = s_obj
81 .base()
82 .sign(message)
83 .expect("Signature should succeed");
84
85 v_obj
86 .base()
87 .verify(message, &sig)
88 .expect("Should be verified properly");
89 }
90}