123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489 |
- /*############################################################################
- # Copyright 2016-2017 Intel Corporation
- #
- # Licensed under the Apache License, Version 2.0 (the "License");
- # you may not use this file except in compliance with the License.
- # You may obtain a copy of the License at
- #
- # http://www.apache.org/licenses/LICENSE-2.0
- #
- # Unless required by applicable law or agreed to in writing, software
- # distributed under the License is distributed on an "AS IS" BASIS,
- # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- # See the License for the specific language governing permissions and
- # limitations under the License.
- ############################################################################*/
- /*!
- * \file
- * \brief Epid11VerifierCreate unit tests.
- */
- #include <cstring>
- #include "epid/common-testhelper/epid_gtest-testhelper.h"
- #include "gtest/gtest.h"
- extern "C" {
- #include "epid/verifier/1.1/api.h"
- #include "epid/verifier/1.1/src/context.h"
- }
- #include "epid/common-testhelper/1.1/verifier_wrapper-testhelper.h"
- #include "epid/common-testhelper/errors-testhelper.h"
- #include "epid/verifier/1.1/unittests/verifier-testhelper.h"
- bool operator==(Epid11VerifierPrecomp const& lhs,
- Epid11VerifierPrecomp const& rhs) {
- return 0 == std::memcmp(&lhs, &rhs, sizeof(lhs));
- }
- namespace {
- //////////////////////////////////////////////////////////////////////////
- // Epid11VerifierCreate Tests
- TEST_F(Epid11VerifierTest, CreateFailsGivenNullPointer) {
- Epid11VerifierCtx* ctx = nullptr;
- EXPECT_EQ(kEpidBadArgErr,
- Epid11VerifierCreate(&this->kPubKeyStr, &this->kVerifierPrecompStr,
- nullptr));
- Epid11VerifierDelete(&ctx);
- EXPECT_EQ(kEpidBadArgErr,
- Epid11VerifierCreate(nullptr, &this->kVerifierPrecompStr, &ctx));
- Epid11VerifierDelete(&ctx);
- }
- TEST_F(Epid11VerifierTest, CreateSucceedsGivenNullPrecomp) {
- Epid11VerifierCtx* ctx = nullptr;
- EXPECT_EQ(kEpidNoErr, Epid11VerifierCreate(&this->kPubKeyStr, nullptr, &ctx));
- Epid11VerifierDelete(&ctx);
- }
- TEST_F(Epid11VerifierTest, CreateSucceedsGivenValidPrecomp) {
- Epid11VerifierCtx* ctx = nullptr;
- EXPECT_EQ(kEpidNoErr, Epid11VerifierCreate(&this->kPubKeyStr,
- &this->kVerifierPrecompStr, &ctx));
- Epid11VerifierDelete(&ctx);
- }
- TEST_F(Epid11VerifierTest, CreateFailsGivenInvalidPubkey) {
- Epid11VerifierCtx* ctx = nullptr;
- Epid11GroupPubKey pubkey_with_bad_h1 = this->kPubKeyStr;
- pubkey_with_bad_h1.h1.x.data.data[31]++; // munge h1 so not in G1
- EXPECT_EQ(kEpidBadArgErr,
- Epid11VerifierCreate(&pubkey_with_bad_h1, nullptr, &ctx));
- Epid11VerifierDelete(&ctx);
- Epid11GroupPubKey pubkey_with_bad_h2 = this->kPubKeyStr;
- pubkey_with_bad_h2.h2.x.data.data[31]++; // munge h2 so not in G1
- EXPECT_EQ(kEpidBadArgErr,
- Epid11VerifierCreate(&pubkey_with_bad_h2, nullptr, &ctx));
- Epid11VerifierDelete(&ctx);
- Epid11GroupPubKey pubkey_with_bad_w = this->kPubKeyStr;
- pubkey_with_bad_w.w.x[0].data.data[31]++; // munge w so not in G2
- EXPECT_EQ(kEpidBadArgErr,
- Epid11VerifierCreate(&pubkey_with_bad_w, nullptr, &ctx));
- Epid11VerifierDelete(&ctx);
- }
- TEST_F(Epid11VerifierTest, CreateFailsGivenBadGroupIdInPrecomp) {
- Epid11VerifierCtx* ctx = nullptr;
- // tweak GID
- auto verifier_precomp = this->kVerifierPrecompStr;
- verifier_precomp.gid.data[0] = ~verifier_precomp.gid.data[0];
- EXPECT_EQ(kEpidBadArgErr,
- Epid11VerifierCreate(&this->kPubKeyStr, &verifier_precomp, &ctx));
- }
- //////////////////////////////////////////////////////////////////////////
- // Epid11VerifierDelete Tests
- TEST_F(Epid11VerifierTest, DeleteNullsVerifierCtx) {
- Epid11VerifierCtx* ctx = nullptr;
- THROW_ON_EPIDERR(Epid11VerifierCreate(&this->kPubKeyStr, nullptr, &ctx));
- Epid11VerifierDelete(&ctx);
- EXPECT_EQ(nullptr, ctx);
- }
- TEST_F(Epid11VerifierTest, DeleteWorksGivenNullVerifierCtx) {
- Epid11VerifierDelete(nullptr);
- Epid11VerifierCtx* ctx = nullptr;
- Epid11VerifierDelete(&ctx);
- }
- //////////////////////////////////////////////////////////////////////////
- // Epid11VerifierWritePrecomp
- TEST_F(Epid11VerifierTest, WritePrecompFailsGivenNullPointer) {
- Epid11VerifierPrecomp precomp;
- Epid11VerifierCtxObj verifier(this->kPubKeyStr, this->kVerifierPrecompStr);
- Epid11VerifierCtx* ctx = verifier;
- EXPECT_EQ(kEpidBadArgErr, Epid11VerifierWritePrecomp(nullptr, &precomp));
- EXPECT_EQ(kEpidBadArgErr, Epid11VerifierWritePrecomp(ctx, nullptr));
- }
- TEST_F(Epid11VerifierTest, WritePrecompSucceedGivenValidArgument) {
- Epid11VerifierPrecomp precomp;
- Epid11VerifierCtxObj verifier(this->kPubKeyStr, this->kVerifierPrecompStr);
- Epid11VerifierCtx* ctx = verifier;
- EXPECT_EQ(kEpidNoErr, Epid11VerifierWritePrecomp(ctx, &precomp));
- Epid11VerifierPrecomp expected_precomp = this->kVerifierPrecompStr;
- EXPECT_EQ(expected_precomp, precomp);
- Epid11VerifierCtxObj verifier2(this->kPubKeyStr);
- Epid11VerifierCtx* ctx2 = verifier2;
- EXPECT_EQ(kEpidNoErr, Epid11VerifierWritePrecomp(ctx2, &precomp));
- EXPECT_EQ(expected_precomp, precomp);
- }
- //////////////////////////////////////////////////////////////////////////
- // Epid11VerifierSetPrivRl
- TEST_F(Epid11VerifierTest, SetPrivRlFailsGivenNullPointer) {
- Epid11VerifierCtxObj verifier(this->kPubKeyStr, this->kVerifierPrecompStr);
- Epid11PrivRl prl = {0};
- prl.gid = this->kPubKeyStr.gid;
- EXPECT_EQ(kEpidBadArgErr,
- Epid11VerifierSetPrivRl(nullptr, &prl, sizeof(prl)));
- EXPECT_EQ(kEpidBadArgErr,
- Epid11VerifierSetPrivRl(verifier, nullptr, sizeof(prl)));
- }
- TEST_F(Epid11VerifierTest, SetPrivRlFailsGivenZeroSize) {
- Epid11VerifierCtxObj verifier(this->kPubKeyStr, this->kVerifierPrecompStr);
- Epid11PrivRl prl = {0};
- prl.gid = this->kPubKeyStr.gid;
- EXPECT_EQ(kEpidBadArgErr, Epid11VerifierSetPrivRl(verifier, &prl, 0));
- }
- // Size parameter must be at least big enough for n1 == 0 case
- TEST_F(Epid11VerifierTest, SetPrivRlFailsGivenTooSmallSize) {
- Epid11VerifierCtxObj verifier(this->kPubKeyStr, this->kVerifierPrecompStr);
- Epid11PrivRl prl = {0};
- prl.gid = this->kPubKeyStr.gid;
- EXPECT_EQ(kEpidBadArgErr,
- Epid11VerifierSetPrivRl(verifier, &prl,
- (sizeof(prl) - sizeof(prl.f)) - 1));
- prl.n1 = this->kOctStr32_1;
- EXPECT_EQ(kEpidBadArgErr,
- Epid11VerifierSetPrivRl(verifier, &prl,
- (sizeof(prl) - sizeof(prl.f)) - 1));
- }
- // Size parameter must be cross-checked with n1 value in priv_rl
- TEST_F(Epid11VerifierTest, SetPrivRlFailsGivenN1TooBigForSize) {
- Epid11VerifierCtxObj verifier(this->kPubKeyStr, this->kVerifierPrecompStr);
- Epid11PrivRl prl = {0};
- prl.gid = this->kPubKeyStr.gid;
- prl.n1 = this->kOctStr32_1;
- EXPECT_EQ(kEpidBadArgErr, Epid11VerifierSetPrivRl(
- verifier, &prl, sizeof(prl) - sizeof(prl.f)));
- }
- TEST_F(Epid11VerifierTest, SetPrivRlFailsGivenN1TooSmallForSize) {
- Epid11VerifierCtxObj verifier(this->kPubKeyStr, this->kVerifierPrecompStr);
- Epid11PrivRl prl = {0};
- prl.gid = this->kPubKeyStr.gid;
- EXPECT_EQ(kEpidBadArgErr,
- Epid11VerifierSetPrivRl(verifier, &prl, sizeof(prl)));
- }
- TEST_F(Epid11VerifierTest, SetPrivRlPassesGivenDefaultPrivRl) {
- Epid11VerifierCtxObj verifier(this->kPubKeyStr, this->kVerifierPrecompStr);
- Epid11PrivRl prl = {0};
- prl.gid = this->kPubKeyStr.gid;
- EXPECT_EQ(kEpidNoErr, Epid11VerifierSetPrivRl(verifier, &prl,
- sizeof(prl) - sizeof(prl.f)));
- }
- TEST_F(Epid11VerifierTest, SetPrivRlPassesGivenPrivRlWithSingleElement) {
- Epid11VerifierCtxObj verifier(this->kPubKeyStr, this->kVerifierPrecompStr);
- Epid11PrivRl prl = {0};
- prl.gid = this->kPubKeyStr.gid;
- prl.n1 = this->kOctStr32_1;
- EXPECT_EQ(kEpidNoErr, Epid11VerifierSetPrivRl(verifier, &prl, sizeof(prl)));
- }
- TEST_F(Epid11VerifierTest, SetPrivRlFailsGivenBadGroupId) {
- Epid11VerifierCtxObj verifier(this->kPubKeyStr, this->kVerifierPrecompStr);
- Epid11PrivRl prl = {0};
- prl.gid = this->kPubKeyStr.gid;
- prl.gid.data[0] = ~prl.gid.data[0];
- prl.n1 = this->kOctStr32_1;
- EXPECT_EQ(kEpidBadArgErr,
- Epid11VerifierSetPrivRl(verifier, &prl, sizeof(prl)));
- }
- TEST_F(Epid11VerifierTest, SetPrivRlFailsGivenOldVersion) {
- Epid11VerifierCtxObj verifier(this->kPubKeyStr, this->kVerifierPrecompStr);
- Epid11PrivRl prl = {0};
- prl.gid = this->kPubKeyStr.gid;
- prl.version = this->kOctStr32_1;
- EXPECT_EQ(kEpidNoErr, Epid11VerifierSetPrivRl(verifier, &prl,
- sizeof(prl) - sizeof(prl.f)));
- OctStr32 octstr32_0 = {0x00, 0x00, 0x00, 0x00};
- prl.version = octstr32_0;
- EXPECT_EQ(kEpidBadArgErr, Epid11VerifierSetPrivRl(
- verifier, &prl, sizeof(prl) - sizeof(prl.f)));
- }
- //////////////////////////////////////////////////////////////////////////
- // Epid11VerifierSetSigRl
- TEST_F(Epid11VerifierTest, SetSigRlFailsGivenNullPointer) {
- Epid11VerifierCtxObj verifier(this->kPubKeyStr, this->kVerifierPrecompStr);
- Epid11SigRl* empty_sig_rl = (Epid11SigRl*)this->kEmptySigRl.data();
- EXPECT_EQ(kEpidBadArgErr,
- Epid11VerifierSetSigRl(nullptr, empty_sig_rl, sizeof(Epid11SigRl)));
- EXPECT_EQ(kEpidBadArgErr,
- Epid11VerifierSetSigRl(verifier, nullptr, sizeof(Epid11SigRl)));
- }
- TEST_F(Epid11VerifierTest, SetSigRlFailsGivenZeroSize) {
- Epid11VerifierCtxObj verifier(this->kPubKeyStr, this->kVerifierPrecompStr);
- Epid11SigRl* empty_sig_rl = (Epid11SigRl*)this->kEmptySigRl.data();
- EXPECT_EQ(kEpidBadArgErr, Epid11VerifierSetSigRl(verifier, empty_sig_rl, 0));
- }
- // Size parameter must be at least big enough for n2 == 0 case
- TEST_F(Epid11VerifierTest, SetSigRlFailsGivenTooSmallSize) {
- Epid11VerifierCtxObj verifier(this->kPubKeyStr, this->kVerifierPrecompStr);
- std::vector<uint8_t> empty_sig_rl_buf(this->kEmptySigRl);
- Epid11SigRl* empty_sig_rl = (Epid11SigRl*)empty_sig_rl_buf.data();
- EXPECT_EQ(kEpidBadArgErr,
- Epid11VerifierSetSigRl(
- verifier, empty_sig_rl,
- (sizeof(*empty_sig_rl) - sizeof(empty_sig_rl->bk)) - 1));
- empty_sig_rl->n2 = this->kOctStr32_1;
- EXPECT_EQ(kEpidBadArgErr,
- Epid11VerifierSetSigRl(
- verifier, empty_sig_rl,
- (sizeof(*empty_sig_rl) - sizeof(empty_sig_rl->bk)) - 1));
- }
- TEST_F(Epid11VerifierTest, SetSigRlFailsGivenN2TooBigForSize) {
- Epid11VerifierCtxObj verifier(this->kPubKeyStr, this->kVerifierPrecompStr);
- std::vector<uint8_t> empty_sig_rl_buf(this->kEmptySigRl);
- Epid11SigRl* empty_sig_rl = (Epid11SigRl*)empty_sig_rl_buf.data();
- empty_sig_rl->n2 = this->kOctStr32_1;
- EXPECT_EQ(
- kEpidBadArgErr,
- Epid11VerifierSetSigRl(verifier, empty_sig_rl,
- sizeof(*empty_sig_rl) - sizeof(empty_sig_rl->bk)));
- }
- TEST_F(Epid11VerifierTest, SetSigRlFailsGivenN2TooSmallForSize) {
- Epid11VerifierCtxObj verifier(this->kPubKeyStr, this->kVerifierPrecompStr);
- std::vector<uint8_t> empty_sig_rl_buf(this->kEmptySigRl);
- Epid11SigRl* empty_sig_rl = (Epid11SigRl*)empty_sig_rl_buf.data();
- EXPECT_EQ(kEpidBadArgErr, Epid11VerifierSetSigRl(verifier, empty_sig_rl,
- sizeof(*empty_sig_rl)));
- }
- TEST_F(Epid11VerifierTest, SetSigRlWorksGivenSigRlWithNoElements) {
- Epid11VerifierCtxObj verifier(this->kPubKeyStr, this->kVerifierPrecompStr);
- std::vector<uint8_t> empty_sig_rl_buf(this->kEmptySigRl);
- Epid11SigRl* empty_sig_rl = (Epid11SigRl*)empty_sig_rl_buf.data();
- size_t sig_rl_size = empty_sig_rl_buf.size() * sizeof(uint8_t);
- EXPECT_EQ(kEpidNoErr,
- Epid11VerifierSetSigRl(verifier, empty_sig_rl, sig_rl_size));
- }
- TEST_F(Epid11VerifierTest, SetSigRlWorksGivenSigRlWithOneElement) {
- Epid11VerifierCtxObj verifier(this->kPubKeyStr, this->kVerifierPrecompStr);
- uint8_t sig_rl_data_n2_one[] = {
- // gid
- 0x00, 0x00, 0x00, 0x7b,
- // rev
- 0x00, 0x00, 0x00, 0x7b,
- // n2
- 0x00, 0x00, 0x00, 0x01,
- // bks
- // bk1
- 0x67, 0x58, 0xb2, 0x9c, 0xad, 0x61, 0x1f, 0xfb, 0x74, 0x23, 0xea, 0x40,
- 0xe9, 0x66, 0x26, 0xb0, 0x43, 0xdc, 0x7e, 0xc7, 0x48, 0x88, 0x56, 0x59,
- 0xf3, 0x35, 0x9f, 0xdb, 0xfa, 0xa2, 0x49, 0x51, 0x85, 0x35, 0x42, 0x50,
- 0x8e, 0x79, 0x79, 0xc0, 0x6c, 0xcc, 0x39, 0x0b, 0xad, 0x3b, 0x39, 0x33,
- 0xae, 0xb2, 0xa1, 0xc5, 0x28, 0x6f, 0x48, 0x3a, 0xd2, 0x63, 0x5d, 0xfb,
- 0x1b, 0x1f, 0x8a, 0x63, 0x84, 0xdc, 0x2d, 0xad, 0x3b, 0x98, 0x3f, 0xc3,
- 0x8e, 0x18, 0xd7, 0xea, 0x18, 0x50, 0x0c, 0x50, 0x42, 0x77, 0xb2, 0x59,
- 0xf5, 0xd5, 0x38, 0xc3, 0x8d, 0x57, 0xf4, 0xe7, 0xb8, 0x74, 0x5a, 0x9e,
- 0x32, 0x75, 0xd1, 0xb4, 0xb3, 0x64, 0xbc, 0x23, 0xcd, 0x98, 0x29, 0x7a,
- 0x77, 0x51, 0xfc, 0x26, 0x81, 0x41, 0x9b, 0xf6, 0x21, 0xad, 0xc1, 0xd9,
- 0xab, 0x30, 0x25, 0x8d, 0x0c, 0x3b, 0x62, 0xe2};
- Epid11SigRl* sig_rl = reinterpret_cast<Epid11SigRl*>(sig_rl_data_n2_one);
- EXPECT_EQ(kEpidNoErr,
- Epid11VerifierSetSigRl(verifier, sig_rl, sizeof(*sig_rl)));
- }
- TEST_F(Epid11VerifierTest, SetSigRlWorksGivenSigRlWithTwoElement) {
- Epid11VerifierCtxObj verifier(this->kPubKeyStr, this->kVerifierPrecompStr);
- Epid11VerifierCtx* ctx = verifier;
- Epid11SigRl const* sig_rl =
- reinterpret_cast<Epid11SigRl const*>(this->kSigRl.data());
- size_t sig_rl_size = this->kSigRl.size() * sizeof(uint8_t);
- EXPECT_EQ(kEpidNoErr, Epid11VerifierSetSigRl(ctx, sig_rl, sig_rl_size));
- }
- TEST_F(Epid11VerifierTest, SetSigRlFailsGivenBadGroupId) {
- Epid11VerifierCtxObj verifier(this->kPubKeyStr, this->kVerifierPrecompStr);
- std::vector<uint8_t> empty_sig_rl_buf(this->kEmptySigRl);
- Epid11SigRl* empty_sig_rl = (Epid11SigRl*)empty_sig_rl_buf.data();
- empty_sig_rl->gid.data[0] = ~empty_sig_rl->gid.data[0];
- EXPECT_EQ(
- kEpidBadArgErr,
- Epid11VerifierSetSigRl(verifier, empty_sig_rl,
- sizeof(*empty_sig_rl) - sizeof(empty_sig_rl->bk)));
- }
- TEST_F(Epid11VerifierTest, SetSigRlFailsGivenOldVersion) {
- Epid11VerifierCtxObj verifier(this->kPubKeyStr, this->kVerifierPrecompStr);
- std::vector<uint8_t> empty_sig_rl_buf(this->kEmptySigRl);
- Epid11SigRl* empty_sig_rl = (Epid11SigRl*)empty_sig_rl_buf.data();
- empty_sig_rl->version = this->kOctStr32_1;
- EXPECT_EQ(kEpidNoErr, Epid11VerifierSetSigRl(
- verifier, empty_sig_rl,
- sizeof(*empty_sig_rl) - sizeof(empty_sig_rl->bk)));
- OctStr32 octstr32_0 = {0x00, 0x00, 0x00, 0x00};
- empty_sig_rl->version = octstr32_0;
- EXPECT_EQ(
- kEpidBadArgErr,
- Epid11VerifierSetSigRl(verifier, empty_sig_rl,
- sizeof(*empty_sig_rl) - sizeof(empty_sig_rl->bk)));
- }
- //////////////////////////////////////////////////////////////////////////
- // Epid11VerifierSetGroupRl
- TEST_F(Epid11VerifierTest, SetGroupRlFailsGivenNullPointer) {
- Epid11VerifierCtxObj verifier(this->kPubKeyStr, this->kVerifierPrecompStr);
- std::vector<uint8_t> group_rl(this->kGroupRl3GidBuf);
- Epid11GroupRl* grl = (Epid11GroupRl*)group_rl.data();
- EXPECT_EQ(kEpidBadArgErr,
- Epid11VerifierSetGroupRl(nullptr, grl, group_rl.size()));
- EXPECT_EQ(kEpidBadArgErr,
- Epid11VerifierSetGroupRl(verifier, nullptr, group_rl.size()));
- }
- TEST_F(Epid11VerifierTest, SetGroupRlFailsGivenSizeZero) {
- Epid11VerifierCtxObj verifier(this->kPubKeyStr, this->kVerifierPrecompStr);
- std::vector<uint8_t> group_rl(this->kGroupRl3GidBuf);
- Epid11GroupRl* grl = (Epid11GroupRl*)group_rl.data();
- EXPECT_EQ(kEpidBadArgErr, Epid11VerifierSetGroupRl(verifier, grl, 0));
- }
- TEST_F(Epid11VerifierTest, SetGroupRlFailsGivenSizeTooSmall) {
- Epid11VerifierCtxObj verifier(this->kPubKeyStr, this->kVerifierPrecompStr);
- std::vector<uint8_t> group_rl(this->kGroupRl3GidBuf);
- Epid11GroupRl* grl = (Epid11GroupRl*)group_rl.data();
- size_t grl_size = group_rl.size() - sizeof(grl->gid[0]);
- EXPECT_EQ(kEpidBadArgErr,
- Epid11VerifierSetGroupRl(verifier, grl, grl_size - 1));
- }
- TEST_F(Epid11VerifierTest, SetGroupRlFailsGivenSizeTooLarge) {
- Epid11VerifierCtxObj verifier(this->kPubKeyStr, this->kVerifierPrecompStr);
- std::vector<uint8_t> group_rl(this->kGroupRl3GidBuf);
- Epid11GroupRl* grl = (Epid11GroupRl*)group_rl.data();
- size_t grl_size = group_rl.size() - sizeof(grl->gid[0]);
- EXPECT_EQ(kEpidBadArgErr,
- Epid11VerifierSetGroupRl(verifier, grl, grl_size + 1));
- }
- TEST_F(Epid11VerifierTest, SetGroupRlFailsGivenN3ZeroAndGroupRLSizeTooBig) {
- Epid11VerifierCtxObj verifier(this->kPubKeyStr, this->kVerifierPrecompStr);
- std::vector<uint8_t> group_rl_3gid_n0_buf(this->kGroupRl3GidBuf);
- group_rl_3gid_n0_buf[7] = 0x00;
- Epid11GroupRl* group_rl = (Epid11GroupRl*)group_rl_3gid_n0_buf.data();
- EXPECT_EQ(kEpidBadArgErr,
- Epid11VerifierSetGroupRl(verifier, group_rl,
- group_rl_3gid_n0_buf.size()));
- }
- TEST_F(Epid11VerifierTest, SetGroupRlFailsGivenN3TooSmall) {
- Epid11VerifierCtxObj verifier(this->kPubKeyStr, this->kVerifierPrecompStr);
- std::vector<uint8_t> group_rl_3gid_n2_buf(this->kGroupRl3GidBuf);
- group_rl_3gid_n2_buf[7] = 0x02;
- Epid11GroupRl* group_rl = (Epid11GroupRl*)group_rl_3gid_n2_buf.data();
- EXPECT_EQ(kEpidBadArgErr,
- Epid11VerifierSetGroupRl(verifier, group_rl,
- group_rl_3gid_n2_buf.size()));
- }
- TEST_F(Epid11VerifierTest, SetGroupRlFailsGivenN3TooLarge) {
- Epid11VerifierCtxObj verifier(this->kPubKeyStr, this->kVerifierPrecompStr);
- std::vector<uint8_t> group_rl_3gid_n4_buf(this->kGroupRl3GidBuf);
- group_rl_3gid_n4_buf[7] = 0x04;
- Epid11GroupRl* group_rl = (Epid11GroupRl*)group_rl_3gid_n4_buf.data();
- EXPECT_EQ(kEpidBadArgErr,
- Epid11VerifierSetGroupRl(verifier, group_rl,
- group_rl_3gid_n4_buf.size()));
- }
- TEST_F(Epid11VerifierTest, SetGroupRlSucceedsGivenEmptyRL) {
- Epid11VerifierCtxObj verifier(this->kPubKeyStr, this->kVerifierPrecompStr);
- Epid11GroupRl* empty_grl = (Epid11GroupRl*)this->kGroupRlEmptyBuf.data();
- size_t grl_size = this->kGroupRlEmptyBuf.size();
- EXPECT_EQ(kEpidNoErr,
- Epid11VerifierSetGroupRl(verifier, empty_grl, grl_size));
- }
- TEST_F(Epid11VerifierTest, SetGroupRlSucceedsGivenRLWith3gid) {
- Epid11VerifierCtxObj verifier(this->kPubKeyStr, this->kVerifierPrecompStr);
- Epid11GroupRl* group_rl = (Epid11GroupRl*)this->kGroupRl3GidBuf.data();
- EXPECT_EQ(kEpidNoErr, Epid11VerifierSetGroupRl(verifier, group_rl,
- this->kGroupRl3GidBuf.size()));
- }
- TEST_F(Epid11VerifierTest, SetGroupRlFailsGivenOldVersion) {
- Epid11VerifierCtxObj verifier(this->kPubKeyStr, this->kVerifierPrecompStr);
- Epid11GroupRl* group_rl = (Epid11GroupRl*)this->kGroupRl3GidBuf.data();
- EXPECT_EQ(kEpidNoErr, Epid11VerifierSetGroupRl(verifier, group_rl,
- this->kGroupRl3GidBuf.size()));
- Epid11GroupRl* empty_grl = (Epid11GroupRl*)this->kGroupRlEmptyBuf.data();
- EXPECT_EQ(kEpidBadArgErr,
- Epid11VerifierSetGroupRl(verifier, empty_grl,
- this->kGroupRlEmptyBuf.size()));
- }
- //////////////////////////////////////////////////////////////////////////
- // Epid11VerifierSetBasename
- TEST_F(Epid11VerifierTest, DefaultBasenameIsNull) {
- Epid11VerifierCtxObj verifier(this->kPubKeyStr, this->kVerifierPrecompStr);
- Epid11VerifierCtx* ctx = verifier;
- EXPECT_EQ(nullptr, ctx->basename);
- }
- TEST_F(Epid11VerifierTest, SetBasenameFailsGivenNullContext) {
- auto& basename = this->kBsn0;
- EXPECT_EQ(kEpidBadArgErr, Epid11VerifierSetBasename(nullptr, basename.data(),
- basename.size()));
- }
- TEST_F(Epid11VerifierTest, SetBasenameFailsGivenNullBasenameAndNonzeroLength) {
- Epid11VerifierCtxObj verifier(this->kPubKeyStr, this->kVerifierPrecompStr);
- Epid11VerifierCtx* ctx = verifier;
- auto& basename = this->kBsn0;
- EXPECT_EQ(kEpidBadArgErr,
- Epid11VerifierSetBasename(ctx, nullptr, basename.size()));
- }
- TEST_F(Epid11VerifierTest, SetBasenameSucceedsGivenValidParameters) {
- Epid11VerifierCtxObj verifier(this->kPubKeyStr, this->kVerifierPrecompStr);
- Epid11VerifierCtx* ctx = verifier;
- auto& basename = this->kBsn0;
- EXPECT_EQ(kEpidNoErr,
- Epid11VerifierSetBasename(ctx, basename.data(), basename.size()));
- EXPECT_EQ(basename.size(), ctx->basename_len);
- EXPECT_EQ(0, memcmp(basename.data(), ctx->basename, ctx->basename_len));
- EXPECT_NE(nullptr, ctx->basename_hash);
- }
- TEST_F(Epid11VerifierTest, SetBasenameAcceptsZeroLengthBasename) {
- Epid11VerifierCtxObj verifier(this->kPubKeyStr, this->kVerifierPrecompStr);
- Epid11VerifierCtx* ctx = verifier;
- EXPECT_EQ(kEpidNoErr, Epid11VerifierSetBasename(ctx, "", 0));
- EXPECT_EQ((size_t)0, ctx->basename_len);
- EXPECT_NE(nullptr, ctx->basename_hash);
- }
- TEST_F(Epid11VerifierTest, SetBasenameResetsBasenameGivenNullBasename) {
- Epid11VerifierCtxObj verifier(this->kPubKeyStr, this->kVerifierPrecompStr);
- Epid11VerifierCtx* ctx = verifier;
- auto& basename = this->kBsn0;
- THROW_ON_EPIDERR(
- Epid11VerifierSetBasename(ctx, basename.data(), basename.size()));
- THROW_ON_EPIDERR(Epid11VerifierSetBasename(ctx, nullptr, 0));
- EXPECT_EQ(nullptr, ctx->basename_hash);
- }
- TEST_F(Epid11VerifierTest, SetBasenameAcceptsBsnContainingAllPossibleBytes) {
- Epid11VerifierCtxObj verifier(this->kPubKeyStrForMsg0_255,
- this->kVerifierPrecompStr);
- Epid11VerifierCtx* ctx = verifier;
- auto& basename = this->kData_0_255;
- EXPECT_EQ(kEpidNoErr,
- Epid11VerifierSetBasename(ctx, basename.data(), basename.size()));
- EXPECT_EQ(basename.size(), ctx->basename_len);
- EXPECT_EQ(0, memcmp(basename.data(), ctx->basename, ctx->basename_len));
- EXPECT_NE(nullptr, ctx->basename_hash);
- }
- } // namespace
|