#include "sa_crypto_mac_common.h"
#include "client_test_helpers.h"
using namespace client_test_helpers;
namespace {
int cmac_key_lengths[] = {16, 32};
int hmac_key_lengths[] = {16, 32, 64, 512};
sa_mac_parameters_hmac hmac_sha1_params = {SA_DIGEST_ALGORITHM_SHA1};
sa_mac_parameters_hmac hmac_sha256_params = {SA_DIGEST_ALGORITHM_SHA256};
sa_mac_parameters_hmac hmac_sha384_params = {SA_DIGEST_ALGORITHM_SHA384};
sa_mac_parameters_hmac hmac_sha512_params = {SA_DIGEST_ALGORITHM_SHA512};
void* hmac_params_list[] = {
static_cast<void*>(&hmac_sha1_params),
static_cast<void*>(&hmac_sha256_params),
static_cast<void*>(&hmac_sha384_params),
static_cast<void*>(&hmac_sha512_params),
};
}
bool SaCryptoMacBase::hmac_sha1_openssl(
std::vector<uint8_t>& out,
const std::vector<uint8_t>& key,
const std::vector<uint8_t>& in) {
return hmac_openssl(out, key, in, SA_DIGEST_ALGORITHM_SHA1);
}
bool SaCryptoMacBase::hmac_sha256_openssl(
std::vector<uint8_t>& out,
const std::vector<uint8_t>& key,
const std::vector<uint8_t>& in) {
return hmac_openssl(out, key, in, SA_DIGEST_ALGORITHM_SHA256);
}
bool SaCryptoMacBase::hmac_sha384_openssl(
std::vector<uint8_t>& out,
const std::vector<uint8_t>& key,
const std::vector<uint8_t>& in) {
return hmac_openssl(out, key, in, SA_DIGEST_ALGORITHM_SHA384);
}
bool SaCryptoMacBase::hmac_sha512_openssl(
std::vector<uint8_t>& out,
const std::vector<uint8_t>& key,
const std::vector<uint8_t>& in) {
return hmac_openssl(out, key, in, SA_DIGEST_ALGORITHM_SHA512);
}
INSTANTIATE_TEST_SUITE_P(
Cmac,
SaCryptoMacInit,
::testing::Combine(
::testing::Values(SA_MAC_ALGORITHM_CMAC),
::testing::Values(nullptr),
::testing::ValuesIn(cmac_key_lengths)));
INSTANTIATE_TEST_SUITE_P(
Cmac,
SaCryptoMacInitArgChecks,
::testing::Combine(
::testing::Values(SA_MAC_ALGORITHM_CMAC),
::testing::Values(nullptr),
::testing::ValuesIn(cmac_key_lengths)));
INSTANTIATE_TEST_SUITE_P(
Cmac,
SaCryptoMacInitKeyRights,
::testing::Combine(
::testing::Values(SA_MAC_ALGORITHM_CMAC),
::testing::Values(nullptr),
::testing::ValuesIn(cmac_key_lengths)));
INSTANTIATE_TEST_SUITE_P(
Cmac,
SaCryptoMacInitInvalidKeyLengths,
::testing::Combine(
::testing::Values(SA_MAC_ALGORITHM_CMAC),
::testing::Values(nullptr),
::testing::Values(18, 25, 64)));
INSTANTIATE_TEST_SUITE_P(
Hmac,
SaCryptoMacInit,
::testing::Combine(
::testing::Values(SA_MAC_ALGORITHM_HMAC),
::testing::ValuesIn(hmac_params_list),
::testing::ValuesIn(hmac_key_lengths)));
INSTANTIATE_TEST_SUITE_P(
Hmac,
SaCryptoMacInitArgChecks,
::testing::Combine(
::testing::Values(SA_MAC_ALGORITHM_HMAC),
::testing::ValuesIn(hmac_params_list),
::testing::ValuesIn(hmac_key_lengths)));
INSTANTIATE_TEST_SUITE_P(
Hmac,
SaCryptoMacInitKeyRights,
::testing::Combine(
::testing::Values(SA_MAC_ALGORITHM_HMAC),
::testing::ValuesIn(hmac_params_list),
::testing::ValuesIn(hmac_key_lengths)));
INSTANTIATE_TEST_SUITE_P(
Hmac,
SaCryptoMacInitHmacDigests,
::testing::Combine(
::testing::Values(SA_MAC_ALGORITHM_HMAC),
::testing::ValuesIn(hmac_params_list),
::testing::ValuesIn(hmac_key_lengths)));
INSTANTIATE_TEST_SUITE_P(
Cmac,
SaCryptoMacComputeOutLength,
::testing::Combine(
::testing::Values(SA_MAC_ALGORITHM_CMAC),
::testing::Values(nullptr),
::testing::ValuesIn(cmac_key_lengths),
::testing::Values(16)));
INSTANTIATE_TEST_SUITE_P(
Cmac,
SaCryptoMacComputeMatchesOpenssl,
::testing::Combine(
::testing::Values(SA_MAC_ALGORITHM_CMAC),
::testing::Values(nullptr),
::testing::ValuesIn(cmac_key_lengths),
::testing::Values(0, 1, 8, 16, 32, 1023, 1024, 1025),
::testing::Values(cmac_openssl)));
INSTANTIATE_TEST_SUITE_P(
Cmac,
SaCryptoMacComputeArgChecks,
::testing::Combine(
::testing::Values(SA_MAC_ALGORITHM_CMAC),
::testing::Values(nullptr),
::testing::ValuesIn(cmac_key_lengths)));
INSTANTIATE_TEST_SUITE_P(
HmacSha1,
SaCryptoMacComputeOutLength,
::testing::Combine(
::testing::Values(SA_MAC_ALGORITHM_HMAC),
::testing::Values((void*) &hmac_sha1_params),
::testing::ValuesIn(hmac_key_lengths),
::testing::Values(20)));
INSTANTIATE_TEST_SUITE_P(
HmacSha1,
SaCryptoMacComputeMatchesOpenssl,
::testing::Combine(
::testing::Values(SA_MAC_ALGORITHM_HMAC),
::testing::Values((void*) &hmac_sha1_params),
::testing::ValuesIn(hmac_key_lengths),
::testing::Values(0, 1, 8, 16, 32, 1023, 1024, 1025),
::testing::Values(SaCryptoMacBase::hmac_sha1_openssl)));
INSTANTIATE_TEST_SUITE_P(
HmacSha256,
SaCryptoMacComputeOutLength,
::testing::Combine(
::testing::Values(SA_MAC_ALGORITHM_HMAC),
::testing::Values((void*) &hmac_sha256_params),
::testing::ValuesIn(hmac_key_lengths),
::testing::Values(32)));
INSTANTIATE_TEST_SUITE_P(
HmacSha256,
SaCryptoMacComputeMatchesOpenssl,
::testing::Combine(
::testing::Values(SA_MAC_ALGORITHM_HMAC),
::testing::Values((void*) &hmac_sha256_params),
::testing::ValuesIn(hmac_key_lengths),
::testing::Values(0, 1, 8, 16, 32, 1023, 1024, 1025),
::testing::Values(SaCryptoMacBase::hmac_sha256_openssl)));
INSTANTIATE_TEST_SUITE_P(
HmacSha384,
SaCryptoMacComputeOutLength,
::testing::Combine(
::testing::Values(SA_MAC_ALGORITHM_HMAC),
::testing::Values((void*) &hmac_sha384_params),
::testing::ValuesIn(hmac_key_lengths),
::testing::Values(48)));
INSTANTIATE_TEST_SUITE_P(
HmacSha384,
SaCryptoMacComputeMatchesOpenssl,
::testing::Combine(
::testing::Values(SA_MAC_ALGORITHM_HMAC),
::testing::Values((void*) &hmac_sha384_params),
::testing::ValuesIn(hmac_key_lengths),
::testing::Values(0, 1, 8, 16, 32, 1023, 1024, 1025),
::testing::Values(SaCryptoMacBase::hmac_sha384_openssl)));
INSTANTIATE_TEST_SUITE_P(
HmacSha512,
SaCryptoMacComputeOutLength,
::testing::Combine(
::testing::Values(SA_MAC_ALGORITHM_HMAC),
::testing::Values((void*) &hmac_sha512_params),
::testing::ValuesIn(hmac_key_lengths),
::testing::Values(64)));
INSTANTIATE_TEST_SUITE_P(
HmacSha512,
SaCryptoMacComputeMatchesOpenssl,
::testing::Combine(
::testing::Values(SA_MAC_ALGORITHM_HMAC),
::testing::Values((void*) &hmac_sha512_params),
::testing::ValuesIn(hmac_key_lengths),
::testing::Values(0, 1, 8, 16, 32, 1023, 1024, 1025),
::testing::Values(SaCryptoMacBase::hmac_sha512_openssl)));
INSTANTIATE_TEST_SUITE_P(
Hmac,
SaCryptoMacComputeArgChecks,
::testing::Combine(
::testing::Values(SA_MAC_ALGORITHM_HMAC),
::testing::ValuesIn(hmac_params_list),
::testing::ValuesIn(hmac_key_lengths)));
INSTANTIATE_TEST_SUITE_P(
Cmac,
SaCryptoMacProcess,
::testing::Combine(
::testing::Values(SA_MAC_ALGORITHM_CMAC),
::testing::Values(nullptr),
::testing::ValuesIn(cmac_key_lengths)));
INSTANTIATE_TEST_SUITE_P(
Cmac,
SaCryptoMacProcessKey,
::testing::Combine(
::testing::Values(SA_MAC_ALGORITHM_CMAC),
::testing::Values(nullptr),
::testing::ValuesIn(cmac_key_lengths)));
INSTANTIATE_TEST_SUITE_P(
Cmac,
SaCryptoMacProcessArgChecks,
::testing::Combine(
::testing::Values(SA_MAC_ALGORITHM_CMAC),
::testing::Values(nullptr),
::testing::ValuesIn(cmac_key_lengths)));
INSTANTIATE_TEST_SUITE_P(
Cmac,
SaCryptoMacProcessKeyArgChecks,
::testing::Combine(
::testing::Values(SA_MAC_ALGORITHM_CMAC),
::testing::Values(nullptr),
::testing::ValuesIn(cmac_key_lengths)));
INSTANTIATE_TEST_SUITE_P(
Hmac,
SaCryptoMacProcess,
::testing::Combine(
::testing::Values(SA_MAC_ALGORITHM_HMAC),
::testing::ValuesIn(hmac_params_list),
::testing::ValuesIn(hmac_key_lengths)));
INSTANTIATE_TEST_SUITE_P(
Hmac,
SaCryptoMacProcessKey,
::testing::Combine(
::testing::Values(SA_MAC_ALGORITHM_HMAC),
::testing::ValuesIn(hmac_params_list),
::testing::ValuesIn(hmac_key_lengths)));
INSTANTIATE_TEST_SUITE_P(
Hmac,
SaCryptoMacProcessArgChecks,
::testing::Combine(
::testing::Values(SA_MAC_ALGORITHM_HMAC),
::testing::ValuesIn(hmac_params_list),
::testing::ValuesIn(hmac_key_lengths)));
INSTANTIATE_TEST_SUITE_P(
Hmac,
SaCryptoMacProcessKeyArgChecks,
::testing::Combine(
::testing::Values(SA_MAC_ALGORITHM_HMAC),
::testing::ValuesIn(hmac_params_list),
::testing::ValuesIn(hmac_key_lengths)));
INSTANTIATE_TEST_SUITE_P(
Cmac,
SaCryptoMacRelease,
::testing::Combine(
::testing::Values(SA_MAC_ALGORITHM_CMAC),
::testing::Values(nullptr),
::testing::ValuesIn(cmac_key_lengths)));
INSTANTIATE_TEST_SUITE_P(
Cmac,
SaCryptoMacReleaseArgChecks,
::testing::Combine(
::testing::Values(SA_MAC_ALGORITHM_CMAC),
::testing::Values(nullptr),
::testing::ValuesIn(cmac_key_lengths)));
INSTANTIATE_TEST_SUITE_P(
Hmac,
SaCryptoMacRelease,
::testing::Combine(
::testing::Values(SA_MAC_ALGORITHM_HMAC),
::testing::ValuesIn(hmac_params_list),
::testing::ValuesIn(hmac_key_lengths)));
INSTANTIATE_TEST_SUITE_P(
Hmac,
SaCryptoMacReleaseArgChecks,
::testing::Combine(
::testing::Values(SA_MAC_ALGORITHM_HMAC),
::testing::ValuesIn(hmac_params_list),
::testing::ValuesIn(hmac_key_lengths)));