Go to the documentation of this file.
29 #include "../crypto/internal.h"
41 0xcf, 0x21, 0xad, 0x74, 0xe5, 0x9a, 0x61, 0x11, 0xbe, 0x1d, 0x8c,
42 0x02, 0x1e, 0x65, 0xb8, 0x91, 0xc2, 0xa2, 0x11, 0x16, 0x7a, 0xbb,
43 0x8c, 0x5e, 0x07, 0x9e, 0x09, 0xe2, 0xc8, 0xa8, 0x33, 0x9c,
48 0x47, 0x52, 0x44, 0x00};
50 0x47, 0x52, 0x44, 0x01};
54 0xc2, 0x47, 0x10, 0xff};
65 for (
size_t i = 0;
i < 64;
i++) {
74 static const char kContext[] =
"TLS 1.3, server CertificateVerify";
77 static const char kContext[] =
"TLS 1.3, client CertificateVerify";
80 static const char kContext[] =
"TLS 1.3, Channel ID";
96 size_t context_hash_len;
108 bool allow_anonymous) {
111 bssl::UniquePtr<CRYPTO_BUFFER> decompressed;
131 static_cast<unsigned>(uncompressed_len));
136 for (
const auto &alg : ssl->
ctx->cert_compression_algs) {
137 if (alg.alg_id == alg_id) {
138 decompress = alg.decompress;
143 if (decompress ==
nullptr) {
151 if (!decompress(ssl, &decompressed_ptr, uncompressed_len,
158 decompressed.reset(decompressed_ptr);
164 "alg=%d got=%u expected=%u",
static_cast<int>(alg_id),
166 static_cast<unsigned>(uncompressed_len));
193 const bool retain_sha256 =
195 UniquePtr<EVP_PKEY> pkey;
196 while (
CBS_len(&certificate_list) > 0) {
228 UniquePtr<CRYPTO_BUFFER>
buf(
259 CBS_len(&ocsp_response) == 0 ||
285 if (hs->
new_session->signed_cert_timestamp_list ==
nullptr) {
302 if (!ssl->
ctx->x509_method->session_cache_objects(hs->
new_session.get())) {
309 if (!allow_anonymous) {
323 hs->
new_session->peer_sha256_valid = retain_sha256;
334 CBS body =
msg.body, signature;
370 bool use_saved_value) {
374 if (use_saved_value) {
387 #if defined(BORINGSSL_UNSAFE_FUZZER_MODE)
402 DC *
const dc = cert->
dc.get();
405 CBB *body, body_storage, certificate_list;
413 body = &body_storage;
480 ssl->
s3->delegated_credential_used =
true;
506 for (
const auto &candidate : ssl->
ctx->cert_compression_algs) {
513 if (alg ==
nullptr || alg->
compress ==
nullptr) {
519 body = &body_storage;
520 if (!ssl->
method->init_message(ssl, cbb.get(), body,
572 if (!ssl->
method->init_message(ssl, cbb.get(), &body,
602 if (!
CBB_init(spki_cbb.get(), 64) ||
644 size_t verify_data_len;
667 if (!ssl->
method->init_message(ssl, cbb.get(), &body_cbb,
678 ssl->
s3->key_update_pending =
true;
686 if (!
CBS_get_u8(&body, &key_update_request) ||
701 !ssl->
s3->key_update_pending &&
711 ssl->
s3->key_update_count++;
722 ssl->
s3->key_update_count = 0;
void ssl_send_alert(SSL *ssl, int level, int desc)
UniquePtr< CRYPTO_BUFFER > ocsp_response
bool ssl_has_certificate(const SSL_HANDSHAKE *hs)
#define SSL_AD_UNEXPECTED_MESSAGE
#define CBS_get_u24_length_prefixed
uint16_t cert_compression_alg_id
UniquePtr< SSL_HANDSHAKE_HINTS > hints
bool tls13_process_certificate(SSL_HANDSHAKE *hs, const SSLMessage &msg, bool allow_anonymous)
UniquePtr< CRYPTO_BUFFER > raw
UniquePtr< EVP_PKEY > local_pubkey
#define EVP_marshal_public_key
Array< uint8_t > signature_spki
bool ssl_public_key_verify(SSL *ssl, Span< const uint8_t > signature, uint16_t sigalg, EVP_PKEY *pkey, Span< const uint8_t > in)
#define SSL3_MT_CERTIFICATE_VERIFY
#define OPENSSL_PUT_ERROR(library, reason)
#define CRYPTO_BUFFER_new_from_CBS
#define CBB_add_u16_length_prefixed
#define TLSEXT_TYPE_delegated_credential
#define SSL_AD_INTERNAL_ERROR
#define CRYPTO_BUFFER_len
bool tls13_add_finished(SSL_HANDSHAKE *hs)
#define CBS_get_u8_length_prefixed
Array< uint8_t > signature
bool ocsp_stapling_requested
#define SSL3_MT_CERTIFICATE
const uint8_t kJDK11DowngradeRandom[8]
#define SSL_AD_ILLEGAL_PARAMETER
UniquePtr< SSL_SESSION > new_session
uint16_t cert_compression_alg_id
bool CopyFrom(Span< const T > in)
const SSL_QUIC_METHOD * quic_method
ssl_cert_compression_func_t compress
bool tls13_finished_mac(SSL_HANDSHAKE *hs, uint8_t *out, size_t *out_len, bool is_server)
#define SSL_R_UNEXPECTED_MESSAGE
@ key_usage_digital_signature
UniquePtr< EVP_PKEY > peer_pubkey
#define SSL_AD_CERTIFICATE_REQUIRED
bool ssl_is_sct_list_valid(const CBS *contents)
#define SSL_R_BAD_SIGNATURE
UniquePtr< STACK_OF(CRYPTO_BUFFER)> chain
#define sk_CRYPTO_BUFFER_new_null
#define SSL_R_DIGEST_CHECK_FAILED
constexpr absl::remove_reference_t< T > && move(T &&t) noexcept
ssl_cert_verify_context_t
bool tls13_add_certificate(SSL_HANDSHAKE *hs)
enum ssl_private_key_result_t tls13_add_certificate_verify(SSL_HANDSHAKE *hs)
#define ERR_add_error_dataf
#define SSL3_MT_KEY_UPDATE
#define SSL_R_CERT_LENGTH_MISMATCH
#define SSL_R_UNKNOWN_CERT_COMPRESSION_ALG
#define SSL3_MT_NEW_SESSION_TICKET
#define SSL_KEY_UPDATE_REQUESTED
enum ssl_private_key_result_t ssl_private_key_sign(SSL_HANDSHAKE *hs, uint8_t *out, size_t *out_len, size_t max_out, uint16_t sigalg, Span< const uint8_t > in)
bool tls13_add_key_update(SSL *ssl, int update_requested)
static void * OPENSSL_memcpy(void *dst, const void *src, size_t n)
bool tls12_check_peer_sigalg(const SSL_HANDSHAKE *hs, uint8_t *out_alert, uint16_t sigalg)
#define BSSL_NAMESPACE_END
const uint8_t kTLS12DowngradeRandom[8]
#define ERR_R_INTERNAL_ERROR
bool tls1_choose_signature_algorithm(SSL_HANDSHAKE *hs, uint16_t *out)
#define SSL_R_TOO_MANY_KEY_UPDATES
Span< uint8_t > expected_client_finished()
bool tls13_post_handshake(SSL *ssl, const SSLMessage &msg)
bool tls13_rotate_traffic_key(SSL *ssl, enum evp_aead_direction_t direction)
bool ocsp_stapling_enabled
static const BSSL_NAMESPACE_BEGIN uint8_t kMaxKeyUpdates
#define SSL_R_CERT_DECOMPRESSION_FAILED
std::unique_ptr< T, DefaultDeleteChar > UniquePtr
static bool tls13_receive_key_update(SSL *ssl, const SSLMessage &msg)
bool tls13_process_new_session_ticket(SSL *ssl, const SSLMessage &msg)
uint16_t signature_algorithm
bool retain_only_sha256_of_client_certs
UniquePtr< CRYPTO_BUFFER > signed_cert_timestamp_list
#define SSL_KEY_UPDATE_NOT_REQUESTED
#define sk_CRYPTO_BUFFER_value
OPENSSL_EXPORT bool CBBFinishArray(CBB *cbb, Array< uint8_t > *out)
#define TLSEXT_TYPE_certificate_timestamp
Array< uint8_t > signature_input
#define TLSEXT_TYPE_status_request
#define SSL_AD_DECODE_ERROR
#define CBS_get_u16_length_prefixed
bool signed_cert_timestamps_enabled
Array< uint8_t > cert_compression_output
std::enable_if<!internal::StackTraits< Stack >::kIsConst, bool >::type PushToStack(Stack *sk, UniquePtr< typename internal::StackTraits< Stack >::Type > elem)
#define SSL_AD_HANDSHAKE_FAILURE
bool ssl_add_message_cbb(SSL *ssl, CBB *cbb)
#define SSL3_MT_COMPRESSED_CERTIFICATE
#define SSL_R_PEER_DID_NOT_RETURN_A_CERTIFICATE
#define TLSEXT_STATUSTYPE_ocsp
bool GetHash(uint8_t *out, size_t *out_len) const
bool tls13_get_cert_verify_signature_input(SSL_HANDSHAKE *hs, Array< uint8_t > *out, enum ssl_cert_verify_context_t cert_verify_context)
const bssl::SSL_PROTOCOL_METHOD * method
Array< uint8_t > cert_compression_input
bool tls13_process_finished(SSL_HANDSHAKE *hs, const SSLMessage &msg, bool use_saved_value)
bool ssl_parse_extensions(const CBS *cbs, uint8_t *out_alert, std::initializer_list< SSLExtension * > extensions, bool ignore_unknown)
@ ssl_cert_verify_channel_id
grpc::ClientContext context
#define SSL_R_DECODE_ERROR
bool ssl_cert_check_key_usage(const CBS *in, enum ssl_key_usage_t bit)
bool ssl_signing_with_dc(const SSL_HANDSHAKE *hs)
#define SSL_R_ERROR_PARSING_EXTENSION
const uint8_t kTLS13DowngradeRandom[8]
bssl::UniquePtr< SSL_CTX > ctx
const uint8_t kHelloRetryRequest[SSL3_RANDOM_SIZE]
UniquePtr< EVP_PKEY > ssl_cert_parse_pubkey(const CBS *in)
#define SSL_AD_DECRYPT_ERROR
bool cert_compression_negotiated
constexpr Span< T > MakeSpan(T *ptr, size_t size) noexcept
#define sk_CRYPTO_BUFFER_num
bool tls13_process_certificate_verify(SSL_HANDSHAKE *hs, const SSLMessage &msg)
int(* ssl_cert_decompression_func_t)(SSL *ssl, CRYPTO_BUFFER **out, size_t uncompressed_len, const uint8_t *in, size_t in_len)
#define CRYPTO_BUFFER_data
#define ERR_R_MALLOC_FAILURE
uint16_t signature_algorithm
#define SSL_R_UNCOMPRESSED_CERT_TOO_LARGE
constexpr Span< const T > MakeConstSpan(T *ptr, size_t size) noexcept
#define CBB_add_u24_length_prefixed
grpc
Author(s):
autogenerated on Thu Mar 13 2025 03:01:39