YPC  0.2.0
ecc_impl.h
1 #pragma once
2 #include "ypc/common/byte.h"
3 
4 namespace ypc {
5 namespace crypto {
6 namespace internal {
7 template <typename EC> class ecc_impl {
8  typedef EC ecc_t;
9 
10 public:
11  static uint32_t get_private_key_size() {
12  return ecc_t::get_private_key_size();
13  }
14  static uint32_t get_public_key_size() { return ecc_t::get_public_key_size(); }
15  static uint32_t gen_private_key(uint32_t skey_size, uint8_t *skey) {
16  return ecc_t::gen_private_key(skey_size, skey);
17  }
18 
19  template <typename BytesType>
20  static uint32_t gen_private_key(BytesType &skey) {
21  skey = BytesType(get_private_key_size());
22  return ecc_t::gen_private_key(skey.size(), skey.data());
23  }
24 
25  static uint32_t generate_pkey_from_skey(const uint8_t *skey,
26  uint32_t skey_size, uint8_t *pkey,
27  uint32_t pkey_size) {
28  return ecc_t::generate_pkey_from_skey(skey, skey_size, pkey, pkey_size);
29  }
30 
31  template <typename BytesType>
32  static uint32_t generate_pkey_from_skey(const BytesType &skey,
33  BytesType &pkey) {
34  pkey = BytesType(get_public_key_size());
35  return ecc_t::generate_pkey_from_skey(skey.data(), skey.size(), pkey.data(),
36  pkey.size());
37  }
38 };
39 } // namespace internal
40 } // namespace crypto
41 } // namespace ypc
ypc::crypto::internal::ecc_impl
Definition: ecc_impl.h:7