summaryrefslogtreecommitdiff
path: root/src/crypto/cmac
diff options
context:
space:
mode:
authorRobert Sloan <varomodt@google.com>2017-05-01 07:46:28 -0700
committerRobert Sloan <varomodt@google.com>2017-05-01 07:46:37 -0700
commit2424d84dd6dbdc0d32a4c80e6810d168f722ce0b (patch)
tree8727f96cb5c16125aa208b34cea46fe26473dcb1 /src/crypto/cmac
parent9254e681d446a8105bd66f08bae1252d4d89a139 (diff)
downloadboringssl-2424d84dd6dbdc0d32a4c80e6810d168f722ce0b.tar.gz
external/boringssl: Sync to 58e449904e248f34bdfc2be7a609c58bcb0257b7.android-wear-o-preview-4android-wear-o-preview-3android-o-preview-2
This includes the following changes: https://boringssl.googlesource.com/boringssl/+log/2c1523733a71166943e52da11ac2eae82b0227b8..58e449904e248f34bdfc2be7a609c58bcb0257b7 Test: BoringSSL CTS Presubmits Change-Id: I1a825139c8c7076d09b8a3acc5f09a547a7cbe0d
Diffstat (limited to 'src/crypto/cmac')
-rw-r--r--src/crypto/cmac/CMakeLists.txt11
-rw-r--r--src/crypto/cmac/cmac_test.cc88
2 files changed, 21 insertions, 78 deletions
diff --git a/src/crypto/cmac/CMakeLists.txt b/src/crypto/cmac/CMakeLists.txt
index a346b248..44299033 100644
--- a/src/crypto/cmac/CMakeLists.txt
+++ b/src/crypto/cmac/CMakeLists.txt
@@ -7,14 +7,3 @@ add_library(
cmac.c
)
-
-add_executable(
- cmac_test
-
- cmac_test.cc
-
- $<TARGET_OBJECTS:test_support>
-)
-
-target_link_libraries(cmac_test crypto)
-add_dependencies(all_tests cmac_test)
diff --git a/src/crypto/cmac/cmac_test.cc b/src/crypto/cmac/cmac_test.cc
index 7cb1df50..dbd63ead 100644
--- a/src/crypto/cmac/cmac_test.cc
+++ b/src/crypto/cmac/cmac_test.cc
@@ -16,6 +16,8 @@
#include <algorithm>
+#include <gtest/gtest.h>
+
#include <openssl/cipher.h>
#include <openssl/cmac.h>
#include <openssl/mem.h>
@@ -23,73 +25,38 @@
#include "../test/test_util.h"
-static void dump(const uint8_t *got, const uint8_t *want, size_t len) {
- hexdump(stderr, "got :", got, len);
- hexdump(stderr, "want:", want, len);
- fflush(stderr);
-}
+static void test(const char *name, const uint8_t *key, size_t key_len,
+ const uint8_t *msg, size_t msg_len, const uint8_t *expected) {
+ SCOPED_TRACE(name);
-static int test(const char *name, const uint8_t *key, size_t key_len,
- const uint8_t *msg, size_t msg_len, const uint8_t *expected) {
+ // Test the single-shot API.
uint8_t out[16];
-
- if (!AES_CMAC(out, key, key_len, msg, msg_len)) {
- fprintf(stderr, "%s: AES_CMAC failed\n", name);
- return 0;
- }
-
- if (CRYPTO_memcmp(out, expected, sizeof(out)) != 0) {
- fprintf(stderr, "%s: CMAC result differs:\n", name);
- dump(out, expected, sizeof(out));
- return 0;
- }
+ ASSERT_TRUE(AES_CMAC(out, key, key_len, msg, msg_len));
+ EXPECT_EQ(Bytes(expected, sizeof(out)), Bytes(out));
bssl::UniquePtr<CMAC_CTX> ctx(CMAC_CTX_new());
- if (!ctx || !CMAC_Init(ctx.get(), key, key_len, EVP_aes_128_cbc(), NULL)) {
- fprintf(stderr, "%s: CMAC_Init failed.\n", name);
- return 0;
- }
+ ASSERT_TRUE(ctx);
+ ASSERT_TRUE(CMAC_Init(ctx.get(), key, key_len, EVP_aes_128_cbc(), NULL));
for (unsigned chunk_size = 1; chunk_size <= msg_len; chunk_size++) {
- if (!CMAC_Reset(ctx.get())) {
- fprintf(stderr, "%s/%u: CMAC_Reset failed.\n", name, chunk_size);
- return 0;
- }
+ SCOPED_TRACE(chunk_size);
+
+ ASSERT_TRUE(CMAC_Reset(ctx.get()));
size_t done = 0;
while (done < msg_len) {
size_t todo = std::min(msg_len - done, static_cast<size_t>(chunk_size));
- if (!CMAC_Update(ctx.get(), msg + done, todo)) {
- fprintf(stderr, "%s/%u: CMAC_Update failed.\n", name, chunk_size);
- return 0;
- }
-
+ ASSERT_TRUE(CMAC_Update(ctx.get(), msg + done, todo));
done += todo;
}
size_t out_len;
- if (!CMAC_Final(ctx.get(), out, &out_len)) {
- fprintf(stderr, "%s/%u: CMAC_Final failed.\n", name, chunk_size);
- return 0;
- }
-
- if (out_len != sizeof(out)) {
- fprintf(stderr, "%s/%u: incorrect out_len: %u.\n", name, chunk_size,
- static_cast<unsigned>(out_len));
- return 0;
- }
-
- if (CRYPTO_memcmp(out, expected, sizeof(out)) != 0) {
- fprintf(stderr, "%s/%u: CMAC result differs:\n", name, chunk_size);
- dump(out, expected, sizeof(out));
- return 0;
- }
+ ASSERT_TRUE(CMAC_Final(ctx.get(), out, &out_len));
+ EXPECT_EQ(Bytes(expected, sizeof(out)), Bytes(out, out_len));
}
-
- return 1;
}
-static int rfc_4493_test_vectors(void) {
+TEST(CMACTest, RFC4493TestVectors) {
static const uint8_t kKey[16] = {
0x2b, 0x7e, 0x15, 0x16, 0x28, 0xae, 0xd2, 0xa6,
0xab, 0xf7, 0x15, 0x88, 0x09, 0xcf, 0x4f, 0x3c,
@@ -132,21 +99,8 @@ static int rfc_4493_test_vectors(void) {
0xfc, 0x49, 0x74, 0x17, 0x79, 0x36, 0x3c, 0xfe,
};
- if (!test("RFC 4493 #1", kKey, sizeof(kKey), NULL, 0, kOut1) ||
- !test("RFC 4493 #2", kKey, sizeof(kKey), kMsg2, sizeof(kMsg2), kOut2) ||
- !test("RFC 4493 #3", kKey, sizeof(kKey), kMsg3, sizeof(kMsg3), kOut3) ||
- !test("RFC 4493 #4", kKey, sizeof(kKey), kMsg4, sizeof(kMsg4), kOut4)) {
- return 0;
- }
-
- return 1;
-}
-
-int main(int argc, char **argv) {
- if (!rfc_4493_test_vectors()) {
- return 1;
- }
-
- printf("PASS\n");
- return 0;
+ test("RFC 4493 #1", kKey, sizeof(kKey), NULL, 0, kOut1);
+ test("RFC 4493 #2", kKey, sizeof(kKey), kMsg2, sizeof(kMsg2), kOut2);
+ test("RFC 4493 #3", kKey, sizeof(kKey), kMsg3, sizeof(kMsg3), kOut3);
+ test("RFC 4493 #4", kKey, sizeof(kKey), kMsg4, sizeof(kMsg4), kOut4);
}