| /*############################################################################ |
| # Copyright 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. |
| ############################################################################*/ |
| /// Basename hashing helper implementation |
| /*! \file */ |
| |
| #include "epid/member/src/hash_basename.h" |
| |
| #include "epid/common/math/ecgroup.h" |
| |
| /// Handle SDK Error with Break |
| #define BREAK_ON_EPID_ERROR(ret) \ |
| if (kEpidNoErr != (ret)) { \ |
| break; \ |
| } |
| |
| EpidStatus HashBaseName(EcGroup* G1, HashAlg hash_alg, void const* basename, |
| size_t basename_len, G1ElemStr* B_str, |
| uint32_t* iterations) { |
| EpidStatus sts = kEpidErr; |
| EcPoint* B = NULL; |
| |
| if (!G1 || (0 != basename_len && !basename) || !B_str) { |
| return kEpidBadArgErr; |
| } |
| |
| do { |
| sts = NewEcPoint(G1, &B); |
| BREAK_ON_EPID_ERROR(sts); |
| |
| sts = EcHash(G1, basename, basename_len, hash_alg, B, iterations); |
| BREAK_ON_EPID_ERROR(sts); |
| sts = WriteEcPoint(G1, B, B_str, sizeof(*B_str)); |
| BREAK_ON_EPID_ERROR(sts); |
| |
| sts = kEpidNoErr; |
| } while (0); |
| |
| DeleteEcPoint(&B); |
| |
| return sts; |
| } |