oasis_core_runtime/enclave_rpc/
types.rs1use rand::{rngs::OsRng, Rng};
3
4impl_bytes!(
5 SessionID,
6 32,
7 "Session identifier for multiplexing multiple sessions over the \
8 same transport"
9);
10
11impl SessionID {
12 pub fn random() -> Self {
14 let mut session_id = [0u8; 32];
15 OsRng.fill(&mut session_id);
16
17 SessionID(session_id)
18 }
19}
20
21#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, cbor::Encode, cbor::Decode)]
23#[cbor(with_default)]
24#[repr(u8)]
25#[derive(Default)]
26pub enum Kind {
27 #[default]
29 NoiseSession = 0,
30 InsecureQuery = 1,
32 LocalQuery = 2,
34}
35
36#[derive(Clone, Debug, Default, cbor::Encode, cbor::Decode)]
38pub struct Frame {
39 pub session: SessionID,
40 pub untrusted_plaintext: String,
46 pub payload: Vec<u8>,
47}
48
49#[derive(Clone, Debug, cbor::Encode, cbor::Decode)]
50#[cbor(no_default)]
51pub struct Request {
52 pub method: String,
53 pub args: cbor::Value,
54}
55
56#[derive(Clone, Debug, Default, cbor::Encode, cbor::Decode)]
57pub struct Error {
58 pub message: String,
59}
60
61#[derive(Clone, Debug, cbor::Encode, cbor::Decode)]
62pub enum Body {
63 Success(cbor::Value),
64 Error(String),
65}
66
67#[derive(Clone, Debug, cbor::Encode, cbor::Decode)]
68#[cbor(no_default)]
69pub struct Response {
70 pub body: Body,
71}
72
73#[derive(Clone, Debug, cbor::Encode, cbor::Decode)]
75pub enum Message {
76 Request(Request),
77 Response(Response),
78 Close,
79}
80
81#[derive(Copy, Clone, Debug, PartialEq, Eq, cbor::Encode, cbor::Decode)]
83pub enum PeerFeedback {
84 Success = 0,
85 Failure = 1,
86 BadPeer = 2,
87}