wolfSSL SSL/TLS library, support up to TLS1.3

Dependents:   OS

Committer:
sPymbed
Date:
Wed Nov 20 13:27:48 2019 +0000
Revision:
17:ff9d1e86ad5f
Parent:
15:117db924cf7c
removed: wolfcrypt

Who changed what in which revision?

UserRevisionLine numberNew contents of line
wolfSSL 15:117db924cf7c 1 /* hmac.h
wolfSSL 15:117db924cf7c 2 *
wolfSSL 15:117db924cf7c 3 * Copyright (C) 2006-2017 wolfSSL Inc.
wolfSSL 15:117db924cf7c 4 *
wolfSSL 15:117db924cf7c 5 * This file is part of wolfSSL.
wolfSSL 15:117db924cf7c 6 *
wolfSSL 15:117db924cf7c 7 * wolfSSL is free software; you can redistribute it and/or modify
wolfSSL 15:117db924cf7c 8 * it under the terms of the GNU General Public License as published by
wolfSSL 15:117db924cf7c 9 * the Free Software Foundation; either version 2 of the License, or
wolfSSL 15:117db924cf7c 10 * (at your option) any later version.
wolfSSL 15:117db924cf7c 11 *
wolfSSL 15:117db924cf7c 12 * wolfSSL is distributed in the hope that it will be useful,
wolfSSL 15:117db924cf7c 13 * but WITHOUT ANY WARRANTY; without even the implied warranty of
wolfSSL 15:117db924cf7c 14 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
wolfSSL 15:117db924cf7c 15 * GNU General Public License for more details.
wolfSSL 15:117db924cf7c 16 *
wolfSSL 15:117db924cf7c 17 * You should have received a copy of the GNU General Public License
wolfSSL 15:117db924cf7c 18 * along with this program; if not, write to the Free Software
wolfSSL 15:117db924cf7c 19 * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1335, USA
wolfSSL 15:117db924cf7c 20 */
wolfSSL 15:117db924cf7c 21
wolfSSL 15:117db924cf7c 22
wolfSSL 15:117db924cf7c 23
wolfSSL 15:117db924cf7c 24 /* hmac.h defines mini hamc openssl compatibility layer
wolfSSL 15:117db924cf7c 25 *
wolfSSL 15:117db924cf7c 26 */
wolfSSL 15:117db924cf7c 27
wolfSSL 15:117db924cf7c 28
wolfSSL 15:117db924cf7c 29 #ifndef WOLFSSL_HMAC_H_
wolfSSL 15:117db924cf7c 30 #define WOLFSSL_HMAC_H_
wolfSSL 15:117db924cf7c 31
wolfSSL 15:117db924cf7c 32 #include <wolfssl/wolfcrypt/settings.h>
wolfSSL 15:117db924cf7c 33
wolfSSL 15:117db924cf7c 34 #ifdef WOLFSSL_PREFIX
wolfSSL 15:117db924cf7c 35 #include "prefix_hmac.h"
wolfSSL 15:117db924cf7c 36 #endif
wolfSSL 15:117db924cf7c 37
wolfSSL 15:117db924cf7c 38 #include <wolfssl/openssl/evp.h>
wolfSSL 15:117db924cf7c 39 #include <wolfssl/openssl/opensslv.h>
wolfSSL 15:117db924cf7c 40 #include <wolfssl/wolfcrypt/hmac.h>
wolfSSL 15:117db924cf7c 41
wolfSSL 15:117db924cf7c 42 #ifdef __cplusplus
wolfSSL 15:117db924cf7c 43 extern "C" {
wolfSSL 15:117db924cf7c 44 #endif
wolfSSL 15:117db924cf7c 45
wolfSSL 15:117db924cf7c 46
wolfSSL 15:117db924cf7c 47 WOLFSSL_API unsigned char* wolfSSL_HMAC(const WOLFSSL_EVP_MD* evp_md,
wolfSSL 15:117db924cf7c 48 const void* key, int key_len,
wolfSSL 15:117db924cf7c 49 const unsigned char* d, int n, unsigned char* md,
wolfSSL 15:117db924cf7c 50 unsigned int* md_len);
wolfSSL 15:117db924cf7c 51
wolfSSL 15:117db924cf7c 52
wolfSSL 15:117db924cf7c 53 typedef struct WOLFSSL_HMAC_CTX {
wolfSSL 15:117db924cf7c 54 Hmac hmac;
wolfSSL 15:117db924cf7c 55 int type;
wolfSSL 15:117db924cf7c 56 word32 save_ipad[WC_HMAC_BLOCK_SIZE / sizeof(word32)]; /* same block size all*/
wolfSSL 15:117db924cf7c 57 word32 save_opad[WC_HMAC_BLOCK_SIZE / sizeof(word32)];
wolfSSL 15:117db924cf7c 58 } WOLFSSL_HMAC_CTX;
wolfSSL 15:117db924cf7c 59
wolfSSL 15:117db924cf7c 60
wolfSSL 15:117db924cf7c 61 WOLFSSL_API int wolfSSL_HMAC_CTX_Init(WOLFSSL_HMAC_CTX* ctx);
wolfSSL 15:117db924cf7c 62 WOLFSSL_API int wolfSSL_HMAC_CTX_copy(WOLFSSL_HMAC_CTX* des,
wolfSSL 15:117db924cf7c 63 WOLFSSL_HMAC_CTX* src);
wolfSSL 15:117db924cf7c 64 WOLFSSL_API int wolfSSL_HMAC_Init(WOLFSSL_HMAC_CTX* ctx, const void* key,
wolfSSL 15:117db924cf7c 65 int keylen, const EVP_MD* type);
wolfSSL 15:117db924cf7c 66 WOLFSSL_API int wolfSSL_HMAC_Init_ex(WOLFSSL_HMAC_CTX* ctx, const void* key,
wolfSSL 15:117db924cf7c 67 int keylen, const EVP_MD* type, WOLFSSL_ENGINE* e);
wolfSSL 15:117db924cf7c 68 WOLFSSL_API int wolfSSL_HMAC_Update(WOLFSSL_HMAC_CTX* ctx,
wolfSSL 15:117db924cf7c 69 const unsigned char* data, int len);
wolfSSL 15:117db924cf7c 70 WOLFSSL_API int wolfSSL_HMAC_Final(WOLFSSL_HMAC_CTX* ctx, unsigned char* hash,
wolfSSL 15:117db924cf7c 71 unsigned int* len);
wolfSSL 15:117db924cf7c 72 WOLFSSL_API int wolfSSL_HMAC_cleanup(WOLFSSL_HMAC_CTX* ctx);
wolfSSL 15:117db924cf7c 73
wolfSSL 15:117db924cf7c 74 typedef struct WOLFSSL_HMAC_CTX HMAC_CTX;
wolfSSL 15:117db924cf7c 75
wolfSSL 15:117db924cf7c 76 #define HMAC(a,b,c,d,e,f,g) wolfSSL_HMAC((a),(b),(c),(d),(e),(f),(g))
wolfSSL 15:117db924cf7c 77
wolfSSL 15:117db924cf7c 78 #define HMAC_CTX_init wolfSSL_HMAC_CTX_Init
wolfSSL 15:117db924cf7c 79 #define HMAC_CTX_copy wolfSSL_HMAC_CTX_copy
wolfSSL 15:117db924cf7c 80 #define HMAC_Init_ex wolfSSL_HMAC_Init_ex
wolfSSL 15:117db924cf7c 81 #define HMAC_Init wolfSSL_HMAC_Init
wolfSSL 15:117db924cf7c 82 #define HMAC_Update wolfSSL_HMAC_Update
wolfSSL 15:117db924cf7c 83 #define HMAC_Final wolfSSL_HMAC_Final
wolfSSL 15:117db924cf7c 84 #define HMAC_cleanup wolfSSL_HMAC_cleanup
wolfSSL 15:117db924cf7c 85
wolfSSL 15:117db924cf7c 86
wolfSSL 15:117db924cf7c 87 #ifdef __cplusplus
wolfSSL 15:117db924cf7c 88 } /* extern "C" */
wolfSSL 15:117db924cf7c 89 #endif
wolfSSL 15:117db924cf7c 90
wolfSSL 15:117db924cf7c 91
wolfSSL 15:117db924cf7c 92 #endif /* WOLFSSL_HMAC_H_ */
wolfSSL 15:117db924cf7c 93