zkgroup/api/
generic_server_params.rs

1//
2// Copyright 2023 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::RandomnessBytes;
11
12#[derive(Serialize, Deserialize, PartialDefault)]
13pub struct GenericServerSecretParams {
14    version: ReservedByte,
15    pub(crate) credential_key: zkcredential::credentials::CredentialKeyPair,
16}
17
18impl GenericServerSecretParams {
19    pub fn generate(randomness: RandomnessBytes) -> Self {
20        Self {
21            version: Default::default(),
22            credential_key: zkcredential::credentials::CredentialKeyPair::generate(randomness),
23        }
24    }
25
26    pub fn get_public_params(&self) -> GenericServerPublicParams {
27        GenericServerPublicParams {
28            version: self.version,
29            credential_key: self.credential_key.public_key().clone(),
30        }
31    }
32}
33
34#[derive(Serialize, Deserialize, PartialDefault)]
35pub struct GenericServerPublicParams {
36    version: ReservedByte,
37    pub(crate) credential_key: zkcredential::credentials::CredentialPublicKey,
38}