/// <summary> /// Generates a Signature for a given package for tests. /// </summary> /// <param name="signatureProvider">Signature proivider to create the signature.</param> /// <param name="package">Package to be used for the signature.</param> /// <param name="request">SignPackageRequest containing the metadata for the signature request.</param> /// <param name="testLogger">ILogger.</param> /// <returns>Signature for the package.</returns> public static async Task <Signature> CreateSignatureForPackageAsync(ISignatureProvider signatureProvider, PackageArchiveReader package, SignPackageRequest request, TestLogger testLogger) { var zipArchiveHash = await package.GetArchiveHashAsync(request.SignatureHashAlgorithm, CancellationToken.None); var base64ZipArchiveHash = Convert.ToBase64String(zipArchiveHash); var signatureContent = new SignatureContent(SigningSpecifications.V1, request.SignatureHashAlgorithm, base64ZipArchiveHash); return(await signatureProvider.CreateSignatureAsync(request, signatureContent, testLogger, CancellationToken.None)); }
/// <summary> /// Generates a Signature for a given package for tests. /// </summary> /// <param name="package">Package to be used for the signature.</param> /// <param name="request">Sign package request for primary signature</param> /// <param name="timestampProvider">Provider to add timestamp to package. Defaults to null.</param> /// <returns>Signature for the package.</returns> public static async Task <PrimarySignature> CreatePrimarySignatureForPackageAsync( PackageArchiveReader package, SignPackageRequest request, ITimestampProvider timestampProvider = null) { Assert.False(await package.IsSignedAsync(CancellationToken.None)); var testLogger = new TestLogger(); var signatureProvider = new X509SignatureProvider(timestampProvider); var zipArchiveHash = await package.GetArchiveHashAsync(request.SignatureHashAlgorithm, CancellationToken.None); var base64ZipArchiveHash = Convert.ToBase64String(zipArchiveHash); var signatureContent = new SignatureContent(SigningSpecifications.V1, request.SignatureHashAlgorithm, base64ZipArchiveHash); return(await signatureProvider.CreatePrimarySignatureAsync(request, signatureContent, testLogger, CancellationToken.None)); }
/// <summary> /// Generates a Signature for a package. /// </summary> /// <param name="testCert">Certificate to be used while generating the signature.</param> /// <param name="nupkg">Package for which the signature has to be generated.</param> /// <returns>Signature for the package.</returns> public static async Task <Signature> CreateSignatureForPackageAsync(X509Certificate2 testCert, Stream packageStream) { var testLogger = new TestLogger(); var hashAlgorithm = HashAlgorithmName.SHA256; using (var request = new SignPackageRequest(testCert, hashAlgorithm)) using (var package = new PackageArchiveReader(packageStream, leaveStreamOpen: true)) { var zipArchiveHash = await package.GetArchiveHashAsync(request.SignatureHashAlgorithm, CancellationToken.None); var base64ZipArchiveHash = Convert.ToBase64String(zipArchiveHash); var signatureContent = new SignatureContent(SigningSpecifications.V1, hashAlgorithm, base64ZipArchiveHash); var testSignatureProvider = new X509SignatureProvider(timestampProvider: null); return(await testSignatureProvider.CreateSignatureAsync(request, signatureContent, testLogger, CancellationToken.None)); } }