1use std::borrow::Cow;
2
3use serde::{Deserialize, Serialize};
4
5pub mod core;
6pub mod encoding;
7pub mod keygen;
8pub mod traits;
9
10pub use crate::core::*;
11pub use encoding::*;
12pub use keygen::*;
13pub use traits::*;
14
15pub use rust_bigint::BigInt;
16
17pub struct Paillier;
19
20#[derive(Clone, Debug, PartialEq, Serialize, Deserialize)]
22pub struct Keypair {
23 #[serde(with = "rust_bigint::serialize::bigint")]
24 pub p: BigInt, #[serde(with = "rust_bigint::serialize::bigint")]
27 pub q: BigInt, }
29
30#[derive(Clone, Debug, PartialEq, Serialize, Deserialize)]
34pub struct MinimalEncryptionKey {
35 #[serde(with = "rust_bigint::serialize::bigint")]
36 pub n: BigInt,
37}
38
39#[derive(Clone, Debug, PartialEq, Serialize, Deserialize)]
43pub struct MinimalDecryptionKey {
44 #[serde(with = "rust_bigint::serialize::bigint")]
45 pub p: BigInt,
46
47 #[serde(with = "rust_bigint::serialize::bigint")]
48 pub q: BigInt,
49}
50
51#[derive(Clone, Debug, PartialEq)]
53pub struct EncryptionKey {
54 pub n: BigInt, pub nn: BigInt, }
57
58#[derive(Clone, Debug, PartialEq)]
60pub struct DecryptionKey {
61 pub p: BigInt, pub q: BigInt, }
64
65#[derive(Clone, Debug, PartialEq)]
69pub struct RawPlaintext<'b>(pub Cow<'b, BigInt>);
70
71#[derive(Clone, Debug, PartialEq, Serialize, Deserialize)]
75pub struct RawCiphertext<'b>(pub Cow<'b, BigInt>);