#! /usr/bin/perl # Output must be at least 8 bytes sub return_error { print STDOUT "200\r\n\r\n"; exit; } sub return_ok { $user=@_[0]; print STDOUT "100\r\n$user\r\n"; exit; } $/="\r\n"; $user=;chomp($user); $/="\n"; $mode=0; while (<>) { if (($mode==0)&&($_ =~ /-----BEGIN CERTIFICATE-----/)) { $mode = 1; } elsif (($mode==1)&&($_ =~ /-----END CERTIFICATE-----/)) { $mode = 2; } if ($mode) { $_ =~ /^(.*)[\n\r]+$/; $cert.=$1; } if ($mode==2) { last; } } #$cert=join "", @cert_lines; $cert =~ m/-----BEGIN CERTIFICATE-----(.*)-----END CERTIFICATE-----/; $client_cert = $1; open(ucf, "/opt/ssl/user_certs/$user.crt") or return_error(); @cert_lines=; chomp(@cert_lines); $cert=join "", @cert_lines; close(ucf); $cert =~ m/-----BEGIN CERTIFICATE-----(.*)-----END CERTIFICATE-----/; $user_cert = $1; if (($user_cert cmp $client_cert) == 0) { return_ok($user); } return_error();