Skip to main content

aven_protocol/wire/
images.rs

1//! Ordinary encrypted image transport.
2use serde::{Deserialize, Serialize};
3
4#[derive(Clone, Debug, PartialEq, Eq, Serialize, Deserialize)]
5#[serde(deny_unknown_fields)]
6pub struct Ticket {
7    pub reservation: [u8; 32],
8}
9#[derive(Clone, Serialize, Deserialize)]
10#[serde(deny_unknown_fields)]
11pub enum Operation {
12    Declare {
13        workspace: String,
14        #[serde(with = "crate::base64_bytes")]
15        descriptor: Vec<u8>,
16    },
17    Status {
18        workspace: String,
19        object: [u8; 32],
20        descriptor_commitment: [u8; 32],
21    },
22    Put {
23        workspace: String,
24        object: [u8; 32],
25        descriptor_commitment: [u8; 32],
26        reservation: [u8; 32],
27        index: usize,
28        #[serde(with = "crate::base64_bytes")]
29        record: Vec<u8>,
30    },
31    Complete {
32        workspace: String,
33        object: [u8; 32],
34        descriptor_commitment: [u8; 32],
35        reservation: [u8; 32],
36    },
37    Read {
38        workspace: String,
39        object: [u8; 32],
40        descriptor_commitment: [u8; 32],
41        index: usize,
42    },
43    Release {
44        workspace: String,
45        object: [u8; 32],
46        descriptor_commitment: [u8; 32],
47        reservation: [u8; 32],
48    },
49}
50#[derive(Clone, Serialize, Deserialize)]
51#[serde(deny_unknown_fields)]
52pub struct Status {
53    pub complete: bool,
54    pub missing: Vec<usize>,
55    pub reservation: Option<[u8; 32]>,
56    pub expires_at: Option<i64>,
57}
58#[derive(Clone, Serialize, Deserialize)]
59#[serde(deny_unknown_fields)]
60pub enum Reply {
61    Status(Status),
62    Chunk(#[serde(with = "crate::base64_bytes")] Vec<u8>),
63    Unavailable,
64    Done,
65}
66
67pub const PATH: &str = "/e2ee/images/v1";
68pub const DESCRIPTOR_LIMIT: usize = 1984;
69pub const IMAGE_BYTES: usize = 25 * 1048576;
70pub const CHUNK_BYTES: usize = 1048576 + 222;
71pub const TRANSFER_BYTES: usize = IMAGE_BYTES + 25 * 222;
72pub const HTTP_LIMIT: usize = crate::base64_bytes::encoded_len(CHUNK_BYTES) + 16384;