10Duke Enterprise C++ Client
Loading...
Searching...
No Matches
WinCNGMessageDigest.h
1#ifndef TENDUKE_CRYPTO_WIN_CNG_WINCNGMESSAGEDIGEST_H
2#define TENDUKE_CRYPTO_WIN_CNG_WINCNGMESSAGEDIGEST_H
3
4#include "crypto/MessageDigest.h"
5#include "utl/FixedSizeBinaryData.h"
6
7#include <memory>
8
9#include <windows.h>
10#include <bcrypt.h>
11
12namespace tenduke { namespace crypto { namespace win { namespace cng {
13
14
19{
20public:
24 explicit WinCNGMessageDigest(::BCRYPT_ALG_HANDLE algorithm);
25 ~WinCNGMessageDigest() override;
26
27// ::tenduke::crypto::MessageDigest implementation
28public:
29 std::size_t length() const override;
31 const unsigned char * message,
32 std::size_t messageLength
33 ) override;
34 void digestTo(unsigned char * digest) override;
35 std::unique_ptr<tenduke::utl::BinaryData> digest() override;
36
37private:
38 ::BCRYPT_HASH_HANDLE handle;
39 size_t digestLength;
40 std::unique_ptr<::tenduke::utl::FixedSizeBinaryData> digestBuffer;
41};
42
43}}}}
44
45#endif // TENDUKE_CRYPTO_WIN_CNG_WINCNGMESSAGEDIGEST_H
Simple MessageDigest -service.
Definition MessageDigest.h:21
void digestTo(unsigned char *digest) override
Computes the digest to pre-allocated buffer.
Definition WinCNGMessageDigest.cpp:40
WinCNGMessageDigest(::BCRYPT_ALG_HANDLE algorithm)
Constructs new instance.
Definition WinCNGMessageDigest.cpp:64
std::unique_ptr< tenduke::utl::BinaryData > digest() override
Computes the digest.
Definition WinCNGMessageDigest.cpp:54
std::size_t length() const override
Returns length (in bytes) of the resulting digest.
Definition WinCNGMessageDigest.cpp:15
MessageDigest * update(const unsigned char *message, std::size_t messageLength) override
Updates the digest.
Definition WinCNGMessageDigest.cpp:21
Cryptography services.
Definition CryptoException.h:7
Root for classes, functions and globals of 10Duke C++ Client.
Definition APIRequest.h:4