// Copyright (c) 2012 The Chromium Authors. All rights reserved. // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. #ifndef CHROMEOS_NETWORK_CERTIFICATE_PATTERN_H_ #define CHROMEOS_NETWORK_CERTIFICATE_PATTERN_H_ #include #include #include "base/memory/scoped_ptr.h" #include "chromeos/chromeos_export.h" namespace base { class DictionaryValue; } namespace chromeos { // Class to represent the DER fields of an issuer or a subject in a // certificate and compare them. class CHROMEOS_EXPORT IssuerSubjectPattern { public: IssuerSubjectPattern(); IssuerSubjectPattern(const std::string& common_name, const std::string& locality, const std::string& organization, const std::string& organizational_unit); ~IssuerSubjectPattern(); // Returns true if all fields in the pattern are empty. bool Empty() const; // Clears out all values in this pattern. void Clear(); const std::string& common_name() const { return common_name_; } const std::string& locality() const { return locality_; } const std::string& organization() const { return organization_; } const std::string& organizational_unit() const { return organizational_unit_; } // Replaces the content of this object with the values of |dictionary|. // |dictionary| should be a valid ONC IssuerSubjectPattern dictionary. void ReadFromONCDictionary(const base::DictionaryValue& dictionary); private: std::string common_name_; std::string locality_; std::string organization_; std::string organizational_unit_; }; // A class to contain a certificate pattern and find existing matches to the // pattern in the certificate database. class CHROMEOS_EXPORT CertificatePattern { public: CertificatePattern(); ~CertificatePattern(); // Returns true if this pattern has nothing set (and so would match // all certs). Ignores enrollment_uri_; bool Empty() const; const IssuerSubjectPattern& issuer() const { return issuer_; } const IssuerSubjectPattern& subject() const { return subject_; } const std::vector& issuer_ca_pems() const { return issuer_ca_pems_; } const std::vector& enrollment_uri_list() const { return enrollment_uri_list_; } // Replaces the content of this object with the values of |dictionary|. // |dictionary| should be a valid ONC CertificatePattern dictionary. Returns // whether all required fields were present. bool ReadFromONCDictionary(const base::DictionaryValue& dictionary); private: // Clears out all the values in this pattern. void Clear(); std::vector issuer_ca_pems_; IssuerSubjectPattern issuer_; IssuerSubjectPattern subject_; std::vector enrollment_uri_list_; }; } // namespace chromeos #endif // CHROMEOS_NETWORK_CERTIFICATE_PATTERN_H_