/*############################################################################
# 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
}