From 776e9189a250741322885c394e5fee4ed17d3c79 Mon Sep 17 00:00:00 2001 From: Tony Giorgio Date: Wed, 12 Feb 2025 12:18:25 -0600 Subject: [PATCH 1/3] Rust github actions --- .github/workflows/rust.yml | 103 +++++++++++++++++++++++++++++++++++++ 1 file changed, 103 insertions(+) create mode 100644 .github/workflows/rust.yml diff --git a/.github/workflows/rust.yml b/.github/workflows/rust.yml new file mode 100644 index 0000000..ae09101 --- /dev/null +++ b/.github/workflows/rust.yml @@ -0,0 +1,103 @@ +name: Rust CI + +on: + push: + branches: + - master + pull_request: + branches: + - master + +env: + CARGO_TERM_COLOR: always + RUSTFLAGS: "-D warnings" + +jobs: + format: + name: Check Format + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v4 + with: + submodules: recursive + + - name: Install Rust toolchain + uses: dtolnay/rust-toolchain@stable + with: + components: rustfmt + + - name: Cache dependencies + uses: Swatinem/rust-cache@v2 + + - name: Check formatting + run: cargo fmt --all -- --check + + clippy: + name: Clippy + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v4 + with: + submodules: recursive + + - name: Install Rust toolchain + uses: dtolnay/rust-toolchain@stable + with: + components: clippy + + - name: Install system dependencies + run: | + sudo apt-get update + sudo apt-get install -y libpq-dev pkg-config libssl-dev + + - name: Cache dependencies + uses: Swatinem/rust-cache@v2 + + - name: Run clippy + run: cargo clippy --all-targets --all-features -- -D warnings + + test: + name: Test Suite + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v4 + with: + submodules: recursive + + - name: Install Rust toolchain + uses: dtolnay/rust-toolchain@stable + + - name: Install system dependencies + run: | + sudo apt-get update + sudo apt-get install -y libpq-dev pkg-config libssl-dev + + - name: Cache dependencies + uses: Swatinem/rust-cache@v2 + + - name: Run tests + run: cargo test --all-features + + doc: + name: Check Documentation + runs-on: ubuntu-latest + env: + RUSTDOCFLAGS: "-D warnings" + steps: + - uses: actions/checkout@v4 + with: + submodules: recursive + + - name: Install Rust toolchain + uses: dtolnay/rust-toolchain@stable + + - name: Install system dependencies + run: | + sudo apt-get update + sudo apt-get install -y libpq-dev pkg-config libssl-dev + + - name: Cache dependencies + uses: Swatinem/rust-cache@v2 + + - name: Check documentation + run: cargo doc --no-deps --all-features From 64a1e0ebf9b1a7897dc2675620b0ad2078f44635 Mon Sep 17 00:00:00 2001 From: Tony Giorgio Date: Wed, 12 Feb 2025 12:24:59 -0600 Subject: [PATCH 2/3] Format fixing --- src/message_signing.rs | 27 ++++++++++++++++----------- src/web/health_routes.rs | 4 ++-- 2 files changed, 18 insertions(+), 13 deletions(-) diff --git a/src/message_signing.rs b/src/message_signing.rs index 85582da..0959fd6 100644 --- a/src/message_signing.rs +++ b/src/message_signing.rs @@ -33,9 +33,13 @@ impl std::fmt::Display for SignatureType { } } -pub fn sign_message(secret_key: &SecretKey, message_bytes: &[u8], algorithm: SigningAlgorithm) -> Result { +pub fn sign_message( + secret_key: &SecretKey, + message_bytes: &[u8], + algorithm: SigningAlgorithm, +) -> Result { let secp = Secp256k1::new(); - + // Hash the message let mut hasher = Sha256::new(); hasher.update(message_bytes); @@ -43,24 +47,25 @@ pub fn sign_message(secret_key: &SecretKey, message_bytes: &[u8], algorithm: Sig let message_hash_array: [u8; 32] = message_hash.into(); // Create secp256k1 message from hash - let message = Message::from_digest_slice(&message_hash).map_err(|e| { - Error::SigningError(format!("Failed to create message from digest: {}", e)) - })?; + let message = Message::from_digest_slice(&message_hash) + .map_err(|e| Error::SigningError(format!("Failed to create message from digest: {}", e)))?; // Sign with the specified algorithm let signature = match algorithm { SigningAlgorithm::Schnorr => { let keypair = secret_key.keypair(&secp); let random_bytes = generate_random::<32>(); - SignatureType::Schnorr(secp.sign_schnorr_with_aux_rand(&message, &keypair, &random_bytes)) - }, - SigningAlgorithm::Ecdsa => { - SignatureType::Ecdsa(secp.sign_ecdsa(&message, secret_key)) - }, + SignatureType::Schnorr(secp.sign_schnorr_with_aux_rand( + &message, + &keypair, + &random_bytes, + )) + } + SigningAlgorithm::Ecdsa => SignatureType::Ecdsa(secp.sign_ecdsa(&message, secret_key)), }; Ok(SignMessageResponse { signature, message_hash: message_hash_array, }) -} \ No newline at end of file +} diff --git a/src/web/health_routes.rs b/src/web/health_routes.rs index 4d74137..d000199 100644 --- a/src/web/health_routes.rs +++ b/src/web/health_routes.rs @@ -24,8 +24,8 @@ impl HealthResponse { } } -/// IETF draft RFC for HTTP API Health Checks: -/// https://datatracker.ietf.org/doc/html/draft-inadarei-api-health-check +/// Health check endpoint following the IETF draft standard +/// pub async fn health_check() -> Result, (StatusCode, String)> { Ok(Json(HealthResponse::new_ok())) } From a72627c06b1805bf693a47bd5d27b8d056e8433c Mon Sep 17 00:00:00 2001 From: Tony Giorgio Date: Wed, 12 Feb 2025 12:27:41 -0600 Subject: [PATCH 3/3] Update PCRs --- pcrDev.json | 4 ++-- pcrProd.json | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/pcrDev.json b/pcrDev.json index 4fa2b2c..6af8cba 100644 --- a/pcrDev.json +++ b/pcrDev.json @@ -1,6 +1,6 @@ { "HashAlgorithm": "Sha384 { ... }", - "PCR0": "583ac140e0454dd4766a07c147cb6d90d5430d6bc9c1571da19c781dea4027e1c434273caba584440180ca42c2db84d5", + "PCR0": "acb85ac823541935e89094a83fb8ec555ba3e3a6935849ff2624c0e79d2458524d246d78be5d58a642e24ea9ae5dc948", "PCR1": "5039fa3d13b95dded883deed58d2a0ac63bee4f05f16e05eda0dd21e54bcd01f5e700505998b5674616ea8346ce94b29", - "PCR2": "9e21041c05247372770686518de99f37923ec6ad8fddecc5fd98e9d7c1c488a0b38d0071546b6164f5049bd2da74ccd0" + "PCR2": "1e12e291b33eb3caaf2e46f2d6a0f12c5926e8add72e4cc6b3723344d0ac008a58dba0d36b30b1cccf1192373fbccceb" } diff --git a/pcrProd.json b/pcrProd.json index f7f90b2..3954d0c 100644 --- a/pcrProd.json +++ b/pcrProd.json @@ -1,6 +1,6 @@ { "HashAlgorithm": "Sha384 { ... }", - "PCR0": "4e242871fecc14933c889908a6a7593de574c2655a47ffa163c5fd7ba41d063152ef441bd555ac7f8569eac4fd7cbc8b", + "PCR0": "9271a1ce2525461b3bb89a89ca3a9601b28e917ab7624bdf862ed3b35462be336212220d215bcadeca22ffce74ccd2c0", "PCR1": "5039fa3d13b95dded883deed58d2a0ac63bee4f05f16e05eda0dd21e54bcd01f5e700505998b5674616ea8346ce94b29", - "PCR2": "6fb22e83424524d5e8a0e43b9b314af7e1ed32796b93bb7c1cec99f74800eca209c88185899c294f4f6e4ade5bb87d7e" + "PCR2": "eb5aab3a13607322f409e64608131b2e6c889d889c27ae23bbc68aa7835f2d4f0b1a4adcdd35916c1eef1bc44ede2310" }