Lines Matching refs:rl

15 #define QUIC_TLS_FATAL(rl, ad, err) \  argument
17 if ((rl) != NULL) (rl)->alert = (ad); \
19 if ((rl) != NULL) (rl)->qtls->inerror = 1; \
87 static int quic_set1_bio(OSSL_RECORD_LAYER *rl, BIO *bio);
105 OSSL_RECORD_LAYER *rl = OPENSSL_zalloc(sizeof(*rl)); in quic_new_record_layer() local
110 if (rl == NULL) { in quic_new_record_layer()
111 QUIC_TLS_FATAL(rl, SSL_AD_INTERNAL_ERROR, ERR_R_INTERNAL_ERROR); in quic_new_record_layer()
115 rl->qtls = (QUIC_TLS *)rlarg; in quic_new_record_layer()
116 rl->level = level; in quic_new_record_layer()
117 if (!quic_set1_bio(rl, transport)) { in quic_new_record_layer()
118 QUIC_TLS_FATAL(rl, SSL_AD_INTERNAL_ERROR, ERR_R_INTERNAL_ERROR); in quic_new_record_layer()
121 rl->cbarg = cbarg; in quic_new_record_layer()
122 *retrl = rl; in quic_new_record_layer()
129 rl->msg_callback = OSSL_FUNC_rlayer_msg_callback(fns); in quic_new_record_layer()
155 QUIC_TLS_FATAL(rl, SSL_AD_INTERNAL_ERROR, ERR_R_INTERNAL_ERROR); in quic_new_record_layer()
171 QUIC_TLS_FATAL(rl, SSL_AD_INTERNAL_ERROR, SSL_R_UNKNOWN_CIPHER_TYPE); in quic_new_record_layer()
178 QUIC_TLS_FATAL(rl, SSL_AD_INTERNAL_ERROR, ERR_R_INTERNAL_ERROR); in quic_new_record_layer()
182 if (!rl->qtls->args.yield_secret_cb(enc_level, qdir, suite_id, in quic_new_record_layer()
184 rl->qtls->args.yield_secret_cb_arg)) { in quic_new_record_layer()
185 QUIC_TLS_FATAL(rl, SSL_AD_INTERNAL_ERROR, ERR_R_INTERNAL_ERROR); in quic_new_record_layer()
193 quic_free(rl); in quic_new_record_layer()
197 static int quic_free(OSSL_RECORD_LAYER *rl) in quic_free() argument
199 if (rl == NULL) in quic_free()
202 BIO_free(rl->dummybio); in quic_free()
203 OPENSSL_free(rl); in quic_free()
207 static int quic_unprocessed_read_pending(OSSL_RECORD_LAYER *rl) in quic_unprocessed_read_pending() argument
216 static int quic_processed_read_pending(OSSL_RECORD_LAYER *rl) in quic_processed_read_pending() argument
234 static size_t quic_get_max_records(OSSL_RECORD_LAYER *rl, uint8_t type, in quic_get_max_records() argument
241 static int quic_write_records(OSSL_RECORD_LAYER *rl, in quic_write_records() argument
250 QUIC_TLS_FATAL(rl, SSL_AD_INTERNAL_ERROR, ERR_R_INTERNAL_ERROR); in quic_write_records()
254 BIO_clear_retry_flags(rl->dummybio); in quic_write_records()
256 if (rl->msg_callback != NULL) { in quic_write_records()
263 dummyrec[0] = (rl->level == OSSL_RECORD_PROTECTION_LEVEL_NONE) in quic_write_records()
277 rl->msg_callback(1, TLS1_3_VERSION, SSL3_RT_HEADER, dummyrec, in quic_write_records()
278 SSL3_RT_HEADER_LENGTH, rl->cbarg); in quic_write_records()
280 if (rl->level != OSSL_RECORD_PROTECTION_LEVEL_NONE) { in quic_write_records()
281 rl->msg_callback(1, TLS1_3_VERSION, SSL3_RT_INNER_CONTENT_TYPE, in quic_write_records()
282 &template->type, 1, rl->cbarg); in quic_write_records()
294 QUIC_TLS_FATAL(rl, SSL_AD_INTERNAL_ERROR, SSL_R_BAD_VALUE); in quic_write_records()
303 if (!rl->qtls->args.alert_cb(rl->qtls->args.alert_cb_arg, alert)) { in quic_write_records()
304 QUIC_TLS_FATAL(rl, SSL_AD_INTERNAL_ERROR, ERR_R_INTERNAL_ERROR); in quic_write_records()
314 if (!rl->qtls->args.crypto_send_cb(template->buf + rl->written, in quic_write_records()
315 template->buflen - rl->written, in quic_write_records()
317 rl->qtls->args.crypto_send_cb_arg)) { in quic_write_records()
318 QUIC_TLS_FATAL(rl, SSL_AD_INTERNAL_ERROR, ERR_R_INTERNAL_ERROR); in quic_write_records()
325 if (consumed + rl->written != template->buflen) { in quic_write_records()
326 if (!ossl_assert(consumed + rl->written < template->buflen)) { in quic_write_records()
327 QUIC_TLS_FATAL(rl, SSL_AD_INTERNAL_ERROR, ERR_R_INTERNAL_ERROR); in quic_write_records()
337 rl->written += consumed; in quic_write_records()
338 rl->template = *template; in quic_write_records()
339 BIO_set_retry_write(rl->dummybio); in quic_write_records()
343 rl->written = 0; in quic_write_records()
348 QUIC_TLS_FATAL(rl, SSL_AD_INTERNAL_ERROR, ERR_R_INTERNAL_ERROR); in quic_write_records()
355 static int quic_retry_write_records(OSSL_RECORD_LAYER *rl) in quic_retry_write_records() argument
357 return quic_write_records(rl, &rl->template, 1); in quic_retry_write_records()
360 static int quic_read_record(OSSL_RECORD_LAYER *rl, void **rechandle, in quic_read_record() argument
365 if (rl->recread != 0 || rl->recunreleased != 0) in quic_read_record()
368 BIO_clear_retry_flags(rl->dummybio); in quic_read_record()
370 if (!rl->qtls->args.crypto_recv_rcd_cb(data, datalen, in quic_read_record()
371 rl->qtls->args.crypto_recv_rcd_cb_arg)) { in quic_read_record()
372 QUIC_TLS_FATAL(rl, SSL_AD_INTERNAL_ERROR, ERR_R_INTERNAL_ERROR); in quic_read_record()
377 BIO_set_retry_read(rl->dummybio); in quic_read_record()
381 *rechandle = rl; in quic_read_record()
384 rl->recread = rl->recunreleased = *datalen; in quic_read_record()
387 if (rl->msg_callback != NULL) { in quic_read_record()
394 dummyrec[0] = (rl->level == OSSL_RECORD_PROTECTION_LEVEL_NONE) in quic_read_record()
406 rl->msg_callback(0, TLS1_3_VERSION, SSL3_RT_HEADER, dummyrec, in quic_read_record()
407 SSL3_RT_HEADER_LENGTH, rl->cbarg); in quic_read_record()
408 rl->msg_callback(0, TLS1_3_VERSION, SSL3_RT_INNER_CONTENT_TYPE, type, 1, in quic_read_record()
409 rl->cbarg); in quic_read_record()
415 static int quic_release_record(OSSL_RECORD_LAYER *rl, void *rechandle, in quic_release_record() argument
418 if (!ossl_assert(rl->recread > 0) in quic_release_record()
419 || !ossl_assert(rl->recunreleased <= rl->recread) in quic_release_record()
420 || !ossl_assert(rl == rechandle) in quic_release_record()
421 || !ossl_assert(length <= rl->recunreleased)) { in quic_release_record()
422 QUIC_TLS_FATAL(rl, SSL_AD_INTERNAL_ERROR, ERR_R_INTERNAL_ERROR); in quic_release_record()
426 rl->recunreleased -= length; in quic_release_record()
428 if (rl->recunreleased > 0) in quic_release_record()
431 if (!rl->qtls->args.crypto_release_rcd_cb(rl->recread, in quic_release_record()
432 rl->qtls->args.crypto_release_rcd_cb_arg)) { in quic_release_record()
433 QUIC_TLS_FATAL(rl, SSL_AD_INTERNAL_ERROR, ERR_R_INTERNAL_ERROR); in quic_release_record()
437 rl->recread = 0; in quic_release_record()
441 static int quic_get_alert_code(OSSL_RECORD_LAYER *rl) in quic_get_alert_code() argument
443 return rl->alert; in quic_get_alert_code()
446 static int quic_set_protocol_version(OSSL_RECORD_LAYER *rl, int version) in quic_set_protocol_version() argument
450 QUIC_TLS_FATAL(rl, SSL_AD_INTERNAL_ERROR, ERR_R_INTERNAL_ERROR); in quic_set_protocol_version()
457 static void quic_set_plain_alerts(OSSL_RECORD_LAYER *rl, int allow) in quic_set_plain_alerts() argument
462 static void quic_set_first_handshake(OSSL_RECORD_LAYER *rl, int first) in quic_set_first_handshake() argument
467 static void quic_set_max_pipelines(OSSL_RECORD_LAYER *rl, size_t max_pipelines) in quic_set_max_pipelines() argument
472 static void quic_get_state(OSSL_RECORD_LAYER *rl, const char **shortstr, in quic_get_state() argument
482 if (rl->qtls->inerror) { in quic_get_state()
495 static int quic_set_options(OSSL_RECORD_LAYER *rl, const OSSL_PARAM *options) in quic_set_options() argument
504 static const COMP_METHOD *quic_get_compression(OSSL_RECORD_LAYER *rl) in quic_get_compression() argument
510 static void quic_set_max_frag_len(OSSL_RECORD_LAYER *rl, size_t max_frag_len) in quic_set_max_frag_len() argument
515 static int quic_alloc_buffers(OSSL_RECORD_LAYER *rl) in quic_alloc_buffers() argument
524 static int quic_free_buffers(OSSL_RECORD_LAYER *rl) in quic_free_buffers() argument
533 static int quic_set1_bio(OSSL_RECORD_LAYER *rl, BIO *bio) in quic_set1_bio() argument
537 BIO_free(rl->dummybio); in quic_set1_bio()
538 rl->dummybio = bio; in quic_set1_bio()
550 static size_t quic_app_data_pending(OSSL_RECORD_LAYER *rl) in quic_app_data_pending() argument
552 QUIC_TLS_FATAL(rl, SSL_AD_INTERNAL_ERROR, ERR_R_SHOULD_NOT_HAVE_BEEN_CALLED); in quic_app_data_pending()
556 static size_t quic_get_max_record_overhead(OSSL_RECORD_LAYER *rl) in quic_get_max_record_overhead() argument
558 QUIC_TLS_FATAL(rl, SSL_AD_INTERNAL_ERROR, ERR_R_SHOULD_NOT_HAVE_BEEN_CALLED); in quic_get_max_record_overhead()
562 static int quic_increment_sequence_ctr(OSSL_RECORD_LAYER *rl) in quic_increment_sequence_ctr() argument
564 QUIC_TLS_FATAL(rl, SSL_AD_INTERNAL_ERROR, ERR_R_SHOULD_NOT_HAVE_BEEN_CALLED); in quic_increment_sequence_ctr()