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