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
10 changes: 5 additions & 5 deletions client/src/lib.rs
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,7 @@ use serde::{Deserialize, Serialize};
use tracing::debug;
use web_prover_core::{
manifest::Manifest,
proof::{SignedVerificationReply, TeeProof},
proof::{NotarizationResult, SignedVerificationReply},
};

use crate::error::WebProverClientError;
Expand All @@ -21,7 +21,7 @@ pub struct ProxyConfig {
pub manifest: Manifest,
}

pub async fn proxy(config: config::Config) -> Result<TeeProof, WebProverClientError> {
pub async fn proxy(config: config::Config) -> Result<NotarizationResult, WebProverClientError> {
let session_id = config.session_id.clone();

let url = format!(
Expand Down Expand Up @@ -50,8 +50,8 @@ pub async fn proxy(config: config::Config) -> Result<TeeProof, WebProverClientEr

let response = client.post(url).json(&proxy_config).send().await?;
assert_eq!(response.status(), hyper::StatusCode::OK);
let tee_proof = response.json::<TeeProof>().await?;
Ok(tee_proof)
let notarization_result = response.json::<NotarizationResult>().await?;
Ok(notarization_result)
}

pub async fn verify<T: Serialize>(
Expand All @@ -75,7 +75,7 @@ pub async fn verify<T: Serialize>(
};

let response = client.post(url).json(&verify_body).send().await?;
assert!(response.status() == hyper::StatusCode::OK, "response={:?}", response);
assert_eq!(response.status(), hyper::StatusCode::OK, "response={:?}", response);
let verify_response = response.json::<SignedVerificationReply>().await?;

debug!("\n{:?}\n\n", verify_response.clone());
Expand Down
10 changes: 8 additions & 2 deletions client/src/main.rs
Original file line number Diff line number Diff line change
Expand Up @@ -32,8 +32,14 @@ async fn main() -> Result<(), WebProverClientError> {
let mut config: Config = serde_json::from_str(&config_json)?;
config.set_session_id();

let proof = web_prover_client::proxy(config).await?;
let proof_json = serde_json::to_string_pretty(&proof)?;
let result = web_prover_client::proxy(config).await?;

if result.errors.is_some() {
println!("Proving Failed: {:?}", result.errors);
return Ok(());
}

let proof_json = serde_json::to_string_pretty(&result.tee_proof)?;
println!("Proving Successful: proof_len={:?}", proof_json.len());
Ok(())
}
6 changes: 6 additions & 0 deletions core/src/proof.rs
Original file line number Diff line number Diff line change
Expand Up @@ -35,3 +35,9 @@ impl TryFrom<TeeProof> for Vec<u8> {
pub struct TeeProofData {
pub manifest_hash: Vec<u8>,
}

#[derive(Serialize, Deserialize, Debug, Clone)]
pub struct NotarizationResult {
pub tee_proof: Option<TeeProof>,
pub errors: Option<Vec<String>>,
}
84 changes: 84 additions & 0 deletions fixture/client.html.tee.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,84 @@
{
"mode": "TEE",
"notary_host": "localhost",
"notary_port": 7443,
"notary_ca_cert": "MIIFszCCA5ugAwIBAgIUeXLQmnjeXsHpGji7xA8oJjjw7WwwDQYJKoZIhvcNAQELBQAwaTELMAkGA1UEBhMCVVMxEzARBgNVBAgMCkNhbGlmb3JuaWExEjAQBgNVBAcMCVBhbG8gQWx0bzEVMBMGA1UECgwMT3JnYW5pemF0aW9uMRowGAYDVQQDDBFMb2NhbGhvc3QgUm9vdCBDQTAeFw0yNDA2MDcyMjUyNDBaFw0yOTA2MDYyMjUyNDBaMGkxCzAJBgNVBAYTAlVTMRMwEQYDVQQIDApDYWxpZm9ybmlhMRIwEAYDVQQHDAlQYWxvIEFsdG8xFTATBgNVBAoMDE9yZ2FuaXphdGlvbjEaMBgGA1UEAwwRTG9jYWxob3N0IFJvb3QgQ0EwggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAwggIKAoICAQDIHMEL9gVSxT/J0qS4xDkDZs1d1UG0+z6NFLLsGdV7gu0ZJbDPlNd0kpjWsisVNB7TcqWoq5ROK5CR+6lZxXC8nbqr2YAJ2O8mHIXcYv7msAN3UYxtM6v1M7K+vNMJdDjZVAxcOKq5R7uUDUPw1weePz6eVEjntAW8mUjqkfnCqYml943Ud3724SkI5wyUT9rKS3bk6hvneq1ah/b1zRGDF2gp+T/oNe4ieS/LGoIUluE2csGRXtt542gpJnw5L54JASmGgt6hunUSWtoaht7Qxv6hYpieu4iHqZY1kfcFDjDH2WI16g1YqrWHzk1l7vWNLVDEcK3kdSQ1GmYAij8ZjAi0LJizLwtN//EkfxiOPlV435itK3uugY+etxrk77BeA6PmVcpZeLLXYuKSrzfaBh0ifP2p0uRlShURi5Rz4IE0I7wHkZ44x9MKYv8YzXK7O29HD158tgorxqwwKmkHqSxWpp7SRKvNnMulHN/el+IKDrPeBhVXsSSkd6U+/H61q7i0SY9TqqhdiMQLW/efK9LkVRen5myhwqogwiF/42Jp2nrCeuzv5YDsAFSrQ0lukW+Hz7FXV+0axnKeXZ08Nd+IS1BhGyMgHo6PWMP1fWyfO0DJVUfIqrHqvBy8bW0yNOuhiyU2oeyDRKv75OMxpIrUeX3qvmrVcYUPvfXsVQIDAQABo1MwUTAdBgNVHQ4EFgQUlro6UuKRY+lHZ3T4FQMhoQAJ2a8wHwYDVR0jBBgwFoAUlro6UuKRY+lHZ3T4FQMhoQAJ2a8wDwYDVR0TAQH/BAUwAwEB/zANBgkqhkiG9w0BAQsFAAOCAgEARliSCLdjNI5fFkNwXDK6k6jN5hITrY07XIawUIEwinjQqgLkYFvzXbMtfLwsWmxMPjDVYYDa5Y2NAGcH08b//2z9EuHxMOTOFTKr59BEcVxV1cxV+lspAunH8DLSlLJhf/EeR+MhIIHAfhlE8V7lvlE1EbM+Uj5JYIeefV/4omsGrphyHD3oSJAQDae0su200I/i2yAaTrwXLZ4HtaXsnxKZ4PMPFWaLvMQ8DsLgx2VB3/vQJn74Xepau6mYEWlRnUu90mj79gJOnwBKPlLojF6dJOMIJ2YHr9fI8sUfkVwPFVlkDKJcr0ll5RL3O/naNlLQZuOgijOM5YF5iTrefliVodEHpBPID2mhtq/E+ZIQWLpik8ulsJ8ufN9YfrbjbsiC/KeoMqoFCImRSyMGQDMADo4EV3DNfDFvfrHx0qBMmJ0nkhuGobphegMPCjZ3axvQwQulKuHXmFpAvGYcpK/twBMC1MJkV04tIwVEDZG6id5oKYtrIXHdSFshf6r3z4bbgq6kJnOxZ8Vo4cEw/dgc3hRivr+HnxOJcEk2CTQlCVOiCQAg64OqDEOoswVg6nzoO3RJhFatu+abO22MIXPNGma02zBoQZLYpGzL9z6pMnPKjL15G9H1SYVSTGhmq+GVtdRibg8rLBciSm3ERd7gNRqvYP5GrjCtUIbOTEc=",
"target_method": "GET",
"target_url": "https://en.wikipedia.org/wiki/Claude_Shannon",
"target_headers": {},
"target_body": "",
"max_sent_data": 10000,
"max_recv_data": 10000,
"manifest": {
"manifestVersion": "1",
"id": "wikipedia-claude-shannon",
"title": "Wikipedia Claude Shannon",
"description": "Generate a proof that you have visited the Claude Shannon Wikipedia page",
"prepareUrl": "https://en.wikipedia.org/wiki/Claude_Shannon",
"request": {
"method": "GET",
"version": "HTTP/1.1",
"url": "https://en.wikipedia.org/wiki/Claude_Shannon",
"headers": {}
},
"response": {
"status": "200",
"version": "HTTP/1.1",
"message": "OK",
"headers": {
"Content-Type": "text/html; charset=UTF-8"
},
"body": {
"format": "html",
"extractors": [
{
"id": "pageTitle",
"description": "Extract the page title",
"selector": [
"title"
],
"type": "string",
"predicates": [
{
"type": "value",
"comparison": "contains",
"value": "Claude Shannon"
}
]
},
{
"id": "roles",
"description": "Extract his professional roles",
"selector": [
"div#mw-content-text",
"div.mw-parser-output",
"p",
"a"
],
"type": "array",
"predicates": [
{
"type": "value",
"comparison": "contains",
"value": "mathematician",
"case_sensitive": false
},
{
"type": "value",
"comparison": "contains",
"value": "electrical engineer",
"case_sensitive": false
},
{
"type": "value",
"comparison": "contains",
"value": "cryptographer",
"case_sensitive": false
}
]
}
]
}
}
}
}
92 changes: 0 additions & 92 deletions fixture/client.html.tee_tcp_local.json

This file was deleted.

88 changes: 33 additions & 55 deletions fixture/client.proxy.json → fixture/client.json.proxy.json
Original file line number Diff line number Diff line change
Expand Up @@ -3,62 +3,40 @@
"notary_port": 7443,
"notary_ca_cert": "MIIFszCCA5ugAwIBAgIUeXLQmnjeXsHpGji7xA8oJjjw7WwwDQYJKoZIhvcNAQELBQAwaTELMAkGA1UEBhMCVVMxEzARBgNVBAgMCkNhbGlmb3JuaWExEjAQBgNVBAcMCVBhbG8gQWx0bzEVMBMGA1UECgwMT3JnYW5pemF0aW9uMRowGAYDVQQDDBFMb2NhbGhvc3QgUm9vdCBDQTAeFw0yNDA2MDcyMjUyNDBaFw0yOTA2MDYyMjUyNDBaMGkxCzAJBgNVBAYTAlVTMRMwEQYDVQQIDApDYWxpZm9ybmlhMRIwEAYDVQQHDAlQYWxvIEFsdG8xFTATBgNVBAoMDE9yZ2FuaXphdGlvbjEaMBgGA1UEAwwRTG9jYWxob3N0IFJvb3QgQ0EwggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAwggIKAoICAQDIHMEL9gVSxT/J0qS4xDkDZs1d1UG0+z6NFLLsGdV7gu0ZJbDPlNd0kpjWsisVNB7TcqWoq5ROK5CR+6lZxXC8nbqr2YAJ2O8mHIXcYv7msAN3UYxtM6v1M7K+vNMJdDjZVAxcOKq5R7uUDUPw1weePz6eVEjntAW8mUjqkfnCqYml943Ud3724SkI5wyUT9rKS3bk6hvneq1ah/b1zRGDF2gp+T/oNe4ieS/LGoIUluE2csGRXtt542gpJnw5L54JASmGgt6hunUSWtoaht7Qxv6hYpieu4iHqZY1kfcFDjDH2WI16g1YqrWHzk1l7vWNLVDEcK3kdSQ1GmYAij8ZjAi0LJizLwtN//EkfxiOPlV435itK3uugY+etxrk77BeA6PmVcpZeLLXYuKSrzfaBh0ifP2p0uRlShURi5Rz4IE0I7wHkZ44x9MKYv8YzXK7O29HD158tgorxqwwKmkHqSxWpp7SRKvNnMulHN/el+IKDrPeBhVXsSSkd6U+/H61q7i0SY9TqqhdiMQLW/efK9LkVRen5myhwqogwiF/42Jp2nrCeuzv5YDsAFSrQ0lukW+Hz7FXV+0axnKeXZ08Nd+IS1BhGyMgHo6PWMP1fWyfO0DJVUfIqrHqvBy8bW0yNOuhiyU2oeyDRKv75OMxpIrUeX3qvmrVcYUPvfXsVQIDAQABo1MwUTAdBgNVHQ4EFgQUlro6UuKRY+lHZ3T4FQMhoQAJ2a8wHwYDVR0jBBgwFoAUlro6UuKRY+lHZ3T4FQMhoQAJ2a8wDwYDVR0TAQH/BAUwAwEB/zANBgkqhkiG9w0BAQsFAAOCAgEARliSCLdjNI5fFkNwXDK6k6jN5hITrY07XIawUIEwinjQqgLkYFvzXbMtfLwsWmxMPjDVYYDa5Y2NAGcH08b//2z9EuHxMOTOFTKr59BEcVxV1cxV+lspAunH8DLSlLJhf/EeR+MhIIHAfhlE8V7lvlE1EbM+Uj5JYIeefV/4omsGrphyHD3oSJAQDae0su200I/i2yAaTrwXLZ4HtaXsnxKZ4PMPFWaLvMQ8DsLgx2VB3/vQJn74Xepau6mYEWlRnUu90mj79gJOnwBKPlLojF6dJOMIJ2YHr9fI8sUfkVwPFVlkDKJcr0ll5RL3O/naNlLQZuOgijOM5YF5iTrefliVodEHpBPID2mhtq/E+ZIQWLpik8ulsJ8ufN9YfrbjbsiC/KeoMqoFCImRSyMGQDMADo4EV3DNfDFvfrHx0qBMmJ0nkhuGobphegMPCjZ3axvQwQulKuHXmFpAvGYcpK/twBMC1MJkV04tIwVEDZG6id5oKYtrIXHdSFshf6r3z4bbgq6kJnOxZ8Vo4cEw/dgc3hRivr+HnxOJcEk2CTQlCVOiCQAg64OqDEOoswVg6nzoO3RJhFatu+abO22MIXPNGma02zBoQZLYpGzL9z6pMnPKjL15G9H1SYVSTGhmq+GVtdRibg8rLBciSm3ERd7gNRqvYP5GrjCtUIbOTEc=",
"target_body": "",
"proving": {
"manifest": {
"manifestVersion": "1",
"id": "reddit-user-karma",
"title": "Total Reddit Karma",
"description": "Generate a proof that you have a certain amount of karma",
"prepareUrl": "https://www.reddit.com/login/",
"request": {
"method": "GET",
"version": "HTTP/1.1",
"url": "https://gist.githubusercontent.com/mattes/23e64faadb5fd4b5112f379903d2572e/raw/74e517a60c21a5c11d94fec8b572f68addfade39/example.json",
"headers": {
},
"body": {
"userId": "<% userId %>"
},
"vars": {
"userId": {
"description": "Reddit username",
"required": true,
"pattern": "^[A-Za-z0-9_-]{3,20}$"
},
"authToken": {
"description": "Authentication token",
"required": false,
"default": "abcdef1234567890abcdef1234567890",
"pattern": "^[A-Za-z0-9]{32}$"
}
},
"extra": {
"headers": {
"User-Agent": "Mozilla/5.0 (Linux; Android 6.0; Nexus 5 Build/MRA58N) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/124.0.0.0 Mobile Safari/537.36",
"Content-Type": "application/json"
}
}
"target_method": "GET",
"target_url": "https://gist.githubusercontent.com/mattes/23e64faadb5fd4b5112f379903d2572e/raw/74e517a60c21a5c11d94fec8b572f68addfade39/example.json",
"target_headers": {},
"manifest": {
"manifestVersion": "1",
"id": "hello-world",
"title": "Hello World example",
"description": "Prove that a gist contains a hello world message",
"prepareUrl": "https://gist.githubusercontent.com/mattes/23e64faadb5fd4b5112f379903d2572e/raw/74e517a60c21a5c11d94fec8b572f68addfade39/example.json",
"request": {
"method": "GET",
"version": "HTTP/1.1",
"url": "https://gist.githubusercontent.com/mattes/23e64faadb5fd4b5112f379903d2572e/raw/74e517a60c21a5c11d94fec8b572f68addfade39/example.json",
"headers": {}
},
"response": {
"status": "200",
"version": "HTTP/1.1",
"message": "OK",
"headers": {
"Content-Type": "text/plain; charset=utf-8"
},
"response": {
"status": "200",
"version": "HTTP/1.1",
"message": "OK",
"headers": {
"Content-Type": "text/plain; charset=utf-8"
},
"body": {
"format": "json",
"extractors": [
{
"id": "helloValue",
"description": "Extract the hello value",
"selector": [
"hello"
],
"type": "string"
}
]
}
"body": {
"format": "json",
"extractors": [
{
"id": "helloValue",
"description": "Extract the hello value",
"selector": [
"hello"
],
"type": "string"
}
]
}
}
}
Expand Down
Loading