| File: Signing\Signatures\PolicyQualifierInfo.cs | Web Access |
| Project: src\nuget-client\src\NuGet.Core\NuGet.Packaging\NuGet.Packaging.csproj (NuGet.Packaging) |
// Copyright (c) .NET Foundation. All rights reserved. // Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information. using System.Security.Cryptography; using NuGet.Packaging.Signing.DerEncoding; namespace NuGet.Packaging.Signing { /* From RFC 5280 (https://tools.ietf.org/html/rfc5280#appendix-A.2): PolicyQualifierInfo ::= SEQUENCE { policyQualifierId PolicyQualifierId, qualifier ANY DEFINED BY policyQualifierId } -- policyQualifierIds for Internet policy qualifiers id-qt OBJECT IDENTIFIER ::= { id-pkix 2 } id-qt-cps OBJECT IDENTIFIER ::= { id-qt 1 } id-qt-unotice OBJECT IDENTIFIER ::= { id-qt 2 } PolicyQualifierId ::= OBJECT IDENTIFIER ( id-qt-cps | id-qt-unotice ) */ /// <remarks>This is public only to facilitate testing.</remarks> public sealed class PolicyQualifierInfo { public Oid PolicyQualifierId { get; } public byte[]? Qualifier { get; } private PolicyQualifierInfo(Oid policyQualifierId, byte[]? qualifier) { PolicyQualifierId = policyQualifierId; Qualifier = qualifier; } public static PolicyQualifierInfo Read(byte[] bytes) { var reader = DerSequenceReader.CreateForPayload(bytes); return Read(reader); } internal static PolicyQualifierInfo Read(DerSequenceReader reader) { var policyQualifierReader = reader.ReadSequence(); var policyQualifierId = policyQualifierReader.ReadOid(); byte[]? qualifier = null; if (policyQualifierReader.HasData) { qualifier = policyQualifierReader.ReadNextEncodedValue(); if (policyQualifierReader.HasData) { throw new SignatureException(Strings.InvalidAsn1); } } return new PolicyQualifierInfo(policyQualifierId, qualifier); } } }