| Index: components/gcm_driver/crypto/gcm_message_cryptographer_unittest.cc
|
| diff --git a/components/gcm_driver/crypto/gcm_message_cryptographer_unittest.cc b/components/gcm_driver/crypto/gcm_message_cryptographer_unittest.cc
|
| index ea1c95f52f29107a12dbf0dc75f709c5d0dd9cd0..de85571c808710d6f244d6aec8c3c0666be98618 100644
|
| --- a/components/gcm_driver/crypto/gcm_message_cryptographer_unittest.cc
|
| +++ b/components/gcm_driver/crypto/gcm_message_cryptographer_unittest.cc
|
| @@ -11,6 +11,7 @@
|
| #include "base/memory/ptr_util.h"
|
| #include "base/strings/string_piece.h"
|
| #include "base/strings/string_util.h"
|
| +#include "components/gcm_driver/crypto/message_payload_parser.h"
|
| #include "components/gcm_driver/crypto/p256_key_util.h"
|
| #include "crypto/random.h"
|
| #include "testing/gtest/include/gtest/gtest.h"
|
| @@ -23,7 +24,6 @@ namespace {
|
| const char kExamplePlaintext[] = "Example plaintext";
|
|
|
| // Expected sizes of the different input given to the cryptographer.
|
| -constexpr size_t kUncompressedPointSize = 65;
|
| constexpr size_t kEcdhSharedSecretSize = 32;
|
| constexpr size_t kAuthSecretSize = 16;
|
| constexpr size_t kSaltSize = 16;
|
| @@ -866,45 +866,13 @@ TEST_F(GCMMessageCryptographerReferenceTest, ReferenceDraft08) {
|
| base::Base64UrlDecodePolicy::IGNORE_PADDING,
|
| &message));
|
|
|
| - // TODO(peter): Break out the following in a separate message parser class so
|
| - // that it can be reused by the GCMEncryptionProvider (on the receiving path)
|
| - // and the gcm_crypto_test_helpers.cc file (on the sending path) too.
|
| - //
|
| - // The message contains a binary header in the following format:
|
| - // [ salt(16) | record_size(4) | sender_public_key_len(1) |
|
| - // sender_public_key(sender_public_key_len) ]
|
| - //
|
| - // For Web Push Encryption, which uses a P-256 sender key as uncompressed
|
| - // P-256 EC points, the length of the sender key is 65 bytes, making the
|
| - // total, fixed length of the header 86 bytes.
|
| - //
|
| - // The regular AEAD_AES_128_GCM ciphertext follows immediately after this. The
|
| - // minimum overhead for a single record is 18 bytes. This means that an
|
| - // incoming message must be at least 104 bytes in size.
|
| - ASSERT_GE(message.size(), 104u);
|
| -
|
| - const char* current = &message.front();
|
| -
|
| - uint32_t record_size;
|
| - uint8_t sender_public_key_length;
|
| -
|
| - base::StringPiece salt(current, kSaltSize);
|
| - current += kSaltSize;
|
| -
|
| - base::ReadBigEndian(current, &record_size);
|
| - current += sizeof(record_size);
|
| -
|
| - base::ReadBigEndian(current, &sender_public_key_length);
|
| - current += sizeof(sender_public_key_length);
|
| -
|
| - ASSERT_EQ(sender_public_key_length, kUncompressedPointSize);
|
| -
|
| - base::StringPiece sender_public_key(current, sender_public_key_length);
|
| - current += sender_public_key_length;
|
| -
|
| - base::StringPiece ciphertext(
|
| - current, message.size() - kSaltSize - sizeof(record_size) -
|
| - sizeof(sender_public_key_length) - sender_public_key_length);
|
| + MessagePayloadParser message_parser(message);
|
| + ASSERT_TRUE(message_parser.IsValid());
|
| +
|
| + base::StringPiece salt = message_parser.salt();
|
| + uint32_t record_size = message_parser.record_size();
|
| + base::StringPiece sender_public_key = message_parser.public_key();
|
| + base::StringPiece ciphertext = message_parser.ciphertext();
|
|
|
| std::string sender_shared_secret, receiver_shared_secret;
|
|
|
|
|