mirror of
https://github.com/openssl/openssl.git
synced 2025-02-11 14:22:43 +08:00
Reviewed-by: Saša Nedvědický <sashan@openssl.org> Reviewed-by: Paul Dale <ppzgs1@gmail.com> Reviewed-by: Tom Cosgrove <tom.cosgrove@arm.com> Reviewed-by: Todd Short <todd.short@me.com> (Merged from https://github.com/openssl/openssl/pull/25792)
146 lines
4.8 KiB
Perl
146 lines
4.8 KiB
Perl
#! /usr/bin/env perl
|
|
# Copyright 2024 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 File::Spec;
|
|
use File::Basename;
|
|
use OpenSSL::Test qw/:DEFAULT with srctop_file bldtop_dir/;
|
|
use OpenSSL::Test::Utils;
|
|
|
|
setup("test_speed");
|
|
|
|
plan tests => 25;
|
|
|
|
ok(run(app(['openssl', 'speed', '-testmode'])),
|
|
"Simple test of all speed algorithms");
|
|
|
|
#Test various options to speed. In all cases we use the -testmode option to
|
|
#ensure we don't spend too long in this test. That option also causes the speed
|
|
#app to return an error code if anything unexpectedly goes wrong.
|
|
|
|
|
|
SKIP: {
|
|
skip "Multi option is not supported by this OpenSSL build", 1
|
|
if $^O =~ /^(VMS|MSWin32)$/;
|
|
|
|
ok(run(app(['openssl', 'speed', '-testmode', '-multi', 2])),
|
|
"Test the multi option");
|
|
}
|
|
|
|
ok(run(app(['openssl', 'speed', '-testmode', '-misalign', 1])),
|
|
"Test the misalign option");
|
|
|
|
SKIP: {
|
|
skip "Multiblock is not supported by this OpenSSL build", 1
|
|
if disabled("multiblock")
|
|
# The AES-128-CBC-HMAC-SHA1 cipher isn't available on all platforms
|
|
# We test its availability without the "-mb" option. We only do the
|
|
# multiblock test via "-mb" if the cipher seems to exist.
|
|
|| !run(app(['openssl', 'speed', '-testmode', '-evp',
|
|
'AES-128-CBC-HMAC-SHA1']));
|
|
|
|
ok(run(app(['openssl', 'speed', '-testmode', '-mb', '-evp',
|
|
'AES-128-CBC-HMAC-SHA1'])),
|
|
"Test the EVP and mb options");
|
|
}
|
|
|
|
ok(run(app(['openssl', 'speed', '-testmode', '-kem-algorithms'])),
|
|
"Test the kem-algorithms option");
|
|
|
|
ok(run(app(['openssl', 'speed', '-testmode', '-signature-algorithms'])),
|
|
"Test the signature-algorithms option");
|
|
|
|
ok(run(app(['openssl', 'speed', '-testmode', '-primes', 3, 'rsa1024'])),
|
|
"Test the primes option");
|
|
|
|
ok(run(app(['openssl', 'speed', '-testmode', '-mr'])),
|
|
"Test the mr option");
|
|
|
|
ok(run(app(['openssl', 'speed', '-testmode', '-decrypt', '-evp', 'aes-128-cbc'])),
|
|
"Test the decrypt and evp options");
|
|
|
|
ok(run(app(['openssl', 'speed', '-testmode', '-evp', 'sha256'])),
|
|
"Test the evp option with a digest");
|
|
|
|
ok(run(app(['openssl', 'speed', '-testmode', '-hmac', 'sha256'])),
|
|
"Test the hmac option");
|
|
|
|
SKIP: {
|
|
skip "CMAC is not supported by this OpenSSL build", 1
|
|
if disabled("cmac");
|
|
|
|
ok(run(app(['openssl', 'speed', '-testmode', '-cmac', 'aes-128-cbc'])),
|
|
"Test the cmac option");
|
|
}
|
|
|
|
ok(run(app(['openssl', 'speed', '-testmode', '-aead', '-evp', 'aes-128-gcm'])),
|
|
"Test the aead and evp options");
|
|
|
|
SKIP: {
|
|
skip "ASYNC/threads not supported by this OpenSSL build", 1
|
|
if disabled("async") || disabled("threads");
|
|
|
|
ok(run(app(['openssl', 'speed', '-testmode', '-async_jobs', '1'])),
|
|
"Test the async_jobs option");
|
|
}
|
|
|
|
SKIP: {
|
|
skip "Mlock option is not supported by this OpenSSL build", 1
|
|
if $^O !~ /^(linux|MSWin32)$/;
|
|
|
|
ok(run(app(['openssl', 'speed', '-testmode', '-mlock'])),
|
|
"Test the mlock option");
|
|
}
|
|
|
|
#We don't expect these options to have an effect in testmode but we at least
|
|
#test that the option parsing works ok
|
|
ok(run(app(['openssl', 'speed', '-testmode', '-seconds', 1, '-bytes', 16,
|
|
'-elapsed'])),
|
|
"Test the seconds, bytes and elapsed options");
|
|
|
|
#Test that this won't crash on sparc
|
|
ok(run(app(['openssl', 'speed', '-testmode', '-seconds', 1, '-bytes', 1,
|
|
'aes-128-cbc'])),
|
|
"Test that bad bytes value doesn't make speed to crash");
|
|
|
|
#No need to -testmode for testing -help. All we're doing is testing the option
|
|
#parsing. We don't sanity check the output
|
|
ok(run(app(['openssl', 'speed', '-help'])),
|
|
"Test the help option");
|
|
|
|
#Now test some invalid options. The speed app should fail
|
|
ok(!run(app(['openssl', 'speed', 'blah'])),
|
|
"Test an unknwon algorithm");
|
|
|
|
ok(!run(app(['openssl', 'speed', '-evp', 'blah'])),
|
|
"Test a unknown evp algorithm");
|
|
|
|
ok(!run(app(['openssl', 'speed', '-hmac', 'blah'])),
|
|
"Test a unknown hmac algorithm");
|
|
|
|
ok(!run(app(['openssl', 'speed', '-cmac', 'blah'])),
|
|
"Test a unknown cmac algorithm");
|
|
|
|
ok(!run(app(['openssl', 'speed', '-async_jobs', 100000])),
|
|
"Test an invalid number of async_jobs");
|
|
|
|
ok(!run(app(['openssl', 'speed', '-misalign', 65])),
|
|
"Test an invalid misalign number");
|
|
|
|
SKIP: {
|
|
skip "Multiblock is not supported by this OpenSSL build", 1
|
|
if disabled("multiblock");
|
|
|
|
ok(!run(app(['openssl', 'speed', '-testmode', '-mb', '-evp',
|
|
'AES-128-CBC'])),
|
|
"Test a non multiblock cipher with -mb");
|
|
}
|