Go to the documentation of this file.
33 #include "../crypto/internal.h"
46 assert(!private_key_);
52 BN_CTXScope scope(bn_ctx.get());
56 private_key_.reset(
BN_new());
57 if (!
group || !private_key_ ||
67 NULL, bn_ctx.get()) ||
86 BN_CTXScope scope(bn_ctx.get());
96 if (!peer_point || !
result || !
x) {
102 peer_key.
size(), bn_ctx.get())) {
110 private_key_.get(), bn_ctx.get()) ||
128 assert(private_key_);
136 assert(!private_key_);
138 return private_key_ !=
nullptr;
164 if (!secret.
Init(32)) {
169 if (peer_key.
size() != 32 ||
185 if (
CBS_len(
in) !=
sizeof(private_key_) ||
208 RAND_bytes(hrss_entropy,
sizeof(hrss_entropy));
219 sizeof(hrss_public_key_bytes))) {
253 sizeof(x25519_public_key)) ||
280 peer_key.
data() + 32, peer_key.
size() - 32)) {
311 return UniquePtr<SSLKeyShare>(
314 return UniquePtr<SSLKeyShare>(
317 return UniquePtr<SSLKeyShare>(
320 return UniquePtr<SSLKeyShare>(
323 return UniquePtr<SSLKeyShare>(New<X25519KeyShare>());
325 return UniquePtr<SSLKeyShare>(New<CECPQ2KeyShare>());
339 if (!key_share || !key_share->DeserializePrivateKey(&
private_key)) {
359 return Offer(out_public_key) &&
360 Finish(out_secret, out_alert, peer_key);
366 *out_group_id =
group.group_id;
377 *out_group_id =
group.group_id;
382 *out_group_id =
group.group_id;
391 using namespace bssl;
395 if (
group.group_id == group_id) {
#define EC_GROUP_get0_order
#define CBS_get_asn1_uint64
bool Init(size_t new_size)
#define NID_X9_62_prime256v1
bool Accept(CBB *out_public_key, Array< uint8_t > *out_secret, uint8_t *out_alert, Span< const uint8_t > peer_key) override
bool SerializePrivateKey(CBB *out) override
CONSTEXPR_ARRAY NamedGroup kNamedGroups[]
#define OPENSSL_PUT_ERROR(library, reason)
bool Offer(CBB *out) override
#define OPENSSL_ARRAY_SIZE(array)
#define CBS_ASN1_OCTETSTRING
#define SSL_AD_INTERNAL_ERROR
#define EC_GROUP_new_by_curve_name
uint16_t GroupID() const override
Span< const NamedGroup > NamedGroups()
#define HRSS_parse_public_key
bool Finish(Array< uint8_t > *out_secret, uint8_t *out_alert, Span< const uint8_t > peer_key) override
virtual bool SerializePrivateKey(CBB *out)
#define EC_POINT_get_affine_coordinates_GFp
bool Offer(CBB *out) override
constexpr absl::remove_reference_t< T > && move(T &&t) noexcept
bool DeserializePrivateKey(CBS *in) override
#define HRSS_generate_key
unsigned __int64 uint64_t
#define SSL_CURVE_SECP224R1
virtual bool Accept(CBB *out_public_key, Array< uint8_t > *out_secret, uint8_t *out_alert, Span< const uint8_t > peer_key)
#define BSSL_NAMESPACE_END
#define SSL_CURVE_SECP521R1
ECKeyShare(int nid, uint16_t group_id)
bool ssl_name_to_group_id(uint16_t *out_group_id, const char *name, size_t len)
#define EC_GROUP_get_degree
virtual bool Offer(CBB *out_public_key) PURE_VIRTUAL
bool SerializePrivateKey(CBB *out) override
bool Finish(Array< uint8_t > *out_secret, uint8_t *out_alert, Span< const uint8_t > peer_key) override
static HAS_VIRTUAL_DESTRUCTOR UniquePtr< SSLKeyShare > Create(uint16_t group_id)
const char * SSL_get_curve_name(uint16_t group_id)
UniquePtr< BIGNUM > private_key_
#define EC_POINT_oct2point
@ POINT_CONVERSION_UNCOMPRESSED
#define SSL_CURVE_SECP256R1
#define SSL_AD_DECODE_ERROR
uint16_t GroupID() const override
bool ssl_nid_to_group_id(uint16_t *out_group_id, int nid)
virtual uint16_t GroupID() const PURE_VIRTUAL
bool Finish(Array< uint8_t > *out_secret, uint8_t *out_alert, Span< const uint8_t > peer_key) override
HRSS_private_key hrss_private_key_
#define SSL_R_BAD_ECPOINT
#define SSL_CURVE_SECP384R1
uint16_t GroupID() const override
virtual bool Finish(Array< uint8_t > *out_secret, uint8_t *out_alert, Span< const uint8_t > peer_key) PURE_VIRTUAL
#define EC_POINT_point2cbb
bool Offer(CBB *out) override
#define HRSS_marshal_public_key
bool DeserializePrivateKey(CBS *in) override
#define ERR_R_MALLOC_FAILURE
#define CBB_add_asn1_uint64
constexpr Span< const T > MakeConstSpan(T *ptr, size_t size) noexcept
grpc
Author(s):
autogenerated on Fri May 16 2025 03:00:15