Lines Matching refs:rl
18 #define QUIC_TLS_FATAL(rl, ad, err) \
20 if ((rl) != NULL) \
21 (rl)->alert = (ad); \
23 if ((rl) != NULL) \
24 (rl)->qtls->inerror = 1; \
95 static int quic_set1_bio(OSSL_RECORD_LAYER *rl, BIO *bio);
113 OSSL_RECORD_LAYER *rl = OPENSSL_zalloc(sizeof(*rl));
117 if (rl == NULL) {
118 QUIC_TLS_FATAL(rl, SSL_AD_INTERNAL_ERROR, ERR_R_INTERNAL_ERROR);
122 rl->qtls = (QUIC_TLS *)rlarg;
123 rl->level = level;
124 if (!quic_set1_bio(rl, transport)) {
125 QUIC_TLS_FATAL(rl, SSL_AD_INTERNAL_ERROR, ERR_R_INTERNAL_ERROR);
128 rl->cbarg = cbarg;
129 *retrl = rl;
136 rl->msg_callback = OSSL_FUNC_rlayer_msg_callback(fns);
153 if (rl->qtls->args.ossl_quic) {
168 QUIC_TLS_FATAL(rl, SSL_AD_INTERNAL_ERROR, SSL_R_UNKNOWN_CIPHER_TYPE);
175 QUIC_TLS_FATAL(rl, SSL_AD_INTERNAL_ERROR, ERR_R_INTERNAL_ERROR);
186 if (!rl->qtls->args.yield_secret_cb(level, qdir, suite_id,
188 rl->qtls->args.yield_secret_cb_arg)) {
189 QUIC_TLS_FATAL(rl, SSL_AD_INTERNAL_ERROR, ERR_R_INTERNAL_ERROR);
197 quic_free(rl);
201 static int quic_free(OSSL_RECORD_LAYER *rl)
203 if (rl == NULL)
206 BIO_free(rl->dummybio);
207 OPENSSL_free(rl);
211 static int quic_unprocessed_read_pending(OSSL_RECORD_LAYER *rl)
220 static int quic_processed_read_pending(OSSL_RECORD_LAYER *rl)
238 static size_t quic_get_max_records(OSSL_RECORD_LAYER *rl, uint8_t type,
245 static int quic_write_records(OSSL_RECORD_LAYER *rl,
254 QUIC_TLS_FATAL(rl, SSL_AD_INTERNAL_ERROR, ERR_R_INTERNAL_ERROR);
258 BIO_clear_retry_flags(rl->dummybio);
260 if (rl->msg_callback != NULL) {
267 dummyrec[0] = (rl->level == OSSL_RECORD_PROTECTION_LEVEL_NONE)
281 rl->msg_callback(1, TLS1_3_VERSION, SSL3_RT_HEADER, dummyrec,
282 SSL3_RT_HEADER_LENGTH, rl->cbarg);
284 if (rl->level != OSSL_RECORD_PROTECTION_LEVEL_NONE) {
285 rl->msg_callback(1, TLS1_3_VERSION, SSL3_RT_INNER_CONTENT_TYPE,
286 &template->type, 1, rl->cbarg);
298 QUIC_TLS_FATAL(rl, SSL_AD_INTERNAL_ERROR, SSL_R_BAD_VALUE);
307 if (!rl->qtls->args.alert_cb(rl->qtls->args.alert_cb_arg, alert)) {
308 QUIC_TLS_FATAL(rl, SSL_AD_INTERNAL_ERROR, ERR_R_INTERNAL_ERROR);
318 if (!rl->qtls->args.crypto_send_cb(template->buf + rl->written,
319 template->buflen - rl->written,
321 rl->qtls->args.crypto_send_cb_arg)) {
322 QUIC_TLS_FATAL(rl, SSL_AD_INTERNAL_ERROR, ERR_R_INTERNAL_ERROR);
329 if (consumed + rl->written != template->buflen) {
330 if (!ossl_assert(consumed + rl->written < template->buflen)) {
331 QUIC_TLS_FATAL(rl, SSL_AD_INTERNAL_ERROR, ERR_R_INTERNAL_ERROR);
341 rl->written += consumed;
342 rl->template = *template;
343 BIO_set_retry_write(rl->dummybio);
347 rl->written = 0;
352 QUIC_TLS_FATAL(rl, SSL_AD_INTERNAL_ERROR, ERR_R_INTERNAL_ERROR);
359 static int quic_retry_write_records(OSSL_RECORD_LAYER *rl)
361 return quic_write_records(rl, &rl->template, 1);
364 static int quic_read_record(OSSL_RECORD_LAYER *rl, void **rechandle,
369 if (rl->recread != 0 || rl->recunreleased != 0)
372 BIO_clear_retry_flags(rl->dummybio);
374 if (!rl->qtls->args.crypto_recv_rcd_cb(data, datalen,
375 rl->qtls->args.crypto_recv_rcd_cb_arg)) {
376 QUIC_TLS_FATAL(rl, SSL_AD_INTERNAL_ERROR, ERR_R_INTERNAL_ERROR);
381 BIO_set_retry_read(rl->dummybio);
385 *rechandle = rl;
388 rl->recread = rl->recunreleased = *datalen;
391 if (rl->msg_callback != NULL) {
398 dummyrec[0] = (rl->level == OSSL_RECORD_PROTECTION_LEVEL_NONE)
410 rl->msg_callback(0, TLS1_3_VERSION, SSL3_RT_HEADER, dummyrec,
411 SSL3_RT_HEADER_LENGTH, rl->cbarg);
412 rl->msg_callback(0, TLS1_3_VERSION, SSL3_RT_INNER_CONTENT_TYPE, type, 1,
413 rl->cbarg);
419 static int quic_release_record(OSSL_RECORD_LAYER *rl, void *rechandle,
422 if (!ossl_assert(rl->recread > 0)
423 || !ossl_assert(rl->recunreleased <= rl->recread)
424 || !ossl_assert(rl == rechandle)
425 || !ossl_assert(length <= rl->recunreleased)) {
426 QUIC_TLS_FATAL(rl, SSL_AD_INTERNAL_ERROR, ERR_R_INTERNAL_ERROR);
430 if (rl->recunreleased == length) {
431 if (!rl->qtls->args.crypto_release_rcd_cb(rl->recread,
432 rl->qtls->args.crypto_release_rcd_cb_arg)) {
433 QUIC_TLS_FATAL(rl, SSL_AD_INTERNAL_ERROR, ERR_R_INTERNAL_ERROR);
436 rl->recread = 0;
438 rl->recunreleased -= length;
442 static int quic_get_alert_code(OSSL_RECORD_LAYER *rl)
444 return rl->alert;
447 static int quic_set_protocol_version(OSSL_RECORD_LAYER *rl, int version)
451 QUIC_TLS_FATAL(rl, SSL_AD_INTERNAL_ERROR, ERR_R_INTERNAL_ERROR);
458 static void quic_set_plain_alerts(OSSL_RECORD_LAYER *rl, int allow)
463 static void quic_set_first_handshake(OSSL_RECORD_LAYER *rl, int first)
468 static void quic_set_max_pipelines(OSSL_RECORD_LAYER *rl, size_t max_pipelines)
473 static void quic_get_state(OSSL_RECORD_LAYER *rl, const char **shortstr,
483 if (rl->qtls->inerror) {
496 static int quic_set_options(OSSL_RECORD_LAYER *rl, const OSSL_PARAM *options)
505 static const COMP_METHOD *quic_get_compression(OSSL_RECORD_LAYER *rl)
511 static void quic_set_max_frag_len(OSSL_RECORD_LAYER *rl, size_t max_frag_len)
516 static int quic_alloc_buffers(OSSL_RECORD_LAYER *rl)
525 rl)
534 static int quic_set1_bio(OSSL_RECORD_LAYER *rl, BIO *bio)
538 BIO_free(rl->dummybio);
539 rl->dummybio = bio;
551 static size_t quic_app_data_pending(OSSL_RECORD_LAYER *rl)
553 QUIC_TLS_FATAL(rl, SSL_AD_INTERNAL_ERROR, ERR_R_SHOULD_NOT_HAVE_BEEN_CALLED);
557 static size_t quic_get_max_record_overhead(OSSL_RECORD_LAYER *rl)
559 QUIC_TLS_FATAL(rl, SSL_AD_INTERNAL_ERROR, ERR_R_SHOULD_NOT_HAVE_BEEN_CALLED);
563 static int quic_increment_sequence_ctr(OSSL_RECORD_LAYER *rl)
565 QUIC_TLS_FATAL(rl, SSL_AD_INTERNAL_ERROR, ERR_R_SHOULD_NOT_HAVE_BEEN_CALLED);