@@ -4,34 +4,36 @@ use tokio::runtime::Runtime;
44
55use privacypass:: {
66 PPCipherSuite ,
7+ amortized_tokens:: {
8+ AmortizedBatchTokenRequest , AmortizedBatchTokenResponse , AmortizedToken , server:: Server ,
9+ } ,
710 auth:: authenticate:: TokenChallenge ,
8- batched_tokens:: { BatchedToken , TokenRequest , TokenResponse , server:: Server } ,
911 test_utils:: { nonce_store:: MemoryNonceStore , private_memory_store:: MemoryKeyStoreVoprf } ,
1012} ;
1113use voprf:: Ristretto255 ;
1214
13- async fn create_batched_keypair < CS : PPCipherSuite > (
15+ async fn create_amortized_keypair < CS : PPCipherSuite > (
1416 key_store : MemoryKeyStoreVoprf < CS > ,
1517 server : Server < CS > ,
1618) {
1719 let _public_key = server. create_keypair ( & key_store) . await . unwrap ( ) ;
1820}
1921
20- async fn issue_batched_token_response < CS : PPCipherSuite > (
22+ async fn issue_amortized_token_response < CS : PPCipherSuite > (
2123 key_store : MemoryKeyStoreVoprf < CS > ,
2224 server : Server < CS > ,
23- token_request : TokenRequest < CS > ,
24- ) -> TokenResponse < CS > {
25+ token_request : AmortizedBatchTokenRequest < CS > ,
26+ ) -> AmortizedBatchTokenResponse < CS > {
2527 server
2628 . issue_token_response ( & key_store, token_request)
2729 . await
2830 . unwrap ( )
2931}
3032
31- async fn redeem_batched_token < CS : PPCipherSuite > (
33+ async fn redeem_amortized_token < CS : PPCipherSuite > (
3234 key_store : MemoryKeyStoreVoprf < CS > ,
3335 nonce_store : MemoryNonceStore ,
34- token : BatchedToken < CS > ,
36+ token : AmortizedToken < CS > ,
3537 server : Server < CS > ,
3638) {
3739 server
@@ -40,31 +42,37 @@ async fn redeem_batched_token<CS: PPCipherSuite>(
4042 . unwrap ( ) ;
4143}
4244
43- pub fn criterion_batched_p384_benchmark ( c : & mut Criterion ) {
45+ pub fn criterion_amortized_p384_benchmark ( c : & mut Criterion ) {
4446 flow :: < NistP384 > ( c) ;
4547}
4648
47- pub fn criterion_batched_ristretto255_benchmark ( c : & mut Criterion ) {
49+ pub fn criterion_amortized_ristretto255_benchmark ( c : & mut Criterion ) {
4850 flow :: < Ristretto255 > ( c) ;
4951}
5052
5153pub fn flow < CS : PPCipherSuite > ( c : & mut Criterion ) {
5254 const NR : u16 = 100 ;
5355 // Key pair generation
54- c. bench_function ( "BATCHED P384 SERVER: Generate key pair" , move |b| {
55- b. to_async ( FuturesExecutor ) . iter_with_setup (
56- || {
57- let key_store = MemoryKeyStoreVoprf :: < CS > :: default ( ) ;
58- let server = Server :: new ( ) ;
59- ( key_store, server)
60- } ,
61- |( key_store, server) | create_batched_keypair ( key_store, server) ,
62- ) ;
63- } ) ;
56+ c. bench_function (
57+ & format ! ( "AMORTIZED SERVER ({}): Generate key pair" , CS :: ID ) ,
58+ move |b| {
59+ b. to_async ( FuturesExecutor ) . iter_with_setup (
60+ || {
61+ let key_store = MemoryKeyStoreVoprf :: < CS > :: default ( ) ;
62+ let server = Server :: new ( ) ;
63+ ( key_store, server)
64+ } ,
65+ |( key_store, server) | create_amortized_keypair ( key_store, server) ,
66+ ) ;
67+ } ,
68+ ) ;
6469
6570 // Issue token request
6671 c. bench_function (
67- & format ! ( "BATCHED P384 CLIENT: Issue token request for {NR} tokens" ) ,
72+ & format ! (
73+ "AMORTIZED CLIENT ({}): Issue token request for {NR} tokens" ,
74+ CS :: ID
75+ ) ,
6876 move |b| {
6977 b. iter_with_setup (
7078 || {
@@ -82,15 +90,18 @@ pub fn flow<CS: PPCipherSuite>(c: &mut Criterion) {
8290 ( public_key, challenge)
8391 } ,
8492 |( public_key, challenge) | {
85- TokenRequest :: < CS > :: new ( public_key, & challenge, NR ) . unwrap ( ) ;
93+ AmortizedBatchTokenRequest :: < CS > :: new ( public_key, & challenge, NR ) . unwrap ( ) ;
8694 } ,
8795 ) ;
8896 } ,
8997 ) ;
9098
9199 // Issue token response
92100 c. bench_function (
93- & format ! ( "BATCHED P384 SERVER: Issue token response for {NR} tokens" ) ,
101+ & format ! (
102+ "AMORTIZED SERVER ({}): Issue token response for {NR} tokens" ,
103+ CS :: ID
104+ ) ,
94105 move |b| {
95106 b. to_async ( FuturesExecutor ) . iter_with_setup (
96107 || {
@@ -106,19 +117,19 @@ pub fn flow<CS: PPCipherSuite>(c: &mut Criterion) {
106117 & [ "example.com" . to_string ( ) ] ,
107118 ) ;
108119 let ( token_request, _token_state) =
109- TokenRequest :: new ( public_key, & challenge, NR ) . unwrap ( ) ;
120+ AmortizedBatchTokenRequest :: new ( public_key, & challenge, NR ) . unwrap ( ) ;
110121 ( key_store, server, token_request)
111122 } ,
112123 |( key_store, server, token_request) | {
113- issue_batched_token_response ( key_store, server, token_request)
124+ issue_amortized_token_response ( key_store, server, token_request)
114125 } ,
115126 ) ;
116127 } ,
117128 ) ;
118129
119130 // Issue token
120131 c. bench_function (
121- & format ! ( "BATCHED P384 CLIENT: Issue {NR} tokens" ) ,
132+ & format ! ( "AMORTIZED CLIENT ({}) : Issue {NR} tokens" , CS :: ID ) ,
122133 move |b| {
123134 b. iter_with_setup (
124135 || {
@@ -134,7 +145,7 @@ pub fn flow<CS: PPCipherSuite>(c: &mut Criterion) {
134145 & [ "example.com" . to_string ( ) ] ,
135146 ) ;
136147 let ( token_request, token_state) =
137- TokenRequest :: new ( public_key, & challenge, NR ) . unwrap ( ) ;
148+ AmortizedBatchTokenRequest :: new ( public_key, & challenge, NR ) . unwrap ( ) ;
138149 let token_response = rt. block_on ( async {
139150 server
140151 . issue_token_response ( & key_store, token_request)
@@ -151,35 +162,38 @@ pub fn flow<CS: PPCipherSuite>(c: &mut Criterion) {
151162 ) ;
152163
153164 // Redeem token
154- c. bench_function ( "BATCHED P384 SERVER: Redeem token" , move |b| {
155- b. to_async ( FuturesExecutor ) . iter_with_setup (
156- || {
157- let key_store = MemoryKeyStoreVoprf :: < CS > :: default ( ) ;
158- let nonce_store = MemoryNonceStore :: default ( ) ;
159- let server = Server :: new ( ) ;
160- let rt = Runtime :: new ( ) . unwrap ( ) ;
161- let public_key =
162- rt. block_on ( async { server. create_keypair ( & key_store) . await . unwrap ( ) } ) ;
163- let challenge = TokenChallenge :: new (
164- CS :: token_type ( ) ,
165- "example.com" ,
166- None ,
167- & [ "example.com" . to_string ( ) ] ,
168- ) ;
169- let ( token_request, token_state) =
170- TokenRequest :: new ( public_key, & challenge, NR ) . unwrap ( ) ;
171- let token_response = rt. block_on ( async {
172- server
173- . issue_token_response ( & key_store, token_request)
174- . await
175- . unwrap ( )
176- } ) ;
177- let tokens = token_response. issue_tokens ( & token_state) . unwrap ( ) ;
178- ( key_store, nonce_store, tokens, server)
179- } ,
180- |( key_store, nonce_store, tokens, server) | {
181- redeem_batched_token ( key_store, nonce_store, tokens[ 0 ] . clone ( ) , server)
182- } ,
183- ) ;
184- } ) ;
165+ c. bench_function (
166+ & format ! ( "AMORTIZED SERVER ({}): Redeem token" , CS :: ID ) ,
167+ move |b| {
168+ b. to_async ( FuturesExecutor ) . iter_with_setup (
169+ || {
170+ let key_store = MemoryKeyStoreVoprf :: < CS > :: default ( ) ;
171+ let nonce_store = MemoryNonceStore :: default ( ) ;
172+ let server = Server :: new ( ) ;
173+ let rt = Runtime :: new ( ) . unwrap ( ) ;
174+ let public_key =
175+ rt. block_on ( async { server. create_keypair ( & key_store) . await . unwrap ( ) } ) ;
176+ let challenge = TokenChallenge :: new (
177+ CS :: token_type ( ) ,
178+ "example.com" ,
179+ None ,
180+ & [ "example.com" . to_string ( ) ] ,
181+ ) ;
182+ let ( token_request, token_state) =
183+ AmortizedBatchTokenRequest :: new ( public_key, & challenge, NR ) . unwrap ( ) ;
184+ let token_response = rt. block_on ( async {
185+ server
186+ . issue_token_response ( & key_store, token_request)
187+ . await
188+ . unwrap ( )
189+ } ) ;
190+ let tokens = token_response. issue_tokens ( & token_state) . unwrap ( ) ;
191+ ( key_store, nonce_store, tokens, server)
192+ } ,
193+ |( key_store, nonce_store, tokens, server) | {
194+ redeem_amortized_token ( key_store, nonce_store, tokens[ 0 ] . clone ( ) , server)
195+ } ,
196+ ) ;
197+ } ,
198+ ) ;
185199}
0 commit comments