refactor: streamline quote verification process

- Replaced direct usage of `QuoteVerificationResult` with `verify_attestation_quote` to simplify API.
- Moved `log_quote_verification_summary` call into `verify_batch_proof` for better encapsulation.
This commit is contained in:
Harald Hoyer 2025-03-06 15:28:31 +01:00
parent 8cf7651781
commit 63b9d6f6ee
Signed by: harald
GPG key ID: F519A1143B3FBE32
2 changed files with 13 additions and 15 deletions

View file

@ -1,5 +1,5 @@
// SPDX-License-Identifier: Apache-2.0 // SPDX-License-Identifier: Apache-2.0
// Copyright (c) 2023-2024 Matter Labs // Copyright (c) 2023-2025 Matter Labs
//! Tool for SGX attestation and batch signature verification, both continuous and one-shot //! Tool for SGX attestation and batch signature verification, both continuous and one-shot
@ -8,9 +8,7 @@ mod client;
mod proof; mod proof;
mod verification; mod verification;
use crate::verification::{ use crate::verification::verify_batch_proof;
log_quote_verification_summary, verify_attestation_quote, verify_batch_proof,
};
use anyhow::Result; use anyhow::Result;
use args::{Arguments, AttestationPolicyArgs}; use args::{Arguments, AttestationPolicyArgs};
use clap::Parser; use clap::Parser;
@ -174,9 +172,8 @@ async fn verify_batch_proofs(
let attestation = proof.attestation.unwrap_or_default(); let attestation = proof.attestation.unwrap_or_default();
debug!(batch_no, "Verifying quote ({} bytes)...", attestation.len()); debug!(batch_no, "Verifying quote ({} bytes)...", attestation.len());
let quote_verification_result = verify_attestation_quote(&attestation)?;
let verified_successfully = verify_batch_proof( let verified_successfully = verify_batch_proof(
&quote_verification_result, &attestation,
attestation_policy, attestation_policy,
node_client, node_client,
&proof.signature.unwrap_or_default(), &proof.signature.unwrap_or_default(),
@ -184,8 +181,6 @@ async fn verify_batch_proofs(
) )
.await?; .await?;
log_quote_verification_summary(&quote_verification_result);
if verified_successfully { if verified_successfully {
info!( info!(
batch_no, batch_no,

View file

@ -12,10 +12,7 @@ use teepot::{
client::TcbLevel, client::TcbLevel,
ethereum::{public_key_to_ethereum_address, recover_signer}, ethereum::{public_key_to_ethereum_address, recover_signer},
prover::reportdata::ReportData, prover::reportdata::ReportData,
quote::{ quote::{tee_qv_get_collateral, verify_quote_with_collateral, QuoteVerificationResult, Report},
error::QuoteContext, tee_qv_get_collateral, verify_quote_with_collateral,
QuoteVerificationResult, Report,
},
}; };
use tracing::{debug, info, trace, warn}; use tracing::{debug, info, trace, warn};
use zksync_basic_types::{L1BatchNumber, H256}; use zksync_basic_types::{L1BatchNumber, H256};
@ -104,13 +101,19 @@ impl TeeProof {
} }
pub async fn verify_batch_proof( pub async fn verify_batch_proof(
quote_verification_result: &QuoteVerificationResult, attestation_quote_bytes: &[u8],
attestation_policy: &AttestationPolicyArgs, attestation_policy: &AttestationPolicyArgs,
node_client: &impl JsonRpcClient, node_client: &impl JsonRpcClient,
signature: &[u8], signature: &[u8],
batch_number: L1BatchNumber, batch_number: L1BatchNumber,
) -> Result<bool> { ) -> Result<bool> {
if !is_quote_matching_policy(attestation_policy, quote_verification_result) { use std::fs;
let quote_verification_result = verify_attestation_quote(attestation_quote_bytes)?;
log_quote_verification_summary(&quote_verification_result);
if !is_quote_matching_policy(attestation_policy, &quote_verification_result) {
return Ok(false); return Ok(false);
} }
@ -122,7 +125,7 @@ pub async fn verify_batch_proof(
} }
pub fn verify_attestation_quote(attestation_quote_bytes: &[u8]) -> Result<QuoteVerificationResult> { pub fn verify_attestation_quote(attestation_quote_bytes: &[u8]) -> Result<QuoteVerificationResult> {
let collateral = QuoteContext::context( let collateral = teepot::quote::error::QuoteContext::context(
tee_qv_get_collateral(attestation_quote_bytes), tee_qv_get_collateral(attestation_quote_bytes),
"Failed to get collateral!", "Failed to get collateral!",
)?; )?;