You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@teaclave.apache.org by ur...@apache.org on 2020/01/23 22:52:14 UTC

[incubator-teaclave] branch develop updated: Remove unnecessary lifetime arguments in cert parsing code (#208)

This is an automated email from the ASF dual-hosted git repository.

uraj pushed a commit to branch develop
in repository https://gitbox.apache.org/repos/asf/incubator-teaclave.git


The following commit(s) were added to refs/heads/develop by this push:
     new 2c92d6e  Remove unnecessary lifetime arguments in cert parsing code (#208)
2c92d6e is described below

commit 2c92d6e8ead6a5cf57a515f9cffcb69b29ad7c1e
Author: Pei Wang <wa...@baidu.com>
AuthorDate: Thu Jan 23 14:52:05 2020 -0800

    Remove unnecessary lifetime arguments in cert parsing code (#208)
---
 attestation/src/cert.rs   | 166 +++++++++++++++++++++-------------------------
 attestation/src/report.rs |   3 +-
 2 files changed, 75 insertions(+), 94 deletions(-)

diff --git a/attestation/src/cert.rs b/attestation/src/cert.rs
index c7bfcf6..20ef234 100644
--- a/attestation/src/cert.rs
+++ b/attestation/src/cert.rs
@@ -15,11 +15,7 @@
 // specific language governing permissions and limitations
 // under the License.
 
-#![allow(
-    clippy::unused_unit,
-    clippy::needless_lifetimes,
-    clippy::redundant_closure
-)]
+#![allow(clippy::unused_unit)]
 // Insert std prelude in the top for the sgx feature
 #[cfg(feature = "mesalock_sgx")]
 use std::prelude::v1::*;
@@ -31,37 +27,34 @@ use yasna::{DERWriter, DERWriterSeq, DERWriterSet};
 pub type Writer<'a> = DERWriter<'a>;
 pub type Reader<'a, 'b> = BERReader<'a, 'b>;
 
-pub trait ConsWriter<'a> {
-    fn next<'b>(&'b mut self) -> Writer<'b>;
+pub trait ConsWriter {
+    fn next(&mut self) -> Writer<'_>;
 }
 
-pub trait ConsReader<'a, 'b>
-where
-    'a: 'b,
-{
-    fn next<'c>(&'c mut self, tags: &[yasna::Tag]) -> ASN1Result<Reader<'a, 'c>>;
+pub trait ConsReader<'a> {
+    fn next(&mut self, tags: &[yasna::Tag]) -> ASN1Result<Reader<'a, '_>>;
 }
 
-impl<'a> ConsWriter<'a> for DERWriterSeq<'a> {
-    fn next<'b>(&'b mut self) -> Writer<'b> {
+impl ConsWriter for DERWriterSeq<'_> {
+    fn next(&mut self) -> Writer<'_> {
         self.next()
     }
 }
 
-impl<'a> ConsWriter<'a> for DERWriterSet<'a> {
-    fn next<'b>(&'b mut self) -> Writer<'b> {
+impl ConsWriter for DERWriterSet<'_> {
+    fn next(&mut self) -> Writer<'_> {
         self.next()
     }
 }
 
-impl<'a, 'b> ConsReader<'a, 'b> for BERReaderSeq<'a, 'b> {
-    fn next<'c>(&'c mut self, _tags: &[yasna::Tag]) -> ASN1Result<Reader<'a, 'c>> {
+impl<'a> ConsReader<'a> for BERReaderSeq<'a, '_> {
+    fn next(&mut self, _tags: &[yasna::Tag]) -> ASN1Result<Reader<'a, '_>> {
         Ok(self.next())
     }
 }
 
-impl<'a, 'b> ConsReader<'a, 'b> for BERReaderSet<'a, 'b> {
-    fn next<'c>(&'c mut self, tags: &[yasna::Tag]) -> ASN1Result<Reader<'a, 'c>> {
+impl<'a> ConsReader<'a> for BERReaderSet<'a, '_> {
+    fn next(&mut self, tags: &[yasna::Tag]) -> ASN1Result<Reader<'a, '_>> {
         self.next(tags)
     }
 }
@@ -69,10 +62,9 @@ impl<'a, 'b> ConsReader<'a, 'b> for BERReaderSet<'a, 'b> {
 pub trait Asn1Ty {
     type ValueTy;
     const TAG: yasna::Tag;
-    fn dump<'a>(writer: Writer<'a>, value: Self::ValueTy) -> ();
-    fn load<'a, 'b>(reader: Reader<'a, 'b>) -> ASN1Result<Self::ValueTy>
-    where
-        'a: 'b;
+
+    fn dump(writer: Writer<'_>, value: Self::ValueTy) -> ();
+    fn load<'a>(reader: Reader<'a, '_>) -> ASN1Result<Self::ValueTy>;
 }
 
 pub trait Asn1ConsTy
@@ -80,11 +72,11 @@ where
     Self: std::marker::Sized,
 {
     type ValueTy;
-    fn dump<'a, W: ConsWriter<'a>>(writer: &mut W, value: Self::ValueTy) -> ();
-    fn load<'a, 'b, R>(reader: &mut R) -> ASN1Result<Self::ValueTy>
+
+    fn dump<W: ConsWriter>(writer: &mut W, value: Self::ValueTy) -> ();
+    fn load<'a, R>(reader: &mut R) -> ASN1Result<Self::ValueTy>
     where
-        'a: 'b,
-        R: ConsReader<'a, 'b>;
+        R: ConsReader<'a>;
 }
 
 pub trait Asn1Tag {
@@ -151,14 +143,15 @@ impl Asn1Tag for CtxT3 {
 
 impl<U: Asn1Ty, V: Asn1ConsTy> Asn1ConsTy for Cons<U, V> {
     type ValueTy = (U::ValueTy, V::ValueTy);
-    fn dump<'a, W: ConsWriter<'a>>(writer: &mut W, value: Self::ValueTy) -> () {
+
+    fn dump<W: ConsWriter>(writer: &mut W, value: Self::ValueTy) -> () {
         U::dump(writer.next(), value.0);
         V::dump(writer, value.1);
     }
-    fn load<'a, 'b, R>(reader: &mut R) -> ASN1Result<Self::ValueTy>
+
+    fn load<'a, R>(reader: &mut R) -> ASN1Result<Self::ValueTy>
     where
-        'a: 'b,
-        R: ConsReader<'a, 'b>,
+        R: ConsReader<'a>,
     {
         let first = U::load(reader.next(&[U::TAG])?)?;
         let second = V::load(reader)?;
@@ -168,11 +161,11 @@ impl<U: Asn1Ty, V: Asn1ConsTy> Asn1ConsTy for Cons<U, V> {
 
 impl Asn1ConsTy for Nil {
     type ValueTy = ();
-    fn dump<'a, W: ConsWriter<'a>>(_writer: &mut W, _value: Self::ValueTy) -> () {}
-    fn load<'a, 'b, R>(_reader: &mut R) -> ASN1Result<Self::ValueTy>
+
+    fn dump<W: ConsWriter>(_writer: &mut W, _value: Self::ValueTy) -> () {}
+    fn load<'a, R>(_reader: &mut R) -> ASN1Result<Self::ValueTy>
     where
-        'a: 'b,
-        R: ConsReader<'a, 'b>,
+        R: ConsReader<'a>,
     {
         Ok(())
     }
@@ -181,30 +174,28 @@ impl Asn1ConsTy for Nil {
 impl<T: Asn1Tag, S: Asn1Ty> Asn1Ty for Tagged<T, S> {
     type ValueTy = S::ValueTy;
     const TAG: yasna::Tag = T::TAG;
-    fn dump<'a>(writer: Writer<'a>, value: Self::ValueTy) {
+
+    fn dump(writer: Writer<'_>, value: Self::ValueTy) {
         writer.write_tagged(T::TAG, |writer| S::dump(writer, value));
     }
-    fn load<'a, 'b>(reader: Reader<'a, 'b>) -> ASN1Result<Self::ValueTy>
-    where
-        'a: 'b,
-    {
-        reader.read_tagged(T::TAG, |reader| S::load(reader))
+
+    fn load<'a>(reader: Reader<'a, '_>) -> ASN1Result<Self::ValueTy> {
+        reader.read_tagged(T::TAG, S::load)
     }
 }
 
 impl<U: Asn1Ty, V: Asn1ConsTy> Asn1Ty for Sequence<U, V> {
     type ValueTy = (U::ValueTy, V::ValueTy);
     const TAG: yasna::Tag = yasna::tags::TAG_SEQUENCE;
-    fn dump<'a>(writer: Writer<'a>, value: Self::ValueTy) {
+
+    fn dump(writer: Writer<'_>, value: Self::ValueTy) {
         writer.write_sequence(|writer| {
             U::dump(writer.next(), value.0);
             V::dump(writer, value.1);
         });
     }
-    fn load<'a, 'b>(reader: Reader<'a, 'b>) -> ASN1Result<Self::ValueTy>
-    where
-        'a: 'b,
-    {
+
+    fn load<'a>(reader: Reader<'a, '_>) -> ASN1Result<Self::ValueTy> {
         reader.read_sequence(|reader| {
             let first = U::load(reader.next())?;
             let second = V::load(reader)?;
@@ -216,16 +207,15 @@ impl<U: Asn1Ty, V: Asn1ConsTy> Asn1Ty for Sequence<U, V> {
 impl<U: Asn1Ty, V: Asn1ConsTy> Asn1Ty for Set<U, V> {
     type ValueTy = (U::ValueTy, V::ValueTy);
     const TAG: yasna::Tag = yasna::tags::TAG_SET;
-    fn dump<'a>(writer: Writer<'a>, value: Self::ValueTy) {
+
+    fn dump(writer: Writer<'_>, value: Self::ValueTy) {
         writer.write_set(|writer| {
             U::dump(writer.next(), value.0);
             V::dump(writer, value.1);
         });
     }
-    fn load<'a, 'b>(reader: Reader<'a, 'b>) -> ASN1Result<Self::ValueTy>
-    where
-        'a: 'b,
-    {
+
+    fn load<'a>(reader: Reader<'a, '_>) -> ASN1Result<Self::ValueTy> {
         reader.read_set(|reader| {
             let first = U::load(reader.next(&[U::TAG])?)?;
             let second = V::load(reader)?;
@@ -237,13 +227,12 @@ impl<U: Asn1Ty, V: Asn1ConsTy> Asn1Ty for Set<U, V> {
 impl Asn1Ty for U8 {
     type ValueTy = u8;
     const TAG: yasna::Tag = yasna::tags::TAG_INTEGER;
-    fn dump<'a>(writer: Writer<'a>, value: Self::ValueTy) {
+
+    fn dump(writer: Writer<'_>, value: Self::ValueTy) {
         writer.write_u8(value);
     }
-    fn load<'a, 'b>(reader: Reader<'a, 'b>) -> ASN1Result<Self::ValueTy>
-    where
-        'a: 'b,
-    {
+
+    fn load<'a>(reader: Reader<'a, '_>) -> ASN1Result<Self::ValueTy> {
         reader.read_u8()
     }
 }
@@ -251,13 +240,12 @@ impl Asn1Ty for U8 {
 impl Asn1Ty for I8 {
     type ValueTy = i8;
     const TAG: yasna::Tag = yasna::tags::TAG_INTEGER;
-    fn dump<'a>(writer: Writer<'a>, value: Self::ValueTy) {
+
+    fn dump(writer: Writer<'_>, value: Self::ValueTy) {
         writer.write_i8(value);
     }
-    fn load<'a, 'b>(reader: Reader<'a, 'b>) -> ASN1Result<Self::ValueTy>
-    where
-        'a: 'b,
-    {
+
+    fn load<'a>(reader: Reader<'a, '_>) -> ASN1Result<Self::ValueTy> {
         reader.read_i8()
     }
 }
@@ -265,13 +253,12 @@ impl Asn1Ty for I8 {
 impl Asn1Ty for BigUint {
     type ValueTy = num_bigint::BigUint;
     const TAG: yasna::Tag = yasna::tags::TAG_INTEGER;
-    fn dump<'a>(writer: Writer<'a>, value: Self::ValueTy) {
+
+    fn dump(writer: Writer<'_>, value: Self::ValueTy) {
         writer.write_biguint(&value);
     }
-    fn load<'a, 'b>(reader: Reader<'a, 'b>) -> ASN1Result<Self::ValueTy>
-    where
-        'a: 'b,
-    {
+
+    fn load<'a>(reader: Reader<'a, '_>) -> ASN1Result<Self::ValueTy> {
         reader.read_biguint()
     }
 }
@@ -279,13 +266,12 @@ impl Asn1Ty for BigUint {
 impl Asn1Ty for Utf8Str {
     type ValueTy = String;
     const TAG: yasna::Tag = yasna::tags::TAG_UTF8STRING;
-    fn dump<'a>(writer: Writer<'a>, value: Self::ValueTy) {
+
+    fn dump(writer: Writer<'_>, value: Self::ValueTy) {
         writer.write_utf8_string(value.as_str());
     }
-    fn load<'a, 'b>(reader: Reader<'a, 'b>) -> ASN1Result<Self::ValueTy>
-    where
-        'a: 'b,
-    {
+
+    fn load<'a>(reader: Reader<'a, '_>) -> ASN1Result<Self::ValueTy> {
         reader.read_utf8string()
     }
 }
@@ -293,13 +279,12 @@ impl Asn1Ty for Utf8Str {
 impl Asn1Ty for Oid {
     type ValueTy = yasna::models::ObjectIdentifier;
     const TAG: yasna::Tag = yasna::tags::TAG_OID;
-    fn dump<'a>(writer: Writer<'a>, value: Self::ValueTy) {
+
+    fn dump(writer: Writer<'_>, value: Self::ValueTy) {
         writer.write_oid(&value);
     }
-    fn load<'a, 'b>(reader: Reader<'a, 'b>) -> ASN1Result<Self::ValueTy>
-    where
-        'a: 'b,
-    {
+
+    fn load<'a>(reader: Reader<'a, '_>) -> ASN1Result<Self::ValueTy> {
         reader.read_oid()
     }
 }
@@ -307,13 +292,12 @@ impl Asn1Ty for Oid {
 impl Asn1Ty for UtcTime {
     type ValueTy = yasna::models::UTCTime;
     const TAG: yasna::Tag = yasna::tags::TAG_UTCTIME;
-    fn dump<'a>(writer: Writer<'a>, value: Self::ValueTy) {
+
+    fn dump(writer: Writer<'_>, value: Self::ValueTy) {
         writer.write_utctime(&value);
     }
-    fn load<'a, 'b>(reader: Reader<'a, 'b>) -> ASN1Result<Self::ValueTy>
-    where
-        'a: 'b,
-    {
+
+    fn load<'a>(reader: Reader<'a, '_>) -> ASN1Result<Self::ValueTy> {
         reader.read_utctime()
     }
 }
@@ -321,13 +305,12 @@ impl Asn1Ty for UtcTime {
 impl Asn1Ty for BitVec {
     type ValueTy = bit_vec::BitVec;
     const TAG: yasna::Tag = yasna::tags::TAG_BITSTRING;
-    fn dump<'a>(writer: Writer<'a>, value: Self::ValueTy) {
+
+    fn dump(writer: Writer<'_>, value: Self::ValueTy) {
         writer.write_bitvec(&value);
     }
-    fn load<'a, 'b>(reader: Reader<'a, 'b>) -> ASN1Result<Self::ValueTy>
-    where
-        'a: 'b,
-    {
+
+    fn load<'a>(reader: Reader<'a, '_>) -> ASN1Result<Self::ValueTy> {
         reader.read_bitvec()
     }
 }
@@ -335,13 +318,12 @@ impl Asn1Ty for BitVec {
 impl Asn1Ty for Bytes {
     type ValueTy = Vec<u8>;
     const TAG: yasna::Tag = yasna::tags::TAG_OCTETSTRING;
-    fn dump<'a>(writer: Writer<'a>, value: Self::ValueTy) {
+
+    fn dump(writer: Writer<'_>, value: Self::ValueTy) {
         writer.write_bytes(&value.as_slice());
     }
-    fn load<'a, 'b>(reader: Reader<'a, 'b>) -> ASN1Result<Self::ValueTy>
-    where
-        'a: 'b,
-    {
+
+    fn load<'a>(reader: Reader<'a, '_>) -> ASN1Result<Self::ValueTy> {
         reader.read_bytes()
     }
 }
diff --git a/attestation/src/report.rs b/attestation/src/report.rs
index 4a079d0..c696fc2 100644
--- a/attestation/src/report.rs
+++ b/attestation/src/report.rs
@@ -220,8 +220,7 @@ impl AttestationReport {
         // Before we reach here, Webpki already verifed the cert is properly signed
         use super::cert::*;
 
-        #[allow(clippy::redundant_closure)]
-        let x509 = yasna::parse_der(cert, |reader| X509::load(reader))?;
+        let x509 = yasna::parse_der(cert, X509::load)?;
 
         let tbs_cert: <TbsCert as Asn1Ty>::ValueTy = x509.0;
 


---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@teaclave.apache.org
For additional commands, e-mail: commits-help@teaclave.apache.org