public async Task RemoveRepositorySignaturesAsync_WithMultipleCountersignatures_ReturnsSignedPackageWithoutRepositorySignatures()
        {
            using (var test = new RemoveTest(_fixture))
            {
                await test.AuthorSignAsync();

                await test.CountersignAsync();

                var expectedPackage       = test.SignedPackage.ToArray();
                var originalLastWriteTime = GetLastModifiedDateTimeOfPackageSignatureFile(test.SignedPackage);

                await test.RepositoryCountersignAsync();

                await test.RepositoryCountersignAsync();

                var wasSomethingRemoved = await SignedPackageArchiveUtility.RemoveRepositorySignaturesAsync(
                    test.SignedPackage,
                    test.UnsignedPackage,
                    CancellationToken.None);

                var actualPackage    = test.UnsignedPackage.ToArray();
                var newLastWriteTime = GetLastModifiedDateTimeOfPackageSignatureFile(test.UnsignedPackage);

                Assert.True(wasSomethingRemoved);
                Assert.InRange(newLastWriteTime, originalLastWriteTime, originalLastWriteTime.Add(TimeSpan.FromMinutes(5)));

                ZeroPackageSignatureFileLastModifiedDateTimes(
                    expectedPackage,
                    actualPackage,
                    offsetOfLocalFileHeaderLastModifiedDateTime: 0x1df,
                    offsetOfCentralDirectoryHeaderLastModifiedDateTime: 0xa7a);

                Assert.Equal(expectedPackage, actualPackage);
            }
        }
        public async Task RemoveRepositorySignaturesAsync_WithUnsignedPackage_DoesNotChangePackage()
        {
            using (var test = new RemoveTest(_fixture))
                using (var input = new MemoryStream(test.Zip.ToByteArray(), writable: false))
                {
                    var wasSomethingRemoved = await SignedPackageArchiveUtility.RemoveRepositorySignaturesAsync(
                        input,
                        test.UnsignedPackage,
                        CancellationToken.None);

                    Assert.False(wasSomethingRemoved);
                    Assert.Equal(0, test.UnsignedPackage.Length);
                }
        }
        public async Task RemoveRepositorySignaturesAsync_WithRepositoryPrimarySignature_ReturnsUnsignedPackage()
        {
            using (var test = new RemoveTest(_fixture))
            {
                await test.RepositorySignAsync();

                var wasSomethingRemoved = await SignedPackageArchiveUtility.RemoveRepositorySignaturesAsync(
                    test.SignedPackage,
                    test.UnsignedPackage,
                    CancellationToken.None);

                Assert.True(wasSomethingRemoved);
                Assert.Equal(test.Zip.ToByteArray(), test.UnsignedPackage.ToArray());
            }
        }
        public async Task RemoveRepositorySignaturesAsync_WithAuthorPrimarySignature_DoesNotChangePackage()
        {
            using (var test = new RemoveTest(_fixture))
            {
                await test.AuthorSignAsync();

                var wasSomethingRemoved = await SignedPackageArchiveUtility.RemoveRepositorySignaturesAsync(
                    test.SignedPackage,
                    test.UnsignedPackage,
                    CancellationToken.None);

                Assert.False(wasSomethingRemoved);
                Assert.Equal(0, test.UnsignedPackage.Length);
            }
        }