null_decrypter_test.cc revision f2477e01787aa58f445919b809d89e252beef54f
1// Copyright (c) 2012 The Chromium Authors. All rights reserved.
2// Use of this source code is governed by a BSD-style license that can be
3// found in the LICENSE file.
4
5#include "net/quic/crypto/null_decrypter.h"
6#include "net/quic/test_tools/quic_test_utils.h"
7
8using base::StringPiece;
9
10namespace net {
11namespace test {
12
13class NullDecrypterTest : public ::testing::TestWithParam<bool> {
14};
15
16TEST_F(NullDecrypterTest, Decrypt) {
17  unsigned char expected[] = {
18    // fnv hash
19    0xa0, 0x6f, 0x44, 0x8a,
20    0x44, 0xf8, 0x18, 0x3b,
21    0x47, 0x91, 0xb2, 0x13,
22    // payload
23    'g',  'o',  'o',  'd',
24    'b',  'y',  'e',  '!',
25  };
26  const char* data = reinterpret_cast<const char*>(expected);
27  size_t len = arraysize(expected);
28  NullDecrypter decrypter;
29  scoped_ptr<QuicData> decrypted(
30      decrypter.DecryptPacket(0, "hello world!", StringPiece(data, len)));
31  ASSERT_TRUE(decrypted.get());
32  EXPECT_EQ("goodbye!", decrypted->AsStringPiece());
33}
34
35TEST_F(NullDecrypterTest, BadHash) {
36  unsigned char expected[] = {
37    // fnv hash
38    0x46, 0x11, 0xea, 0x5f,
39    0xcf, 0x1d, 0x66, 0x5b,
40    0xba, 0xf0, 0xbc, 0xfd,
41    // payload
42    'g',  'o',  'o',  'd',
43    'b',  'y',  'e',  '!',
44  };
45  const char* data = reinterpret_cast<const char*>(expected);
46  size_t len = arraysize(expected);
47  NullDecrypter decrypter;
48  scoped_ptr<QuicData> decrypted(
49      decrypter.DecryptPacket(0, "hello world!", StringPiece(data, len)));
50  ASSERT_FALSE(decrypted.get());
51}
52
53TEST_F(NullDecrypterTest, ShortInput) {
54  unsigned char expected[] = {
55    // fnv hash (truncated)
56    0x46, 0x11, 0xea, 0x5f,
57    0xcf, 0x1d, 0x66, 0x5b,
58    0xba, 0xf0, 0xbc,
59  };
60  const char* data = reinterpret_cast<const char*>(expected);
61  size_t len = arraysize(expected);
62  NullDecrypter decrypter;
63  scoped_ptr<QuicData> decrypted(
64      decrypter.DecryptPacket(0, "hello world!", StringPiece(data, len)));
65  ASSERT_FALSE(decrypted.get());
66}
67
68}  // namespace test
69}  // namespace net
70