zkgroup/api/profiles/
profile_key_credential_request_context.rs

1//
2// Copyright 2020 Signal Messenger, LLC.
3// SPDX-License-Identifier: AGPL-3.0-only
4//
5
6use partial_default::PartialDefault;
7use serde::{Deserialize, Serialize};
8
9use crate::common::serialization::ReservedByte;
10use crate::common::simple_types::*;
11use crate::{api, crypto};
12
13#[derive(Serialize, Deserialize, PartialDefault)]
14pub struct ProfileKeyCredentialRequestContext {
15    pub(crate) reserved: ReservedByte,
16    pub(crate) aci_bytes: UidBytes,
17    pub(crate) profile_key_bytes: ProfileKeyBytes,
18    pub(crate) key_pair: crypto::profile_key_credential_request::KeyPair,
19    pub(crate) ciphertext_with_secret_nonce:
20        crypto::profile_key_credential_request::CiphertextWithSecretNonce,
21    pub(crate) proof: crypto::proofs::ProfileKeyCredentialRequestProof,
22}
23
24impl ProfileKeyCredentialRequestContext {
25    pub fn get_request(&self) -> api::profiles::ProfileKeyCredentialRequest {
26        let ciphertext = self.ciphertext_with_secret_nonce.get_ciphertext();
27        let public_key = self.key_pair.get_public_key();
28        api::profiles::ProfileKeyCredentialRequest {
29            reserved: Default::default(),
30            public_key,
31            ciphertext,
32            proof: self.proof.clone(),
33        }
34    }
35}