proxygen
fizz::OpenSSLKeyExchange< T > Class Template Reference

#include <OpenSSLKeyExchange.h>

Inheritance diagram for fizz::OpenSSLKeyExchange< T >:
fizz::KeyExchange

Public Member Functions

 ~OpenSSLKeyExchange () override=default
 
void generateKeyPair () override
 
std::unique_ptr< folly::IOBufgetKeyShare () const override
 
std::unique_ptr< folly::IOBufgenerateSharedSecret (folly::ByteRange keyShare) const override
 
- Public Member Functions inherited from fizz::KeyExchange
virtual ~KeyExchange ()=default
 

Private Attributes

detail::OpenSSLECKeyExchange< TkeyExchange_
 

Detailed Description

template<class T>
class fizz::OpenSSLKeyExchange< T >

Eliptic curve key exchange implementation using OpenSSL.

The template struct requires the following parameters:

  • curveNid: OpenSSL NID for the named curve

Definition at line 25 of file OpenSSLKeyExchange.h.

Constructor & Destructor Documentation

template<class T >
fizz::OpenSSLKeyExchange< T >::~OpenSSLKeyExchange ( )
overridedefault

Member Function Documentation

template<class T >
void fizz::OpenSSLKeyExchange< T >::generateKeyPair ( )
inlineoverridevirtual

Generates an ephemeral key pair.

Implements fizz::KeyExchange.

Definition at line 29 of file OpenSSLKeyExchange.h.

References fizz::OpenSSLKeyExchange< T >::keyExchange_.

29  {
30  keyExchange_.generateKeyPair();
31  }
detail::OpenSSLECKeyExchange< T > keyExchange_
template<class T >
std::unique_ptr<folly::IOBuf> fizz::OpenSSLKeyExchange< T >::generateSharedSecret ( folly::ByteRange  keyShare) const
inlineoverridevirtual

Generate a shared secret with our key pair and a peer's public key share.

Performs all necessary validation of the public key share and throws on error.

generateKeyPair() must be called before.

Implements fizz::KeyExchange.

Definition at line 41 of file OpenSSLKeyExchange.h.

References fizz::detail::OpenSSLECKeyDecoder< T >::decode(), and fizz::OpenSSLKeyExchange< T >::keyExchange_.

42  {
43  auto key = detail::OpenSSLECKeyDecoder<T>::decode(keyShare);
44  return keyExchange_.generateSharedSecret(key);
45  }
static folly::ssl::EvpPkeyUniquePtr decode(folly::ByteRange range)
detail::OpenSSLECKeyExchange< T > keyExchange_
template<class T >
std::unique_ptr<folly::IOBuf> fizz::OpenSSLKeyExchange< T >::getKeyShare ( ) const
inlineoverridevirtual

Returns the public key to share with peers.

generateKeyPair() must be called before.

Implements fizz::KeyExchange.

Definition at line 33 of file OpenSSLKeyExchange.h.

References fizz::detail::OpenSSLECKeyEncoder::encode(), and fizz::OpenSSLKeyExchange< T >::keyExchange_.

33  {
34  const auto& key = keyExchange_.getKey();
35  if (!key) {
36  throw std::runtime_error("Key not initialized");
37  }
39  }
static std::unique_ptr< folly::IOBuf > encode(const folly::ssl::EvpPkeyUniquePtr &key)
detail::OpenSSLECKeyExchange< T > keyExchange_

Member Data Documentation


The documentation for this class was generated from the following file: