Lines Matching refs:rc

287 br_ssl_engine_fail(br_ssl_engine_context *rc, int err)  in br_ssl_engine_fail()  argument
289 if (rc->iomode != BR_IO_FAILED) { in br_ssl_engine_fail()
290 rc->iomode = BR_IO_FAILED; in br_ssl_engine_fail()
291 rc->err = err; in br_ssl_engine_fail()
299 make_ready_in(br_ssl_engine_context *rc) in make_ready_in() argument
301 rc->ixa = rc->ixb = 0; in make_ready_in()
302 rc->ixc = 5; in make_ready_in()
303 if (rc->iomode == BR_IO_IN) { in make_ready_in()
304 rc->iomode = BR_IO_INOUT; in make_ready_in()
312 make_ready_out(br_ssl_engine_context *rc) in make_ready_out() argument
317 b = rc->obuf_len - a; in make_ready_out()
318 rc->out.vtable->max_plaintext(&rc->out.vtable, &a, &b); in make_ready_out()
319 if ((b - a) > rc->max_frag_len) { in make_ready_out()
320 b = a + rc->max_frag_len; in make_ready_out()
322 rc->oxa = a; in make_ready_out()
323 rc->oxb = b; in make_ready_out()
324 rc->oxc = a; in make_ready_out()
325 if (rc->iomode == BR_IO_OUT) { in make_ready_out()
326 rc->iomode = BR_IO_INOUT; in make_ready_out()
332 br_ssl_engine_new_max_frag_len(br_ssl_engine_context *rc, unsigned max_frag_len) in br_ssl_engine_new_max_frag_len() argument
336 rc->max_frag_len = max_frag_len; in br_ssl_engine_new_max_frag_len()
337 nxb = rc->oxc + max_frag_len; in br_ssl_engine_new_max_frag_len()
338 if (rc->oxa < rc->oxb && rc->oxb > nxb && rc->oxa < nxb) { in br_ssl_engine_new_max_frag_len()
339 rc->oxb = nxb; in br_ssl_engine_new_max_frag_len()
345 br_ssl_engine_set_buffer(br_ssl_engine_context *rc, in br_ssl_engine_set_buffer() argument
349 br_ssl_engine_set_buffers_bidi(rc, NULL, 0, NULL, 0); in br_ssl_engine_set_buffer()
373 rc->iomode = BR_IO_FAILED; in br_ssl_engine_set_buffer()
374 rc->err = BR_ERR_BAD_PARAM; in br_ssl_engine_set_buffer()
383 br_ssl_engine_set_buffers_bidi(rc, in br_ssl_engine_set_buffer()
387 br_ssl_engine_set_buffers_bidi(rc, in br_ssl_engine_set_buffer()
395 br_ssl_engine_set_buffers_bidi(br_ssl_engine_context *rc, in br_ssl_engine_set_buffers_bidi() argument
398 rc->iomode = BR_IO_INOUT; in br_ssl_engine_set_buffers_bidi()
399 rc->incrypt = 0; in br_ssl_engine_set_buffers_bidi()
400 rc->err = BR_ERR_OK; in br_ssl_engine_set_buffers_bidi()
401 rc->version_in = 0; in br_ssl_engine_set_buffers_bidi()
402 rc->record_type_in = 0; in br_ssl_engine_set_buffers_bidi()
403 rc->version_out = 0; in br_ssl_engine_set_buffers_bidi()
404 rc->record_type_out = 0; in br_ssl_engine_set_buffers_bidi()
406 if (rc->ibuf == NULL) { in br_ssl_engine_set_buffers_bidi()
407 br_ssl_engine_fail(rc, BR_ERR_BAD_PARAM); in br_ssl_engine_set_buffers_bidi()
412 rc->ibuf = ibuf; in br_ssl_engine_set_buffers_bidi()
413 rc->ibuf_len = ibuf_len; in br_ssl_engine_set_buffers_bidi()
418 rc->obuf = obuf; in br_ssl_engine_set_buffers_bidi()
419 rc->obuf_len = obuf_len; in br_ssl_engine_set_buffers_bidi()
440 br_ssl_engine_fail(rc, BR_ERR_BAD_PARAM); in br_ssl_engine_set_buffers_bidi()
445 rc->max_frag_len = (size_t)1 << u; in br_ssl_engine_set_buffers_bidi()
446 rc->log_max_frag_len = u; in br_ssl_engine_set_buffers_bidi()
447 rc->peer_log_max_frag_len = 0; in br_ssl_engine_set_buffers_bidi()
449 rc->out.vtable = &br_sslrec_out_clear_vtable; in br_ssl_engine_set_buffers_bidi()
450 make_ready_in(rc); in br_ssl_engine_set_buffers_bidi()
451 make_ready_out(rc); in br_ssl_engine_set_buffers_bidi()
458 engine_clearbuf(br_ssl_engine_context *rc) in engine_clearbuf() argument
460 make_ready_in(rc); in engine_clearbuf()
461 make_ready_out(rc); in engine_clearbuf()
566 recvrec_buf(const br_ssl_engine_context *rc, size_t *len) in recvrec_buf() argument
568 if (rc->shutdown_recv) { in recvrec_buf()
583 switch (rc->iomode) { in recvrec_buf()
586 if (rc->ixa == rc->ixb) { in recvrec_buf()
589 z = rc->ixc; in recvrec_buf()
590 if (z > rc->ibuf_len - rc->ixa) { in recvrec_buf()
591 z = rc->ibuf_len - rc->ixa; in recvrec_buf()
594 return rc->ibuf + rc->ixa; in recvrec_buf()
603 recvrec_ack(br_ssl_engine_context *rc, size_t len) in recvrec_ack() argument
613 if (rc->iomode == BR_IO_INOUT && rc->ibuf == rc->obuf) { in recvrec_ack()
614 rc->iomode = BR_IO_IN; in recvrec_ack()
620 rc->ixb = (rc->ixa += len); in recvrec_ack()
621 rc->ixc -= len; in recvrec_ack()
627 if (rc->ixa < 5) { in recvrec_ack()
634 if (rc->ixa == 5) { in recvrec_ack()
650 rc->record_type_in = rc->ibuf[0]; in recvrec_ack()
651 version = br_dec16be(rc->ibuf + 1); in recvrec_ack()
653 br_ssl_engine_fail(rc, BR_ERR_UNSUPPORTED_VERSION); in recvrec_ack()
663 if (rc->version_in != 0 && rc->version_in != version) { in recvrec_ack()
664 br_ssl_engine_fail(rc, BR_ERR_BAD_VERSION); in recvrec_ack()
667 rc->version_in = version; in recvrec_ack()
679 rlen = br_dec16be(rc->ibuf + 3); in recvrec_ack()
680 if (rc->incrypt) { in recvrec_ack()
681 if (!rc->in.vtable->check_length( in recvrec_ack()
682 &rc->in.vtable, rlen)) in recvrec_ack()
684 br_ssl_engine_fail(rc, BR_ERR_BAD_LENGTH); in recvrec_ack()
687 if (rlen > (rc->ibuf_len - 5)) { in recvrec_ack()
688 br_ssl_engine_fail(rc, BR_ERR_TOO_LARGE); in recvrec_ack()
693 br_ssl_engine_fail(rc, BR_ERR_BAD_LENGTH); in recvrec_ack()
712 make_ready_in(rc); in recvrec_ack()
714 rc->ixa = rc->ixb = 5; in recvrec_ack()
715 rc->ixc = rlen; in recvrec_ack()
726 if (!rc->incrypt) { in recvrec_ack()
727 rc->ixa = 5; in recvrec_ack()
735 if (rc->ixc != 0) { in recvrec_ack()
742 pbuf_len = rc->ixa - 5; in recvrec_ack()
743 pbuf = rc->in.vtable->decrypt(&rc->in.vtable, in recvrec_ack()
744 rc->record_type_in, rc->version_in, rc->ibuf + 5, &pbuf_len); in recvrec_ack()
746 br_ssl_engine_fail(rc, BR_ERR_BAD_MAC); in recvrec_ack()
749 rc->ixa = (size_t)(pbuf - rc->ibuf); in recvrec_ack()
750 rc->ixb = rc->ixa + pbuf_len; in recvrec_ack()
756 if (rc->ixa == rc->ixb) { in recvrec_ack()
757 make_ready_in(rc); in recvrec_ack()
763 br_ssl_engine_recvrec_finished(const br_ssl_engine_context *rc) in br_ssl_engine_recvrec_finished() argument
765 switch (rc->iomode) { in br_ssl_engine_recvrec_finished()
768 return rc->ixc == 0 || rc->ixa < 5; in br_ssl_engine_recvrec_finished()
775 recvpld_buf(const br_ssl_engine_context *rc, size_t *len) in recvpld_buf() argument
781 switch (rc->iomode) { in recvpld_buf()
784 *len = rc->ixb - rc->ixa; in recvpld_buf()
785 return (*len == 0) ? NULL : (rc->ibuf + rc->ixa); in recvpld_buf()
793 recvpld_ack(br_ssl_engine_context *rc, size_t len) in recvpld_ack() argument
795 rc->ixa += len; in recvpld_ack()
803 if (rc->ixa == rc->ixb) { in recvpld_ack()
804 if (rc->ixc == 0) { in recvpld_ack()
805 make_ready_in(rc); in recvpld_ack()
807 rc->ixa = rc->ixb = 5; in recvpld_ack()
813 sendpld_buf(const br_ssl_engine_context *rc, size_t *len) in sendpld_buf() argument
819 switch (rc->iomode) { in sendpld_buf()
822 *len = rc->oxb - rc->oxa; in sendpld_buf()
823 return (*len == 0) ? NULL : (rc->obuf + rc->oxa); in sendpld_buf()
839 sendpld_flush(br_ssl_engine_context *rc, int force) in sendpld_flush() argument
844 if (rc->oxa == rc->oxb) { in sendpld_flush()
847 xlen = rc->oxa - rc->oxc; in sendpld_flush()
851 buf = rc->out.vtable->encrypt(&rc->out.vtable, in sendpld_flush()
852 rc->record_type_out, rc->version_out, in sendpld_flush()
853 rc->obuf + rc->oxc, &xlen); in sendpld_flush()
854 rc->oxb = rc->oxa = (size_t)(buf - rc->obuf); in sendpld_flush()
855 rc->oxc = rc->oxa + xlen; in sendpld_flush()
859 sendpld_ack(br_ssl_engine_context *rc, size_t len) in sendpld_ack() argument
865 if (rc->iomode == BR_IO_INOUT && rc->ibuf == rc->obuf) { in sendpld_ack()
866 rc->iomode = BR_IO_OUT; in sendpld_ack()
868 rc->oxa += len; in sendpld_ack()
869 if (rc->oxa >= rc->oxb) { in sendpld_ack()
875 rc->oxb = rc->oxa + 1; in sendpld_ack()
876 sendpld_flush(rc, 0); in sendpld_ack()
881 sendrec_buf(const br_ssl_engine_context *rc, size_t *len) in sendrec_buf() argument
889 switch (rc->iomode) { in sendrec_buf()
892 if (rc->oxc > rc->oxa) { in sendrec_buf()
893 *len = rc->oxc - rc->oxa; in sendrec_buf()
894 return rc->obuf + rc->oxa; in sendrec_buf()
903 sendrec_ack(br_ssl_engine_context *rc, size_t len) in sendrec_ack() argument
905 rc->oxb = (rc->oxa += len); in sendrec_ack()
906 if (rc->oxa == rc->oxc) { in sendrec_ack()
907 make_ready_out(rc); in sendrec_ack()
916 has_rec_tosend(const br_ssl_engine_context *rc) in has_rec_tosend() argument
918 return rc->oxa == rc->oxb && rc->oxa != rc->oxc; in has_rec_tosend()