14a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch// Copyright (c) 2010 The Chromium Authors. All rights reserved. 2513209b27ff55e2841eac0e4120199c23acce758Ben Murdoch// Use of this source code is governed by a BSD-style license that can be 3513209b27ff55e2841eac0e4120199c23acce758Ben Murdoch// found in the LICENSE file. 4513209b27ff55e2841eac0e4120199c23acce758Ben Murdoch 5513209b27ff55e2841eac0e4120199c23acce758Ben Murdoch#ifndef NET_BASE_X509_OPENSSL_UTIL_H_ 6513209b27ff55e2841eac0e4120199c23acce758Ben Murdoch#define NET_BASE_X509_OPENSSL_UTIL_H_ 7513209b27ff55e2841eac0e4120199c23acce758Ben Murdoch#pragma once 8513209b27ff55e2841eac0e4120199c23acce758Ben Murdoch 9513209b27ff55e2841eac0e4120199c23acce758Ben Murdoch#include <openssl/asn1.h> 10513209b27ff55e2841eac0e4120199c23acce758Ben Murdoch#include <openssl/x509v3.h> 11513209b27ff55e2841eac0e4120199c23acce758Ben Murdoch 12513209b27ff55e2841eac0e4120199c23acce758Ben Murdoch#include <string> 134a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch#include <vector> 14513209b27ff55e2841eac0e4120199c23acce758Ben Murdoch 15513209b27ff55e2841eac0e4120199c23acce758Ben Murdochnamespace base { 16513209b27ff55e2841eac0e4120199c23acce758Ben Murdochclass Time; 17513209b27ff55e2841eac0e4120199c23acce758Ben Murdoch} // namespace base 18513209b27ff55e2841eac0e4120199c23acce758Ben Murdoch 19513209b27ff55e2841eac0e4120199c23acce758Ben Murdochnamespace net { 20513209b27ff55e2841eac0e4120199c23acce758Ben Murdoch 21513209b27ff55e2841eac0e4120199c23acce758Ben Murdoch// A collection of helper functions to fetch data from OpenSSL X509 certificates 22513209b27ff55e2841eac0e4120199c23acce758Ben Murdoch// into more convenient std / base datatypes. 23513209b27ff55e2841eac0e4120199c23acce758Ben Murdochnamespace x509_openssl_util { 24513209b27ff55e2841eac0e4120199c23acce758Ben Murdoch 25513209b27ff55e2841eac0e4120199c23acce758Ben Murdochbool ParsePrincipalKeyAndValueByIndex(X509_NAME* name, 26513209b27ff55e2841eac0e4120199c23acce758Ben Murdoch int index, 27513209b27ff55e2841eac0e4120199c23acce758Ben Murdoch std::string* key, 28513209b27ff55e2841eac0e4120199c23acce758Ben Murdoch std::string* value); 29513209b27ff55e2841eac0e4120199c23acce758Ben Murdoch 30513209b27ff55e2841eac0e4120199c23acce758Ben Murdochbool ParsePrincipalValueByIndex(X509_NAME* name, int index, std::string* value); 31513209b27ff55e2841eac0e4120199c23acce758Ben Murdoch 32513209b27ff55e2841eac0e4120199c23acce758Ben Murdochbool ParsePrincipalValueByNID(X509_NAME* name, int nid, std::string* value); 33513209b27ff55e2841eac0e4120199c23acce758Ben Murdoch 34513209b27ff55e2841eac0e4120199c23acce758Ben Murdochbool ParseDate(ASN1_TIME* x509_time, base::Time* time); 35513209b27ff55e2841eac0e4120199c23acce758Ben Murdoch 36513209b27ff55e2841eac0e4120199c23acce758Ben Murdoch} // namespace x509_openssl_util 37513209b27ff55e2841eac0e4120199c23acce758Ben Murdoch 38513209b27ff55e2841eac0e4120199c23acce758Ben Murdoch} // namespace net 39513209b27ff55e2841eac0e4120199c23acce758Ben Murdoch 40513209b27ff55e2841eac0e4120199c23acce758Ben Murdoch#endif // NET_BASE_X509_OPENSSL_UTIL_H_ 41