1#! /usr/bin/env perl 2# Copyright 2019-2021 The OpenSSL Project Authors. All Rights Reserved. 3# 4# Licensed under the Apache License 2.0 (the "License"). You may not use 5# this file except in compliance with the License. You can obtain a copy 6# in the file LICENSE in the source distribution or at 7# https://www.openssl.org/source/license.html 8 9use strict; 10use warnings; 11 12use OpenSSL::Test qw/:DEFAULT with bldtop_file srctop_file cmdstr/; 13use OpenSSL::Test::Utils; 14 15setup("test_verify_store"); 16 17plan tests => 10; 18 19my $dummycnf = srctop_file("apps", "openssl.cnf"); 20my $cakey = srctop_file("test", "certs", "ca-key.pem"); 21my $ukey = srctop_file("test", "certs", "ee-key.pem"); 22 23my $cnf = srctop_file("test", "ca-and-certs.cnf"); 24my $CAkey = "keyCA.ss"; 25my $CAcert="certCA.ss"; 26my $CAserial="certCA.srl"; 27my $CAreq="reqCA.ss"; 28my $CAreq2="req2CA.ss"; # temp 29my $Ukey="keyU.ss"; 30my $Ureq="reqU.ss"; 31my $Ucert="certU.ss"; 32 33SKIP: { 34 req( 'make cert request', 35 qw(-new -section userreq), 36 -config => $cnf, 37 -out => $CAreq, 38 -key => $cakey, 39 -keyout => $CAkey ); 40 41 skip 'failure', 8 unless 42 x509( 'convert request into self-signed cert', 43 qw(-req -CAcreateserial -days 30), 44 qw(-extensions v3_ca), 45 -in => $CAreq, 46 -out => $CAcert, 47 -signkey => $CAkey, 48 -extfile => $cnf ); 49 50 skip 'failure', 7 unless 51 x509( 'convert cert into a cert request', 52 qw(-x509toreq), 53 -in => $CAcert, 54 -out => $CAreq2, 55 -signkey => $CAkey ); 56 57 skip 'failure', 6 unless 58 req( 'verify request 1', 59 qw(-verify -noout -section userreq), 60 -config => $dummycnf, 61 -in => $CAreq ); 62 63 skip 'failure', 5 unless 64 req( 'verify request 2', 65 qw(-verify -noout -section userreq), 66 -config => $dummycnf, 67 -in => $CAreq2 ); 68 69 skip 'failure', 4 unless 70 verify( 'verify signature', 71 -CAstore => $CAcert, 72 $CAcert ); 73 74 skip 'failure', 3 unless 75 req( 'make a user cert request', 76 qw(-new -section userreq), 77 -config => $cnf, 78 -out => $Ureq, 79 -key => $ukey, 80 -keyout => $Ukey ); 81 82 skip 'failure', 2 unless 83 x509( 'sign user cert request', 84 qw(-req -CAcreateserial -days 30 -extensions v3_ee), 85 -in => $Ureq, 86 -out => $Ucert, 87 -CA => $CAcert, 88 -CAkey => $CAkey, 89 -CAserial => $CAserial, 90 -extfile => $cnf ) 91 && verify( undef, 92 -CAstore => $CAcert, 93 $Ucert ); 94 95 skip 'failure', 0 unless 96 x509( 'Certificate details', 97 qw(-subject -issuer -startdate -enddate -noout), 98 -in => $Ucert ); 99} 100 101sub verify { 102 my $title = shift; 103 104 ok(run(app([qw(openssl verify), @_])), $title); 105} 106 107sub req { 108 my $title = shift; 109 110 ok(run(app([qw(openssl req), @_])), $title); 111} 112 113sub x509 { 114 my $title = shift; 115 116 ok(run(app([qw(openssl x509), @_])), $title); 117} 118