OLD | NEW |
---|---|
(Empty) | |
1 // Copyright 2017 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 "components/gcm_driver/crypto/message_payload_parser.h" | |
6 | |
7 #include "base/big_endian.h" | |
8 #include "testing/gtest/include/gtest/gtest.h" | |
9 | |
10 namespace gcm { | |
11 | |
12 namespace { | |
13 | |
14 const uint8_t kValidMessage[] = { | |
15 // salt (16 bytes) | |
16 0x59, 0xFD, 0x35, 0x97, 0x3B, 0xF3, 0x66, 0xA7, 0xEB, 0x8D, 0x44, 0x1E, | |
17 0xCB, 0x4D, 0xFC, 0xD8, | |
18 // rs (4 bytes) | |
johnme
2017/05/22 16:18:39
Nit: add "in network byte order"
Peter Beverloo
2017/05/22 17:25:13
Done.
| |
19 0x00, 0x00, 0x00, 0x12, | |
20 // idlen (1 byte) | |
21 0x41, | |
22 // public key (65 bytes) | |
23 0x04, 0x35, 0x02, 0x67, 0xB9, 0x10, 0x8F, 0x9B, 0xF1, 0x85, 0xF5, 0x1B, | |
24 0xD7, 0xA4, 0xEF, 0xBD, 0x28, 0xB3, 0x11, 0x40, 0xBA, 0xD0, 0xEE, 0xB2, | |
25 0x97, 0xDA, 0x6A, 0x93, 0x2D, 0x26, 0x45, 0xBD, 0xB2, 0x9A, 0x9F, 0xB8, | |
26 0x19, 0xD8, 0x21, 0x6F, 0x66, 0xE3, 0xF6, 0x0B, 0x74, 0xB2, 0x28, 0x38, | |
27 0xDC, 0xA7, 0x8A, 0x58, 0x0D, 0x56, 0x47, 0x3E, 0xD0, 0x5B, 0x5C, 0x93, | |
28 0x4E, 0xB3, 0x89, 0x87, 0x64, | |
29 // payload (18 bytes) | |
30 0x3F, 0xD8, 0x95, 0x2C, 0xA2, 0x11, 0xBD, 0x7B, 0x57, 0xB2, 0x00, 0xBD, | |
31 0x57, 0x68, 0x3F, 0xF0, 0x14, 0x57}; | |
32 | |
33 static_assert(arraysize(kValidMessage) == 104, | |
34 "The smallest valid message is 104 bytes in size."); | |
35 | |
36 // Creates an std::string for the |kValidMessage| constant. | |
johnme
2017/05/22 16:18:39
Nit: s/an/a/
Peter Beverloo
2017/05/22 17:25:13
No, "an" is correct :). Esteedee.
| |
37 std::string CreateMessageString() { | |
38 return std::string(reinterpret_cast<const char*>(kValidMessage), | |
39 arraysize(kValidMessage)); | |
40 } | |
41 | |
42 TEST(MessagePayloadParserTest, ValidMessage) { | |
43 MessagePayloadParser parser(CreateMessageString()); | |
44 EXPECT_TRUE(parser.IsValid()); | |
johnme
2017/05/22 16:18:39
Consider exercising the getters here?
Peter Beverloo
2017/05/22 17:25:13
Done.
| |
45 } | |
46 | |
47 TEST(MessagePayloadParserTest, MinimumMessageSize) { | |
48 std::string message = CreateMessageString(); | |
49 message.resize(arraysize(kValidMessage) / 2); | |
50 | |
51 MessagePayloadParser parser(message); | |
52 EXPECT_FALSE(parser.IsValid()); | |
53 } | |
54 | |
55 TEST(MessagePayloadParserTest, MinimumRecordSize) { | |
56 std::string message = CreateMessageString(); | |
57 | |
58 uint32_t invalid_record_size = 11; | |
59 base::WriteBigEndian(&message[0] + 16 /* salt */, invalid_record_size); | |
60 | |
61 MessagePayloadParser parser(message); | |
62 EXPECT_FALSE(parser.IsValid()); | |
63 } | |
64 | |
65 TEST(MessagePayloadParserTest, InvalidPublicKey) { | |
66 std::string message = CreateMessageString(); | |
67 | |
68 uint8_t invalid_public_key_size = 42; | |
69 base::WriteBigEndian(&message[0] + 16 /* salt */ + 4 /* rs */, | |
70 invalid_public_key_size); | |
71 | |
72 MessagePayloadParser parser(message); | |
73 EXPECT_FALSE(parser.IsValid()); | |
74 } | |
75 | |
76 } // namespace | |
77 | |
78 } // namespace gcm | |
OLD | NEW |