@@ -78,23 +78,23 @@ internal CertificateData(byte[] rawData)
78
78
RawData = rawData ;
79
79
certificate = CertificateAsn . Decode ( rawData , AsnEncodingRules . DER ) ;
80
80
certificate . TbsCertificate . ValidateVersion ( ) ;
81
- Issuer = new X500DistinguishedName ( certificate . TbsCertificate . Issuer . ToArray ( ) ) ;
82
- Subject = new X500DistinguishedName ( certificate . TbsCertificate . Subject . ToArray ( ) ) ;
81
+ Issuer = new X500DistinguishedName ( certificate . TbsCertificate . Issuer . Span ) ;
82
+ Subject = new X500DistinguishedName ( certificate . TbsCertificate . Subject . Span ) ;
83
83
IssuerName = Issuer . Name ;
84
84
SubjectName = Subject . Name ;
85
85
86
86
AsnWriter writer = new AsnWriter ( AsnEncodingRules . DER ) ;
87
87
certificate . TbsCertificate . SubjectPublicKeyInfo . Encode ( writer ) ;
88
88
SubjectPublicKeyInfo = writer . Encode ( ) ;
89
89
90
- Extensions = new List < X509Extension > ( ) ;
90
+ Extensions = new List < X509Extension > ( ( certificate . TbsCertificate . Extensions ? . Length ) . GetValueOrDefault ( ) ) ;
91
91
if ( certificate . TbsCertificate . Extensions != null )
92
92
{
93
93
foreach ( X509ExtensionAsn rawExtension in certificate . TbsCertificate . Extensions )
94
94
{
95
95
X509Extension extension = new X509Extension (
96
96
rawExtension . ExtnId ,
97
- rawExtension . ExtnValue . ToArray ( ) ,
97
+ rawExtension . ExtnValue . Span ,
98
98
rawExtension . Critical ) ;
99
99
100
100
Extensions . Add ( extension ) ;
@@ -104,9 +104,8 @@ internal CertificateData(byte[] rawData)
104
104
}
105
105
catch ( Exception e )
106
106
{
107
- throw new CryptographicException (
108
- $ "Error in reading certificate:{ Environment . NewLine } { PemPrintCert ( rawData ) } ",
109
- e ) ;
107
+ string pem = new string ( PemEncoding . Write ( PemLabels . X509Certificate , rawData ) ) ;
108
+ throw new CryptographicException ( $ "Error in reading certificate:{ Environment . NewLine } { pem } ", e ) ;
110
109
}
111
110
#endif
112
111
}
@@ -379,25 +378,5 @@ private static IEnumerable<KeyValuePair<string, string>> ReadReverseRdns(X500Dis
379
378
}
380
379
}
381
380
}
382
-
383
- #if DEBUG
384
- private static string PemPrintCert ( byte [ ] rawData )
385
- {
386
- const string PemHeader = "-----BEGIN CERTIFICATE-----" ;
387
- const string PemFooter = "-----END CERTIFICATE-----" ;
388
-
389
- StringBuilder builder = new StringBuilder ( PemHeader . Length + PemFooter . Length + rawData . Length * 2 ) ;
390
- builder . Append ( PemHeader ) ;
391
- builder . AppendLine ( ) ;
392
-
393
- builder . Append ( Convert . ToBase64String ( rawData , Base64FormattingOptions . InsertLineBreaks ) ) ;
394
- builder . AppendLine ( ) ;
395
-
396
- builder . Append ( PemFooter ) ;
397
- builder . AppendLine ( ) ;
398
-
399
- return builder . ToString ( ) ;
400
- }
401
- #endif
402
381
}
403
382
}
0 commit comments