sha1_hmac_update(&ctx, reinterpret_cast<const unsigned char*>(text.c_str()), text.size());
sha1_hmac_finish(&ctx, hash);
res.assign(reinterpret_cast<const char*>(hash), 20);
+ break;
};
case TSIG_SHA224:
{
sha2_hmac_starts(&ctx, reinterpret_cast<const unsigned char*>(key.c_str()), key.size(), 1);
sha2_hmac_update(&ctx, reinterpret_cast<const unsigned char*>(text.c_str()), text.size());
sha2_hmac_finish(&ctx, hash);
- res.assign(reinterpret_cast<const char*>(hash), 32);
+ res.assign(reinterpret_cast<const char*>(hash), 28);
+ break;
};
case TSIG_SHA256:
{
sha2_hmac_update(&ctx, reinterpret_cast<const unsigned char*>(text.c_str()), text.size());
sha2_hmac_finish(&ctx, hash);
res.assign(reinterpret_cast<const char*>(hash), 32);
+ break;
};
case TSIG_SHA384:
{
sha4_hmac_starts(&ctx, reinterpret_cast<const unsigned char*>(key.c_str()), key.size(), 1);
sha4_hmac_update(&ctx, reinterpret_cast<const unsigned char*>(text.c_str()), text.size());
sha4_hmac_finish(&ctx, hash);
- res.assign(reinterpret_cast<const char*>(hash), 64);
+ res.assign(reinterpret_cast<const char*>(hash), 48);
+ break;
};
case TSIG_SHA512:
{
sha4_hmac_update(&ctx, reinterpret_cast<const unsigned char*>(text.c_str()), text.size());
sha4_hmac_finish(&ctx, hash);
res.assign(reinterpret_cast<const char*>(hash), 64);
+ break;
};
default:
throw new PDNSException("Unknown hash algorithm requested for SHA");
};
- return std::string("");
+ return res;
}
string calculateHMAC(const std::string& key_, const std::string& text, TSIGHashEnum hash) {