Skip to content
Merged
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
4 changes: 2 additions & 2 deletions .github/workflows/ci.yml
Original file line number Diff line number Diff line change
Expand Up @@ -22,7 +22,7 @@ jobs:

- name: Run cargo fmt
uses: actions-rs/cargo@v1
continue-on-error: true # WARNING: only for this example, remove it!
continue-on-error: false
with:
command: fmt
args: --all -- --check
Expand Down Expand Up @@ -63,4 +63,4 @@ jobs:
uses: actions-rs/cargo@v1
with:
command: test
args: --all --verbose
args: --all --verbose
6 changes: 1 addition & 5 deletions crates/common/src/commit/request.rs
Original file line number Diff line number Diff line change
Expand Up @@ -40,11 +40,7 @@ pub struct SignRequest {
}

impl SignRequest {
pub fn new(
pubkey: BlsPublicKey,
is_proxy: bool,
object_root: [u8; 32],
) -> SignRequest {
pub fn new(pubkey: BlsPublicKey, is_proxy: bool, object_root: [u8; 32]) -> SignRequest {
Self { pubkey, is_proxy, object_root }
}

Expand Down
6 changes: 4 additions & 2 deletions crates/common/src/config/signer.rs
Original file line number Diff line number Diff line change
@@ -1,5 +1,4 @@
use bimap::BiHashMap;

use eyre::Result;
use serde::{Deserialize, Serialize};

Expand All @@ -8,7 +7,10 @@ use super::{
utils::{load_env_var, load_jwts},
CommitBoostConfig,
};
use crate::{loader::SignerLoader, types::{Chain, Jwt, ModuleId}};
use crate::{
loader::SignerLoader,
types::{Chain, Jwt, ModuleId},
};

#[derive(Debug, Serialize, Deserialize, Clone)]
pub struct SignerConfig {
Expand Down
3 changes: 1 addition & 2 deletions crates/common/src/config/utils.rs
Original file line number Diff line number Diff line change
Expand Up @@ -2,9 +2,8 @@ use bimap::BiHashMap;
use eyre::{Context, Result};
use serde::de::DeserializeOwned;

use crate::types::{Jwt, ModuleId};

use super::constants::JWTS_ENV;
use crate::types::{Jwt, ModuleId};

pub fn load_env_var(env: &str) -> Result<String> {
std::env::var(env).wrap_err(format!("{env} is not set"))
Expand Down
5 changes: 2 additions & 3 deletions crates/common/src/types.rs
Original file line number Diff line number Diff line change
@@ -1,5 +1,4 @@
use derive_more::{Deref, From, Into, Display};

use derive_more::{Deref, Display, From, Into};
use serde::{Deserialize, Serialize};

use crate::constants::{
Expand Down Expand Up @@ -54,4 +53,4 @@ pub struct ModuleId(pub String);
#[derive(Clone, Debug, Display, PartialEq, Eq, Hash, Deref, From, Into, Serialize, Deserialize)]
#[into(owned, ref, ref_mut)]
#[serde(transparent)]
pub struct Jwt(pub String);
pub struct Jwt(pub String);
14 changes: 7 additions & 7 deletions crates/signer/src/manager.rs
Original file line number Diff line number Diff line change
Expand Up @@ -160,7 +160,8 @@ mod tests {
async fn test_proxy_key_is_valid_proxy_for_consensus_key() {
let (mut signing_manager, consensus_pk) = init_signing_manager();

let signed_delegation = signing_manager.create_proxy(MODULE_ID.clone(), consensus_pk.clone()).await.unwrap();
let signed_delegation =
signing_manager.create_proxy(MODULE_ID.clone(), consensus_pk.clone()).await.unwrap();

let validation_result = signed_delegation.validate(*CHAIN);

Expand All @@ -179,24 +180,23 @@ mod tests {
async fn test_tampered_proxy_key_is_invalid() {
let (mut signing_manager, consensus_pk) = init_signing_manager();

let mut signed_delegation = signing_manager.create_proxy(MODULE_ID.clone(), consensus_pk.clone()).await.unwrap();
let mut signed_delegation =
signing_manager.create_proxy(MODULE_ID.clone(), consensus_pk.clone()).await.unwrap();

let m = &mut signed_delegation.signature.0[0];
(*m, _) = m.overflowing_add(1);

let validation_result = signed_delegation.validate(*CHAIN);

assert!(
validation_result.is_err(),
"Tampered proxy key must be invalid."
);
assert!(validation_result.is_err(), "Tampered proxy key must be invalid.");
}

#[tokio::test]
async fn test_proxy_key_signs_message() {
let (mut signing_manager, consensus_pk) = init_signing_manager();

let signed_delegation = signing_manager.create_proxy(MODULE_ID.clone(), consensus_pk.clone()).await.unwrap();
let signed_delegation =
signing_manager.create_proxy(MODULE_ID.clone(), consensus_pk.clone()).await.unwrap();
let proxy_pk = signed_delegation.message.proxy;

let data_root = Hash256::random();
Expand Down
3 changes: 2 additions & 1 deletion crates/signer/src/service.rs
Original file line number Diff line number Diff line change
Expand Up @@ -34,7 +34,8 @@ pub struct SigningService;
struct SigningState {
/// Mananger handling different signing methods
manager: Arc<RwLock<SigningManager>>,
/// Map of JWTs to module ids. This also acts as registry of all modules running
/// Map of JWTs to module ids. This also acts as registry of all modules
/// running
jwts: Arc<BiHashMap<ModuleId, Jwt>>,
}

Expand Down
15 changes: 9 additions & 6 deletions examples/da_commit/src/main.rs
Original file line number Diff line number Diff line change
Expand Up @@ -58,16 +58,19 @@ impl DaCommitService {
}
}

pub async fn send_request(&self, data: u64, pubkey: BlsPublicKey, proxy_delegation: SignedProxyDelegation) -> Result<()> {
pub async fn send_request(
&self,
data: u64,
pubkey: BlsPublicKey,
proxy_delegation: SignedProxyDelegation,
) -> Result<()> {
let datagram = Datagram { data };

let request = SignRequest::builder(pubkey)
.with_msg(&datagram);
let request = SignRequest::builder(pubkey).with_msg(&datagram);
let signature = self.config.signer_client.request_signature(&request);

let proxy_request = SignRequest::builder(proxy_delegation.message.proxy)
.is_proxy()
.with_msg(&datagram);
let proxy_request =
SignRequest::builder(proxy_delegation.message.proxy).is_proxy().with_msg(&datagram);
let proxy_signature = self.config.signer_client.request_signature(&proxy_request);

let (signature, proxy_signature) = {
Expand Down