-
Notifications
You must be signed in to change notification settings - Fork 13
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
- Loading branch information
Showing
22 changed files
with
565 additions
and
47 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,13 @@ | ||
[package] | ||
name = "common" | ||
version = "0.1.0" | ||
edition = "2021" | ||
|
||
# See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html | ||
|
||
[dependencies] | ||
anyhow = "1.0.75" | ||
serde = "1.0.92" | ||
serde_derive = "1.0.92" | ||
tokio = { version = "1", features = ["full"] } | ||
tonic = { version = "0.8.1", features = ["tls", "transport"] } |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1 @@ | ||
pub mod tls; |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,48 @@ | ||
use anyhow::bail; | ||
use std::path::Path; | ||
use tonic::transport::{Certificate, Identity}; | ||
|
||
#[derive(Clone)] | ||
pub struct Config { | ||
pub ca_cert: Certificate, | ||
pub identity: Identity, | ||
} | ||
|
||
impl Config { | ||
pub async fn new( | ||
ca_cert_path: String, | ||
cert_path: String, | ||
key_path: String, | ||
) -> anyhow::Result<Self> { | ||
let (ca_cert, identity) = get_cert_and_identity(ca_cert_path, cert_path, key_path).await?; | ||
Ok(Config { ca_cert, identity }) | ||
} | ||
} | ||
|
||
async fn get_cert_and_identity( | ||
ca_cert_path: String, | ||
cert_path: String, | ||
key_path: String, | ||
) -> anyhow::Result<(Certificate, Identity)> { | ||
let ca_cert_path = Path::new(&ca_cert_path); | ||
let cert_path = Path::new(&cert_path); | ||
let key_path = Path::new(&key_path); | ||
if !ca_cert_path.is_file() || !cert_path.is_file() || !key_path.is_file() { | ||
bail!("both ca_cert_path, cert_path and key_path should be valid file") | ||
} | ||
|
||
let ca_cert = tokio::fs::read(ca_cert_path) | ||
.await | ||
.unwrap_or_else(|err| panic!("Failed to read {:?}, err: {:?}", ca_cert_path, err)); | ||
let ca_cert = Certificate::from_pem(ca_cert); | ||
|
||
let cert = tokio::fs::read(cert_path) | ||
.await | ||
.unwrap_or_else(|err| panic!("Failed to read {:?}, err: {:?}", cert_path, err)); | ||
let key = tokio::fs::read(key_path) | ||
.await | ||
.unwrap_or_else(|err| panic!("Failed to read {:?}, err: {:?}", key_path, err)); | ||
let identity = Identity::from_pem(cert, key); | ||
|
||
Ok((ca_cert, identity)) | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,19 @@ | ||
# README | ||
|
||
## Description | ||
|
||
The script file `gen_config.sh` allow you generate multi prover toml in a easy way. | ||
|
||
First, you should set these variables according to your environment. | ||
|
||
- provers | ||
- stage | ||
- snarks | ||
- tls | ||
- base_dir | ||
|
||
Then you can run this script in below way. | ||
|
||
```bash | ||
bash gen_config.sh | ||
``` |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,96 @@ | ||
#!/bin/bash | ||
|
||
# You should provide some variable to use this config bash | ||
provers=("localhost:50001" "localhost:50002") | ||
stage="localhost:50000" | ||
snarks=("localhost:50051") | ||
tls=false | ||
base_dir="/tmp/zkm/test/test_proof" | ||
|
||
# Generate tls certs | ||
if [ "$tls" = true ]; then | ||
IFS=':' read -r host port <<< "$stage" | ||
cd ./../../tools/certs | ||
bash certgen.sh --cn stage --ssl-dns $host | ||
rm -rf stage.csr | ||
id=1 | ||
for prover in "${provers[@]}"; do | ||
prover_name="prover${id}" | ||
IFS=':' read -r host port <<< "$prover" | ||
bash certgen.sh --cn $prover_name --ssl-dns ${host} | ||
rm -rf ${prover_name}.csr | ||
((id++)) | ||
done | ||
bash certgen.sh --cn client --ssl-dns localhost | ||
rm -rf client.csr | ||
rm -rf ca.srl | ||
rm -rf openssl.cnf | ||
cd - | ||
fi | ||
|
||
# Generate stage toml | ||
# Read templeta content first | ||
if [ "$tls" = true ]; then | ||
stage_template_content=$(cat stage_tls.toml.template) | ||
else | ||
stage_template_content=$(cat stage.toml.template) | ||
fi | ||
stage_config="$stage_template_content" | ||
IFS=':' read -r host port <<< "$stage" | ||
stage_config="${stage_config//\{\{addr\}\}/0.0.0.0:${port}}" | ||
# generate prover addrs | ||
prover_addrs="" | ||
for prover in "${provers[@]}"; do | ||
if [ -z "$prover_addrs" ]; then | ||
prover_addrs="$prover\"" | ||
else | ||
prover_addrs="$prover_addrs, \"$prover" | ||
fi | ||
done | ||
stage_config="${stage_config//\{\{prover_addrs\}\}/\"${prover_addrs}\"}" | ||
# generate snark addrs | ||
snark_addrs="" | ||
for snark in "${snarks[@]}"; do | ||
if [ -z "$snark_addrs" ]; then | ||
snark_addrs="$snark\"" | ||
else | ||
snark_addrs="$snark_addrs, \"$snark" | ||
fi | ||
done | ||
stage_config="${stage_config//\{\{snark_addrs\}\}/\"${snark_addrs}\"}" | ||
stage_config="${stage_config//\{\{base_dir\}\}/${base_dir}}" | ||
if [ "$tls" = true ]; then | ||
echo "$stage_config" > stage_tls.toml | ||
else | ||
echo "$stage_config" > stage.toml | ||
fi | ||
|
||
# Generate provers toml | ||
# Read templeta content first | ||
if [ "$tls" = true ]; then | ||
prover_template_content=$(cat prover_tls.toml.template) | ||
else | ||
prover_template_content=$(cat prover.toml.template) | ||
fi | ||
|
||
id=1 | ||
for prover in "${provers[@]}"; do | ||
if [ "$tls" = true ]; then | ||
prover_path="prover${id}_tls.toml" | ||
else | ||
prover_path="prover${id}.toml" | ||
fi | ||
IFS=':' read -r host port <<< "$prover" | ||
prover_config="$prover_template_content" | ||
addr="0.0.0.0:${port}" | ||
prover_config="${prover_config//\{\{addr\}\}/${addr}}" | ||
prover_config="${prover_config//\{\{prover_addrs\}\}/\"${addr}\"}" | ||
prover_config="${prover_config//\{\{base_dir\}\}/${base_dir}}" | ||
prover_config="${prover_config//\{\{prover_name\}\}/prover${id}}" | ||
if [ "$tls" = true ]; then | ||
echo "$prover_config" > "prover${id}_tls.toml" | ||
else | ||
echo "$prover_config" > "prover${id}.toml" | ||
fi | ||
((id++)) | ||
done |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,4 @@ | ||
addr = "{{addr}}" | ||
prover_addrs = [{{prover_addrs}}] | ||
snark_addrs = [] | ||
base_dir = "{{base_dir}}" |
This file was deleted.
Oops, something went wrong.
This file was deleted.
Oops, something went wrong.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,7 @@ | ||
addr = "{{addr}}" | ||
prover_addrs = [{{prover_addrs}}] | ||
snark_addrs = [] | ||
base_dir = "{{base_dir}}" | ||
ca_cert_path = "tools/certs/ca.pem" | ||
cert_path = "tools/certs/{{prover_name}}.pem" | ||
key_path = "tools/certs/{{prover_name}}.key" |
This file was deleted.
Oops, something went wrong.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,4 @@ | ||
addr = "{{addr}}" | ||
prover_addrs = [{{prover_addrs}}] | ||
snark_addrs = [{{snark_addrs}}] | ||
base_dir = "{{base_dir}}" |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,7 @@ | ||
addr = "{{addr}}" | ||
prover_addrs = [{{prover_addrs}}] | ||
snark_addrs = [{{snark_addrs}}] | ||
base_dir = "{{base_dir}}" | ||
ca_cert_path = "tools/certs/ca.pem" | ||
cert_path = "tools/certs/stage.pem" | ||
key_path = "tools/certs/stage.key" |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Oops, something went wrong.