+ skip 'failure', 7 unless
+ subtest 'DSA certificate creation' => sub {
+ plan skip_all => "skipping DSA certificate creation"
+ if run(app(["openssl", "no-dsa"], stdout => undef));
+
+ plan tests => 4;
+
+ SKIP: {
+ $ENV{CN2} = "DSA Certificate";
+ skip 'failure', 3 unless
+ ok(run(app([@reqcmd, "-config", $Uconf,
+ "-out", $Dreq, "-keyout", $Dkey,
+ @req_dsa],
+ stdout => "err.ss")),
+ "make a DSA user cert request");
+ skip 'failure', 2 unless
+ ok(run(app([@x509cmd, "-CAcreateserial",
+ "-in", $Dreq,
+ "-days", "30",
+ "-req",
+ "-out", $Dcert,
+ "-CA", $CAcert, "-CAkey", $CAkey,
+ "-CAserial", $CAserial,
+ "-extfile", $Uconf,
+ "-extensions", "v3_ee_dsa"],
+ stdout => "err.ss")),
+ "sign DSA user cert request");
+ skip 'failure', 1 unless
+ ok(run(app([@verifycmd, "-CAfile", $CAcert, $Dcert])),
+ "verify DSA user cert");
+ skip 'failure', 0 unless
+ ok(run(app([@x509cmd,
+ "-subject", "-issuer",
+ "-startdate", "-enddate", "-noout",
+ "-in", $Dcert])),
+ "DSA Certificate details");
+ }
+ };
+
+ skip 'failure', 6 unless
+ subtest 'ECDSA/ECDH certificate creation' => sub {
+ plan skip_all => "skipping ECDSA/ECDH certificate creation"
+ if run(app(["openssl", "no-ec"], stdout => undef));
+
+ plan tests => 5;
+
+ SKIP: {
+ $ENV{CN2} = "ECDSA Certificate";
+ skip 'failure', 4 unless
+ ok(run(app(["openssl", "ecparam", "-name", "P-256",
+ "-out", "ecp.ss"])),
+ "make EC parameters");
+ skip 'failure', 3 unless
+ ok(run(app([@reqcmd, "-config", $Uconf,
+ "-out", $Ereq, "-keyout", $Ekey,
+ "-newkey", "ec:ecp.ss"],
+ stdout => "err.ss")),
+ "make a ECDSA/ECDH user cert request");
+ skip 'failure', 2 unless
+ ok(run(app([@x509cmd, "-CAcreateserial",
+ "-in", $Ereq,
+ "-days", "30",
+ "-req",
+ "-out", $Ecert,
+ "-CA", $CAcert, "-CAkey", $CAkey,
+ "-CAserial", $CAserial,
+ "-extfile", $Uconf,
+ "-extensions", "v3_ee_ec"],
+ stdout => "err.ss")),
+ "sign ECDSA/ECDH user cert request");
+ skip 'failure', 1 unless
+ ok(run(app([@verifycmd, "-CAfile", $CAcert, $Ecert])),
+ "verify ECDSA/ECDH user cert");
+ skip 'failure', 0 unless
+ ok(run(app([@x509cmd,
+ "-subject", "-issuer",
+ "-startdate", "-enddate", "-noout",
+ "-in", $Ecert])),
+ "ECDSA Certificate details");
+ }
+ };