Module ot

Module ot 

Source
Expand description

Oblivious Transfer for private information retrieval.

This module implements a 1-out-of-N oblivious transfer protocol where:

  • A sender has N items (messages)
  • A receiver wants to retrieve one of the N items by index
  • The sender doesn’t learn which item was chosen
  • The receiver doesn’t learn anything about the other items

§Use Cases for CHIE Protocol

  • Private P2P content discovery (receiver queries without revealing interest)
  • Privacy-preserving content catalog browsing
  • Anonymous chunk retrieval from peers
  • Private database queries in distributed systems

§Protocol Overview

  1. Receiver generates keypairs for each possible choice
  2. Receiver encrypts the chosen index’s public key, randomizes others
  3. Sender encrypts each message with corresponding receiver public key
  4. Receiver can only decrypt the chosen message

§Example

use chie_crypto::ot::*;

// Sender has 3 items
let items = vec![
    b"Item 0".to_vec(),
    b"Item 1".to_vec(),
    b"Item 2".to_vec(),
];

// Receiver wants item at index 1
let receiver = OTReceiver::new(items.len(), 1).unwrap();
let request = receiver.create_request();

// Sender responds
let sender = OTSender::new();
let response = sender.respond(&request, &items).unwrap();

// Receiver retrieves only the chosen item
let retrieved = receiver.retrieve(&response).unwrap();
assert_eq!(retrieved, b"Item 1");

Structs§

OTReceiver
Receiver in oblivious transfer protocol.
OTRequest
Oblivious transfer request from receiver.
OTResponse
Oblivious transfer response from sender.
OTSender
Sender in oblivious transfer protocol.

Enums§

OTError
Errors that can occur during oblivious transfer operations.

Type Aliases§

OTResult
Result type for oblivious transfer operations.