| /*############################################################################ |
| # 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 Conversion utilities implementation. |
| * |
| */ |
| |
| #include "util/convutil.h" |
| #include <ctype.h> |
| #include <stdlib.h> |
| #include <string.h> |
| #include "util/envutil.h" |
| |
| const char* hash_alg_to_string[] = {"SHA-256", "SHA-384", "SHA-512", |
| "SHA-512/256", "SHA3/256", "SHA3/384", |
| "SHA3/512"}; |
| |
| #define COUNT_OF(A) (sizeof(A) / sizeof((A)[0])) |
| |
| char const* HashAlgToString(HashAlg alg) { |
| if ((int)alg < 0 || (size_t)alg >= COUNT_OF(hash_alg_to_string)) |
| return "unknown"; |
| return hash_alg_to_string[alg]; |
| } |
| |
| bool StringToHashAlg(char const* str, HashAlg* alg) { |
| size_t i; |
| if (!alg || !str) return false; |
| for (i = 0; i < COUNT_OF(hash_alg_to_string); i++) { |
| if (0 == strcmp(str, hash_alg_to_string[i])) { |
| *alg = (HashAlg)i; |
| return true; |
| } |
| } |
| return false; |
| } |
| |
| const char* epid_version_to_string[kNumEpidVersions] = {"1", "2"}; |
| |
| char const* EpidVersionToString(EpidVersion version) { |
| if ((int)version < 0 || (size_t)version >= COUNT_OF(epid_version_to_string)) |
| return "unknown"; |
| return epid_version_to_string[version]; |
| } |
| |
| bool StringToEpidVersion(char const* str, EpidVersion* version) { |
| size_t i; |
| if (!version || !str) return false; |
| for (i = 0; i < COUNT_OF(epid_version_to_string); i++) { |
| if (0 == strcmp(str, epid_version_to_string[i])) { |
| *version = (EpidVersion)i; |
| return true; |
| } |
| } |
| log_error("epid version \"%s\" is unknown", str); |
| return false; |
| } |
| |
| const char* epid_file_type_to_string[kNumFileTypes] = { |
| "IssuingCaPubKey", "GroupPubKey", "PrivRl", "SigRl", "GroupRl"}; |
| |
| char const* EpidFileTypeToString(EpidFileType type) { |
| if ((int)type < 0 || (size_t)type >= COUNT_OF(epid_file_type_to_string)) |
| return "unknown"; |
| return epid_file_type_to_string[type]; |
| } |
| |
| bool StringToEpidFileType(char const* str, EpidFileType* type) { |
| size_t i; |
| if (!type || !str) return false; |
| for (i = 0; i < COUNT_OF(epid_file_type_to_string); i++) { |
| if (0 == strcmp(str, epid_file_type_to_string[i])) { |
| *type = (EpidFileType)i; |
| return true; |
| } |
| } |
| log_error("epid file type \"%s\" is unknown", str); |
| return false; |
| } |
| |
| void SetMemberParams(BitSupplier rnd_func, void* rnd_param, FpElemStr* f, |
| MemberParams* params) { |
| #ifdef TPM_TSS |
| (void)rnd_func; |
| (void)rnd_param; |
| params->f = f; |
| #else |
| params->rnd_func = rnd_func; |
| params->rnd_param = rnd_param; |
| params->f = f; |
| #endif |
| } |