libpromeki 1.0.0-alpha
PROfessional MEdia toolKIt
 
Loading...
Searching...
No Matches
hmac.h
Go to the documentation of this file.
1
8#pragma once
9
10
11#include <promeki/config.h>
12#if PROMEKI_ENABLE_CORE
13#include <cstdint>
14#include <cstddef>
15#include <promeki/namespace.h>
16#include <promeki/sha1.h>
17#include <promeki/sha2.h>
18#include <promeki/uniqueptr.h>
19
20PROMEKI_NAMESPACE_BEGIN
21
30SHA256Digest hmacSha256(const void *key,
31 size_t keyLen,
32 const void *data,
33 size_t dataLen);
34
43SHA1Digest hmacSha1(const void *key,
44 size_t keyLen,
45 const void *data,
46 size_t dataLen);
47
59class HmacSha256 {
60 public:
61 HmacSha256(const void *key, size_t keyLen);
62 ~HmacSha256();
63
64 HmacSha256(const HmacSha256 &) = delete;
65 HmacSha256 &operator=(const HmacSha256 &) = delete;
66 HmacSha256(HmacSha256 &&) noexcept = default;
67 HmacSha256 &operator=(HmacSha256 &&) noexcept = default;
68
70 void update(const void *data, size_t len);
71
73 SHA256Digest finalize();
74
75 private:
76 struct Impl;
77 UniquePtr<Impl> _d;
78};
79
80PROMEKI_NAMESPACE_END
81
82#endif // PROMEKI_ENABLE_CORE