blob: 9c8b0d5bfc7408351abbb02f17639cb3644074a9
1 | /* |
2 | * Copyright 2015 The Android Open Source Project |
3 | * |
4 | * Licensed under the Apache License, Version 2.0 (the "License"); |
5 | * you may not use this file except in compliance with the License. |
6 | * You may obtain a copy of the License at |
7 | * |
8 | * http://www.apache.org/licenses/LICENSE-2.0 |
9 | * |
10 | * Unless required by applicable law or agreed to in writing, software |
11 | * distributed under the License is distributed on an "AS IS" BASIS, |
12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. |
13 | * See the License for the specific language governing permissions and |
14 | * limitations under the License. |
15 | */ |
16 | |
17 | #include "kdf1.h" |
18 | #include <gtest/gtest.h> |
19 | #include <string.h> |
20 | |
21 | #include "android_keymaster_test_utils.h" |
22 | |
23 | using std::string; |
24 | |
25 | namespace keymaster { |
26 | |
27 | namespace test { |
28 | |
29 | struct Kdf1Test { |
30 | const char* key_hex; |
31 | const char* expected_output_hex; |
32 | keymaster_digest_t digest_type; |
33 | }; |
34 | |
35 | static const Kdf1Test kKdf1Tests[] = { |
36 | {"032e45326fa859a72ec235acff929b15d1372e30b207255f0611b8f785d764374152e0ac009e509e7ba30cd2f1778" |
37 | "e113b64e135cf4e2292c75efe5288edfda4", |
38 | "5f8de105b5e96b2e490ddecbd147dd1def7e3b8e0e6a26eb7b956ccb8b3bdc1ca975bc57c3989e8fbad31a224655d" |
39 | "800c46954840ff32052cdf0d640562bdfadfa263cfccf3c52b29f2af4a1869959bc77f854cf15bd7a25192985a842" |
40 | "dbff8e13efee5b7e7e55bbe4d389647c686a9a9ab3fb889b2d7767d3837eea4e0a2f04", |
41 | KM_DIGEST_SHA1}}; |
42 | |
43 | TEST(Kdf1Test, Kdf1) { |
44 | for (auto& test : kKdf1Tests) { |
45 | const string key = hex2str(test.key_hex); |
46 | const string expected_output = hex2str(test.expected_output_hex); |
47 | size_t output_len = expected_output.size(); |
48 | uint8_t output[output_len]; |
49 | |
50 | Kdf1 kdf1; |
51 | ASSERT_TRUE( |
52 | kdf1.Init(test.digest_type, reinterpret_cast<const uint8_t*>(key.data()), key.size())); |
53 | ASSERT_TRUE(kdf1.GenerateKey(nullptr, 0, output, output_len)); |
54 | EXPECT_EQ(0, memcmp(output, expected_output.data(), output_len)); |
55 | } |
56 | } |
57 | |
58 | } // namespace test |
59 | |
60 | } // namespace keymaster |
61 |