| File: System\Security\Cryptography\X509Certificates\X500DirectoryStringHelper.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.Formats.Asn1; namespace System.Security.Cryptography.X509Certificates { internal static class X500DirectoryStringHelper { internal static string ReadAnyAsnString(this AsnReader tavReader) { Asn1Tag tag = tavReader.PeekTag(); if (tag.TagClass != TagClass.Universal) { throw new CryptographicException(SR.Cryptography_Der_Invalid_Encoding); } switch ((UniversalTagNumber)tag.TagValue) { case UniversalTagNumber.BMPString: case UniversalTagNumber.IA5String: case UniversalTagNumber.NumericString: case UniversalTagNumber.PrintableString: case UniversalTagNumber.UTF8String: case UniversalTagNumber.T61String: // .NET's string comparisons start by checking the length, so a trailing // NULL character which was literally embedded in the DER would cause a // failure in .NET whereas it wouldn't have with strcmp. return tavReader.ReadCharacterString((UniversalTagNumber)tag.TagValue).TrimEnd('\0'); default: throw new CryptographicException(SR.Cryptography_Der_Invalid_Encoding); } } internal static string ReadAnyAsnString(ref this ValueAsnReader tavReader) { Asn1Tag tag = tavReader.PeekTag(); if (tag.TagClass != TagClass.Universal) { throw new CryptographicException(SR.Cryptography_Der_Invalid_Encoding); } switch ((UniversalTagNumber)tag.TagValue) { case UniversalTagNumber.BMPString: case UniversalTagNumber.IA5String: case UniversalTagNumber.NumericString: case UniversalTagNumber.PrintableString: case UniversalTagNumber.UTF8String: case UniversalTagNumber.T61String: // .NET's string comparisons start by checking the length, so a trailing // NULL character which was literally embedded in the DER would cause a // failure in .NET whereas it wouldn't have with strcmp. return tavReader.ReadCharacterString((UniversalTagNumber)tag.TagValue).TrimEnd('\0'); default: throw new CryptographicException(SR.Cryptography_Der_Invalid_Encoding); } } } }