aboutsummaryrefslogtreecommitdiff
path: root/epid/member/src/hash_basename.c
diff options
context:
space:
mode:
Diffstat (limited to 'epid/member/src/hash_basename.c')
-rw-r--r--epid/member/src/hash_basename.c54
1 files changed, 54 insertions, 0 deletions
diff --git a/epid/member/src/hash_basename.c b/epid/member/src/hash_basename.c
new file mode 100644
index 0000000..1329960
--- /dev/null
+++ b/epid/member/src/hash_basename.c
@@ -0,0 +1,54 @@
+/*############################################################################
+ # 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;
+}