| // Copyright 2013 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 NET_TEST_CT_TEST_UTIL_H_ | |
| #define NET_TEST_CT_TEST_UTIL_H_ | |
| #include <string> | |
| #include <vector> | |
| #include "base/memory/ref_counted.h" | |
| #include "net/cert/signed_certificate_timestamp.h" | |
| #include "net/cert/signed_certificate_timestamp_and_status.h" | |
| #include "starboard/types.h" | |
| namespace net { | |
| namespace ct { | |
| struct DigitallySigned; | |
| struct MerkleTreeLeaf; | |
| struct SignedEntryData; | |
| struct SignedTreeHead; | |
| // Note: unless specified otherwise, all test data is taken from Certificate | |
| // Transparency test data repository. | |
| // Fills |entry| with test data for an X.509 entry. | |
| void GetX509CertSignedEntry(SignedEntryData* entry); | |
| // Fills |tree_leaf| with test data for an X.509 Merkle tree leaf. | |
| void GetX509CertTreeLeaf(MerkleTreeLeaf* tree_leaf); | |
| // Returns a DER-encoded X509 cert. The SCT provided by | |
| // GetX509CertSCT is signed over this certificate. | |
| std::string GetDerEncodedX509Cert(); | |
| // Fills |entry| with test data for a Precertificate entry. | |
| void GetPrecertSignedEntry(SignedEntryData* entry); | |
| // Fills |tree_leaf| with test data for a Precertificate Merkle tree leaf. | |
| void GetPrecertTreeLeaf(MerkleTreeLeaf* tree_leaf); | |
| // Returns the binary representation of a test DigitallySigned | |
| std::string GetTestDigitallySigned(); | |
| // Returns the binary representation of a test serialized SCT. | |
| std::string GetTestSignedCertificateTimestamp(); | |
| // Test log key | |
| std::string GetTestPublicKey(); | |
| // ID of test log key | |
| std::string GetTestPublicKeyId(); | |
| // SCT for the X509Certificate provided above. | |
| void GetX509CertSCT(scoped_refptr<SignedCertificateTimestamp>* sct); | |
| // SCT for the Precertificate log entry provided above. | |
| void GetPrecertSCT(scoped_refptr<SignedCertificateTimestamp>* sct); | |
| // Issuer key hash | |
| std::string GetDefaultIssuerKeyHash(); | |
| // Fake OCSP response with an embedded SCT list. | |
| std::string GetDerEncodedFakeOCSPResponse(); | |
| // The SCT list embedded in the response above. | |
| std::string GetFakeOCSPExtensionValue(); | |
| // The cert the OCSP response is for. | |
| std::string GetDerEncodedFakeOCSPResponseCert(); | |
| // The issuer of the previous cert. | |
| std::string GetDerEncodedFakeOCSPResponseIssuerCert(); | |
| // A sample, valid STH. | |
| bool GetSampleSignedTreeHead(SignedTreeHead* sth); | |
| // A valid STH for the empty tree. | |
| bool GetSampleEmptySignedTreeHead(SignedTreeHead* sth); | |
| // An STH for an empty tree where the root hash is not the hash of the empty | |
| // string, but the signature over the STH is valid. Such an STH is not valid | |
| // according to RFC6962. | |
| bool GetBadEmptySignedTreeHead(SignedTreeHead* sth); | |
| // The SHA256 root hash for the sample STH. | |
| std::string GetSampleSTHSHA256RootHash(); | |
| // The tree head signature for the sample STH. | |
| std::string GetSampleSTHTreeHeadSignature(); | |
| // The same signature as GetSampleSTHTreeHeadSignature, decoded. | |
| bool GetSampleSTHTreeHeadDecodedSignature(DigitallySigned* signature); | |
| // The sample STH in JSON form. | |
| std::string GetSampleSTHAsJson(); | |
| // Assembles, and returns, a sample STH in JSON format using | |
| // the provided parameters. | |
| std::string CreateSignedTreeHeadJsonString(size_t tree_size, | |
| int64_t timestamp, | |
| std::string sha256_root_hash, | |
| std::string tree_head_signature); | |
| // Assembles, and returns, a sample consistency proof in JSON format using | |
| // the provided raw nodes (i.e. the raw nodes will be base64-encoded). | |
| std::string CreateConsistencyProofJsonString( | |
| const std::vector<std::string>& raw_nodes); | |
| // Returns SCTList for testing. | |
| std::string GetSCTListForTesting(); | |
| // Returns a corrupted SCTList. This is done by changing a byte inside the | |
| // Log ID part of the SCT so it does not match the log used in the tests. | |
| std::string GetSCTListWithInvalidSCT(); | |
| // Returns true if |log_description| is in the |result|'s |verified_scts| and | |
| // number of |verified_scts| in |result| is equal to 1. | |
| bool CheckForSingleVerifiedSCTInResult( | |
| const SignedCertificateTimestampAndStatusList& scts, | |
| const std::string& log_description); | |
| // Returns true if |origin| is in the |result|'s |verified_scts|. | |
| bool CheckForSCTOrigin(const SignedCertificateTimestampAndStatusList& scts, | |
| SignedCertificateTimestamp::Origin origin); | |
| } // namespace ct | |
| } // namespace net | |
| #endif // NET_TEST_CT_TEST_UTIL_H_ |