123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317 |
- /*############################################################################
- # 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 native type validation unit tests.
- *
- * \warning to run the tests in this file you must build a non-shared mode.
- */
- #ifndef SHARED
- #include <cstring>
- #include <vector>
- #include "epid/common-testhelper/epid_gtest-testhelper.h"
- #include "epid/member/tiny/unittests/member-testhelper.h"
- #include "gtest/gtest.h"
- extern "C" {
- #include "epid/common/types.h"
- #include "epid/member/tiny/math/pairing.h"
- #include "epid/member/tiny/src/native_types.h"
- #include "epid/member/tiny/src/validate.h"
- }
- namespace {
- //////////////////////////////////////////////////////////////////////////
- // GroupPubKeyIsInRange Tests
- TEST_F(EpidMemberTest, GroupPubKeyIsInRangePasses) {
- NativeGroupPubKey const input = {
- {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x01}, // group id
- {{{{0xb580e099, 0x434c62fd, 0x64cee3ce, 0xd06d8f9d, 0x7e27b0cb,
- 0x3d753d61, 0xe21b17eb, 0xb36fff81}}},
- {{{0x74f459ee, 0xd8693ea1, 0x82457e7f, 0xee3d6642, 0xe94dae9c,
- 0xfdb5b79d, 0xe08859a4, 0x3a075680}}}}, // h1
- {{{{0xbcdd7fe1, 0x29666163, 0xd55ba704, 0xdc99ed42, 0x5474107b,
- 0xd5dbca1c, 0x63c2518e, 0xd2742e9f}}},
- {{{0xe78e1084, 0x93a56ecc, 0xde4ceacb, 0xda3f517d, 0xe85b087b,
- 0x48120aa6, 0xe314ac72, 0x765dc06e}}}}, // h2
- {{{{{0x0728e896, 0x8dcd3688, 0x6a95cac6, 0x788753f6, 0x401ba5b6,
- 0x50719451, 0xe20fca1c, 0xbd195a95}}},
- {{{0xe2f4b3a1, 0x22d9fde0, 0x0f6c56f5, 0x2414cfd1, 0x15d775f8,
- 0xa6657a68, 0xb86ae7e5, 0xca78115b}}}},
- {{{{0x57e4f33c, 0x0a3b5896, 0x89c2399c, 0x898846dd, 0x5deef56a,
- 0xbc077230, 0xe8b3c725, 0x9021a7e0}}},
- {{{0xee1140a9, 0x837d3e31, 0x8e25c6ad, 0xba6bf0da, 0x1f3deaa2,
- 0x5d0a88db, 0x1bb6f705, 0x79516936}}}}}};
- EXPECT_TRUE(GroupPubKeyIsInRange(&input));
- }
- TEST_F(EpidMemberTest, GroupPubKeyIsInRangeFails) {
- NativeGroupPubKey const input = {
- {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x01}, // group id
- {{{{0xAED33013, 0xD3292DDB, 0x12980A82, 0x0CDC65FB, 0xEE71A49F,
- 0x46E5F25E, 0xFFFCF0CD, 0xFFFFFFFF}}}, //< q
- {{{0x74f459ee, 0xd8693ea1, 0x82457e7f, 0xee3d6642, 0xe94dae9c,
- 0xfdb5b79d, 0xe08859a4, 0x3a075680}}}}, // h1
- {{{{0xbcdd7fe1, 0x29666163, 0xd55ba704, 0xdc99ed42, 0x5474107b,
- 0xd5dbca1c, 0x63c2518e, 0xd2742e9f}}},
- {{{0xe78e1084, 0x93a56ecc, 0xde4ceacb, 0xda3f517d, 0xe85b087b,
- 0x48120aa6, 0xe314ac72, 0x765dc06e}}}}, // h2
- {{{{{0x0728e896, 0x8dcd3688, 0x6a95cac6, 0x788753f6, 0x401ba5b6,
- 0x50719451, 0xe20fca1c, 0xbd195a95}}},
- {{{0xe2f4b3a1, 0x22d9fde0, 0x0f6c56f5, 0x2414cfd1, 0x15d775f8,
- 0xa6657a68, 0xb86ae7e5, 0xca78115b}}}},
- {{{{0x57e4f33c, 0x0a3b5896, 0x89c2399c, 0x898846dd, 0x5deef56a,
- 0xbc077230, 0xe8b3c725, 0x9021a7e0}}},
- {{{0xee1140a9, 0x837d3e31, 0x8e25c6ad, 0xba6bf0da, 0x1f3deaa2,
- 0x5d0a88db, 0x1bb6f705, 0x79516936}}}}}};
- EXPECT_FALSE(GroupPubKeyIsInRange(&input));
- }
- //////////////////////////////////////////////////////////////////////////
- // MembershipCredentialIsInRange Tests
- TEST_F(EpidMemberTest, MembershipCredentialIsInRangePasses) {
- NativeMembershipCredential const input = {
- {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x01}, // group id
- {{{{0x196254db, 0x570890e8, 0xdaf296ec, 0x87683f4e, 0xeb4caf8a,
- 0xacbfdd77, 0xf468e15f, 0x46c969ee}}},
- {{{0x82803777, 0x16249880, 0xffa64ba8, 0xae43de62, 0x0acf364f,
- 0x9a1b8aad, 0x91e4a81d, 0x1e522316}}}}, // A
- {0x1372c377, 0x00147c6b, 0x46ddb71b, 0xd09db9e4, 0x5a611086, 0x105eafd8,
- 0xa1e0d7df, 0x0a30ae43} // x
- };
- EXPECT_TRUE(MembershipCredentialIsInRange(&input));
- }
- TEST_F(EpidMemberTest, MembershipCredentialIsInRangeFails) {
- NativeMembershipCredential const input = {
- {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x01}, // group id
- {{{{0xAED33013, 0xD3292DDB, 0x12980A82, 0x0CDC65FB, 0xEE71A49F,
- 0x46E5F25E, 0xFFFCF0CD, 0xFFFFFFFF}}}, //< q
- {{{0x82803777, 0x16249880, 0xffa64ba8, 0xae43de62, 0x0acf364f,
- 0x9a1b8aad, 0x91e4a81d, 0x1e522316}}}}, // A
- {0x1372c377, 0x00147c6b, 0x46ddb71b, 0xd09db9e4, 0x5a611086, 0x105eafd8,
- 0xa1e0d7df, 0x0a30ae43} // x
- };
- EXPECT_FALSE(MembershipCredentialIsInRange(&input));
- }
- //////////////////////////////////////////////////////////////////////////
- // MembershipCredentialIsInGroup Tests
- TEST_F(EpidMemberTest, MembershipCredentialIsInGroupPasses) {
- PairingState pairing_state;
- PairingInit(&pairing_state);
- NativeMembershipCredential const input = {
- {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x01}, // group id
- {{{{0x196254db, 0x570890e8, 0xdaf296ec, 0x87683f4e, 0xeb4caf8a,
- 0xacbfdd77, 0xf468e15f, 0x46c969ee}}},
- {{{0x82803777, 0x16249880, 0xffa64ba8, 0xae43de62, 0x0acf364f,
- 0x9a1b8aad, 0x91e4a81d, 0x1e522316}}}}, // A
- {0x1372c377, 0x00147c6b, 0x46ddb71b, 0xd09db9e4, 0x5a611086, 0x105eafd8,
- 0xa1e0d7df, 0x0a30ae43} // x
- };
- FpElem const f = {0x636131c7, 0x362d4135, 0xa707879b, 0xa16567fd,
- 0xe07cc68e, 0x05d64356, 0x6d47090b, 0x4840b56c}; // f
- NativeGroupPubKey const pubkey = {
- {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x01}, // group id
- {{{{0xb580e099, 0x434c62fd, 0x64cee3ce, 0xd06d8f9d, 0x7e27b0cb,
- 0x3d753d61, 0xe21b17eb, 0xb36fff81}}},
- {{{0x74f459ee, 0xd8693ea1, 0x82457e7f, 0xee3d6642, 0xe94dae9c,
- 0xfdb5b79d, 0xe08859a4, 0x3a075680}}}}, // h1
- {{{{0xbcdd7fe1, 0x29666163, 0xd55ba704, 0xdc99ed42, 0x5474107b,
- 0xd5dbca1c, 0x63c2518e, 0xd2742e9f}}},
- {{{0xe78e1084, 0x93a56ecc, 0xde4ceacb, 0xda3f517d, 0xe85b087b,
- 0x48120aa6, 0xe314ac72, 0x765dc06e}}}}, // h2
- {{{{{0x0728e896, 0x8dcd3688, 0x6a95cac6, 0x788753f6, 0x401ba5b6,
- 0x50719451, 0xe20fca1c, 0xbd195a95}}},
- {{{0xe2f4b3a1, 0x22d9fde0, 0x0f6c56f5, 0x2414cfd1, 0x15d775f8,
- 0xa6657a68, 0xb86ae7e5, 0xca78115b}}}},
- {{{{0x57e4f33c, 0x0a3b5896, 0x89c2399c, 0x898846dd, 0x5deef56a,
- 0xbc077230, 0xe8b3c725, 0x9021a7e0}}},
- {{{0xee1140a9, 0x837d3e31, 0x8e25c6ad, 0xba6bf0da, 0x1f3deaa2,
- 0x5d0a88db, 0x1bb6f705, 0x79516936}}}}}};
- EXPECT_TRUE(
- MembershipCredentialIsInGroup(&input, &f, &pubkey, &pairing_state));
- }
- TEST_F(EpidMemberTest, MembershipCredentialIsInGroupFails) {
- PairingState pairing_state;
- PairingInit(&pairing_state);
- NativeMembershipCredential const input = {
- {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x02}, // group id
- {{{{0x196254db, 0x570890e8, 0xdaf296ec, 0x87683f4e, 0xeb4caf8a,
- 0xacbfdd77, 0xf468e15f, 0x46c969ee}}},
- {{{0x82803777, 0x16249880, 0xffa64ba8, 0xae43de62, 0x0acf364f,
- 0x9a1b8aad, 0x91e4a81d, 0x1e522316}}}}, // A
- {0x1372c377, 0x00147c6b, 0x46ddb71b, 0xd09db9e4, 0x5a611086, 0x105eafd8,
- 0xa1e0d7df, 0x0a30ae43} // x
- };
- FpElem const f = {0x636131c7, 0x362d4135, 0xa707879b, 0xa16567fd,
- 0xe07cc68e, 0x05d64356, 0x6d47090b, 0x4840b56c}; // f
- NativeGroupPubKey const pubkey = {
- {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x01}, // group id
- {{{{0xb580e099, 0x434c62fd, 0x64cee3ce, 0xd06d8f9d, 0x7e27b0cb,
- 0x3d753d61, 0xe21b17eb, 0xb36fff81}}},
- {{{0x74f459ee, 0xd8693ea1, 0x82457e7f, 0xee3d6642, 0xe94dae9c,
- 0xfdb5b79d, 0xe08859a4, 0x3a075680}}}}, // h1
- {{{{0xbcdd7fe1, 0x29666163, 0xd55ba704, 0xdc99ed42, 0x5474107b,
- 0xd5dbca1c, 0x63c2518e, 0xd2742e9f}}},
- {{{0xe78e1084, 0x93a56ecc, 0xde4ceacb, 0xda3f517d, 0xe85b087b,
- 0x48120aa6, 0xe314ac72, 0x765dc06e}}}}, // h2
- {{{{{0x0728e896, 0x8dcd3688, 0x6a95cac6, 0x788753f6, 0x401ba5b6,
- 0x50719451, 0xe20fca1c, 0xbd195a95}}},
- {{{0xe2f4b3a1, 0x22d9fde0, 0x0f6c56f5, 0x2414cfd1, 0x15d775f8,
- 0xa6657a68, 0xb86ae7e5, 0xca78115b}}}},
- {{{{0x57e4f33c, 0x0a3b5896, 0x89c2399c, 0x898846dd, 0x5deef56a,
- 0xbc077230, 0xe8b3c725, 0x9021a7e0}}},
- {{{0xee1140a9, 0x837d3e31, 0x8e25c6ad, 0xba6bf0da, 0x1f3deaa2,
- 0x5d0a88db, 0x1bb6f705, 0x79516936}}}}}};
- EXPECT_FALSE(
- MembershipCredentialIsInGroup(&input, &f, &pubkey, &pairing_state));
- }
- //////////////////////////////////////////////////////////////////////////
- // PrivKeyIsInRange Tests
- TEST_F(EpidMemberTest, PrivKeyIsInRangePasses) {
- NativePrivKey const input = {
- {
- {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x01}, // group id
- {{{{0x196254db, 0x570890e8, 0xdaf296ec, 0x87683f4e, 0xeb4caf8a,
- 0xacbfdd77, 0xf468e15f, 0x46c969ee}}},
- {{{0x82803777, 0x16249880, 0xffa64ba8, 0xae43de62, 0x0acf364f,
- 0x9a1b8aad, 0x91e4a81d, 0x1e522316}}}}, // A
- {0x1372c377, 0x00147c6b, 0x46ddb71b, 0xd09db9e4, 0x5a611086,
- 0x105eafd8, 0xa1e0d7df, 0x0a30ae43} // x
- },
- {0x636131c7, 0x362d4135, 0xa707879b, 0xa16567fd, 0xe07cc68e, 0x05d64356,
- 0x6d47090b, 0x4840b56c} // f
- };
- EXPECT_TRUE(PrivKeyIsInRange(&input));
- }
- TEST_F(EpidMemberTest, PrivKeyIsInRangeRangeFails) {
- NativePrivKey const input = {
- {
- {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x01}, // group id
- {{{{0xAED33013, 0xD3292DDB, 0x12980A82, 0x0CDC65FB, 0xEE71A49F,
- 0x46E5F25E, 0xFFFCF0CD, 0xFFFFFFFF}}}, //< q
- {{{0x82803777, 0x16249880, 0xffa64ba8, 0xae43de62, 0x0acf364f,
- 0x9a1b8aad, 0x91e4a81d, 0x1e522316}}}}, // A
- {0x1372c377, 0x00147c6b, 0x46ddb71b, 0xd09db9e4, 0x5a611086,
- 0x105eafd8, 0xa1e0d7df, 0x0a30ae43} // x
- },
- {0x636131c7, 0x362d4135, 0xa707879b, 0xa16567fd, 0xe07cc68e, 0x05d64356,
- 0x6d47090b, 0x4840b56c} // f
- };
- EXPECT_FALSE(PrivKeyIsInRange(&input));
- }
- //////////////////////////////////////////////////////////////////////////
- // PrivKeyIsInGroup Tests
- TEST_F(EpidMemberTest, PrivKeyIsInGroupPasses) {
- PairingState pairing_state;
- PairingInit(&pairing_state);
- NativePrivKey const input = {
- {
- {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x01}, // group id
- {{{{0x196254db, 0x570890e8, 0xdaf296ec, 0x87683f4e, 0xeb4caf8a,
- 0xacbfdd77, 0xf468e15f, 0x46c969ee}}},
- {{{0x82803777, 0x16249880, 0xffa64ba8, 0xae43de62, 0x0acf364f,
- 0x9a1b8aad, 0x91e4a81d, 0x1e522316}}}}, // A
- {0x1372c377, 0x00147c6b, 0x46ddb71b, 0xd09db9e4, 0x5a611086,
- 0x105eafd8, 0xa1e0d7df, 0x0a30ae43} // x
- },
- {0x636131c7, 0x362d4135, 0xa707879b, 0xa16567fd, 0xe07cc68e, 0x05d64356,
- 0x6d47090b, 0x4840b56c} // f
- };
- NativeGroupPubKey const pubkey = {
- {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x01}, // group id
- {{{{0xb580e099, 0x434c62fd, 0x64cee3ce, 0xd06d8f9d, 0x7e27b0cb,
- 0x3d753d61, 0xe21b17eb, 0xb36fff81}}},
- {{{0x74f459ee, 0xd8693ea1, 0x82457e7f, 0xee3d6642, 0xe94dae9c,
- 0xfdb5b79d, 0xe08859a4, 0x3a075680}}}}, // h1
- {{{{0xbcdd7fe1, 0x29666163, 0xd55ba704, 0xdc99ed42, 0x5474107b,
- 0xd5dbca1c, 0x63c2518e, 0xd2742e9f}}},
- {{{0xe78e1084, 0x93a56ecc, 0xde4ceacb, 0xda3f517d, 0xe85b087b,
- 0x48120aa6, 0xe314ac72, 0x765dc06e}}}}, // h2
- {{{{{0x0728e896, 0x8dcd3688, 0x6a95cac6, 0x788753f6, 0x401ba5b6,
- 0x50719451, 0xe20fca1c, 0xbd195a95}}},
- {{{0xe2f4b3a1, 0x22d9fde0, 0x0f6c56f5, 0x2414cfd1, 0x15d775f8,
- 0xa6657a68, 0xb86ae7e5, 0xca78115b}}}},
- {{{{0x57e4f33c, 0x0a3b5896, 0x89c2399c, 0x898846dd, 0x5deef56a,
- 0xbc077230, 0xe8b3c725, 0x9021a7e0}}},
- {{{0xee1140a9, 0x837d3e31, 0x8e25c6ad, 0xba6bf0da, 0x1f3deaa2,
- 0x5d0a88db, 0x1bb6f705, 0x79516936}}}}}};
- EXPECT_TRUE(PrivKeyIsInGroup(&input, &pubkey, &pairing_state));
- }
- TEST_F(EpidMemberTest, PrivKeyIsInGroupFails) {
- PairingState pairing_state;
- PairingInit(&pairing_state);
- NativePrivKey const input = {
- {
- {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x02}, // group id
- {{{{0x196254db, 0x570890e8, 0xdaf296ec, 0x87683f4e, 0xeb4caf8a,
- 0xacbfdd77, 0xf468e15f, 0x46c969ee}}},
- {{{0x82803777, 0x16249880, 0xffa64ba8, 0xae43de62, 0x0acf364f,
- 0x9a1b8aad, 0x91e4a81d, 0x1e522316}}}}, // A
- {0x1372c377, 0x00147c6b, 0x46ddb71b, 0xd09db9e4, 0x5a611086,
- 0x105eafd8, 0xa1e0d7df, 0x0a30ae43} // x
- },
- {0x636131c7, 0x362d4135, 0xa707879b, 0xa16567fd, 0xe07cc68e, 0x05d64356,
- 0x6d47090b, 0x4840b56c} // f
- };
- NativeGroupPubKey const pubkey = {
- {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x01}, // group id
- {{{{0xb580e099, 0x434c62fd, 0x64cee3ce, 0xd06d8f9d, 0x7e27b0cb,
- 0x3d753d61, 0xe21b17eb, 0xb36fff81}}},
- {{{0x74f459ee, 0xd8693ea1, 0x82457e7f, 0xee3d6642, 0xe94dae9c,
- 0xfdb5b79d, 0xe08859a4, 0x3a075680}}}}, // h1
- {{{{0xbcdd7fe1, 0x29666163, 0xd55ba704, 0xdc99ed42, 0x5474107b,
- 0xd5dbca1c, 0x63c2518e, 0xd2742e9f}}},
- {{{0xe78e1084, 0x93a56ecc, 0xde4ceacb, 0xda3f517d, 0xe85b087b,
- 0x48120aa6, 0xe314ac72, 0x765dc06e}}}}, // h2
- {{{{{0x0728e896, 0x8dcd3688, 0x6a95cac6, 0x788753f6, 0x401ba5b6,
- 0x50719451, 0xe20fca1c, 0xbd195a95}}},
- {{{0xe2f4b3a1, 0x22d9fde0, 0x0f6c56f5, 0x2414cfd1, 0x15d775f8,
- 0xa6657a68, 0xb86ae7e5, 0xca78115b}}}},
- {{{{0x57e4f33c, 0x0a3b5896, 0x89c2399c, 0x898846dd, 0x5deef56a,
- 0xbc077230, 0xe8b3c725, 0x9021a7e0}}},
- {{{0xee1140a9, 0x837d3e31, 0x8e25c6ad, 0xba6bf0da, 0x1f3deaa2,
- 0x5d0a88db, 0x1bb6f705, 0x79516936}}}}}};
- EXPECT_FALSE(PrivKeyIsInGroup(&input, &pubkey, &pairing_state));
- }
- } // namespace
- #endif // SHARED
|