1# Syslogd gets an empty TLS server key.
2# The client cannot connect to 127.0.0.1 TLS socket.
3# Check that syslog log contains an error message.
4
5use strict;
6use warnings;
7use Socket;
8
9my $key = "/etc/ssl/private/127.0.0.1:6514.key";
10my $cert = "/etc/ssl/127.0.0.1:6514.crt";
11my @sudo = $ENV{SUDO} ? $ENV{SUDO} : ();
12my @cmd = (@sudo, "cp", "--", "empty", $key);
13system(@cmd) and die "Command '@cmd' failed: $?";
14@cmd = (@sudo, "cp", "--", "127.0.0.1.crt", $cert);
15system(@cmd) and die "Command '@cmd' failed: $?";
16END {
17    local $?;
18    my @cmd = (@sudo, "rm", "-f", "--", $key, $cert);
19    system(@cmd) and warn "Command '@cmd' failed: $?";
20}
21
22our %args = (
23    client => {
24	func => sub {
25	    my $self = shift;
26	    IO::Socket::IP->new(
27		Domain              => AF_INET,
28		Proto               => "tcp",
29		PeerAddr            => "127.0.0.1",
30		PeerPort            => 6514,
31	    ) and die "tcp socket connect to 127.0.0.1:6514 succeeded";
32	},
33	nocheck => 1,
34    },
35    syslogd => {
36	options => ["-S", "127.0.0.1:6514"],
37	ktrace => {
38	    qr{NAMI  "/etc/ssl/private/127.0.0.1:6514.key"} => 1,
39	    qr{NAMI  "/etc/ssl/127.0.0.1:6514.crt"} => 1,
40	    qr{NAMI  "/etc/ssl/private/127.0.0.1.key"} => 0,
41	    qr{NAMI  "/etc/ssl/127.0.0.1.crt"} => 0,
42	},
43	loggrep => {
44	    qr{Keyfile $key} => 1,
45	    qr{Certfile $cert} => 1,
46	    qr{tls_configure server: failed to read private key} => 1,
47	},
48    },
49    server => {
50	noserver => 1,
51    },
52    file => { nocheck => 1 },
53    pipe => { nocheck => 1 },
54    tty => { nocheck => 1 },
55);
56
571;
58