1 // Copyright 2015 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 "crypto/aead_openssl.h"
9 #include "testing/gtest/include/gtest/gtest.h"
13 #if defined(USE_OPENSSL)
15 TEST(AeadTest
, SealOpen
) {
16 crypto::Aead
aead(crypto::Aead::AES_128_CTR_HMAC_SHA256
);
17 std::string
key(aead
.KeyLength(), 0);
19 std::string
nonce(aead
.NonceLength(), 0);
20 std::string
plaintext("this is the plaintext");
21 std::string
ad("this is the additional data");
22 std::string ciphertext
;
23 EXPECT_TRUE(aead
.Seal(plaintext
, nonce
, ad
, &ciphertext
));
24 EXPECT_LT(0U, ciphertext
.size());
26 std::string decrypted
;
27 EXPECT_TRUE(aead
.Open(ciphertext
, nonce
, ad
, &decrypted
));
29 EXPECT_EQ(plaintext
, decrypted
);
32 TEST(AeadTest
, SealOpenWrongKey
) {
33 crypto::Aead
aead(crypto::Aead::AES_128_CTR_HMAC_SHA256
);
34 std::string
key(aead
.KeyLength(), 0);
35 std::string
wrong_key(aead
.KeyLength(), 1);
37 crypto::Aead
aead_wrong_key(crypto::Aead::AES_128_CTR_HMAC_SHA256
);
38 aead_wrong_key
.Init(&wrong_key
);
40 std::string
nonce(aead
.NonceLength(), 0);
41 std::string
plaintext("this is the plaintext");
42 std::string
ad("this is the additional data");
43 std::string ciphertext
;
44 EXPECT_TRUE(aead
.Seal(plaintext
, nonce
, ad
, &ciphertext
));
45 EXPECT_LT(0U, ciphertext
.size());
47 std::string decrypted
;
48 EXPECT_FALSE(aead_wrong_key
.Open(ciphertext
, nonce
, ad
, &decrypted
));
49 EXPECT_EQ(0U, decrypted
.size());