1 /*############################################################################ 2 # Copyright 2017 Intel Corporation 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 /// TPM Context unit tests. 17 /*! \file */ 18 #include "epid/common-testhelper/epid_gtest-testhelper.h" 19 #include "gtest/gtest.h" 20 21 #include "epid/common-testhelper/epid2params_wrapper-testhelper.h" 22 #include "epid/common-testhelper/errors-testhelper.h" 23 #include "epid/common-testhelper/mem_params-testhelper.h" 24 #include "epid/common-testhelper/prng-testhelper.h" 25 #include "epid/member/tpm2/unittests/tpm2-testhelper.h" 26 27 extern "C" { 28 #include "epid/common/src/epid2params.h" 29 #include "epid/member/tpm2/context.h" 30 #include "epid/member/tpm2/load_external.h" 31 } 32 33 namespace { 34 ////////////////////////////////////////////////////////////////////////// 35 // Tpm2CreateContext Tests 36 TEST_F(EpidTpm2Test, CreateFailsGivenNullParameters) { 37 Tpm2Ctx* ctx = nullptr; 38 Prng my_prng; 39 BitSupplier rnd_func = NULL; 40 void* rnd_param = NULL; 41 const FpElemStr* f = NULL; 42 MemberParams mem_params = {0}; 43 Epid2ParamsObj epid_params; 44 SetMemberParams(&Prng::Generate, &my_prng, nullptr, &mem_params); 45 46 EXPECT_EQ(kEpidBadArgErr, Tpm2CreateContext(nullptr, epid_params, &rnd_func, 47 &rnd_param, &f, &ctx)); 48 EXPECT_EQ(kEpidBadArgErr, Tpm2CreateContext(&mem_params, nullptr, &rnd_func, 49 &rnd_param, &f, &ctx)); 50 EXPECT_EQ(kEpidBadArgErr, Tpm2CreateContext(&mem_params, epid_params, nullptr, 51 &rnd_param, &f, &ctx)); 52 EXPECT_EQ(kEpidBadArgErr, Tpm2CreateContext(&mem_params, epid_params, 53 &rnd_func, nullptr, &f, &ctx)); 54 EXPECT_EQ(kEpidBadArgErr, 55 Tpm2CreateContext(&mem_params, epid_params, &rnd_func, &rnd_param, 56 nullptr, &ctx)); 57 EXPECT_EQ(kEpidBadArgErr, 58 Tpm2CreateContext(&mem_params, epid_params, &rnd_func, &rnd_param, 59 &f, nullptr)); 60 } 61 62 TEST_F(EpidTpm2Test, CreateSucceedsGivenValidParameters) { 63 Tpm2Ctx* ctx = nullptr; 64 Prng my_prng; 65 BitSupplier rnd_func = NULL; 66 void* rnd_param = NULL; 67 const FpElemStr* f = NULL; 68 MemberParams mem_params = {0}; 69 Epid2ParamsObj epid_params; 70 SetMemberParams(&Prng::Generate, &my_prng, nullptr, &mem_params); 71 72 EXPECT_EQ(kEpidNoErr, Tpm2CreateContext(&mem_params, epid_params, &rnd_func, 73 &rnd_param, &f, &ctx)); 74 Tpm2DeleteContext(&ctx); 75 } 76 77 ////////////////////////////////////////////////////////////////////////// 78 // Tpm2DeleteContext Tests 79 TEST_F(EpidTpm2Test, DeleteWorksGivenNullTpm2Ctx) { 80 Tpm2DeleteContext(nullptr); 81 Tpm2Ctx* ctx = nullptr; 82 Tpm2DeleteContext(&ctx); 83 } 84 85 TEST_F(EpidTpm2Test, DeleteNullsTpm2Ctx) { 86 Tpm2Ctx* ctx = nullptr; 87 Prng my_prng; 88 BitSupplier rnd_func = NULL; 89 void* rnd_param = NULL; 90 const FpElemStr* f = NULL; 91 MemberParams mem_params = {0}; 92 Epid2ParamsObj epid_params; 93 SetMemberParams(&Prng::Generate, &my_prng, nullptr, &mem_params); 94 Tpm2CreateContext(&mem_params, epid_params, &rnd_func, &rnd_param, &f, &ctx); 95 Tpm2DeleteContext(&ctx); 96 EXPECT_EQ(nullptr, ctx); 97 } 98 99 TEST_F(EpidTpm2Test, PROTECTED_SampleTest) { SUCCEED(); } 100 101 TEST_F(EpidTpm2Test, PROTECTED_EPS1_SampleTest) { SUCCEED(); } 102 103 TEST_F(EpidTpm2Test, PROTECTED_EPSOther_SampleTest) { SUCCEED(); } 104 105 } // namespace 106