CodePorting.Translator Cs2Cpp
CodePorting.Translator.Cs2Cpp.Framework
dsa_crypto_service_provider.h
1
2#pragma once
3
4#include <security/cryptography/dsa.h>
5#include <security/cryptography/i_csp_asymmetric_algorithm.h>
6#include <memory>
7
8namespace System { namespace Security { namespace Cryptography {
9
10namespace Details { struct DSACryptoServiceProviderPimpl; }
11
16class ASPOSECPP_SHARED_CLASS DSACryptoServiceProvider final : public DSA, public ICspAsymmetricAlgorithm
17{
21 typedef DSA BaseType;
25 typedef System::BaseTypesInfo<BaseType, BaseType1> ThisBaseTypesInfo;
27 ASPOSECPP_SHARED_RTTI_INFO_DECL();
28
29public:
30 using DSA::SignData;
31 using DSA::VerifyData;
32
34 ASPOSECPP_SHARED_API DSACryptoServiceProvider();
35
38 ASPOSECPP_SHARED_API DSACryptoServiceProvider(const DSAParameters& parameters);
39
42 ASPOSECPP_SHARED_API DSACryptoServiceProvider(const SharedPtr<CspParameters>& parameters);
43
46 ASPOSECPP_SHARED_API DSACryptoServiceProvider(int32_t key_size);
47
51 ASPOSECPP_SHARED_API DSACryptoServiceProvider(int32_t key_size, const SharedPtr<CspParameters>& parameters);
52
55
58 ASPOSECPP_SHARED_API bool get_PersistKeyInCsp() const;
59
62 ASPOSECPP_SHARED_API void set_PersistKeyInCsp(bool value);
63
66 ASPOSECPP_SHARED_API bool get_PublicOnly() const;
67
70 static ASPOSECPP_SHARED_API bool get_UseMachineKeyStore();
71
74 static ASPOSECPP_SHARED_API void set_UseMachineKeyStore(bool value);
75
78 ASPOSECPP_SHARED_API String get_KeyExchangeAlgorithm() override;
79
82 ASPOSECPP_SHARED_API int32_t get_KeySize() override;
83
86 ASPOSECPP_SHARED_API String get_SignatureAlgorithm() override;
87
91 ASPOSECPP_SHARED_API ByteArrayPtr CreateSignature(ByteArrayPtr rgb_hash) override;
92
97 ASPOSECPP_SHARED_API bool VerifySignature(ByteArrayPtr rgb_hash, ByteArrayPtr rgb_signature) override;
98
102 ASPOSECPP_SHARED_API ByteArrayPtr ExportCspBlob(bool include_private_parameters) override;
103
107 ASPOSECPP_SHARED_API DSAParameters ExportParameters(bool include_private_parameters) override;
108
111 ASPOSECPP_SHARED_API void ImportCspBlob(ByteArrayPtr key_blob) override;
112
115 ASPOSECPP_SHARED_API void ImportParameters(DSAParameters parameters) override;
116
120 ASPOSECPP_SHARED_API ByteArrayPtr SignData(const ByteArrayPtr& buffer);
121
125 ASPOSECPP_SHARED_API ByteArrayPtr SignData(const SharedPtr<IO::Stream>& input_stream);
126
132 ASPOSECPP_SHARED_API ByteArrayPtr SignData(const ByteArrayPtr& buffer, int32_t offset, int32_t count);
133
138 ASPOSECPP_SHARED_API ByteArrayPtr SignHash(const ByteArrayPtr& rgb_hash, const String& str);
139
144 ASPOSECPP_SHARED_API bool VerifyData(const ByteArrayPtr& buffer, const ByteArrayPtr& signature);
145
151 ASPOSECPP_SHARED_API bool VerifyHash(const ByteArrayPtr& rgb_hash, const String& str, const ByteArrayPtr& rgb_signature);
152
154 ASPOSECPP_SHARED_API void Dispose() override;
155
156protected:
163 ASPOSECPP_SHARED_API ByteArrayPtr HashData(ByteArrayPtr data, int32_t offset, int32_t count, HashAlgorithmName hash_algorithm) override;
164
169 ASPOSECPP_SHARED_API ByteArrayPtr HashData(StreamPtr stream, HashAlgorithmName hash_algorithm) override;
170
171private:
173 bool m_persist_key_in_csp = false;
175 static bool s_use_machine_key_store;
176
178 std::unique_ptr<Details::DSACryptoServiceProviderPimpl> m_pimpl;
179
180 ASPOSECPP_SHARED_API ~DSACryptoServiceProvider();
181
182 void VerifyNotDisposed() const;
183 void VerifyPrivateKeyExists() const;
184 void SetupLegalKeySizesValue();
185};
186
187}}} // namespace System::Security::Cryptography
Base class that enables using methods available for System.Object class in C#. All non-trivial classe...
Definition: object.h:62
Abstract base class for asymmetric encryption algorithms. Objects of this class should only be alloca...
Definition: asymmetric_algorithm.h:19
DSA algorithm in CSP form. Objects of this class should only be allocated using System::MakeObject() ...
Definition: dsa_crypto_service_provider.h:17
ByteArrayPtr CreateSignature(ByteArrayPtr rgb_hash) override
Create DSA signature for the specified data.
bool VerifySignature(ByteArrayPtr rgb_hash, ByteArrayPtr rgb_signature) override
Verify DSA signature for the specified data.
void set_PersistKeyInCsp(bool value)
Defines whether key is persisted in CSP object.
SharedPtr< CspKeyContainerInfo > get_CspKeyContainerInfo() override
Gets a CspKeyContainerInfo object.
DSACryptoServiceProvider(int32_t key_size, const SharedPtr< CspParameters > &parameters)
Constructor. Not implemented.
ByteArrayPtr SignData(const SharedPtr< IO::Stream > &input_stream)
Computes the signature of specified input value.
DSACryptoServiceProvider(const SharedPtr< CspParameters > &parameters)
Constructor. Not implemented.
bool get_PublicOnly() const
Checks if public key only is present in CSP object.
bool VerifyData(const ByteArrayPtr &buffer, const ByteArrayPtr &signature)
Checks data signature.
ByteArrayPtr SignData(const ByteArrayPtr &buffer, int32_t offset, int32_t count)
Computes the signature of specified input value.
static void set_UseMachineKeyStore(bool value)
Defines whether the key persists in machine store instead of user store.
ByteArrayPtr HashData(StreamPtr stream, HashAlgorithmName hash_algorithm) override
Computes the hash value of the specified binary stream using the specified hash algorithm.
DSAParameters ExportParameters(bool include_private_parameters) override
Exports CSP parameters.
bool get_PersistKeyInCsp() const
Checks whether key is persisted in CSP object.
bool VerifyHash(const ByteArrayPtr &rgb_hash, const String &str, const ByteArrayPtr &rgb_signature)
Checks data signature.
static bool get_UseMachineKeyStore()
Checks whether the key persists in machine store instead of user store.
String get_KeyExchangeAlgorithm() override
Checks key exchange algorithm associated with object.
void Dispose() override
Frees data associated with object.
ByteArrayPtr ExportCspBlob(bool include_private_parameters) override
Exports blob with information on key. Not implemented.
void ImportParameters(DSAParameters parameters) override
Imports all parameters from data structure.
String get_SignatureAlgorithm() override
Gets signature algorithm to use.
ByteArrayPtr SignData(const ByteArrayPtr &buffer)
Computes the signature of specified input value.
ByteArrayPtr HashData(ByteArrayPtr data, int32_t offset, int32_t count, HashAlgorithmName hash_algorithm) override
Computes the hash value of the specified data array using the specified hash algorithm.
DSACryptoServiceProvider(const DSAParameters &parameters)
Constructor.
DSACryptoServiceProvider()
Constructor. Uses default parameters.
void ImportCspBlob(ByteArrayPtr key_blob) override
Imports blob with information on key. Not implemented.
ByteArrayPtr SignHash(const ByteArrayPtr &rgb_hash, const String &str)
Computes the signature of specified input value.
Base class for implementations of DSA algorithm. Objects of this class should only be allocated using...
Definition: dsa.h:15
ByteArrayPtr SignData(const ByteArrayPtr &data, const HashAlgorithmName &hash_algorithm)
Computes the hash value of the specified data array using the specified hash algorithm,...
bool VerifyData(const ByteArrayPtr &data, const ByteArrayPtr &signature, const HashAlgorithmName &hash_algorithm)
Verifies that the signature of the specified data is valid.
Asymmetric algorithm base class. Objects of this class should only be allocated using System::MakeObj...
Definition: i_csp_asymmetric_algorithm.h:14
Pointer class to wrap types being allocated on heap. Use it to manage memory for classes inheriting O...
Definition: smart_ptr.h:180
String class used across the library. Is a substitute for C# System.String when translating code....
Definition: string.h:122
Definition: db_command.h:9
Data structure of DSA algorithm parameters. This type should be allocated on stack and passed to func...
Definition: dsa_parameters.h:13
String representing the name of a hash algorithm. This type should be allocated on stack and passed t...
Definition: hash_algorithm_name.h:13