コード例 #1
0
 private VerifyTest(
     TestDirectory directory,
     SignedPackageArchive package,
     PrimarySignature primarySignature,
     SignatureVerifySettings settings)
 {
     _directory       = directory;
     Package          = package;
     PrimarySignature = primarySignature;
     Settings         = settings;
 }
コード例 #2
0
 private VerifyTest(
     TestDirectory directory,
     FileStream signedPackageReadStream,
     SignedPackageArchive package,
     PrimarySignature primarySignature,
     SignatureVerifySettings settings)
 {
     _directory = directory;
     _signedPackageReadStream = signedPackageReadStream;
     Package          = package;
     PrimarySignature = primarySignature;
     Settings         = settings;
 }
コード例 #3
0
ファイル: SignatureTests.cs プロジェクト: igitur/NuGet.Client
            internal static async Task <VerifyTest> CreateAsync(SignatureVerifySettings settings, X509Certificate2 certificate)
            {
                using (var certificateClone = new X509Certificate2(certificate))
                {
                    var directory           = TestDirectory.Create();
                    var packageContext      = new SimpleTestPackageContext();
                    var unsignedPackageFile = packageContext.CreateAsFile(directory, "package.nupkg");
                    var signedPackageFile   = await SignedArchiveTestUtility.SignPackageFileWithBasicSignedCmsAsync(
                        directory,
                        unsignedPackageFile,
                        certificateClone);

                    var package          = new SignedPackageArchive(signedPackageFile.OpenRead(), new MemoryStream());
                    var primarySignature = await package.GetPrimarySignatureAsync(CancellationToken.None);

                    return(new VerifyTest(directory, package, primarySignature, settings));
                }
            }
コード例 #4
0
        public async Task Verify_WithUntrustedSelfSignedCertificateAndAllowUntrusted_SucceedsAsync()
        {
            var settings = new SignatureVerifySettings(
                allowIllegal: false,
                allowUntrusted: true,
                allowUnknownRevocation: false,
                reportUnknownRevocation: true);

            using (var test = await VerifyTest.CreateAsync(settings, _untrustedTestCertificate.Cert))
            {
                var result = test.PrimarySignature.Verify(
                    timestamp: null,
                    settings: settings,
                    fingerprintAlgorithm: HashAlgorithmName.SHA256,
                    certificateExtraStore: test.PrimarySignature.SignedCms.Certificates);

                Assert.Equal(SignatureVerificationStatus.Valid, result.Status);
                Assert.Equal(0, result.Issues.Count(issue => issue.Level == LogLevel.Error));
            }
        }
コード例 #5
0
        public async Task Verify_WithUntrustedSelfSignedCertificateAndNotAllowUntrustedRoot_FailsAsync()
        {
            var settings = new SignatureVerifySettings(
                treatIssuesAsErrors: true,
                allowUntrustedRoot: false,
                allowUnknownRevocation: false,
                logOnSignatureExpired: true);

            using (var test = await VerifyTest.CreateAsync(settings, _untrustedTestCertificate.Cert))
            {
                var issues = new List <SignatureLog>();
                var result = test.PrimarySignature.Verify(
                    timestamp: null,
                    settings: settings,
                    fingerprintAlgorithm: HashAlgorithmName.SHA256,
                    certificateExtraStore: test.PrimarySignature.SignedCms.Certificates,
                    issues: issues);

                Assert.Equal(SignatureVerificationStatus.Untrusted, result.Status);
                Assert.Equal(1, issues.Count(issue => issue.Level == LogLevel.Error));

                AssertUntrustedRoot(issues, LogLevel.Error);
            }
        }