SSP21-CPP
ICryptoBackend.h
1 
2 #ifndef SSP21_ICRYTPTOBACKEND_H
3 #define SSP21_ICRYTPTOBACKEND_H
4 
5 #include "ssp21/crypto/BufferTypes.h"
6 
7 #include "ser4cpp/util/Uncopyable.h"
8 
9 #include <system_error>
10 #include <initializer_list>
11 
12 namespace ssp21
13 {
14  /**
15  * Pluggable crypto backend
16  */
18  {
19 
20  public:
21 
22  virtual ~ICryptoBackend() {}
23 
24  virtual void zero_memory(const wseq32_t& data) = 0;
25 
26  virtual void gen_random(const wseq32_t& dest) = 0;
27 
28  virtual bool secure_equals(const seq32_t& lhs, const seq32_t& rhs) = 0;
29 
30  virtual void hash_sha256(
31  const std::initializer_list<seq32_t>& data,
32  SecureBuffer& output
33  ) = 0;
34 
35  virtual void hmac_sha256(
36  const seq32_t& key,
37  const std::initializer_list<seq32_t>& data,
38  SecureBuffer& output
39  ) = 0;
40 
41  virtual void gen_keypair_x25519(KeyPair& pair) = 0;
42 
43  virtual void dh_x25519(
44  const PrivateKey& priv_key,
45  const seq32_t& pub_key,
46  DHOutput& output,
47  std::error_code& ec
48  ) = 0;
49 
50  virtual void hkdf_sha256(
51  const seq32_t& salt,
52  const std::initializer_list<seq32_t>& input_key_material,
53  SymmetricKey& key1,
54  SymmetricKey& key2
55  ) = 0;
56 
57  virtual void gen_keypair_ed25519(KeyPair& pair) = 0;
58 
59  virtual void sign_ed25519(const seq32_t& input, const seq32_t& private_key, DSAOutput& output, std::error_code& ec) = 0;
60 
61  virtual bool verify_ed25519(const seq32_t& message, const seq32_t& signature, const seq32_t& public_key) = 0;
62 
63  };
64 }
65 
66 #endif
SSP21-cpp main namespace.
Definition: BufferTypes.h:12