Skip to content

Commit 27af62d

Browse files
authored
Merge pull request #15 from nategraf/victor/opt-oct15
Avoid recomputation of the credential public key during verification
2 parents ca0a906 + 82073d3 commit 27af62d

File tree

3 files changed

+23
-9
lines changed

3 files changed

+23
-9
lines changed

ooniauth-core/benches/bench_server.rs

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,7 @@ fn setup() -> (ThreadRng, UserState, ServerState) {
1515
// For now we will only care about server functions, specially handling submit and
1616
// registration, since those are the most important bottleneck for our backend
1717
fn bench_registration(c: &mut Criterion) {
18-
let (mut rng, user, mut server) = setup();
18+
let (mut rng, user, server) = setup();
1919

2020
// Create the request
2121
let (registration_req, _) = user.request(&mut rng).unwrap();
@@ -25,14 +25,14 @@ fn bench_registration(c: &mut Criterion) {
2525
}
2626

2727
fn bench_submit(c: &mut Criterion) {
28-
let (mut rng, mut user, mut server) = setup();
28+
let (mut rng, mut user, server) = setup();
2929

3030
c.bench_function("server.handle_submit", |b| {
3131
let (registration_req, reg_state) = user.request(&mut rng).unwrap();
3232
let resp = server.open_registration(registration_req).unwrap();
3333
user.handle_response(reg_state, resp)
3434
.expect("Should handle response properly");
35-
let today = server.today();
35+
let today = ServerState::today();
3636
let cc = "VE";
3737
let asn = "AS1234";
3838

@@ -52,8 +52,8 @@ fn bench_submit(c: &mut Criterion) {
5252
black_box(&mut rng),
5353
black_box(req.clone()),
5454
black_box(&nym),
55-
black_box(cc.into()),
56-
black_box(asn.into()),
55+
black_box(cc),
56+
black_box(asn),
5757
black_box(age_range.clone()),
5858
black_box(msm_range.clone()),
5959
)

ooniauth-core/src/registration.rs

Lines changed: 14 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,19 @@ CMZ! { UserAuthCredential:
2121
measurement_count
2222
}
2323

24+
impl UserAuthCredential {
25+
/// Set the public key and private key for this credential. Assumes the keypair is well-formed.
26+
pub(crate) fn set_keypair(
27+
&mut self,
28+
privkey: CMZPrivkey<G>,
29+
pubkey: CMZPubkey<G>,
30+
) -> &mut Self {
31+
self.privkey = privkey;
32+
self.pubkey = pubkey;
33+
self
34+
}
35+
}
36+
2437
muCMZProtocol! {open_registration,
2538
,
2639
UAC: UserAuthCredential { nym_id: J, age: S, measurement_count: I},
@@ -76,7 +89,7 @@ impl ServerState {
7689
SESSION_ID,
7790
recvreq,
7891
|UAC: &mut UserAuthCredential| {
79-
UAC.set_privkey(&self.sk);
92+
UAC.set_keypair(self.sk.clone(), self.pp.clone());
8093
UAC.measurement_count = Some(Scalar::ZERO);
8194
UAC.age = Some(ServerState::today().into());
8295
Ok(())

ooniauth-core/src/submit.rs

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -170,14 +170,15 @@ impl ServerState {
170170
};
171171

172172
let server_sk = self.sk.clone();
173+
let server_pp = self.pp.clone();
173174
match submit::handle(
174175
rng,
175176
SESSION_ID,
176177
recvreq,
177178
move |Old: &mut UserAuthCredential, New: &mut UserAuthCredential| {
178179
// Set the private key for the credentials - this is essential for the protocol
179-
Old.set_privkey(&server_sk);
180-
New.set_privkey(&server_sk);
180+
Old.set_keypair(server_sk.clone(), server_pp.clone());
181+
New.set_keypair(server_sk.clone(), server_pp.clone());
181182

182183
// The protocol should populate Old and New from the client's proof
183184
// We don't set the values here - they come from the client's proof
@@ -231,7 +232,7 @@ mod tests {
231232
let rng = &mut rand::thread_rng();
232233

233234
// Setup server and user
234-
let mut server_state = ServerState::new(rng);
235+
let server_state = ServerState::new(rng);
235236
let mut user_state = UserState::new(server_state.public_parameters());
236237

237238
// First do registration to get a credential

0 commit comments

Comments
 (0)