@@ -4,10 +4,13 @@ use base64::prelude::BASE64_STANDARD;
44use base64:: Engine ;
55use bincode;
66use cmz:: cmz_group_init;
7- use curve25519_dalek:: { ristretto:: RistrettoPoint as G , RistrettoPoint } ;
8- use ooniauth_core:: registration:: UserAuthCredential ;
7+ use curve25519_dalek:: { ristretto:: RistrettoPoint as G } ;
8+ use ooniauth_core:: {
9+ registration:: UserAuthCredential ,
10+ submit:: { digest_point, submit_measurement_hash}
11+ } ;
912use serde:: { Deserialize , Serialize } ;
10- use sha2:: { Digest , Sha256 , Sha512 } ;
13+ use sha2:: { Sha512 } ;
1114
1215use crate :: client:: build_client;
1316use crate :: errors:: OoniError ;
@@ -55,7 +58,7 @@ struct RegistrationResponse {
5558#[ derive( Serialize , Deserialize ) ]
5659struct SubmitMeasurementPayload {
5760 format : String ,
58- content : serde_json :: Value ,
61+ content : String ,
5962 nym : Option < String > ,
6063 zkp_request : Option < String > ,
6164 manifest_version : Option < String > ,
@@ -90,13 +93,6 @@ fn decode_credential(credential: &str) -> Result<UserAuthCredential, OoniError>
9093 bincode:: deserialize ( & cred_bytes) . map_err ( Into :: into)
9194}
9295
93- fn digest_point ( point : RistrettoPoint ) -> [ u8 ; 32 ] {
94- let digest = Sha256 :: digest ( point. compress ( ) . as_bytes ( ) ) ;
95- let mut out = [ 0u8 ; 32 ] ;
96- out. copy_from_slice ( & digest) ;
97- out
98- }
99-
10096pub fn get_probe_id (
10197 credential_b64 : String ,
10298 probe_asn : String ,
@@ -194,7 +190,6 @@ pub fn userauth_submit(
194190 probe_asn : String ,
195191 credential_config : Option < CredentialConfig > ,
196192) -> Result < CredentialResult , OoniError > {
197- let measurement_content: serde_json:: Value = serde_json:: from_str ( & content) ?;
198193 let ( submit_payload, auth_state) = match credential_config {
199194 Some ( config) => {
200195 // Initialize user state
@@ -204,12 +199,15 @@ pub fn userauth_submit(
204199 let credential = decode_credential ( & config. credential ) ?;
205200 user_state. set_credential ( credential) ;
206201
202+ let measurement_hash = submit_measurement_hash ( content. as_bytes ( ) ) ;
203+
207204 // Create submit request
208205 let mut rng = rand:: thread_rng ( ) ;
209206 let ( ( submit_request, submit_state) , probe_id) = user_state. submit_request (
210207 & mut rng,
211208 probe_cc. clone ( ) ,
212209 probe_asn. clone ( ) ,
210+ & measurement_hash,
213211 Range {
214212 start : config. age_range . min ,
215213 end : config. age_range . max ,
@@ -224,7 +222,7 @@ pub fn userauth_submit(
224222
225223 let payload = SubmitMeasurementPayload {
226224 format : "json" . to_string ( ) ,
227- content : measurement_content ,
225+ content : content ,
228226 nym : Some ( b64_encode ( & probe_id) ) ,
229227 zkp_request : Some ( b64_encode ( & request_bytes) ) ,
230228 manifest_version : Some ( config. manifest_version ) ,
@@ -236,7 +234,7 @@ pub fn userauth_submit(
236234 None => {
237235 let payload = SubmitMeasurementPayload {
238236 format : "json" . to_string ( ) ,
239- content : measurement_content ,
237+ content : content ,
240238 nym : None ,
241239 zkp_request : None ,
242240 manifest_version : None ,
0 commit comments