1e1051a39Sopenharmony_ci#! /usr/bin/env perl
2e1051a39Sopenharmony_ci# Copyright 2023 The OpenSSL Project Authors. All Rights Reserved.
3e1051a39Sopenharmony_ci#
4e1051a39Sopenharmony_ci# Licensed under the Apache License 2.0 (the "License").  You may not use
5e1051a39Sopenharmony_ci# this file except in compliance with the License.  You can obtain a copy
6e1051a39Sopenharmony_ci# in the file LICENSE in the source distribution or at
7e1051a39Sopenharmony_ci# https://www.openssl.org/source/license.html
8e1051a39Sopenharmony_ci
9e1051a39Sopenharmony_ci
10e1051a39Sopenharmony_ciuse strict;
11e1051a39Sopenharmony_ciuse warnings;
12e1051a39Sopenharmony_ci
13e1051a39Sopenharmony_ciuse POSIX;
14e1051a39Sopenharmony_ciuse OpenSSL::Test qw/:DEFAULT srctop_file with data_file/;
15e1051a39Sopenharmony_ci
16e1051a39Sopenharmony_ciuse OpenSSL::Test::Utils;
17e1051a39Sopenharmony_ciuse OpenSSL::Glob;
18e1051a39Sopenharmony_ci
19e1051a39Sopenharmony_cisetup("test_policy_tree");
20e1051a39Sopenharmony_ci
21e1051a39Sopenharmony_ciplan skip_all => "No EC support" if disabled("ec");
22e1051a39Sopenharmony_ci
23e1051a39Sopenharmony_ciplan tests => 2;
24e1051a39Sopenharmony_ci
25e1051a39Sopenharmony_ci# The small pathological tree is expected to work
26e1051a39Sopenharmony_cimy $small_chain = srctop_file("test", "recipes", "80-test_policy_tree_data",
27e1051a39Sopenharmony_ci                              "small_policy_tree.pem");
28e1051a39Sopenharmony_cimy $small_leaf = srctop_file("test", "recipes", "80-test_policy_tree_data",
29e1051a39Sopenharmony_ci                             "small_leaf.pem");
30e1051a39Sopenharmony_ci
31e1051a39Sopenharmony_ciok(run(app(["openssl", "verify", "-CAfile", $small_chain,
32e1051a39Sopenharmony_ci            "-policy_check", $small_leaf])),
33e1051a39Sopenharmony_ci   "test small policy tree");
34e1051a39Sopenharmony_ci
35e1051a39Sopenharmony_ci# The large pathological tree is expected to fail
36e1051a39Sopenharmony_cimy $large_chain = srctop_file("test", "recipes", "80-test_policy_tree_data",
37e1051a39Sopenharmony_ci                              "large_policy_tree.pem");
38e1051a39Sopenharmony_cimy $large_leaf = srctop_file("test", "recipes", "80-test_policy_tree_data",
39e1051a39Sopenharmony_ci                             "large_leaf.pem");
40e1051a39Sopenharmony_ci
41e1051a39Sopenharmony_ciok(!run(app(["openssl", "verify", "-CAfile", $large_chain,
42e1051a39Sopenharmony_ci             "-policy_check", $large_leaf])),
43e1051a39Sopenharmony_ci   "test large policy tree");
44