]> git.ipfire.org Git - thirdparty/openssl.git/blame - test/recipes/25-test_verify.t
Zero newly allocated points
[thirdparty/openssl.git] / test / recipes / 25-test_verify.t
CommitLineData
4650de3e
RL
1#! /usr/bin/perl
2
3use strict;
4use warnings;
5
6use File::Spec::Functions qw/canonpath/;
9c626317 7use OpenSSL::Test qw/:DEFAULT top_file/;
4650de3e
RL
8
9setup("test_verify");
10
6e8beabc
VD
11sub verify {
12 my ($cert, $vname, $trusted, $untrusted, @opts) = @_;
13 my @args = qw(openssl verify -verify_name);
14 my @path = qw(test certs);
15 push(@args, "$vname", @opts);
9c626317
RL
16 for (@$trusted) { push(@args, "-trusted", top_file(@path, "$_.pem")) }
17 for (@$untrusted) { push(@args, "-untrusted", top_file(@path, "$_.pem")) }
18 push(@args, top_file(@path, "$cert.pem"));
6e8beabc
VD
19 run(app([@args]));
20}
4ada8be2 21
6e8beabc 22plan tests => 29;
4650de3e 23
6e8beabc
VD
24# Canonical success
25ok(verify("ee-cert", "ssl_server", ["root-cert"], ["ca-cert"]),
26 "verify valid chain");
27
28# Root CA variants
29ok(verify("ee-cert", "ssl_server", [qw(root-nonca)], [qw(ca-cert)]),
30 "Trusted certs not subject to CA:true checks");
31ok(!verify("ee-cert", "ssl_server", [qw(root-cert2)], [qw(ca-cert)]),
32 "fail wrong root key");
33ok(!verify("ee-cert", "ssl_server", [qw(root-name2)], [qw(ca-cert)]),
34 "fail wrong root DN");
35ok(verify("ee-cert", "ssl_server", [qw(root+serverAuth)], [qw(ca-cert)]),
36 "accept right EKU");
37ok(!verify("ee-cert", "ssl_server", [qw(root-serverAuth)], [qw(ca-cert)]),
38 "fail rejected EKU");
39ok(!verify("ee-cert", "ssl_server", [qw(root+clientAuth)], [qw(ca-cert)]),
40 "fail wrong EKU");
41
42# CA variants
43ok(!verify("ee-cert", "ssl_server", [qw(root-cert)], [qw(ca-nonca)]),
44 "fail non-CA");
45ok(!verify("ee-cert", "ssl_server", [qw(root-cert)], [qw(ca-cert2)]),
46 "fail wrong CA key");
47ok(!verify("ee-cert", "ssl_server", [qw(root-cert)], [qw(ca-name2)]),
48 "fail wrong CA DN");
49ok(!verify("ee-cert", "ssl_server", [qw(root-cert)], [qw(ca-root2)]),
50 "fail wrong CA issuer");
51ok(!verify("ee-cert", "ssl_server", [], [qw(ca-cert)], "-partial_chain"),
52 "fail untrusted partial");
53ok(!verify("ee-cert", "ssl_server", [], [qw(ca+serverAuth)], "-partial_chain"),
54 "fail untrusted EKU partial");
55ok(verify("ee-cert", "ssl_server", [qw(ca+serverAuth)], [], "-partial_chain"),
56 "accept trusted EKU partial");
57ok(!verify("ee-cert", "ssl_server", [qw(ca-serverAuth)], [], "-partial_chain"),
58 "fail rejected EKU partial");
59ok(!verify("ee-cert", "ssl_server", [qw(ca+clientAuth)], [], "-partial_chain"),
60 "fail wrong EKU partial");
61
62# EE variants
63ok(verify("ee-client", "ssl_client", [qw(root-cert)], [qw(ca-cert)]),
64 "accept client cert");
65ok(!verify("ee-client", "ssl_server", [qw(root-cert)], [qw(ca-cert)]),
66 "fail wrong leaf purpose");
67ok(!verify("ee-cert", "ssl_client", [qw(root-cert)], [qw(ca-cert)]),
68 "fail wrong leaf purpose");
69ok(!verify("ee-cert2", "ssl_server", [qw(root-cert)], [qw(ca-cert)]),
70 "fail wrong CA key");
71ok(!verify("ee-name2", "ssl_server", [qw(root-cert)], [qw(ca-cert)]),
72 "fail wrong CA name");
73ok(!verify("ee-expired", "ssl_server", [qw(root-cert)], [qw(ca-cert)]),
74 "fail expired leaf");
75ok(verify("ee-cert", "ssl_server", [qw(ee-cert)], [], "-partial_chain"),
76 "accept last-resort direct leaf match");
77ok(verify("ee-client", "ssl_client", [qw(ee-client)], [], "-partial_chain"),
78 "accept last-resort direct leaf match");
79ok(!verify("ee-cert", "ssl_server", [qw(ee-client)], [], "-partial_chain"),
80 "fail last-resort direct leaf non-match");
81ok(verify("ee-cert", "ssl_server", [qw(ee+serverAuth)], [], "-partial_chain"),
82 "accept direct match with trusted EKU");
83ok(!verify("ee-cert", "ssl_server", [qw(ee-serverAuth)], [], "-partial_chain"),
84 "reject direct match with rejected EKU");
85ok(verify("ee-client", "ssl_client", [qw(ee+clientAuth)], [], "-partial_chain"),
86 "accept direct match with trusted EKU");
87ok(!verify("ee-client", "ssl_client", [qw(ee-clientAuth)], [], "-partial_chain"),
88 "reject direct match with rejected EKU");