| File: Signing\Authoring\RepositorySignPackageRequest.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.Collections.Generic; using System.Linq; using System.Security.Cryptography.X509Certificates; using NuGet.Common; namespace NuGet.Packaging.Signing { public sealed class RepositorySignPackageRequest : SignPackageRequest { /// <summary> /// Gets the repository V3 service index URL. /// </summary> public Uri V3ServiceIndexUrl { get; } /// <summary> /// Gets a read-only list of package owners. /// </summary> public IReadOnlyList<string>? PackageOwners { get; } /// <summary> /// Gets the signature type. /// </summary> public override SignatureType SignatureType => SignatureType.Repository; /// <summary> /// Instantiates a new instance of the <see cref="RepositorySignPackageRequest" /> class. /// </summary> /// <param name="certificate">The signing certificate.</param> /// <param name="signatureHashAlgorithm">The signature hash algorithm.</param> /// <param name="timestampHashAlgorithm">The timestamp hash algorithm.</param> /// <param name="v3ServiceIndexUrl">The V3 service index URL.</param> /// <param name="packageOwners">A read-only list of package owners.</param> /// <exception cref="ArgumentNullException">Thrown if <paramref name="certificate" /> /// is <see langword="null" />.</exception> /// <exception cref="ArgumentException">Thrown if <paramref name="signatureHashAlgorithm" /> /// is invalid.</exception> /// <exception cref="ArgumentException">Thrown if <paramref name="timestampHashAlgorithm" /> /// is invalid.</exception> /// <exception cref="ArgumentNullException">Thrown if <paramref name="v3ServiceIndexUrl" /> /// is <see langword="null" />.</exception> /// <exception cref="ArgumentException">Thrown if <paramref name="v3ServiceIndexUrl" /> /// is neither absolute nor HTTPS.</exception> /// <exception cref="ArgumentException">Thrown if <paramref name="packageOwners" /> /// is either empty or contains an invalid value.</exception> public RepositorySignPackageRequest( X509Certificate2 certificate, HashAlgorithmName signatureHashAlgorithm, HashAlgorithmName timestampHashAlgorithm, Uri v3ServiceIndexUrl, IReadOnlyList<string>? packageOwners) : base( certificate, signatureHashAlgorithm, timestampHashAlgorithm) { 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)); } if (packageOwners != null) { if (packageOwners.Any(packageOwner => string.IsNullOrWhiteSpace(packageOwner))) { throw new ArgumentException(Strings.NuGetPackageOwnersInvalidValue, nameof(packageOwners)); } if (!packageOwners.Any()) { packageOwners = null; } } V3ServiceIndexUrl = v3ServiceIndexUrl; PackageOwners = packageOwners; } } }