From a216f62bd14a9962eccb5ce7daf7820ccadadc23 Mon Sep 17 00:00:00 2001 From: Peter Dettman Date: Thu, 5 Jan 2023 13:30:09 +0700 Subject: Avoid intermediate allocations --- crypto/src/x509/X509Certificate.cs | 6 ++---- crypto/src/x509/X509Crl.cs | 4 +--- crypto/src/x509/X509V1CertificateGenerator.cs | 2 +- crypto/src/x509/X509V2AttributeCertificate.cs | 6 ++---- crypto/src/x509/X509V2AttributeCertificateGenerator.cs | 2 +- crypto/src/x509/X509V2CRLGenerator.cs | 2 +- crypto/src/x509/X509V3CertificateGenerator.cs | 2 +- 7 files changed, 9 insertions(+), 15 deletions(-) diff --git a/crypto/src/x509/X509Certificate.cs b/crypto/src/x509/X509Certificate.cs index 5b800efe5..b6749d505 100644 --- a/crypto/src/x509/X509Certificate.cs +++ b/crypto/src/x509/X509Certificate.cs @@ -680,15 +680,13 @@ namespace Org.BouncyCastle.X509 if (!IsAlgIDEqual(c.SignatureAlgorithm, c.TbsCertificate.Signature)) throw new CertificateException("signature algorithm in TBS cert not same as outer cert"); - byte[] b = GetTbsCertificate(); - IStreamCalculator streamCalculator = verifier.CreateCalculator(); using (var stream = streamCalculator.Stream) { - stream.Write(b, 0, b.Length); + c.TbsCertificate.EncodeTo(stream, Asn1Encodable.Der); } - if (!streamCalculator.GetResult().IsVerified(this.GetSignature())) + if (!streamCalculator.GetResult().IsVerified(GetSignature())) throw new InvalidKeyException("Public key presented not for certificate signature"); } diff --git a/crypto/src/x509/X509Crl.cs b/crypto/src/x509/X509Crl.cs index db13f4f2f..027813562 100644 --- a/crypto/src/x509/X509Crl.cs +++ b/crypto/src/x509/X509Crl.cs @@ -130,12 +130,10 @@ namespace Org.BouncyCastle.X509 if (!c.SignatureAlgorithm.Equals(c.TbsCertList.Signature)) throw new CrlException("Signature algorithm on CertificateList does not match TbsCertList."); - byte[] b = GetTbsCertList(); - IStreamCalculator streamCalculator = verifier.CreateCalculator(); using (var stream = streamCalculator.Stream) { - stream.Write(b, 0, b.Length); + c.TbsCertList.EncodeTo(stream, Asn1Encodable.Der); } if (!streamCalculator.GetResult().IsVerified(GetSignature())) diff --git a/crypto/src/x509/X509V1CertificateGenerator.cs b/crypto/src/x509/X509V1CertificateGenerator.cs index d95f522e8..93ec03ea3 100644 --- a/crypto/src/x509/X509V1CertificateGenerator.cs +++ b/crypto/src/x509/X509V1CertificateGenerator.cs @@ -125,7 +125,7 @@ namespace Org.BouncyCastle.X509 TbsCertificateStructure tbsCert = tbsGen.GenerateTbsCertificate(); IStreamCalculator streamCalculator = signatureFactory.CreateCalculator(); - using (Stream sigStream = streamCalculator.Stream) + using (var sigStream = streamCalculator.Stream) { tbsCert.EncodeTo(sigStream, Asn1Encodable.Der); } diff --git a/crypto/src/x509/X509V2AttributeCertificate.cs b/crypto/src/x509/X509V2AttributeCertificate.cs index 61702aebd..b5a316d76 100644 --- a/crypto/src/x509/X509V2AttributeCertificate.cs +++ b/crypto/src/x509/X509V2AttributeCertificate.cs @@ -190,11 +190,9 @@ namespace Org.BouncyCastle.X509 try { - byte[] b = this.cert.ACInfo.GetEncoded(); - using (var stream = streamCalculator.Stream) { - stream.Write(b, 0, b.Length); + cert.ACInfo.EncodeTo(stream); } } catch (IOException e) @@ -202,7 +200,7 @@ namespace Org.BouncyCastle.X509 throw new SignatureException("Exception encoding certificate info object", e); } - if (!streamCalculator.GetResult().IsVerified(this.GetSignature())) + if (!streamCalculator.GetResult().IsVerified(GetSignature())) throw new InvalidKeyException("Public key presented not for certificate signature"); } diff --git a/crypto/src/x509/X509V2AttributeCertificateGenerator.cs b/crypto/src/x509/X509V2AttributeCertificateGenerator.cs index 3a0a02ea9..f1f4c0473 100644 --- a/crypto/src/x509/X509V2AttributeCertificateGenerator.cs +++ b/crypto/src/x509/X509V2AttributeCertificateGenerator.cs @@ -120,7 +120,7 @@ namespace Org.BouncyCastle.X509 AttributeCertificateInfo acInfo = acInfoGen.GenerateAttributeCertificateInfo(); IStreamCalculator streamCalculator = signatureFactory.CreateCalculator(); - using (Stream sigStream = streamCalculator.Stream) + using (var sigStream = streamCalculator.Stream) { acInfo.EncodeTo(sigStream, Asn1Encodable.Der); } diff --git a/crypto/src/x509/X509V2CRLGenerator.cs b/crypto/src/x509/X509V2CRLGenerator.cs index a57383613..3d8b96ad2 100644 --- a/crypto/src/x509/X509V2CRLGenerator.cs +++ b/crypto/src/x509/X509V2CRLGenerator.cs @@ -188,7 +188,7 @@ namespace Org.BouncyCastle.X509 TbsCertificateList tbsCertList = tbsGen.GenerateTbsCertList(); IStreamCalculator streamCalculator = signatureFactory.CreateCalculator(); - using (Stream sigStream = streamCalculator.Stream) + using (var sigStream = streamCalculator.Stream) { tbsCertList.EncodeTo(sigStream, Asn1Encodable.Der); } diff --git a/crypto/src/x509/X509V3CertificateGenerator.cs b/crypto/src/x509/X509V3CertificateGenerator.cs index 1854ac3b4..ee35b9479 100644 --- a/crypto/src/x509/X509V3CertificateGenerator.cs +++ b/crypto/src/x509/X509V3CertificateGenerator.cs @@ -260,7 +260,7 @@ namespace Org.BouncyCastle.X509 TbsCertificateStructure tbsCert = tbsGen.GenerateTbsCertificate(); IStreamCalculator streamCalculator = signatureFactory.CreateCalculator(); - using (Stream sigStream = streamCalculator.Stream) + using (var sigStream = streamCalculator.Stream) { tbsCert.EncodeTo(sigStream, Asn1Encodable.Der); } -- cgit 1.4.1