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