| File: Signing\Signatures\NuGetV3ServiceIndexUrl.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; using System.Linq; using NuGet.Packaging.Signing.DerEncoding; namespace NuGet.Packaging.Signing { /* NuGetV3ServiceIndexUrl ::= IA5String */ /// <remarks>This is public only to facilitate testing.</remarks> public sealed class NuGetV3ServiceIndexUrl { public Uri V3ServiceIndexUrl { get; } public NuGetV3ServiceIndexUrl(Uri v3ServiceIndexUrl) { if (v3ServiceIndexUrl == null) { throw new ArgumentNullException(nameof(v3ServiceIndexUrl)); } if (!v3ServiceIndexUrl.IsAbsoluteUri) { throw new ArgumentException(Strings.InvalidUrl, nameof(v3ServiceIndexUrl)); } if (!string.Equals(v3ServiceIndexUrl.Scheme, "https", StringComparison.Ordinal)) { throw new ArgumentException(Strings.InvalidUrl, nameof(v3ServiceIndexUrl)); } V3ServiceIndexUrl = v3ServiceIndexUrl; } public static NuGetV3ServiceIndexUrl Read(byte[] bytes) { var reader = DerSequenceReader.CreateForPayload(bytes); return Read(reader); } internal static NuGetV3ServiceIndexUrl Read(DerSequenceReader reader) { var urlString = reader.ReadIA5String(); if (reader.HasData) { throw new SignatureException(Strings.NuGetV3ServiceIndexUrlInvalid); } Uri? url; if (!Uri.TryCreate(urlString, UriKind.Absolute, out url)) { throw new SignatureException(Strings.NuGetV3ServiceIndexUrlInvalid); } if (!string.Equals(url.Scheme, "https", StringComparison.Ordinal)) { throw new SignatureException(Strings.NuGetV3ServiceIndexUrlInvalid); } return new NuGetV3ServiceIndexUrl(url); } public byte[] Encode() { return DerEncoder.SegmentedEncodeIA5String(V3ServiceIndexUrl.OriginalString.ToCharArray()) .SelectMany(x => x) .ToArray(); } } }