xref: /freebsd-src/crypto/openssl/test/recipes/05-test_rand.t (revision e0c4386e7e71d93b0edc0c8fa156263fc4a8b0b6)
1*e0c4386eSCy Schubert#! /usr/bin/env perl
2*e0c4386eSCy Schubert# Copyright 2015-2023 The OpenSSL Project Authors. All Rights Reserved.
3*e0c4386eSCy Schubert#
4*e0c4386eSCy Schubert# Licensed under the Apache License 2.0 (the "License").  You may not use
5*e0c4386eSCy Schubert# this file except in compliance with the License.  You can obtain a copy
6*e0c4386eSCy Schubert# in the file LICENSE in the source distribution or at
7*e0c4386eSCy Schubert# https://www.openssl.org/source/license.html
8*e0c4386eSCy Schubert
9*e0c4386eSCy Schubertuse strict;
10*e0c4386eSCy Schubertuse warnings;
11*e0c4386eSCy Schubertuse OpenSSL::Test;
12*e0c4386eSCy Schubertuse OpenSSL::Test::Utils;
13*e0c4386eSCy Schubert
14*e0c4386eSCy Schubertplan tests => 5;
15*e0c4386eSCy Schubertsetup("test_rand");
16*e0c4386eSCy Schubert
17*e0c4386eSCy Schubertok(run(test(["rand_test"])));
18*e0c4386eSCy Schubertok(run(test(["drbgtest"])));
19*e0c4386eSCy Schubertok(run(test(["rand_status_test"])));
20*e0c4386eSCy Schubert
21*e0c4386eSCy SchubertSKIP: {
22*e0c4386eSCy Schubert    skip "engine is not supported by this OpenSSL build", 2
23*e0c4386eSCy Schubert        if disabled("engine") || disabled("dynamic-engine");
24*e0c4386eSCy Schubert
25*e0c4386eSCy Schubert    my $success;
26*e0c4386eSCy Schubert    my @randdata;
27*e0c4386eSCy Schubert    my $expected = '0102030405060708090a0b0c0d0e0f10';
28*e0c4386eSCy Schubert
29*e0c4386eSCy Schubert    @randdata = run(app(['openssl', 'rand', '-engine', 'ossltest', '-hex', '16' ]),
30*e0c4386eSCy Schubert                    capture => 1, statusvar => \$success);
31*e0c4386eSCy Schubert    chomp(@randdata);
32*e0c4386eSCy Schubert    ok($success && $randdata[0] eq $expected,
33*e0c4386eSCy Schubert       "rand with ossltest: Check rand output is as expected");
34*e0c4386eSCy Schubert
35*e0c4386eSCy Schubert    @randdata = run(app(['openssl', 'rand', '-engine', 'dasync', '-hex', '16' ]),
36*e0c4386eSCy Schubert                    capture => 1, statusvar => \$success);
37*e0c4386eSCy Schubert    chomp(@randdata);
38*e0c4386eSCy Schubert    ok($success && length($randdata[0]) == 32,
39*e0c4386eSCy Schubert       "rand with dasync: Check rand output is of expected length");
40*e0c4386eSCy Schubert}
41