| File: System\Security\Cryptography\X509Certificates\Asn1\TbsCertificateAsn.manual.cs | Web Access |
| Project: src\runtime\src\libraries\System.Security.Cryptography\src\System.Security.Cryptography.csproj (System.Security.Cryptography) |
// Licensed to the .NET Foundation under one or more agreements. // The .NET Foundation licenses this file to you under the MIT license. using System.Runtime.InteropServices; using System.Security.Cryptography.Asn1; namespace System.Security.Cryptography.X509Certificates.Asn1 { // https://tools.ietf.org/html/rfc5280#section-4.1 // // TBSCertificate ::= SEQUENCE { // version [0] Version DEFAULT v1, // serialNumber CertificateSerialNumber, // signature AlgorithmIdentifier, // issuer Name, // validity Validity, // subject Name, // subjectPublicKeyInfo SubjectPublicKeyInfo, // issuerUniqueID [1] IMPLICIT UniqueIdentifier OPTIONAL, // -- If present, version MUST be v2 or v3 // subjectUniqueID [2] IMPLICIT UniqueIdentifier OPTIONAL, // -- If present, version MUST be v2 or v3 // extensions [3] Extensions OPTIONAL // -- If present, version MUST be v3 -- // } internal partial struct TbsCertificateAsn { /// <summary> /// Validate semantics by the specified version. /// </summary> public void ValidateVersion() { if (Version < 0 || Version > 2) { throw new CryptographicException(); } if (Version < 1) { if (IssuerUniqueId.HasValue || SubjectUniqueId.HasValue) { throw new CryptographicException(SR.Cryptography_Der_Invalid_Encoding); } } if (Version < 2) { if (Extensions != null) { throw new CryptographicException(SR.Cryptography_Der_Invalid_Encoding); } } } } }