AWS IoT Device SDK C++ v2
1.44.1
AWS IoT Device SDK C++ v2
Toggle main menu visibility
Loading...
Searching...
No Matches
crt
aws-crt-cpp
include
aws
crt
crypto
HMAC.h
Go to the documentation of this file.
1
#pragma once
6
#include <aws/cal/hmac.h>
7
#include <
aws/crt/Exports.h
>
8
#include <
aws/crt/Types.h
>
9
10
struct
aws_hmac;
11
namespace
Aws
12
{
13
namespace
Crt
14
{
15
namespace
Crypto
16
{
17
static
const
size_t
SHA256_HMAC_DIGEST_SIZE
= 32;
18
25
bool
AWS_CRT_CPP_API
ComputeSHA256HMAC
(
26
Allocator
*allocator,
27
const
ByteCursor
&secret,
28
const
ByteCursor
&input,
29
ByteBuf
&output,
30
size_t
truncateTo = 0) noexcept;
31
38
bool
AWS_CRT_CPP_API
ComputeSHA256HMAC
(
39
const
ByteCursor
&secret,
40
const
ByteCursor
&input,
41
ByteBuf
&output,
42
size_t
truncateTo = 0) noexcept;
48
class
AWS_CRT_CPP_API
HMAC
final
49
{
50
public
:
51
~HMAC
();
52
HMAC
(
const
HMAC
&) =
delete
;
53
HMAC
&
operator=
(
const
HMAC
&) =
delete
;
54
HMAC
(
HMAC
&&toMove);
55
HMAC
&
operator=
(
HMAC
&&toMove);
56
60
inline
operator
bool() const noexcept {
return
m_good; }
61
65
inline
int
LastError
() const noexcept {
return
m_lastError; }
66
70
static
HMAC
CreateSHA256HMAC(
Allocator
*allocator,
const
ByteCursor
&secret)
noexcept
;
71
75
static
HMAC
CreateSHA256HMAC(
const
ByteCursor
&secret)
noexcept
;
76
81
bool
Update(
const
ByteCursor
&toHMAC)
noexcept
;
82
89
bool
Digest(
ByteBuf
&output,
size_t
truncateTo = 0) noexcept;
90
95
size_t
DigestSize() const noexcept;
96
107
bool
ComputeOneShot(const
ByteCursor
&input,
ByteBuf
&output,
size_t
truncateTo = 0) noexcept;
108
109
private:
110
HMAC
(aws_hmac *hmac) noexcept;
111
HMAC
() = delete;
112
113
aws_hmac *m_hmac;
114
bool
m_good;
115
int
m_lastError;
116
};
117
124
class
AWS_CRT_CPP_API
ByoHMAC
125
{
126
public
:
127
virtual
~ByoHMAC
() =
default
;
128
133
aws_hmac *SeatForCInterop(
const
std::shared_ptr<ByoHMAC> &selfRef);
134
135
protected
:
136
ByoHMAC
(
size_t
digestSize,
const
ByteCursor
&secret,
Allocator
*allocator =
ApiAllocator
());
137
143
virtual
bool
UpdateInternal
(
const
ByteCursor
&toHash)
noexcept
= 0;
144
151
virtual
bool
DigestInternal
(
ByteBuf
&output,
size_t
truncateTo = 0) noexcept = 0;
152
153
private:
154
static
void
s_Destroy(struct aws_hmac *hmac);
155
static
int
s_Update(struct aws_hmac *hmac, const struct aws_byte_cursor *buf);
156
static
int
s_Finalize(struct aws_hmac *hmac, struct aws_byte_buf *out);
157
158
static aws_hmac_vtable s_Vtable;
159
aws_hmac m_hmacValue;
160
std
::shared_ptr<
ByoHMAC
> m_selfReference;
161
};
162
163
using
CreateHMACCallback
=
164
std
::function<
std
::shared_ptr<
ByoHMAC
>(
size_t
digestSize, const
ByteCursor
&secret,
Allocator
*)>;
165
166
}
// namespace Crypto
167
}
// namespace Crt
168
}
// namespace Aws
Types.h
Aws::Crt::Crypto::ByoHMAC
Definition
HMAC.h:125
Aws::Crt::Crypto::ByoHMAC::ByoHMAC
ByoHMAC(size_t digestSize, const ByteCursor &secret, Allocator *allocator=ApiAllocator())
Definition
HMAC.cpp:147
Aws::Crt::Crypto::ByoHMAC::~ByoHMAC
virtual ~ByoHMAC()=default
Aws::Crt::Crypto::ByoHMAC::DigestInternal
virtual bool DigestInternal(ByteBuf &output, size_t truncateTo=0) noexcept=0
Aws::Crt::Crypto::ByoHMAC::UpdateInternal
virtual bool UpdateInternal(const ByteCursor &toHash) noexcept=0
Aws::Crt::Crypto::HMAC
Definition
HMAC.h:49
Aws::Crt::Crypto::HMAC::LastError
int LastError() const noexcept
Definition
HMAC.h:65
Aws::Crt::Crypto::HMAC::HMAC
HMAC(const HMAC &)=delete
Aws::Crt::Crypto::HMAC::operator=
HMAC & operator=(const HMAC &)=delete
Exports.h
AWS_CRT_CPP_API
#define AWS_CRT_CPP_API
Definition
Exports.h:36
Aws::Crt::Crypto
Definition
Hash.h:17
Aws::Crt::Crypto::CreateHMACCallback
std::function< std::shared_ptr< ByoHMAC >(size_t digestSize, const ByteCursor &secret, Allocator *)> CreateHMACCallback
Definition
HMAC.h:163
Aws::Crt::Crypto::SHA256_HMAC_DIGEST_SIZE
static const size_t SHA256_HMAC_DIGEST_SIZE
Definition
HMAC.h:17
Aws::Crt::Crypto::ComputeSHA256HMAC
bool AWS_CRT_CPP_API ComputeSHA256HMAC(Allocator *allocator, const ByteCursor &secret, const ByteCursor &input, ByteBuf &output, size_t truncateTo=0) noexcept
Definition
HMAC.cpp:15
Aws::Crt
Definition
Allocator.h:13
Aws::Crt::ByteCursor
aws_byte_cursor ByteCursor
Definition
Types.h:31
Aws::Crt::ApiAllocator
AWS_CRT_CPP_API Allocator * ApiAllocator() noexcept
Definition
Allocator.cpp:24
Aws::Crt::Allocator
aws_allocator Allocator
Definition
Allocator.h:14
Aws::Crt::ByteBuf
aws_byte_buf ByteBuf
Definition
Types.h:30
Aws
Definition
Allocator.h:11
std
Definition
StringView.h:862
Generated by
1.17.0