xref: /freebsd/crypto/openssl/test/recipes/02-test_windows_registry.t (revision e7be843b4a162e68651d3911f0357ed464915629)
1*e7be843bSPierre Pronchery#! /usr/bin/env perl
2*e7be843bSPierre Pronchery# Copyright 2024 The OpenSSL Project Authors. All Rights Reserved.
3*e7be843bSPierre Pronchery#
4*e7be843bSPierre Pronchery# Licensed under the Apache License 2.0 (the "License").  You may not use
5*e7be843bSPierre Pronchery# this file except in compliance with the License.  You can obtain a copy
6*e7be843bSPierre Pronchery# in the file LICENSE in the source distribution or at
7*e7be843bSPierre Pronchery# https://www.openssl.org/source/license.html
8*e7be843bSPierre Pronchery
9*e7be843bSPierre Pronchery
10*e7be843bSPierre Proncheryuse OpenSSL::Test;
11*e7be843bSPierre Proncheryuse OpenSSL::Test::Utils;
12*e7be843bSPierre Proncheryuse OpenSSL::Test qw/:DEFAULT bldtop_file data_file srctop_file cmdstr/;
13*e7be843bSPierre Pronchery
14*e7be843bSPierre Proncherysetup("test_windows_registry");
15*e7be843bSPierre Pronchery
16*e7be843bSPierre Proncheryplan skip_all => "Windows registry tests are only available on windows"
17*e7be843bSPierre Pronchery    if $^O !~ /(MSWin)/;
18*e7be843bSPierre Pronchery
19*e7be843bSPierre Proncherymy $actual;
20*e7be843bSPierre Proncherymy $expect;
21*e7be843bSPierre Pronchery
22*e7be843bSPierre Proncherymy @tempout = run(app(["openssl", "version", "-w"]), capture => 1);
23*e7be843bSPierre Proncherymy $context = "@tempout";
24*e7be843bSPierre Pronchery$context =~ s/^.*: //;
25*e7be843bSPierre Pronchery
26*e7be843bSPierre Pronchery
27*e7be843bSPierre Pronchery@tempout = run(app(["openssl", "version", "-v"]), capture => 1);
28*e7be843bSPierre Proncherymy $version = "@tempout";
29*e7be843bSPierre Pronchery$version =~ s/^OpenSSL //;
30*e7be843bSPierre Pronchery$version =~ s/(^[0-9]+\.[0-9]+)(.*$)/\1/;
31*e7be843bSPierre Pronchery
32*e7be843bSPierre Proncherymy $regkey = "HKLM\\SOFTWARE\\OpenSSL-".$version."-".$context;
33*e7be843bSPierre Pronchery$regkey =~ s/\n//g;
34*e7be843bSPierre Proncheryprint "REGKEY IS $regkey\n";
35*e7be843bSPierre Pronchery
36*e7be843bSPierre Proncherymy $exit = run(cmd(["reg.exe", "query", $regkey, "/v", "OPENSSLDIR", "/reg:32"]));
37*e7be843bSPierre Pronchery
38*e7be843bSPierre Proncheryplan skip_all => "Skipping test as registry keys aren't set"
39*e7be843bSPierre Pronchery    if $exit == 0;
40*e7be843bSPierre Pronchery
41*e7be843bSPierre Proncheryplan tests => 3;
42*e7be843bSPierre Pronchery
43*e7be843bSPierre Proncherymy @expectossldir = run(cmd(["reg.exe", "query", $regkey, "/reg:32", "/t", "REG_EXPAND_SZ", "/v", "OPENSSLDIR"]), capture => 1);
44*e7be843bSPierre Pronchery
45*e7be843bSPierre Proncherymy @expectengdir = run(cmd(["reg.exe", "query", $regkey, "/reg:32", "/t", "REG_EXPAND_SZ", "/v", "ENGINESDIR"]), capture => 1);
46*e7be843bSPierre Pronchery
47*e7be843bSPierre Proncherymy @expectmoddir = run(cmd(["reg.exe", "query", $regkey, "/reg:32", "/t", "REG_EXPAND_SZ", "/v", "MODULESDIR"]), capture => 1);
48*e7be843bSPierre Pronchery
49*e7be843bSPierre Proncherymy @ossldir = run(app(["openssl", "version", "-d"]), capture => 1);
50*e7be843bSPierre Pronchery
51*e7be843bSPierre Proncheryprint "@ossldir";
52*e7be843bSPierre Pronchery$expect = "@expectossldir";
53*e7be843bSPierre Pronchery$actual = "@ossldir";
54*e7be843bSPierre Pronchery$expect =~ s/HKEY_LOCAL_MACHINE.*\n*//;
55*e7be843bSPierre Pronchery$expect =~ s/\n//g;
56*e7be843bSPierre Pronchery$expect =~ s/.*REG_EXPAND_SZ *//;
57*e7be843bSPierre Pronchery$expect =~ s/ .*$//;
58*e7be843bSPierre Pronchery$actual =~ s/OPENSSLDIR: *//;
59*e7be843bSPierre Pronchery
60*e7be843bSPierre Proncheryok(grep(/$expect/,$actual), "Confirming version output for openssldir from registry");
61*e7be843bSPierre Pronchery
62*e7be843bSPierre Proncherymy @osslengineout = run(app(["openssl", "version", "-e"]), capture => 1);
63*e7be843bSPierre Pronchery
64*e7be843bSPierre Pronchery$expect = "@expectengdir";
65*e7be843bSPierre Pronchery$actual = "@osslengineout";
66*e7be843bSPierre Pronchery$expect =~ s/HKEY_LOCAL_MACHINE.*\n*//;
67*e7be843bSPierre Pronchery$expect =~ s/\n//g;
68*e7be843bSPierre Pronchery$expect =~ s/.*REG_EXPAND_SZ *//;
69*e7be843bSPierre Pronchery$expect =~ s/ .*$//;
70*e7be843bSPierre Pronchery$actual =~ s/ENGINESDIR: *//;
71*e7be843bSPierre Pronchery
72*e7be843bSPierre Proncheryok(grep(/$expect/, $actual) == 1, "Confirming version output for enginesdir from registry");
73*e7be843bSPierre Pronchery
74*e7be843bSPierre Proncherymy @osslmoduleout = run(app(["openssl", "version", "-m"]), capture => 1);
75*e7be843bSPierre Pronchery
76*e7be843bSPierre Pronchery$expect = "@expectmoddir";
77*e7be843bSPierre Pronchery$actual = "@osslmoduleout";
78*e7be843bSPierre Pronchery$expect =~ s/HKEY_LOCAL_MACHINE.*\n*//;
79*e7be843bSPierre Pronchery$expect =~ s/\n//g;
80*e7be843bSPierre Pronchery$expect =~ s/.*REG_EXPAND_SZ *//;
81*e7be843bSPierre Pronchery$expect =~ s/ .*$//;
82*e7be843bSPierre Pronchery$actual =~ s/MODULESSDIR: *//;
83*e7be843bSPierre Proncheryok(grep(/$expect/, $actual) == 1, "Confirming version output for modulesdir from registry");
84