34 throw std::runtime_error(
"secret already set");
37 auto zeros = std::vector<uint8_t>(
deriver_->hashLength(), 0);
42 auto& earlySecret = boost::get<EarlySecret>(*secret_);
43 auto zeros = std::vector<uint8_t>(
deriver_->hashLength(), 0);
44 auto preSecret =
deriver_->deriveSecret(
52 auto zeros = std::vector<uint8_t>(
deriver_->hashLength(), 0);
57 auto& earlySecret = boost::get<EarlySecret>(*secret_);
58 auto preSecret =
deriver_->deriveSecret(
65 auto zeros = std::vector<uint8_t>(
deriver_->hashLength(), 0);
66 auto& handshakeSecret = boost::get<HandshakeSecret>(*secret_);
67 auto preSecret =
deriver_->deriveSecret(
76 auto& masterSecret = boost::get<MasterSecret>(*secret_);
86 boost::get<MasterSecret>(*secret_);
98 appTrafficSecret.client = std::vector<uint8_t>(buf->data(), buf->tail());
99 return ++appTrafficSecret.clientGeneration;
110 appTrafficSecret.server = std::vector<uint8_t>(buf->data(), buf->tail());
111 return ++appTrafficSecret.serverGeneration;
132 LOG(FATAL) <<
"unknown secret";
135 auto& earlySecret = boost::get<EarlySecret>(*secret_);
152 LOG(FATAL) <<
"unknown secret";
155 auto& handshakeSecret = boost::get<HandshakeSecret>(*secret_);
157 folly::range(handshakeSecret.secret), label, transcript);
172 LOG(FATAL) <<
"unknown secret";
175 auto& masterSecret = boost::get<MasterSecret>(*secret_);
184 return appTrafficSecret.client;
186 return appTrafficSecret.server;
188 LOG(FATAL) <<
"unknown secret";
195 size_t ivLength)
const {
208 resumptionMasterSecret,
folly::Optional< boost::variant< EarlySecret, HandshakeSecret, MasterSecret > > secret_
virtual TrafficKey getTrafficKey(folly::ByteRange trafficSecret, size_t keyLength, size_t ivLength) const
folly::Optional< AppTrafficSecret > appTrafficSecret_
virtual void deriveEarlySecret(folly::ByteRange psk)
static std::unique_ptr< IOBuf > create(std::size_t capacity)
static std::unique_ptr< IOBuf > wrapBuffer(const void *buf, std::size_t capacity)
virtual std::vector< uint8_t > getSecret(EarlySecrets s, folly::ByteRange transcript) const
static constexpr StringPiece kServerAppTraffic
static constexpr StringPiece kExternalPskBinder
constexpr detail::Map< Move > move
static constexpr StringPiece kClientHandshakeTraffic
static constexpr StringPiece kExporterMaster
std::unique_ptr< folly::IOBuf > key
std::unique_ptr< folly::IOBuf > iv
static constexpr StringPiece kClientAppTraffic
static constexpr StringPiece kEarlyExporter
std::unique_ptr< KeyDerivation > deriver_
std::vector< uint8_t > client
static constexpr StringPiece kTrafficKeyUpdate
std::vector< uint8_t > server
virtual void deriveHandshakeSecret()
virtual uint32_t serverKeyUpdate()
virtual Buf getResumptionSecret(folly::ByteRange resumptionMasterSecret, folly::ByteRange ticketNonce) const
constexpr Range< Iter > range(Iter first, Iter last)
static constexpr StringPiece kResumption
static constexpr StringPiece kResumptionPskBinder
static constexpr StringPiece kTrafficKey
virtual void deriveAppTrafficSecrets(folly::ByteRange transcript)
virtual void clearMasterSecret()
std::unique_ptr< folly::IOBuf > Buf
static constexpr StringPiece kResumptionMaster
virtual void deriveMasterSecret()
static constexpr StringPiece kClientEarlyTraffic
static constexpr StringPiece kDerivedSecret
Range< const char * > StringPiece
static constexpr StringPiece kTrafficIv
static constexpr StringPiece kServerHandshakeTraffic
virtual uint32_t clientKeyUpdate()