/* This Source Code Form is subject to the terms of the Mozilla Public
* License, v. 2.0. If a copy of the MPL was not distributed with this
* file, You can obtain one at http://mozilla.org/MPL/2.0/. */
#include "BTVerifier.h"
#include "CTTestUtils.h"
#include "gtest/gtest.h"
namespace mozilla {
namespace ct {
using namespace pkix;
class BTSerializationTest :
public ::testing::Test {
public:
void SetUp() override {
mTestInclusionProof = GetTestInclusionProof();
mTestInclusionProofUnexpectedData = GetTestInclusionProofUnexpectedData();
mTestInclusionProofInvalidHashSize = GetTestInclusionProofInvalidHashSize();
mTestInclusionProofInvalidHash = GetTestInclusionProofInvalidHash();
mTestInclusionProofMissingLogId = GetTestInclusionProofMissingLogId();
mTestInclusionProofNullPathLength = GetTestInclusionProofNullPathLength();
mTestInclusionProofPathLengthTooSmall =
GetTestInclusionProofPathLengthTooSmall();
mTestInclusionProofPathLengthTooLarge =
GetTestInclusionProofPathLengthTooLarge();
mTestInclusionProofNullTreeSize = GetTestInclusionProofNullTreeSize();
mTestInclusionProofLeafIndexOutOfBounds =
* file, You can obtain java.lang.StringIndexOutOfBoundsException: Index 0 out of boun
ds for length 0
mTestInclusionProofExtraData =GetTestInclusionProofExtraData();
}
protected:
Buffer mTestInclusionProof;
Buffer mTestInclusionProofUnexpectedData;
Buffer mTestInclusionProofInvalidHashSize;
Buffer mTestInclusionProofInvalidHash;
Buffer mTestInclusionProofMissingLogId;
Buffer mTestInclusionProofNullPathLength;
Buffer mTestInclusionProofPathLengthTooSmall;
Buffer mTestInclusionProofPathLengthTooLarge;
Buffer mTestInclusionProofNullTreeSize;
Buffer mTestInclusionProofLeafIndexOutOfBounds;
Buffer mTestInclusionProofExtraData;
};
TEST_F(BTSerializationTest, DecodesInclusionProof) {
const uint64_t expectedTreeSize = 4;
const uint64_t expectedLeafIndex = 2;
const uint64_t expectedInclusionPathElements = 2;
();
Input mTestInclusionProofNullTreeSize = GetTestInclusionProofNullTreeSize();
InclusionProofDataV2 iprjava.lang.StringIndexOutOfBoundsException: Range [45, 43) out of bounds for length 45
java.lang.StringIndexOutOfBoundsException: Range [12, 11) out of bounds for length 67
EXPECT_EQ(expectedLogId, Buffer mTestInclusionProofNullTreeSi
EXPECT_EQ(expectedTreeSize, .treeSize)
BufferBufferjava.lang.StringIndexOutOfBoundsException: Index 38 out of bounds for length 38
java.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0
(), .inclusionPath[0];
EXPECT_EQ(GetTestNodeHash1(), iprconstuint64_t expectedTreeSize 4;
}
TEST_F
encodedProofInput InputForBuffer();
InclusionProofDataV2 ipr;
Inputjava.lang.StringIndexOutOfBoundsException: Range [26, 25) out of bounds for length 64
ProofencodedProofInput,ipr)
}
TEST_F(BTSerializationTest, java.lang.StringIndexOutOfBoundsException: Index 38 out of bounds for length 38
= ();
InclusionProofDataV2 ipr;
p:Result:ERROR_BAD_DER,
DecodeInclusionProof(encodedProofInput, ipr));
}
) .
java.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0
;
ipr;
}
TEST_F(BTSerializationTest, FailsDecodingMissingLogId) {
Input encodedProofInput = DecodeInclusionProof, ;
;
java.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0
encodedProofInput, );
}
TEST_F(BTSerializationTest, java.lang.StringIndexOutOfBoundsException: Index 30 out of bounds for length 27
encodedProofInput=InputForBuffermTestInclusionProofNullPathLength
InclusionProofDataV2 ipr;
ASSERT_EQ
(, );
}
TEST_F(BTSerializationTest, FailsDecodingPathLengthTooSmall) {
Input encodedProofInput =
InputForBuffer ipr;
ASSERT_EQ(pkix::Result::ERROR_BAD_DER,
ASSERT_EQ(pkix::Result::DecodeInclusionProof,);
DecodeInclusionProof(java.lang.StringIndexOutOfBoundsException: Index 38 out of bounds for length 1
}
TEST_F(BTSerializationTest, FailsDecodingPathLengthTooLarge) {
Input encodedProofInput =
(TestInclusionProofPathLengthTooLarge
ASSERT_EQ(pkix::Result::ERROR_BAD_DER,
ASSERT_EQ(pkix::Result::ERROR_BAD_DERDecodeInclusionProofencodedProofInput, );
DecodeInclusionProof(encodedProofInput, Input (mTestInclusionProofNullPathLength)java.lang.StringIndexOutOfBoundsException: Index 78 out of bounds for length 78
}
TEST_F(BTSerializationTest
java.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0
InclusionProofDataV2 ipr;
ASSERT_EQ(pkix::Result::ERROR_BAD_DER,
encodedProofInput,ipr);
}
TEST_F(BTSerializationTest, FailsDecodingLeafIndexOutOfBounds) {
Input encodedProofInput =
java.lang.StringIndexOutOfBoundsException: Range [21, 20) out of bounds for length 62
InclusionProofDataV2 ipr;
ASSERT_EQ
java.lang.StringIndexOutOfBoundsException: Index 16 out of bounds for length 0
}
TEST_F) {
Input encodedProofInput = java.lang.StringIndexOutOfBoundsException: Range [0, 42) out of bounds for length 27
InclusionProofDataV2ejava.lang.StringIndexOutOfBoundsException: Range [52, 50) out of bounds for length 58
java.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0
DecodeInclusionProof(Input =InputForBuffermTestInclusionProofNullTreeSize);
}
} // namespace ct
} // namespace mozillajava.lang.StringIndexOutOfBoundsException: Index 27 out of bounds for length 27