// Copyright 2015 The Chromium Authors // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. #ifndef NET_CERT_INTERNAL_TEST_HELPERS_H_ #define NET_CERT_INTERNAL_TEST_HELPERS_H_ #include <stddef.h> #include <string> #include "testing/gtest/include/gtest/gtest.h" #include "third_party/boringssl/src/pki/parsed_certificate.h" namespace net { // Helper structure that maps a PEM block header (for instance "CERTIFICATE") to // the destination where the value for that block should be written. struct PemBlockMapping { … }; // ReadTestDataFromPemFile() is a helper function that reads a PEM test file // rooted in the "src/" directory. // // * file_path_ascii: // The path to the PEM file, relative to src. For instance // "net/data/verify_signed_data_unittest/foopy.pem" // // * mappings: // An array of length |mappings_length| which maps the expected PEM // headers to the destination to write its data. // // The function ensures that each of the chosen mappings is satisfied exactly // once. In other words, the header must be present (unless marked as // optional=true), have valid data, and appear no more than once. ::testing::AssertionResult ReadTestDataFromPemFile( const std::string& file_path_ascii, const PemBlockMapping* mappings, size_t mappings_length); // This is the same as the variant above, however it uses template magic so an // mappings array can be passed in directly (and the correct length is // inferred). template <size_t N> ::testing::AssertionResult ReadTestDataFromPemFile( const std::string& file_path_ascii, const PemBlockMapping (&mappings)[N]) { … } // Reads a certificate chain from |file_path_ascii| bool ReadCertChainFromFile(const std::string& file_path_ascii, bssl::ParsedCertificateList* chain); // Reads a certificate from |file_path_ascii|. Returns nullptr if the file // contained more that one certificate. std::shared_ptr<const bssl::ParsedCertificate> ReadCertFromFile( const std::string& file_path_ascii); // Reads a data file relative to the src root directory. std::string ReadTestFileToString(const std::string& file_path_ascii); } // namespace net #endif // NET_CERT_INTERNAL_TEST_HELPERS_H_