| /*############################################################################ |
| # 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 OctStr2Bnu unit tests. |
| * |
| * OctStr2Bnu is an internal function used in the IPP implementation of the |
| * math libraries. These tests can be omitted if you do not use this function. |
| */ |
| |
| #include "epid/common-testhelper/epid_gtest-testhelper.h" |
| #include "epid/common/stdtypes.h" |
| #include "gtest/gtest.h" |
| |
| extern "C" { |
| #include "epid/common/math/src/bignum-internal.h" |
| } |
| |
| namespace { |
| |
| const uint8_t bnstr1[] = {0x01, 0x02, 0x03, 0x04}; |
| const uint8_t bnstr2[] = {0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x08}; |
| uint32_t bnustr1[sizeof(bnstr1) / sizeof(uint32_t)] = {0x01020304}; |
| uint32_t bnustr2[sizeof(bnstr2) / sizeof(uint32_t)] = {0x05060708, 0x01020304}; |
| |
| TEST(OctStr2Bnu, octstr2bnuFailsGivenNullBnu) { |
| int len = OctStr2Bnu(nullptr, bnstr1, sizeof(bnstr1) / sizeof(uint8_t)); |
| EXPECT_EQ(-1, len); |
| } |
| TEST(OctStr2Bnu, octstr2bnuFailsGivenNullOctstr) { |
| uint32_t bnustr_res[sizeof(bnstr1) / sizeof(uint32_t)] = {0}; |
| int len = OctStr2Bnu(bnustr_res, nullptr, sizeof(bnstr1) / sizeof(uint8_t)); |
| EXPECT_EQ(-1, len); |
| } |
| TEST(OctStr2Bnu, octstr2bnuFailsGivenInvalidOctsrtLen) { |
| uint32_t bnustr_res[sizeof(bnstr1) / sizeof(uint32_t)] = {0}; |
| int len = OctStr2Bnu(bnustr_res, bnstr1, -1); |
| EXPECT_EQ(-1, len); |
| len = OctStr2Bnu(bnustr_res, bnstr1, 0); |
| EXPECT_EQ(-1, len); |
| len = OctStr2Bnu(bnustr_res, bnstr1, 3); |
| EXPECT_EQ(-1, len); |
| len = OctStr2Bnu(bnustr_res, bnstr1, 5); |
| EXPECT_EQ(-1, len); |
| } |
| TEST(OctStr2Bnu, octstr2bnuWorksGivenOctstr1) { |
| uint32_t bnustr_res[sizeof(bnstr1) / sizeof(uint32_t)] = {0}; |
| int len = OctStr2Bnu(bnustr_res, bnstr1, sizeof(bnstr1) / sizeof(uint8_t)); |
| EXPECT_EQ(1, len); |
| EXPECT_EQ(0, |
| memcmp(bnustr1, bnustr_res, sizeof(bnustr_res) / sizeof(uint32_t))) |
| << "OctStr2Bnu: bnu string result does not match with predefined value\n"; |
| } |
| TEST(OctStr2Bnu, octstr2bnuWorksGivenOctstr2) { |
| uint32_t bnustr_res[sizeof(bnstr2) / sizeof(uint32_t)] = {0}; |
| int len = OctStr2Bnu(bnustr_res, bnstr2, sizeof(bnstr2) / sizeof(uint8_t)); |
| EXPECT_EQ(2, len); |
| EXPECT_EQ(0, |
| memcmp(bnustr2, bnustr_res, sizeof(bnustr_res) / sizeof(uint32_t))) |
| << "OctStr2Bnu: bnu string result does not match with predefined value\n"; |
| } |
| } // namespace |