securedrop_protocol_minimal/wire/
core.rs1use crate::FetchResponse;
2use crate::keys::{SignedKeyBundlePublic, SignedLongtermPubKeyBytes};
3use crate::message::MessagePublicKey;
4use crate::primitives::x25519::DHPublicKey;
5use crate::sign::{
6 FpfOnNewsroom, JournalistLongTermKey, NewsroomOnJournalist, Signature, VerifyingKey,
7};
8use alloc::vec::Vec;
9use serde::{Deserialize, Serialize};
10use uuid::Uuid;
11
12#[cfg_attr(not(hax), derive(Serialize, Deserialize))]
19pub struct JournalistLongTermView {
20 pub vk: VerifyingKey,
21 pub fetch_pk: DHPublicKey,
22 pub reply_apke_pk: MessagePublicKey,
23 pub signed_longterm_key_bytes: SignedLongtermPubKeyBytes,
24 pub selfsig: Signature<JournalistLongTermKey>,
25 pub nr_signature: Signature<NewsroomOnJournalist>,
26}
27
28#[cfg_attr(not(hax), derive(Serialize, Deserialize))]
32pub struct WelcomeBundle {
33 pub newsroom_verifying_key: VerifyingKey,
34 pub fpf_sig: Signature<FpfOnNewsroom>,
35 pub journalists: Vec<JournalistLongTermView>,
36}
37
38#[cfg_attr(not(hax), derive(Serialize, Deserialize))]
41pub struct JournalistEphemeralKeys {
42 pub vk: VerifyingKey,
43 pub ephemeral: SignedKeyBundlePublic,
44}
45
46pub struct MessageChallengeFetchRequest {}
50
51#[cfg_attr(not(hax), derive(Serialize, Deserialize))]
55pub struct MessageChallengeFetchResponse {
56 pub count: usize,
59 pub messages: Vec<FetchResponse>,
61}
62
63pub struct MessageFetchRequest {
67 pub message_id: Uuid,
69}