1 /*############################################################################ 2 # Copyright 2016-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 17 /*! 18 * \file 19 * \brief CheckPrivRlEntry unit tests. 20 */ 21 22 #include "epid/common-testhelper/epid_gtest-testhelper.h" 23 #include "gtest/gtest.h" 24 25 extern "C" { 26 #include "epid/verifier/api.h" 27 } 28 29 #include "epid/common-testhelper/errors-testhelper.h" 30 #include "epid/common-testhelper/verifier_wrapper-testhelper.h" 31 #include "epid/verifier/unittests/verifier-testhelper.h" 32 33 namespace { 34 35 TEST_F(EpidVerifierTest, CheckPrivRlEntryFailsGivenNullPtr) { 36 // check ctx, sig, f for NULL 37 auto& pub_key = this->kGrpXKey; 38 auto& priv_rl = this->kGrpXPrivRl; 39 auto& sig = this->kSigGrpXMember0Sha256Bsn0Msg0; 40 41 VerifierCtxObj verifier(pub_key); 42 FpElemStr fp_str = ((PrivRl const*)priv_rl.data())->f[0]; 43 BasicSignature basic_signature = ((EpidSignature const*)sig.data())->sigma0; 44 45 EXPECT_EQ(kEpidBadArgErr, 46 EpidCheckPrivRlEntry(nullptr, &basic_signature, &fp_str)); 47 EXPECT_EQ(kEpidBadArgErr, EpidCheckPrivRlEntry(verifier, nullptr, &fp_str)); 48 EXPECT_EQ(kEpidBadArgErr, 49 EpidCheckPrivRlEntry(verifier, &basic_signature, nullptr)); 50 } 51 52 TEST_F(EpidVerifierTest, CheckPrivRlEntryFailsGivenRevokedPrivKey) { 53 // test a revoked priv key 54 // check ctx, sig, f for NULL 55 auto& pub_key = this->kGrpXKey; 56 auto& priv_rl = this->kGrpXPrivRl; 57 // signed using revoked key 58 auto& sig = this->kSigGrpXRevokedPrivKey000Sha256Bsn0Msg0; 59 60 VerifierCtxObj verifier(pub_key); 61 FpElemStr fp_str = ((PrivRl const*)priv_rl.data())->f[0]; 62 BasicSignature basic_signature = ((EpidSignature const*)sig.data())->sigma0; 63 64 EXPECT_EQ(kEpidSigRevokedInPrivRl, 65 EpidCheckPrivRlEntry(verifier, &basic_signature, &fp_str)); 66 } 67 68 TEST_F(EpidVerifierTest, 69 CheckPrivRlEntryFailsGivenRevokedPrivKeyUsingIkgfData) { 70 // test a revoked priv key 71 // check ctx, sig, f for NULL 72 auto& pub_key = this->kPubKeyIkgfStr; 73 auto& priv_rl = this->kPrivRlIkgf; 74 // signed using revoked key 75 auto& sig = this->kSigRevokedPrivKeySha256Bsn0Msg0Ikgf; 76 77 VerifierCtxObj verifier(pub_key); 78 79 FpElemStr fp_str = ((PrivRl const*)priv_rl.data())->f[2]; 80 BasicSignature basic_signature = ((EpidSignature const*)sig.data())->sigma0; 81 82 EXPECT_EQ(kEpidSigRevokedInPrivRl, 83 EpidCheckPrivRlEntry(verifier, &basic_signature, &fp_str)); 84 } 85 86 TEST_F(EpidVerifierTest, CheckPrivRlEntrySucceedsGivenUnRevokedPrivKey) { 87 // test a non revoked priv key 88 auto& pub_key = this->kGrpXKey; 89 auto& priv_rl = this->kGrpXPrivRl; 90 // signed using un revoked key 91 auto& sig = this->kSigGrpXMember0Sha256Bsn0Msg0; 92 93 VerifierCtxObj verifier(pub_key); 94 FpElemStr fp_str = ((PrivRl const*)priv_rl.data())->f[0]; 95 BasicSignature basic_signature = ((EpidSignature const*)sig.data())->sigma0; 96 97 EXPECT_EQ(kEpidNoErr, 98 EpidCheckPrivRlEntry(verifier, &basic_signature, &fp_str)); 99 } 100 101 TEST_F(EpidVerifierTest, 102 CheckPrivRlEntrySucceedsGivenUnRevokedPrivKeyUsingIkgfData) { 103 // test a non revoked priv key 104 auto& pub_key = this->kPubKeyIkgfStr; 105 auto& priv_rl = this->kPrivRlIkgf; 106 // signed using un revoked key 107 auto& sig = this->kSigMember0Sha256Bsn0Msg0Ikgf; 108 109 VerifierCtxObj verifier(pub_key); 110 FpElemStr fp_str = ((PrivRl const*)priv_rl.data())->f[0]; 111 BasicSignature basic_signature = ((EpidSignature const*)sig.data())->sigma0; 112 113 EXPECT_EQ(kEpidNoErr, 114 EpidCheckPrivRlEntry(verifier, &basic_signature, &fp_str)); 115 } 116 117 } // namespace 118