Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
20 changes: 10 additions & 10 deletions crates/ot-core/src/kos.rs
Original file line number Diff line number Diff line change
Expand Up @@ -173,8 +173,8 @@ mod tests {
) {
let count = 128;

let sender = Sender::new(SenderConfig::default(), delta);
let receiver = Receiver::new(ReceiverConfig::default());
let sender = Sender::new(SenderConfig::default(), delta, Block::ZERO);
let receiver = Receiver::new(ReceiverConfig::default(), Block::ZERO);

let mut sender = sender.setup(sender_seeds);
let mut receiver = receiver.setup(receiver_seeds);
Expand Down Expand Up @@ -226,8 +226,8 @@ mod tests {

let count = sender_config.batch_size() * 3;

let sender = Sender::new(sender_config, delta);
let receiver = Receiver::new(receiver_config);
let sender = Sender::new(sender_config, delta, Block::ZERO);
let receiver = Receiver::new(receiver_config, Block::ZERO);

let mut sender = sender.setup(sender_seeds);
let mut receiver = receiver.setup(receiver_seeds);
Expand Down Expand Up @@ -276,8 +276,8 @@ mod tests {
) {
let count = 128;

let sender = Sender::new(SenderConfig::default(), delta);
let receiver = Receiver::new(ReceiverConfig::default());
let sender = Sender::new(SenderConfig::default(), delta, Block::ZERO);
let receiver = Receiver::new(ReceiverConfig::default(), Block::ZERO);

let mut sender = sender.setup(sender_seeds);
let mut receiver = receiver.setup(receiver_seeds);
Expand Down Expand Up @@ -308,8 +308,8 @@ mod tests {
) {
let count = 128;

let sender = Sender::new(SenderConfig::default(), delta);
let receiver = Receiver::new(ReceiverConfig::default());
let sender = Sender::new(SenderConfig::default(), delta, Block::ZERO);
let receiver = Receiver::new(ReceiverConfig::default(), Block::ZERO);

let mut sender = sender.setup(sender_seeds);
let mut receiver = receiver.setup(receiver_seeds);
Expand Down Expand Up @@ -340,8 +340,8 @@ mod tests {
) {
let count = 128;

let sender = Sender::new(SenderConfig::default(), delta);
let receiver = Receiver::new(ReceiverConfig::default());
let sender = Sender::new(SenderConfig::default(), delta, Block::ZERO);
let receiver = Receiver::new(ReceiverConfig::default(), Block::ZERO);

let mut sender = sender.setup(sender_seeds);
let mut receiver = receiver.setup(receiver_seeds);
Expand Down
13 changes: 10 additions & 3 deletions crates/ot-core/src/kos/receiver.rs
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@ use crate::{

use itybity::{BitLength, FromBitIterator, IntoBitIterator, IntoBits};
use mpz_common::future::{MaybeDone, Sender, new_output};
use mpz_core::{Block, prg::Prg};
use mpz_core::{Block, aes::FIXED_KEY_AES, prg::Prg};

use rand::{Rng as _, SeedableRng};
use rand_core::RngCore;
Expand All @@ -29,6 +29,7 @@ pub struct Receiver<T: state::State = state::Initialized> {
alloc: usize,
transfer_id: TransferId,
queue: VecDeque<Queued>,
instance_id: Block,
state: T,
}

Expand All @@ -48,7 +49,8 @@ impl Receiver {
/// # Arguments
///
/// * `config` - The Receiver's configuration
pub fn new(config: ReceiverConfig) -> Self {
/// * `instance_id` - Domain separator; must match the paired sender.
pub fn new(config: ReceiverConfig, instance_id: Block) -> Self {
Receiver {
config,
// We need to extend SSP OTs for the consistency check.
Expand All @@ -57,6 +59,7 @@ impl Receiver {
alloc: SSP,
transfer_id: TransferId::default(),
queue: VecDeque::default(),
instance_id,
state: state::Initialized {},
}
}
Expand All @@ -67,15 +70,19 @@ impl Receiver {
///
/// * `seeds` - The receiver's rng seeds
pub fn setup(self, seeds: [[Block; 2]; CSP]) -> Receiver<state::Extension> {
let instance_id = self.instance_id;
Receiver {
config: self.config,
alloc: self.alloc,
transfer_id: self.transfer_id,
queue: self.queue,
instance_id,
state: state::Extension {
rngs: seeds
.into_iter()
.map(|seeds| seeds.map(Prg::from_seed))
.map(|seeds| {
seeds.map(|seed| Prg::from_seed(FIXED_KEY_AES.tccr(instance_id, seed)))
})
.collect(),
msgs: Vec::default(),
choices: Vec::default(),
Expand Down
15 changes: 12 additions & 3 deletions crates/ot-core/src/kos/sender.rs
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@ use crate::{

use itybity::ToBits;
use mpz_common::future::{MaybeDone, Sender as OutputSender, new_output};
use mpz_core::{Block, prg::Prg};
use mpz_core::{Block, aes::FIXED_KEY_AES, prg::Prg};

use rand::{Rng as _, SeedableRng, rng};

Expand All @@ -35,6 +35,7 @@ pub struct Sender<T: state::State = state::Initialized> {
queue: VecDeque<Queued>,
transfer_id: TransferId,
delta: Block,
instance_id: Block,
state: T,
}

Expand All @@ -55,7 +56,9 @@ impl Sender<state::Initialized> {
///
/// * `config` - Sender's configuration.
/// * `delta` - Global COT correlation.
pub fn new(config: SenderConfig, delta: Block) -> Self {
/// * `instance_id` - Domain separator; must match the paired receiver and
/// differ across instances that reuse `delta`.
pub fn new(config: SenderConfig, delta: Block, instance_id: Block) -> Self {
Sender {
config,
// We need to extend SSP OTs for the consistency check.
Expand All @@ -65,6 +68,7 @@ impl Sender<state::Initialized> {
transfer_id: TransferId::default(),
queue: VecDeque::default(),
delta,
instance_id,
state: state::Initialized::default(),
}
}
Expand All @@ -75,14 +79,19 @@ impl Sender<state::Initialized> {
///
/// * `seeds` - The rng seeds chosen during base OT
pub fn setup(self, seeds: [Block; CSP]) -> Sender<state::Extension> {
let instance_id = self.instance_id;
Sender {
config: self.config,
alloc: self.alloc,
transfer_id: self.transfer_id,
queue: self.queue,
delta: self.delta,
instance_id,
state: state::Extension {
rngs: seeds.into_iter().map(Prg::from_seed).collect(),
rngs: seeds
.into_iter()
.map(|seed| Prg::from_seed(FIXED_KEY_AES.tccr(instance_id, seed)))
.collect(),
keys: Vec::default(),
extended: false,
unchecked_qs_trans: Vec::default(),
Expand Down
4 changes: 2 additions & 2 deletions crates/ot/src/kos.rs
Original file line number Diff line number Diff line change
Expand Up @@ -31,8 +31,8 @@ mod tests {
let mut rng = StdRng::seed_from_u64(0);
let (base_sender, base_receiver) = ideal_ot();
let delta = Block::random(&mut rng);
let sender = Sender::new(SenderConfig::default(), delta, base_receiver);
let receiver = Receiver::new(ReceiverConfig::default(), base_sender);
let sender = Sender::new(SenderConfig::default(), delta, Block::ZERO, base_receiver);
let receiver = Receiver::new(ReceiverConfig::default(), Block::ZERO, base_sender);

test_rcot(sender, receiver, 128, 1).await;
}
Expand Down
5 changes: 3 additions & 2 deletions crates/ot/src/kos/receiver.rs
Original file line number Diff line number Diff line change
Expand Up @@ -40,12 +40,13 @@ impl<BaseOT> Receiver<BaseOT> {
/// # Arguments
///
/// * `config` - The Receiver's configuration.
/// * `instance_id` - Domain separator; must match the paired sender.
/// * `base_ot` - Base OT.
pub fn new(config: ReceiverConfig, base_ot: BaseOT) -> Self {
pub fn new(config: ReceiverConfig, instance_id: Block, base_ot: BaseOT) -> Self {
Self {
state: State::Initialized {
base_ot,
receiver: Core::new(config),
receiver: Core::new(config, instance_id),
},
}
}
Expand Down
6 changes: 4 additions & 2 deletions crates/ot/src/kos/sender.rs
Original file line number Diff line number Diff line change
Expand Up @@ -40,12 +40,14 @@ impl<BaseOT> Sender<BaseOT> {
///
/// * `config` - The Sender's configuration.
/// * `delta` - Global COT correlation.
/// * `instance_id` - Domain separator; must match the paired receiver and
/// differ across instances that reuse `delta`.
/// * `base_ot` - Base OT.
pub fn new(config: SenderConfig, delta: Block, base_ot: BaseOT) -> Self {
pub fn new(config: SenderConfig, delta: Block, instance_id: Block, base_ot: BaseOT) -> Self {
Self {
state: State::Initialized {
base_ot,
sender: Core::new(config, delta),
sender: Core::new(config, delta, instance_id),
},
}
}
Expand Down