1 // Copyright (c) 2012 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file.
5 #ifndef CHROMEOS_NETWORK_CERTIFICATE_PATTERN_H_
6 #define CHROMEOS_NETWORK_CERTIFICATE_PATTERN_H_
11 #include "base/memory/scoped_ptr.h"
12 #include "chromeos/chromeos_export.h"
15 class DictionaryValue
;
20 // Class to represent the DER fields of an issuer or a subject in a
21 // certificate and compare them.
22 class CHROMEOS_EXPORT IssuerSubjectPattern
{
24 IssuerSubjectPattern();
25 IssuerSubjectPattern(const std::string
& common_name
,
26 const std::string
& locality
,
27 const std::string
& organization
,
28 const std::string
& organizational_unit
);
29 ~IssuerSubjectPattern();
31 // Returns true if all fields in the pattern are empty.
34 // Clears out all values in this pattern.
37 void set_common_name(const std::string
& name
) { common_name_
= name
; }
38 void set_locality(const std::string
& locality
) { locality_
= locality
; }
39 void set_organization(const std::string
& organization
) {
40 organization_
= organization
;
42 void set_organizational_unit(const std::string
& unit
) {
43 organizational_unit_
= unit
;
46 const std::string
& common_name() const {
49 const std::string
& locality() const {
52 const std::string
& organization() const {
55 const std::string
& organizational_unit() const {
56 return organizational_unit_
;
59 // Replaces the content of this object with the values of |dictionary|.
60 // |dictionary| should be a valid ONC IssuerSubjectPattern dictionary.
61 void ReadFromONCDictionary(const base::DictionaryValue
& dictionary
);
64 std::string common_name_
;
65 std::string locality_
;
66 std::string organization_
;
67 std::string organizational_unit_
;
70 // A class to contain a certificate pattern and find existing matches to the
71 // pattern in the certificate database.
72 class CHROMEOS_EXPORT CertificatePattern
{
75 ~CertificatePattern();
77 // Returns true if this pattern has nothing set (and so would match
78 // all certs). Ignores enrollment_uri_;
81 void set_issuer(const IssuerSubjectPattern
& issuer
) { issuer_
= issuer
; }
82 void set_subject(const IssuerSubjectPattern
& subject
) { subject_
= subject
; }
83 void set_enrollment_uri_list(const std::vector
<std::string
>& uri_list
) {
84 enrollment_uri_list_
= uri_list
;
87 const IssuerSubjectPattern
& issuer() const {
90 const IssuerSubjectPattern
& subject() const {
93 const std::vector
<std::string
>& issuer_ca_pems() const {
94 return issuer_ca_pems_
;
96 const std::vector
<std::string
>& enrollment_uri_list() const {
97 return enrollment_uri_list_
;
100 // Replaces the content of this object with the values of |dictionary|.
101 // |dictionary| should be a valid ONC CertificatePattern dictionary. Returns
102 // whether all required fields were present.
103 bool ReadFromONCDictionary(const base::DictionaryValue
& dictionary
);
106 // Clears out all the values in this pattern.
109 std::vector
<std::string
> issuer_ca_pems_
;
110 IssuerSubjectPattern issuer_
;
111 IssuerSubjectPattern subject_
;
112 std::vector
<std::string
> enrollment_uri_list_
;
115 } // namespace chromeos
117 #endif // CHROMEOS_NETWORK_CERTIFICATE_PATTERN_H_