Home | History | Annotate | Download | only in unittests
      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