diff options
Diffstat (limited to 'src/libzrtpcpp/crypto/hmac384.h')
-rw-r--r-- | src/libzrtpcpp/crypto/hmac384.h | 96 |
1 files changed, 96 insertions, 0 deletions
diff --git a/src/libzrtpcpp/crypto/hmac384.h b/src/libzrtpcpp/crypto/hmac384.h new file mode 100644 index 0000000..223444a --- /dev/null +++ b/src/libzrtpcpp/crypto/hmac384.h @@ -0,0 +1,96 @@ +/* + Copyright (C) 2009, 2006, 2005, 2004 Erik Eliasson, Johan Bilien, Werner Dittmann + + This library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + This library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with this library; if not, write to the Free Software + Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + +*/ + +/** + * Methods to compute a SHA384 HMAC. + * + * @author Erik Eliasson <eliasson@it.kth.se> + * @author Johan Bilien <jobi@via.ecp.fr> + * @author Werner Dittmann <Werner.Dittmann@t-online.de> + */ + +#ifndef HMAC_SHA384_H +#define HMAC_SHA384_H + +/** + * @file hmac384.h + * @brief Function that provide SHA384 HMAC support + * + * @ingroup GNU_ZRTP + * @{ + */ + +#include <stdint.h> + +#ifndef SHA384_DIGEST_LENGTH +#define SHA384_DIGEST_LENGTH 48 +#endif + +/** + * Compute SHA384 HMAC. + * + * This functions takes one data chunk and computes its SHA384 HMAC. + * + * @param key + * The MAC key. + * @param key_length + * Lneght of the MAC key in bytes + * @param data + * Points to the data chunk. + * @param data_length + * Length of the data in bytes + * @param mac + * Points to a buffer that receives the computed digest. This + * buffer must have a size of at least 48 bytes (SHA384_DIGEST_LENGTH). + * @param mac_length + * Point to an integer that receives the length of the computed HMAC. + */ +void hmac_sha384( uint8_t* key, uint32_t key_length, + uint8_t* data, int32_t data_length, + uint8_t* mac, uint32_t* mac_length ); + +/** + * Compute SHA384 HMAC over several data cunks. + * + * This functions takes several data chunk and computes the SHA384 HAMAC. It + * uses the openSSL HAMAC SHA384 implementation. + * + * @param key + * The MAC key. + * @param key_length + * Lneght of the MAC key in bytes + * @param data + * Points to an array of pointers that point to the data chunks. A NULL + * pointer in an array element terminates the data chunks. + * @param data_length + * Points to an array of integers that hold the length of each data chunk. + * @param mac + * Points to a buffer that receives the computed digest. This + * buffer must have a size of at least 48 bytes (SHA384_DIGEST_LENGTH). + * @param mac_length + * Point to an integer that receives the length of the computed HMAC. + */ + +void hmac_sha384( uint8_t* key, uint32_t key_length, + uint8_t* data[], uint32_t data_length[], + uint8_t* mac, uint32_t* mac_length ); +/** + * @} + */ +#endif |