1 // Copyright (c) 2011 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. 4 5 #ifndef NET_CERT_X509_UTIL_OPENSSL_H_ 6 #define NET_CERT_X509_UTIL_OPENSSL_H_ 7 8 #include <openssl/asn1.h> 9 #include <openssl/x509v3.h> 10 11 #include <string> 12 #include <vector> 13 14 #include "net/base/net_export.h" 15 16 namespace base { 17 class Time; 18 } // namespace base 19 20 namespace net { 21 22 // A collection of helper functions to fetch data from OpenSSL X509 certificates 23 // into more convenient std / base datatypes. 24 namespace x509_util { 25 26 bool NET_EXPORT ParsePrincipalKeyAndValueByIndex(X509_NAME* name, 27 int index, 28 std::string* key, 29 std::string* value); 30 31 bool NET_EXPORT ParsePrincipalValueByIndex(X509_NAME* name, 32 int index, 33 std::string* value); 34 35 bool NET_EXPORT ParsePrincipalValueByNID(X509_NAME* name, 36 int nid, 37 std::string* value); 38 39 bool NET_EXPORT ParseDate(ASN1_TIME* x509_time, base::Time* time); 40 41 } // namespace x509_util 42 43 } // namespace net 44 45 #endif // NET_CERT_X509_UTIL_OPENSSL_H_ 46