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