aboutsummaryrefslogtreecommitdiff
path: root/test/recipes/20-test_rand_config.t
diff options
context:
space:
mode:
Diffstat (limited to 'test/recipes/20-test_rand_config.t')
-rw-r--r--test/recipes/20-test_rand_config.t103
1 files changed, 103 insertions, 0 deletions
diff --git a/test/recipes/20-test_rand_config.t b/test/recipes/20-test_rand_config.t
new file mode 100644
index 000000000000..5919eef56d6b
--- /dev/null
+++ b/test/recipes/20-test_rand_config.t
@@ -0,0 +1,103 @@
+#! /usr/bin/env perl
+# Copyright 2019-2020 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;
+use OpenSSL::Test::Utils;
+
+setup("test_rand_config");
+
+my @rand_tests = (
+ { drbg => 'HASH-DRBG',
+ digest => 'SHA2-512/256',
+ properties => '',
+ expected => ["HASH-DRBG", "digest: 'SHA2-512/256'"],
+ desc => 'HASH-DRBG SHA2-512/256' },
+
+ { drbg => 'HASH-DRBG',
+ digest => 'SHA3-256',
+ properties => '',
+ expected => ["HASH-DRBG", "digest: 'SHA3-512'"],
+ desc => 'HASH-DRBG SHA3/512' },
+
+ { drbg => 'HMAC-DRBG',
+ digest => 'SHA3-256',
+ properties => '',
+ expected => ["HMAC-DRBG", "mac: HMAC", "digest: 'SHA3-256'"],
+ desc => 'HMAC-DRBG SHA3/256' },
+
+ { cipher => 'AES-128-CTR',
+ expected => ["CTR-DRBG", "cipher: 'AES-128-CTR'"],
+ desc => 'CTR-DRBG AES-128 no DRBG' },
+ { expected => ["CTR-DRBG", "cipher: 'AES-256-CTR'"],
+ desc => 'CTR-DRBG AES-256 defaults' },
+);
+
+my @aria_tests = (
+ { drbg => 'CTR-DRBG',
+ cipher => 'ARIA-128-CTR',
+ properties => '',
+ expected => ["CTR-DRBG", "cipher: 'ARIA-128-CTR'"],
+ desc => 'CTR-DRBG ARIA-128' },
+
+ { drbg => 'CTR-DRBG',
+ cipher => 'ARIA-128-CTR',
+ properties => '',
+ expected => ["CTR-DRBG", "cipher: 'ARIA-128-CTR'"],
+ desc => 'CTR-DRBG ARIA-256' },
+);
+
+push @rand_tests, @aria_tests unless disabled("aria");
+
+plan tests => scalar @rand_tests;
+
+my $contents =<<'CONFIGEND';
+openssl_conf = openssl_init
+
+[openssl_init]
+random = random_section
+
+[random_section]
+CONFIGEND
+
+foreach (@rand_tests) {
+ my $tmpfile = 'rand_config.cfg';
+ open(my $cfg, '>', $tmpfile) or die "Could not open file";
+ print $cfg $contents;
+ if ($_->{drbg}) {
+ print $cfg "random = $_->{drbg}\n";
+ }
+ if ($_->{cipher}) {
+ print $cfg "cipher = $_->{cipher}\n";
+ }
+ if ($_->{digest}) {
+ print $cfg "digest = $_->{digest}\n"
+ }
+ close $cfg;
+
+ $ENV{OPENSSL_CONF} = $tmpfile;
+
+ ok(comparelines($_->{expected}), $_->{desc});
+}
+
+# Check that the stdout output contains the expected values.
+sub comparelines {
+ my @lines = run(app(["openssl", "list", "--random-instances"]),
+ capture => 1);
+
+ foreach (@_) {
+ if ( !grep( /$_/, @lines ) ) {
+ print "Cannot find: $_\n";
+ return 0;
+ }
+ }
+ return 1;
+}