YPC  0.2.0
ecdh_impl.h
1 #pragma once
2 #include "ypc/common/byte.h"
3 
4 namespace ypc {
5 namespace crypto {
6 namespace internal {
7 template <typename ECDH> struct ecdh_impl {
8  typedef ECDH ecdh_t;
9 
10 public:
11  static uint32_t get_ecdh_shared_key_size() {
12  return ecdh_t::get_ecdh_shared_key_size();
13  }
14 
15  static uint32_t ecdh_shared_key(const uint8_t *skey, uint32_t skey_size,
16  const uint8_t *public_key, uint32_t pkey_size,
17  uint8_t *shared_key,
18  uint32_t shared_key_size) {
19  return ecdh_t::ecdh_shared_key(skey, skey_size, public_key, pkey_size,
20  shared_key, shared_key_size);
21  }
22  template <typename BytesType>
23  static uint32_t ecdh_shared_key(const BytesType &skey,
24  const BytesType &public_key,
25  BytesType &shared_key) {
26  shared_key = BytesType(ecdh_t::get_ecdh_shared_key_size());
27  return ecdh_t::ecdh_shared_key(skey.data(), skey.size(), public_key.data(),
28  public_key.size(), shared_key.data(),
29  shared_key.size());
30  }
31 };
32 } // namespace internal
33 } // namespace crypto
34 } // namespace ypc
ypc::crypto::internal::ecdh_impl
Definition: ecdh_impl.h:7