]> git.ipfire.org Git - thirdparty/openssl.git/blame - test/recipes/20-test_rand_config.t
Raise an error on syscall failure in tls_retry_write_records
[thirdparty/openssl.git] / test / recipes / 20-test_rand_config.t
CommitLineData
2e9ab56e
P
1#! /usr/bin/env perl
2# Copyright 2019-2020 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
9
10use strict;
11use warnings;
12
13use OpenSSL::Test;
14use OpenSSL::Test::Utils;
15
16setup("test_rand_config");
17
18my @rand_tests = (
19 { drbg => 'HASH-DRBG',
20 digest => 'SHA2-512/256',
21 properties => '',
22 expected => ["HASH-DRBG", "digest: 'SHA2-512/256'"],
23 desc => 'HASH-DRBG SHA2-512/256' },
24
25 { drbg => 'HASH-DRBG',
26 digest => 'SHA3-256',
27 properties => '',
28 expected => ["HASH-DRBG", "digest: 'SHA3-512'"],
29 desc => 'HASH-DRBG SHA3/512' },
30
31 { drbg => 'HMAC-DRBG',
32 digest => 'SHA3-256',
33 properties => '',
34 expected => ["HMAC-DRBG", "mac: HMAC", "digest: 'SHA3-256'"],
35 desc => 'HMAC-DRBG SHA3/256' },
36
37 { cipher => 'AES-128-CTR',
38 expected => ["CTR-DRBG", "cipher: 'AES-128-CTR'"],
39 desc => 'CTR-DRBG AES-128 no DRBG' },
40 { expected => ["CTR-DRBG", "cipher: 'AES-256-CTR'"],
41 desc => 'CTR-DRBG AES-256 defaults' },
42);
43
44my @aria_tests = (
45 { drbg => 'CTR-DRBG',
46 cipher => 'ARIA-128-CTR',
47 properties => '',
48 expected => ["CTR-DRBG", "cipher: 'ARIA-128-CTR'"],
49 desc => 'CTR-DRBG ARIA-128' },
50
51 { drbg => 'CTR-DRBG',
52 cipher => 'ARIA-128-CTR',
53 properties => '',
54 expected => ["CTR-DRBG", "cipher: 'ARIA-128-CTR'"],
55 desc => 'CTR-DRBG ARIA-256' },
56);
57
58push @rand_tests, @aria_tests unless disabled("aria");
59
60plan tests => scalar @rand_tests;
61
62my $contents =<<'CONFIGEND';
63openssl_conf = openssl_init
64
65[openssl_init]
66random = random_section
67
68[random_section]
69CONFIGEND
70
71foreach (@rand_tests) {
72 my $tmpfile = 'rand_config.cfg';
73 open(my $cfg, '>', $tmpfile) or die "Could not open file";
74 print $cfg $contents;
75 if ($_->{drbg}) {
76 print $cfg "random = $_->{drbg}\n";
77 }
78 if ($_->{cipher}) {
79 print $cfg "cipher = $_->{cipher}\n";
80 }
81 if ($_->{digest}) {
82 print $cfg "digest = $_->{digest}\n"
83 }
84 close $cfg;
85
86 $ENV{OPENSSL_CONF} = $tmpfile;
87
88 ok(comparelines($_->{expected}), $_->{desc});
89}
90
91# Check that the stdout output contains the expected values.
92sub comparelines {
93 my @lines = run(app(["openssl", "list", "--random-instances"]),
94 capture => 1);
95
96 foreach (@_) {
97 if ( !grep( /$_/, @lines ) ) {
98 print "Cannot find: $_\n";
99 return 0;
100 }
101 }
102 return 1;
103}