mirror of https://github.com/openssl/openssl.git
98 lines
3.5 KiB
Perl
98 lines
3.5 KiB
Perl
#! /usr/bin/env perl
|
|
# Copyright 2024-2025 The OpenSSL Project Authors. All Rights Reserved.
|
|
#
|
|
# Licensed under the Apache License 2.0 (the "License"). You may not use
|
|
# this file except in compliance with the License. You can obtain a copy
|
|
# in the file LICENSE in the source distribution or at
|
|
# https://www.openssl.org/source/license.html
|
|
|
|
use strict;
|
|
use warnings;
|
|
|
|
use OpenSSL::Test qw(:DEFAULT srctop_dir bldtop_dir srctop_file);
|
|
use OpenSSL::Test::Utils;
|
|
|
|
BEGIN {
|
|
setup("test_ml_dsa");
|
|
}
|
|
|
|
my $provconf = srctop_file("test", "fips-and-base.cnf");
|
|
# fips will be added later
|
|
my $no_fips = disabled('fips') || ($ENV{NO_FIPS} // 0);
|
|
|
|
use lib srctop_dir('Configurations');
|
|
use lib bldtop_dir('.');
|
|
|
|
plan skip_all => 'ML-DSA is not supported in this build' if disabled('ml-dsa');
|
|
plan tests => 12;
|
|
|
|
require_ok(srctop_file('test','recipes','tconversion.pl'));
|
|
|
|
subtest "ml-dsa-44 conversions using 'openssl pkey' -- private key" => sub {
|
|
tconversion( -type => "pkey",
|
|
-in => srctop_file("test","testmldsa44.pem"),
|
|
-prefix => "mldsa44-pkey-priv" );
|
|
};
|
|
subtest "ml-dsa-44 conversions using 'openssl pkey' -- pkcs8 key" => sub {
|
|
tconversion( -type => "pkey",
|
|
-in => srctop_file("test","testmldsa44.pem"),
|
|
-args => ["pkey"],
|
|
-prefix => "mldsa44-pkey-pkcs8" );
|
|
};
|
|
subtest "ml-dsa-44 conversions using 'openssl pkey' -- pub key" => sub {
|
|
tconversion( -type => "pkey",
|
|
-in => srctop_file("test","testmldsa44pub.pem"),
|
|
-args => ["pkey", "-pubin", "-pubout"],
|
|
-prefix => "mldsa44-pkey-pub" );
|
|
};
|
|
|
|
subtest "ml-dsa-65 conversions using 'openssl pkey' -- private key" => sub {
|
|
tconversion( -type => "pkey",
|
|
-in => srctop_file("test","testmldsa65.pem"),
|
|
-prefix => "mldsa65-pkey-priv");
|
|
};
|
|
subtest "ml-dsa-65 conversions using 'openssl pkey' -- pkcs8 key" => sub {
|
|
tconversion( -type => "pkey", -in => srctop_file("test","testmldsa65.pem"),
|
|
-args => ["pkey"], -prefix => "mldsa65-pkey-pkcs8");
|
|
};
|
|
subtest "ml-dsa-65 conversions using 'openssl pkey' -- pub key" => sub {
|
|
tconversion( -type => "pkey",
|
|
-in => srctop_file("test","testmldsa65pub.pem"),
|
|
-args => ["pkey", "-pubin", "-pubout"],
|
|
-prefix => "mldsa65-pkey-pub" );
|
|
};
|
|
|
|
subtest "ml-dsa-87 conversions using 'openssl pkey' -- private key" => sub {
|
|
tconversion( -type => "pkey",
|
|
-in => srctop_file("test","testmldsa87.pem"),
|
|
-prefix => "mldsa87-pkey-priv" );
|
|
};
|
|
subtest "ml-dsa-87 conversions using 'openssl pkey' -- pkcs8 key" => sub {
|
|
tconversion( -type => "pkey",
|
|
-in => srctop_file("test","testmldsa87.pem"),
|
|
-args => ["pkey"],
|
|
-prefix => "mldsa87-pkey-pkcs8" );
|
|
};
|
|
subtest "ml-dsa-87 conversions using 'openssl pkey' -- pub key" => sub {
|
|
tconversion( -type => "pkey",
|
|
-in => srctop_file("test","testmldsa87pub.pem"),
|
|
-args => ["pkey", "-pubin", "-pubout"],
|
|
-prefix => "mldsa87-pkey-pub" );
|
|
};
|
|
|
|
ok(run(test(["ml_dsa_test"])), "running ml_dsa_test");
|
|
|
|
SKIP: {
|
|
skip "Skipping FIPS tests", 1
|
|
if $no_fips;
|
|
|
|
# ML-DSA is only present after OpenSSL 3.5
|
|
run(test(["fips_version_test", "-config", $provconf, ">=3.5.0"]),
|
|
capture => 1, statusvar => \my $exit);
|
|
skip "FIPS provider version is too old for ML-DSA test", 1
|
|
if !$exit;
|
|
|
|
ok(run(test(["ml_dsa_test", "-config", $provconf])),
|
|
"running ml_dsa_test with FIPS");
|
|
}
|