blob: b45f127f0fa553218be850852b49843a1b3bf707 [file] [log] [blame]
/*
* Copyright (c) 2010 .SE (The Internet Infrastructure Foundation)
* All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions
* are met:
* 1. Redistributions of source code must retain the above copyright
* notice, this list of conditions and the following disclaimer.
* 2. Redistributions in binary form must reproduce the above copyright
* notice, this list of conditions and the following disclaimer in the
* documentation and/or other materials provided with the distribution.
*
* THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
* IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
* WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
* ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY
* DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
* DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE
* GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
* INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER
* IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
* OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN
* IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*/
/*****************************************************************************
BotanMAC.cpp
Botan MAC implementation
*****************************************************************************/
#include "config.h"
#include "BotanMAC.h"
std::string BotanHMACMD5::getAlgorithm() const
{
return "HMAC(MD5)";
}
size_t BotanHMACMD5::getMacSize() const
{
return 16;
}
std::string BotanHMACSHA1::getAlgorithm() const
{
return "HMAC(SHA-1)";
}
size_t BotanHMACSHA1::getMacSize() const
{
return 20;
}
std::string BotanHMACSHA224::getAlgorithm() const
{
return "HMAC(SHA-224)";
}
size_t BotanHMACSHA224::getMacSize() const
{
return 28;
}
std::string BotanHMACSHA256::getAlgorithm() const
{
return "HMAC(SHA-256)";
}
size_t BotanHMACSHA256::getMacSize() const
{
return 32;
}
std::string BotanHMACSHA384::getAlgorithm() const
{
return "HMAC(SHA-384)";
}
size_t BotanHMACSHA384::getMacSize() const
{
return 48;
}
std::string BotanHMACSHA512::getAlgorithm() const
{
return "HMAC(SHA-512)";
}
size_t BotanHMACSHA512::getMacSize() const
{
return 64;
}
#ifdef WITH_GOST
std::string BotanHMACGOSTR3411::getAlgorithm() const
{
return "HMAC(GOST-34.11)";
}
size_t BotanHMACGOSTR3411::getMacSize() const
{
return 32;
}
#endif
std::string BotanCMACDES::getAlgorithm() const
{
switch(currentKey->getBitLen())
{
case 56:
ERROR_MSG("Only supporting 3DES");
return "";
case 112:
case 168:
return "CMAC(TripleDES)";
default:
break;
}
ERROR_MSG("Invalid DES bit len %i", currentKey->getBitLen());
return "";
}
size_t BotanCMACDES::getMacSize() const
{
return 8;
}
std::string BotanCMACAES::getAlgorithm() const
{
switch(currentKey->getBitLen())
{
case 128:
return "CMAC(AES-128)";
case 192:
return "CMAC(AES-192)";
case 256:
return "CMAC(AES-256)";
default:
break;
}
ERROR_MSG("Invalid AES bit len %i", currentKey->getBitLen());
return "";
}
size_t BotanCMACAES::getMacSize() const
{
return 16;
}