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