2 * Copyright 2017 Facebook, Inc.
4 * Licensed under the Apache License, Version 2.0 (the "License");
5 * you may not use this file except in compliance with the License.
6 * You may obtain a copy of the License at
8 * http://www.apache.org/licenses/LICENSE-2.0
10 * Unless required by applicable law or agreed to in writing, software
11 * distributed under the License is distributed on an "AS IS" BASIS,
12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 * See the License for the specific language governing permissions and
14 * limitations under the License.
21 #include <folly/Optional.h>
22 #include <folly/portability/OpenSSL.h>
27 class OpenSSLCertUtils {
29 // Note: non-const until OpenSSL 1.1.0
30 static Optional<std::string> getCommonName(X509& x509);
32 static std::vector<std::string> getSubjectAltNames(X509& x509);
35 * Return the subject name, if any, from the cert
36 * @param x509 Reference to an X509
37 * @return a folly::Optional<std::string>, or folly::none
39 static Optional<std::string> getSubject(X509& x509);
42 * Return the issuer name, if any, from the cert
43 * @param x509 Reference to an X509
44 * @return a folly::Optional<std::string>, or folly::none
46 static Optional<std::string> getIssuer(X509& x509);
49 * Get a string representation of the not-before time on the certificate
51 static std::string getNotBeforeTime(X509& x509);
54 * Get a string representation of the not-after (expiration) time
56 static std::string getNotAfterTime(X509& x509);
59 * Summarize the CN, Subject, Issuer, Validity, and extensions as a string
61 static folly::Optional<std::string> toString(X509& x509);
64 static std::string getDateTimeStr(const ASN1_TIME* time);