xref: /aosp_15_r20/external/cronet/third_party/boringssl/src/pki/nist_pkits_unittest.cc (revision 6777b5387eb2ff775bb5750e3f5d96f37fb7352b)
1 // Copyright 2017 The Chromium Authors
2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file.
4 
5 #include "nist_pkits_unittest.h"
6 
7 #include "certificate_policies.h"
8 
9 #include <sstream>
10 
11 namespace bssl {
12 
13 namespace {
14 
15 // 2.16.840.1.101.3.2.1.48.1
16 const uint8_t kTestPolicy1[] = {0x60, 0x86, 0x48, 0x01, 0x65,
17                                 0x03, 0x02, 0x01, 0x30, 0x01};
18 
19 // 2.16.840.1.101.3.2.1.48.2
20 const uint8_t kTestPolicy2[] = {0x60, 0x86, 0x48, 0x01, 0x65,
21                                 0x03, 0x02, 0x01, 0x30, 0x02};
22 
23 // 2.16.840.1.101.3.2.1.48.3
24 const uint8_t kTestPolicy3[] = {0x60, 0x86, 0x48, 0x01, 0x65,
25                                 0x03, 0x02, 0x01, 0x30, 0x03};
26 
27 // 2.16.840.1.101.3.2.1.48.6
28 const uint8_t kTestPolicy6[] = {0x60, 0x86, 0x48, 0x01, 0x65,
29                                 0x03, 0x02, 0x01, 0x30, 0x06};
30 
SetPolicySetFromString(const char * const policy_names,std::set<der::Input> * out)31 void SetPolicySetFromString(const char *const policy_names,
32                             std::set<der::Input> *out) {
33   out->clear();
34   std::istringstream stream(policy_names);
35   for (std::string line; std::getline(stream, line, ',');) {
36     size_t start = line.find_first_not_of(" \n\t\r\f\v");
37     if (start == std::string::npos) {
38       continue;
39     }
40     size_t end = line.find_last_not_of(" \n\t\r\f\v");
41     if (end == std::string::npos) {
42       continue;
43     }
44     std::string policy_name = line.substr(start, end + 1);
45     if (policy_name.empty()) {
46       continue;
47     }
48 
49     if (policy_name == "anyPolicy") {
50       out->insert(der::Input(kAnyPolicyOid));
51     } else if (policy_name == "NIST-test-policy-1") {
52       out->insert(der::Input(kTestPolicy1));
53     } else if (policy_name == "NIST-test-policy-2") {
54       out->insert(der::Input(kTestPolicy2));
55     } else if (policy_name == "NIST-test-policy-3") {
56       out->insert(der::Input(kTestPolicy3));
57     } else if (policy_name == "NIST-test-policy-6") {
58       out->insert(der::Input(kTestPolicy6));
59     } else {
60       ADD_FAILURE() << "Unknown policy name: " << policy_name;
61     }
62   }
63 }
64 
65 }  // namespace
66 
PkitsTestInfo()67 PkitsTestInfo::PkitsTestInfo() {
68   SetInitialPolicySet("anyPolicy");
69   SetUserConstrainedPolicySet("NIST-test-policy-1");
70 }
71 
72 PkitsTestInfo::PkitsTestInfo(const PkitsTestInfo &other) = default;
73 
74 PkitsTestInfo::~PkitsTestInfo() = default;
75 
SetInitialExplicitPolicy(bool b)76 void PkitsTestInfo::SetInitialExplicitPolicy(bool b) {
77   initial_explicit_policy =
78       b ? InitialExplicitPolicy::kTrue : InitialExplicitPolicy::kFalse;
79 }
80 
SetInitialPolicyMappingInhibit(bool b)81 void PkitsTestInfo::SetInitialPolicyMappingInhibit(bool b) {
82   initial_policy_mapping_inhibit = b ? InitialPolicyMappingInhibit::kTrue
83                                      : InitialPolicyMappingInhibit::kFalse;
84 }
85 
SetInitialInhibitAnyPolicy(bool b)86 void PkitsTestInfo::SetInitialInhibitAnyPolicy(bool b) {
87   initial_inhibit_any_policy =
88       b ? InitialAnyPolicyInhibit::kTrue : InitialAnyPolicyInhibit::kFalse;
89 }
90 
SetInitialPolicySet(const char * const policy_names)91 void PkitsTestInfo::SetInitialPolicySet(const char *const policy_names) {
92   SetPolicySetFromString(policy_names, &initial_policy_set);
93 }
94 
SetUserConstrainedPolicySet(const char * const policy_names)95 void PkitsTestInfo::SetUserConstrainedPolicySet(
96     const char *const policy_names) {
97   SetPolicySetFromString(policy_names, &user_constrained_policy_set);
98 }
99 
100 }  // namespace bssl
101