blob: faf2c37ab6f8295f0a96052dfe2c8d5db9b36298 [file] [log] [blame]
/*
* Copyright 2014 Google Inc. All rights reserved.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
#include "securemessage/secure_message_parser.h"
#include <gtest/gtest.h>
#include <memory>
#include <string>
static const char* kVerificationKeyId = "test verification key id";
static const char* kDecryptionKeyId = "test decryption key id";
static const char* kIV = "test iv";
static const char* kPublicMetaData = "test metadata";
static const char* kSignature = "test signature";
static const char* kBody = "test body";
static const char* kAssociatedData = "test associated data";
using std::unique_ptr;
namespace securemessage {
namespace {
static SigScheme kSigScheme = HMAC_SHA256;
static EncScheme kEncScheme = AES_256_CBC;
class SecureMessageParserTest : public testing::Test {
protected:
unique_ptr<Header> header_;
unique_ptr<HeaderAndBody> header_and_body_;
unique_ptr<SecureMessage> secure_message_;
virtual void SetUp() {
header_.reset(new Header());
header_->set_verification_key_id(kVerificationKeyId);
header_->set_decryption_key_id(kDecryptionKeyId);
header_->set_iv(kIV);
header_->set_public_metadata(kPublicMetaData);
header_->set_signature_scheme(kSigScheme);
header_->set_encryption_scheme(kEncScheme);
header_->set_associated_data_length(strlen(kAssociatedData));
header_and_body_.reset(new HeaderAndBody());
header_and_body_->set_allocated_header(new Header(*header_));
header_and_body_->set_body(kBody);
secure_message_.reset(new SecureMessage());
secure_message_->set_header_and_body(header_and_body_->SerializeAsString());
secure_message_->set_signature(kSignature);
}
virtual void TearDown() {
header_->Clear();
header_and_body_->Clear();
secure_message_->Clear();
}
};
TEST_F(SecureMessageParserTest, GetUnverifiedHeader) {
std::unique_ptr<Header> test_header =
SecureMessageParser::GetUnverifiedHeader(*secure_message_);
EXPECT_NE(nullptr, test_header);
EXPECT_EQ(kVerificationKeyId, test_header->verification_key_id());
EXPECT_EQ(kDecryptionKeyId, test_header->decryption_key_id());
EXPECT_EQ(kIV, test_header->iv());
EXPECT_EQ(kPublicMetaData, test_header->public_metadata());
EXPECT_EQ(HMAC_SHA256, test_header->signature_scheme());
EXPECT_EQ(AES_256_CBC, test_header->encryption_scheme());
EXPECT_EQ(strlen(kAssociatedData),
static_cast<size_t>(test_header->associated_data_length()));
}
} // namespace
} // namespace securemessage