Skip to content

Commit c78660d

Browse files
committed
fix linter errors
Signed-off-by: Jun Kimura <jun.kimura@datachain.jp>
1 parent 5d94739 commit c78660d

File tree

22 files changed

+98
-89
lines changed

22 files changed

+98
-89
lines changed

.github/workflows/test.yml

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,9 @@ jobs:
1515
- uses: Swatinem/rust-cache@v2
1616
- run: cargo test
1717
- run: cargo test --manifest-path=./zkvm/risc0/Cargo.toml -- --nocapture
18+
- run: cargo fmt --all --check && cargo clippy --locked --tests -- -D warnings
19+
- run: cargo fmt --all --check && cargo clippy --locked --tests -- -D warnings
20+
working-directory: zkvm/risc0
1821

1922
reproducible-build:
2023
runs-on: ubuntu-24.04

crates/collaterals/src/certs.rs

Lines changed: 15 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -28,7 +28,7 @@ pub fn gen_sgx_intel_root_ca(
2828
builder.set_version(0x2)?;
2929
builder.set_issuer_name(&name)?;
3030
builder.set_serial_number(
31-
Asn1Integer::from_bn(BigNum::from_slice(&calc_skid(root_pkey).as_slice())?.as_ref())?
31+
Asn1Integer::from_bn(BigNum::from_slice(calc_skid(root_pkey).as_slice())?.as_ref())?
3232
.as_ref(),
3333
)?;
3434
builder.set_subject_name(&name)?;
@@ -37,7 +37,7 @@ pub fn gen_sgx_intel_root_ca(
3737

3838
builder.set_pubkey(root_pkey)?;
3939

40-
builder.append_extension(gen_skid(&root_pkey))?;
40+
builder.append_extension(gen_skid(root_pkey))?;
4141

4242
builder.append_extension(gen_crl_distribution_points(
4343
"https://certificates.trustedservices.intel.com/IntelSGXRootCA.der",
@@ -73,7 +73,7 @@ pub fn gen_root_ca(
7373
let root_key = gen_key();
7474
let root_cert = gen_sgx_intel_root_ca(
7575
&root_key,
76-
root_cert_validity.unwrap_or_else(|| Validity::long_duration()),
76+
root_cert_validity.unwrap_or_else(Validity::long_duration),
7777
)?;
7878
let crl = gen_crl(&root_cert, &root_key, &[], crl_validity)?;
7979
Ok(RootCa {
@@ -90,7 +90,7 @@ pub fn gen_crl(
9090
crl_validity: Option<Validity>,
9191
) -> Result<X509Crl, anyhow::Error> {
9292
let mut crl = X509Crl::new(issuer_cert, None)?;
93-
let validity = crl_validity.unwrap_or_else(|| Validity::long_duration());
93+
let validity = crl_validity.unwrap_or_else(Validity::long_duration);
9494
crl.set_last_update(&validity.not_before())?;
9595
crl.set_next_update(&validity.not_after())?;
9696
crl.increment_crl_number()?;
@@ -120,10 +120,8 @@ pub fn gen_tcb_signing_ca(
120120
builder.set_version(0x2)?;
121121
builder.set_issuer_name(root_cert.subject_name())?;
122122
builder.set_serial_number(
123-
Asn1Integer::from_bn(
124-
BigNum::from_slice(&calc_skid(tcb_signing_pkey).as_slice())?.as_ref(),
125-
)?
126-
.as_ref(),
123+
Asn1Integer::from_bn(BigNum::from_slice(calc_skid(tcb_signing_pkey).as_slice())?.as_ref())?
124+
.as_ref(),
127125
)?;
128126
builder.set_subject_name(build_x509_name("Intel SGX TCB Signing")?.as_ref())?;
129127

@@ -132,7 +130,7 @@ pub fn gen_tcb_signing_ca(
132130

133131
builder.set_pubkey(tcb_signing_pkey)?;
134132

135-
builder.append_extension(gen_skid(&tcb_signing_pkey))?;
133+
builder.append_extension(gen_skid(tcb_signing_pkey))?;
136134
builder.append_extension(gen_crl_distribution_points(
137135
"https://certificates.trustedservices.intel.com/IntelSGXRootCA.der",
138136
))?;
@@ -171,7 +169,7 @@ pub fn gen_tcb_certchain(
171169
&root_ca.cert,
172170
&root_ca.key,
173171
&tcb_signing_key,
174-
tcb_signing_ca_cert_validity.unwrap_or_else(|| Validity::long_duration()),
172+
tcb_signing_ca_cert_validity.unwrap_or_else(Validity::long_duration),
175173
)?;
176174
Ok(TcbCertchain {
177175
cert: tcb_signing_cert,
@@ -220,18 +218,16 @@ pub fn gen_pck_cert_ca(
220218
builder.set_version(0x2)?;
221219
builder.set_issuer_name(root_cert.subject_name())?;
222220
builder.set_serial_number(
223-
Asn1Integer::from_bn(
224-
BigNum::from_slice(&calc_skid(pck_cert_ca_pkey).as_slice())?.as_ref(),
225-
)?
226-
.as_ref(),
221+
Asn1Integer::from_bn(BigNum::from_slice(calc_skid(pck_cert_ca_pkey).as_slice())?.as_ref())?
222+
.as_ref(),
227223
)?;
228224
builder.set_subject_name(build_x509_name(pck_ca.cn())?.as_ref())?;
229225
builder.set_pubkey(pck_cert_ca_pkey)?;
230226

231227
builder.set_not_before(&validity.not_before())?;
232228
builder.set_not_after(&validity.not_after())?;
233229

234-
builder.append_extension(gen_skid(&pck_cert_ca_pkey))?;
230+
builder.append_extension(gen_skid(pck_cert_ca_pkey))?;
235231
builder.append_extension(gen_crl_distribution_points(
236232
"https://certificates.trustedservices.intel.com/IntelSGXRootCA.der",
237233
))?;
@@ -267,7 +263,6 @@ pub fn gen_pck_cert(
267263
pck_ca_cert
268264
.subject_name()
269265
.entries()
270-
.into_iter()
271266
.next()
272267
.ok_or_else(|| anyhow::anyhow!("No subject name"))?
273268
.data()
@@ -279,7 +274,7 @@ pub fn gen_pck_cert(
279274
builder.set_version(0x2)?;
280275
builder.set_issuer_name(pck_ca_cert.subject_name())?;
281276
builder.set_serial_number(
282-
Asn1Integer::from_bn(BigNum::from_slice(&calc_skid(pck_cert_pkey).as_slice())?.as_ref())?
277+
Asn1Integer::from_bn(BigNum::from_slice(calc_skid(pck_cert_pkey).as_slice())?.as_ref())?
283278
.as_ref(),
284279
)?;
285280
builder.set_subject_name(build_x509_name("Intel SGX PCK Certificate")?.as_ref())?;
@@ -288,7 +283,7 @@ pub fn gen_pck_cert(
288283
builder.set_not_before(&validity.not_before())?;
289284
builder.set_not_after(&validity.not_after())?;
290285

291-
builder.append_extension(gen_skid(&pck_cert_pkey))?;
286+
builder.append_extension(gen_skid(pck_cert_pkey))?;
292287
builder.append_extension(gen_crl_distribution_points(
293288
format!(
294289
"https://api.trustedservices.intel.com/sgx/certification/v3/pckcrl?ca={}&encoding=der",
@@ -346,15 +341,15 @@ pub fn gen_pck_certchain(
346341
&root_ca.cert,
347342
&root_ca.key,
348343
&pck_cert_ca_key,
349-
pck_cert_ca_validity.unwrap_or_else(|| Validity::long_duration()),
344+
pck_cert_ca_validity.unwrap_or_else(Validity::long_duration),
350345
)?;
351346
let pck_cert_key = gen_key();
352347
let pck_cert = gen_pck_cert(
353348
&pck_cert_ca,
354349
&pck_cert_ca_key,
355350
&pck_cert_key,
356351
sgx_extensions,
357-
pck_cert_validity.unwrap_or_else(|| Validity::long_duration()),
352+
pck_cert_validity.unwrap_or_else(Validity::long_duration),
358353
)?;
359354
let pck_cert_crl = gen_crl(
360355
&pck_cert_ca,

crates/collaterals/src/lib.rs

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,4 @@
1+
#![allow(clippy::new_without_default)]
12
pub mod certs;
23
pub mod enclave_identity;
34
pub mod enclave_report;

crates/collaterals/src/utils.rs

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -27,15 +27,15 @@ pub fn sign(pkey: &PKeyRef<Private>, msg: &[u8]) -> Result<Vec<u8>, anyhow::Erro
2727
signer.update(msg)?;
2828
EcdsaSignature::from_der(signer.sign_to_vec()?.as_slice())
2929
.map_err(|e| anyhow::anyhow!("Failed to decode ASN.1 signature: {}", e))
30-
.and_then(|asn_sig| {
30+
.map(|asn_sig| {
3131
let mut sig = vec![];
3232
let r = asn_sig.r.as_bytes();
3333
let s = asn_sig.s.as_bytes();
3434
sig.extend_from_slice(&vec![0; 32 - r.len()]);
3535
sig.extend_from_slice(r);
3636
sig.extend_from_slice(&vec![0; 32 - s.len()]);
3737
sig.extend_from_slice(s);
38-
Ok(sig)
38+
sig
3939
})
4040
}
4141

@@ -52,7 +52,7 @@ pub fn p256_prvkey_to_pubkey_bytes(pkey: &PKeyRef<Private>) -> Result<[u8; 64],
5252
Ok(pubkey)
5353
}
5454

55-
pub fn parse_cert_der<'a>(cert_der: &'a [u8]) -> Result<X509Certificate<'a>, anyhow::Error> {
55+
pub fn parse_cert_der(cert_der: &[u8]) -> Result<X509Certificate, anyhow::Error> {
5656
let (_, c) = X509Certificate::from_der(cert_der)?;
5757
Ok(c)
5858
}

crates/quote-verifier/src/cert.rs

Lines changed: 20 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -1,14 +1,14 @@
1-
use anyhow::bail;
2-
use x509_parser::oid_registry::OID_X509_EXT_CRL_DISTRIBUTION_POINTS;
3-
use x509_parser::prelude::*;
4-
51
use crate::crypto::verify_p256_signature_der;
2+
use anyhow::bail;
3+
use core::str::FromStr;
64
use dcap_types::cert::{SgxExtensionTcbLevel, SgxExtensions};
75
use dcap_types::tcbinfo::{TcbComponent, TcbInfoV3};
86
use dcap_types::TcbInfoV3TcbStatus;
97
use dcap_types::{SGX_TEE_TYPE, TDX_TEE_TYPE};
8+
use x509_parser::oid_registry::OID_X509_EXT_CRL_DISTRIBUTION_POINTS;
9+
use x509_parser::prelude::*;
1010

11-
pub fn parse_certchain<'a>(pem_certs: &'a [Pem]) -> crate::Result<Vec<X509Certificate<'a>>> {
11+
pub fn parse_certchain(pem_certs: &[Pem]) -> crate::Result<Vec<X509Certificate>> {
1212
Ok(pem_certs
1313
.iter()
1414
.map(|pem| pem.parse_x509())
@@ -45,9 +45,9 @@ pub fn verify_crl_signature(
4545
}
4646

4747
// verify_certchain_signature just verify that the certchain signature matches, any other checks will be done by the caller
48-
pub fn verify_certchain_signature<'a, 'b>(
49-
certs: &[&X509Certificate<'a>],
50-
root_cert: &X509Certificate<'b>,
48+
pub fn verify_certchain_signature(
49+
certs: &[&X509Certificate],
50+
root_cert: &X509Certificate,
5151
) -> crate::Result<()> {
5252
// verify that the cert chain is valid
5353
let mut iter = certs.iter();
@@ -143,18 +143,17 @@ pub fn get_sgx_tdx_fmspc_tcbstatus_v3(
143143
let extension_pcesvn = tcb.pcesvn;
144144

145145
for tcb_level in tcbinfov3.tcb_info.tcb_levels.iter() {
146-
if sgx_tcb_status.is_none() {
147-
if match_sgxtcbcomp(tcb, &tcb_level.tcb.sgxtcbcomponents)
148-
&& extension_pcesvn >= tcb_level.tcb.pcesvn
149-
{
150-
sgx_tcb_status = Some(TcbInfoV3TcbStatus::from_str(tcb_level.tcb_status.as_str())?);
151-
if !is_tdx {
152-
return Ok((
153-
sgx_tcb_status.unwrap(),
154-
None,
155-
tcb_level.advisory_ids.clone().unwrap_or_default(),
156-
));
157-
}
146+
if sgx_tcb_status.is_none()
147+
&& match_sgxtcbcomp(tcb, &tcb_level.tcb.sgxtcbcomponents)
148+
&& extension_pcesvn >= tcb_level.tcb.pcesvn
149+
{
150+
sgx_tcb_status = Some(TcbInfoV3TcbStatus::from_str(tcb_level.tcb_status.as_str())?);
151+
if !is_tdx {
152+
return Ok((
153+
sgx_tcb_status.unwrap(),
154+
None,
155+
tcb_level.advisory_ids.clone().unwrap_or_default(),
156+
));
158157
}
159158
}
160159
if is_tdx && sgx_tcb_status.is_some() {
@@ -204,7 +203,7 @@ fn match_tdxtcbcomp(tee_tcb_svn: &[u8; 16], tdxtcbcomponents: &[TcbComponent; 16
204203
pub fn merge_advisory_ids(advisory_ids: Vec<String>, advisory_ids2: Vec<String>) -> Vec<String> {
205204
let mut ids = advisory_ids
206205
.into_iter()
207-
.chain(advisory_ids2.into_iter())
206+
.chain(advisory_ids2)
208207
.collect::<Vec<_>>();
209208
ids.sort();
210209
ids.dedup();

crates/quote-verifier/src/collaterals.rs

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -86,7 +86,7 @@ impl IntelCollateral {
8686
let sgx_intel_root_ca_crl_der_len = u32::from_le_bytes(slice[16..20].try_into()?) as usize;
8787
let sgx_pck_crl_der_len = u32::from_le_bytes(slice[20..24].try_into()?) as usize;
8888

89-
let mut offset = 4 * 6 as usize;
89+
let mut offset = 4 * 6usize;
9090

9191
if slice.len()
9292
< offset
@@ -146,22 +146,22 @@ impl IntelCollateral {
146146
}
147147

148148
/// Returns the SGX Intel Root CA certificate
149-
pub fn get_sgx_intel_root_ca<'a>(&'a self) -> Result<X509Certificate<'a>> {
149+
pub fn get_sgx_intel_root_ca(&self) -> Result<X509Certificate> {
150150
parse_x509_der(&self.sgx_intel_root_ca_der)
151151
}
152152

153153
/// Returns the SGX TCB Signing certificate
154-
pub fn get_sgx_tcb_signing<'a>(&'a self) -> Result<X509Certificate<'a>> {
154+
pub fn get_sgx_tcb_signing(&self) -> Result<X509Certificate> {
155155
parse_x509_der(&self.sgx_tcb_signing_der)
156156
}
157157

158158
/// Returns the SGX Intel Root CA CRL
159-
pub fn get_sgx_intel_root_ca_crl<'a>(&'a self) -> Result<CertificateRevocationList<'a>> {
159+
pub fn get_sgx_intel_root_ca_crl(&self) -> Result<CertificateRevocationList> {
160160
parse_crl_der(&self.sgx_intel_root_ca_crl_der)
161161
}
162162

163163
/// Returns the SGX PCK Platform/Processor CA CRL
164-
pub fn get_sgx_pck_crl<'a>(&'a self) -> Result<CertificateRevocationList<'a>> {
164+
pub fn get_sgx_pck_crl(&self) -> Result<CertificateRevocationList> {
165165
parse_crl_der(&self.sgx_pck_crl_der)
166166
}
167167
}

crates/quote-verifier/src/crl.rs

Lines changed: 3 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
use crate::cert::get_crl_uri;
22
use crate::{verifier::ValidityIntersection, Result};
3-
use anyhow::{anyhow, bail};
3+
use anyhow::bail;
44
use x509_parser::{certificate::X509Certificate, revocation_list::CertificateRevocationList};
55

66
#[derive(Debug, PartialEq, Eq)]
@@ -99,12 +99,8 @@ impl<'a> IntelSgxCrls<'a> {
9999
}
100100
}
101101
Ok(ValidityIntersection {
102-
not_before_max: max_last_update
103-
.try_into()
104-
.map_err(|e| anyhow!("Failed to convert max_last_update to u64: {}", e))?,
105-
not_after_min: min_next_update
106-
.try_into()
107-
.map_err(|e| anyhow!("Failed to convert min_next_update to u64: {}", e))?,
102+
not_before_max: max_last_update,
103+
not_after_min: min_next_update,
108104
})
109105
}
110106
}

crates/quote-verifier/src/crypto.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@ use sha3::Keccak256;
1010
// The public_key is the public key (in uncompressed form [4][x][y]) of the entity that signed the data. (65 bytes)
1111
// Returns true if the signature is valid, false otherwise.
1212
pub fn verify_p256_signature_bytes(data: &[u8], signature: &[u8], public_key: &[u8]) -> Result<()> {
13-
let signature = Signature::from_bytes(signature.try_into()?)?;
13+
let signature = Signature::from_bytes(signature.into())?;
1414
let verifying_key = VerifyingKey::from_sec1_bytes(public_key)?;
1515
Ok(verifying_key.verify(data, &signature)?)
1616
}

crates/quote-verifier/src/enclave_identity.rs

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@ use crate::crypto::verify_p256_signature_bytes;
22
use crate::verifier::ValidityIntersection;
33
use crate::Result;
44
use anyhow::{bail, Context};
5+
use core::str::FromStr;
56
use dcap_types::enclave_identity::EnclaveIdentityV2TcbLevelItem;
67
use dcap_types::{enclave_identity::EnclaveIdentityV2, EnclaveIdentityV2TcbStatus};
78
use dcap_types::{SGX_TEE_TYPE, TDX_TEE_TYPE};

crates/quote-verifier/src/pck.rs

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -25,8 +25,8 @@ pub fn validate_pck_cert<'a>(
2525
intel_sgx_root_cert: &X509Certificate<'_>,
2626
intel_crls: &IntelSgxCrls,
2727
) -> Result<ValidityIntersection> {
28-
let pck_subject_cn = get_x509_subject_cn(&pck_leaf_cert);
29-
let pck_issuer_cn = get_x509_issuer_cn(&pck_leaf_cert);
28+
let pck_subject_cn = get_x509_subject_cn(pck_leaf_cert);
29+
let pck_issuer_cn = get_x509_issuer_cn(pck_leaf_cert);
3030

3131
if pck_subject_cn != "Intel SGX PCK Certificate" {
3232
bail!("PCK Leaf Cert is not a PCK Cert");
@@ -37,14 +37,14 @@ pub fn validate_pck_cert<'a>(
3737
}
3838

3939
// we'll check what kind of cert is it, and validate the appropriate CRL
40-
if pck_issuer_cn != get_x509_subject_cn(&pck_issuer_cert) {
40+
if pck_issuer_cn != get_x509_subject_cn(pck_issuer_cert) {
4141
bail!("PCK Leaf Cert and Issuer Cert do not match");
42-
} else if get_x509_issuer_cn(&pck_issuer_cert) != get_x509_subject_cn(intel_sgx_root_cert) {
42+
} else if get_x509_issuer_cn(pck_issuer_cert) != get_x509_subject_cn(intel_sgx_root_cert) {
4343
bail!("PCK Issuer Cert and Root Cert do not match");
4444
}
4545

4646
// verify that the cert chain signatures are valid
47-
verify_certchain_signature(&[&pck_leaf_cert, &pck_issuer_cert], intel_sgx_root_cert)
47+
verify_certchain_signature(&[pck_leaf_cert, pck_issuer_cert], intel_sgx_root_cert)
4848
.context("Invalid PCK Chain")?;
4949

5050
if intel_crls.is_cert_revoked(pck_leaf_cert)? {

0 commit comments

Comments
 (0)