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 Test fixture class for Epid11Verifier.
20  */
21 #ifndef EPID_VERIFIER_1_1_UNITTESTS_VERIFIER_TESTHELPER_H_
22 #define EPID_VERIFIER_1_1_UNITTESTS_VERIFIER_TESTHELPER_H_
23 
24 #include <vector>
25 
26 #include "epid/common-testhelper/epid_gtest-testhelper.h"
27 #include "gtest/gtest.h"
28 
29 extern "C" {
30 #include "epid/verifier/1.1/api.h"
31 }
32 
33 /// Test fixture class for Epid11Verifier
34 class Epid11VerifierTest : public ::testing::Test {
35  public:
36   /// Serialized identity element in G3
37   static const Epid11G3ElemStr kG3IdentityStr;
38   /// test public key
39   static const Epid11GroupPubKey kPubKeyStr;
40   /// test public key for tests of msg containing all bytes
41   static const Epid11GroupPubKey kPubKeyStrForMsg0_255;
42   /// the message "test message"
43   static const std::vector<uint8_t> kMsg0;
44   /// the basename "basename1"
45   static const std::vector<uint8_t> kBsn0;
46   /// a data with bytes [0,255]
47   static const std::vector<uint8_t> kData_0_255;
48   /// Signature of kData_0_255 with kBsn0 by Grp01 Member0 using Sha256
49   static const std::vector<uint8_t> kSigGrp01Member0Sha256kBsn0Data_0_255;
50   /// the privrl of group X
51   static const std::vector<uint8_t> kGrpXPrivRl;
52   /// currpted privrl of group X
53   static const std::vector<uint8_t> kGrpXCorruptedPrivRl;
54   /// a single entry privrl for group X
55   static const std::vector<uint8_t> kGrpXPrivRlSingleEntry;
56   /// verifier pre-computation data associated with pub_key_str
57   static const Epid11VerifierPrecomp kVerifierPrecompStr;
58   /// Intel(R) EPID 1.1 parameters
59   static const Epid11Params kParamsStr;
60   /// signature of msg0 by member0 of groupX with Sha256 bsn0
61   static const std::vector<uint8_t> kSigGrpXMember0Sha256Bsn0Msg0;
62   /// signature of msg0 by member0 of groupX with Sha256 bsn0 with one NrProof
63   static const std::vector<uint8_t> kSigGrpXMember0Sha256Bsn0Msg0SingleEntry;
64   /// signature of msg0 by member0 of groupX with Sha256 bsn0 with three NrProof
65   static const std::vector<uint8_t> kSigGrpXMember0Sha256Bsn0Msg0ThreeEntry;
66   /// signature of msg1 by member0 of groupX with Sha256 bsn0
67   static const std::vector<uint8_t> kSigGrpXMember0Sha256Bsn0Msg1;
68   /// signature of msg0 by member0 of groupX with Sha256 bsn1
69   static const std::vector<uint8_t> kSigGrpXMember0Sha256Bsn1Msg0;
70   /// signature of msg0 by member0 of groupX with Sha256 rnd base
71   static const std::vector<uint8_t> kSigGrpXMember0Sha256RandbaseMsg0;
72   /// signature of msg0 by member0 of groupX with Sha256 rnd base with n2==1
73   static const std::vector<uint8_t> kSigGrpXMember0Sha256RandbaseMsg0N2One;
74   /// signature of msg1 by member0 of groupX with Sha256 rnd base
75   static const std::vector<uint8_t> kSigGrpXMember0Sha256RandbaseMsg1;
76   /// signature of msg0 by member1 of groupX with Sha256 bsn0
77   static const std::vector<uint8_t> kSigGrpXMember1Sha256Bsn0Msg0;
78   /// signature of msg0 by priv revoked member 0 of groupX with Sha256 bsn0
79   static const std::vector<uint8_t> kSigGrpXRevokedPrivKey000Sha256Bsn0Msg0;
80   /// signature of msg0 by priv revoked member 1 of groupX with Sha256 bsn0
81   static const std::vector<uint8_t> kSigGrpXRevokedPrivKey001Sha256Bsn0Msg0;
82   /// signature of msg0 by priv revoked member 2 of groupX with Sha256 bsn0
83   static const std::vector<uint8_t> kSigGrpXRevokedPrivKey002Sha256Bsn0Msg0;
84 
85   /// group based rl test data (empty rl)
86   static const std::vector<uint8_t> kGroupRlEmptyBuf;
87   /// group based rl test data (v=3, n=3, 3 revoked gid)
88   static const std::vector<uint8_t> kGroupRl3GidBuf;
89 
90   /// a group revocation list with single group revoked
91   static const std::vector<uint8_t> kGrpRlRevokedGrpXSingleEntry;
92   /// a group revocation list with multiple entries
93   static const std::vector<uint8_t> kGrpRlRevokedGrpXFirstEntry;
94   /// a group revocation list with multiple entries
95   static const std::vector<uint8_t> kGrpRlRevokedGrpXMiddleEntry;
96   /// a group revocation list with multiple entries
97   static const std::vector<uint8_t> kGrpRlRevokedGrpXLastEntry;
98 
99   /// signature based revocation list
100   static const std::vector<uint8_t> kSigRl;
101   /// signature based revocation list for tests of msg containing all bytes
102   static const std::vector<uint8_t> kSigRlForMsg0_255;
103   /// signature based revocation list (empty rl)
104   static const std::vector<uint8_t> kEmptySigRl;
105 
106   /// setup called before each TEST_F starts
SetUp()107   virtual void SetUp() {}
108   /// teardown called after each TEST_F finishes
TearDown()109   virtual void TearDown() {}
110 
111   /// value "1" represented as an octstr constant
112   /*!
113   this value is used frequently to set 32 bit fields. describing as a constant
114   here
115   to reduce replication in code.
116   */
117   static const OctStr32 kOctStr32_1;
118   /// the sigrl of group X
119   static const std::vector<uint8_t> kGrpXSigRlMember0Bsn0Msg0SingleEntry;
120   /// the sigrl of group X
121   static const std::vector<uint8_t> kGrpXSigRlMember0Bsn0Msg0FirstEntry;
122   /// the sigrl of group X
123   static const std::vector<uint8_t> kGrpXSigRlMember0Bsn0Msg0MiddleEntry;
124   /// the sigrl of group X
125   static const std::vector<uint8_t> kGrpXSigRlMember0Bsn0Msg0LastEntry;
126 };
127 
128 #endif  // EPID_VERIFIER_1_1_UNITTESTS_VERIFIER_TESTHELPER_H_
129