1 // Copyright (c) 2013 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.
5 #include "net/quic/crypto/crypto_secret_boxer.h"
7 #include "base/memory/scoped_ptr.h"
8 #include "net/quic/crypto/quic_random.h"
9 #include "testing/gtest/include/gtest/gtest.h"
11 using base::StringPiece
;
17 TEST(CryptoSecretBoxerTest
, BoxAndUnbox
) {
18 StringPiece
message("hello world");
19 const size_t key_size
= CryptoSecretBoxer::GetKeySize();
20 scoped_ptr
<uint8
[]> key(new uint8
[key_size
]);
21 memset(key
.get(), 0x11, key_size
);
23 CryptoSecretBoxer boxer
;
24 boxer
.SetKey(StringPiece(reinterpret_cast<char*>(key
.get()), key_size
));
26 const string box
= boxer
.Box(QuicRandom::GetInstance(), message
);
30 EXPECT_TRUE(boxer
.Unbox(box
, &storage
, &result
));
31 EXPECT_EQ(result
, message
);
33 EXPECT_FALSE(boxer
.Unbox(string(1, 'X') + box
, &storage
, &result
));
34 EXPECT_FALSE(boxer
.Unbox(box
.substr(1, string::npos
), &storage
, &result
));
35 EXPECT_FALSE(boxer
.Unbox(string(), &storage
, &result
));
36 EXPECT_FALSE(boxer
.Unbox(string(1, box
[0]^0x80) + box
.substr(1, string::npos
),