Lines Matching refs:s
125 static int have_handshake_fragment(SSL *s, int type, unsigned char *buf,
127 static int dtls1_record_replay_check(SSL *s, DTLS1_BITMAP *bitmap,
129 static void dtls1_record_bitmap_update(SSL *s, DTLS1_BITMAP *bitmap);
130 static DTLS1_BITMAP *dtls1_get_bitmap(SSL *s, SSL3_RECORD *rr,
133 static int dtls1_record_needs_buffering(SSL *s, SSL3_RECORD *rr,
136 static int dtls1_buffer_record(SSL *s, record_pqueue *q,
138 static int dtls1_process_record(SSL *s);
142 static void dtls1_clear_timeouts(SSL *s);
146 dtls1_copy_record(SSL *s, pitem *item) in dtls1_copy_record() argument
152 if (s->s3->rbuf.buf != NULL) in dtls1_copy_record()
153 OPENSSL_free(s->s3->rbuf.buf); in dtls1_copy_record()
155 s->packet = rdata->packet; in dtls1_copy_record()
156 s->packet_length = rdata->packet_length; in dtls1_copy_record()
157 memcpy(&(s->s3->rbuf), &(rdata->rbuf), sizeof(SSL3_BUFFER)); in dtls1_copy_record()
158 memcpy(&(s->s3->rrec), &(rdata->rrec), sizeof(SSL3_RECORD)); in dtls1_copy_record()
165 dtls1_buffer_record(SSL *s, record_pqueue *queue, PQ_64BIT priority) in dtls1_buffer_record() argument
181 rdata->packet = s->packet; in dtls1_buffer_record()
182 rdata->packet_length = s->packet_length; in dtls1_buffer_record()
183 memcpy(&(rdata->rbuf), &(s->s3->rbuf), sizeof(SSL3_BUFFER)); in dtls1_buffer_record()
184 memcpy(&(rdata->rrec), &(s->s3->rrec), sizeof(SSL3_RECORD)); in dtls1_buffer_record()
196 s->packet = NULL; in dtls1_buffer_record()
197 s->packet_length = 0; in dtls1_buffer_record()
198 memset(&(s->s3->rbuf), 0, sizeof(SSL3_BUFFER)); in dtls1_buffer_record()
199 memset(&(s->s3->rrec), 0, sizeof(SSL3_RECORD)); in dtls1_buffer_record()
201 if (!ssl3_setup_buffers(s)) in dtls1_buffer_record()
214 dtls1_retrieve_buffered_record(SSL *s, record_pqueue *queue) in dtls1_retrieve_buffered_record() argument
221 dtls1_copy_record(s, item); in dtls1_retrieve_buffered_record()
235 #define dtls1_get_unprocessed_record(s) \ argument
236 dtls1_retrieve_buffered_record((s), \
237 &((s)->d1->unprocessed_rcds))
240 #define dtls1_get_processed_record(s) \ argument
241 dtls1_retrieve_buffered_record((s), \
242 &((s)->d1->processed_rcds))
245 dtls1_process_buffered_records(SSL *s) in dtls1_process_buffered_records() argument
249 item = pqueue_peek(s->d1->unprocessed_rcds.q); in dtls1_process_buffered_records()
256 if (s->d1->unprocessed_rcds.epoch != s->d1->r_epoch) in dtls1_process_buffered_records()
260 while (pqueue_peek(s->d1->unprocessed_rcds.q)) in dtls1_process_buffered_records()
262 dtls1_get_unprocessed_record(s); in dtls1_process_buffered_records()
263 if ( ! dtls1_process_record(s)) in dtls1_process_buffered_records()
265 dtls1_buffer_record(s, &(s->d1->processed_rcds), in dtls1_process_buffered_records()
266 s->s3->rrec.seq_num); in dtls1_process_buffered_records()
272 s->d1->processed_rcds.epoch = s->d1->r_epoch; in dtls1_process_buffered_records()
273 s->d1->unprocessed_rcds.epoch = s->d1->r_epoch + 1; in dtls1_process_buffered_records()
282 dtls1_get_buffered_record(SSL *s)
286 (((PQ_64BIT)s->d1->handshake_read_seq) << 32) |
287 ((PQ_64BIT)s->d1->r_msg_hdr.frag_off);
289 if ( ! SSL_in_init(s)) /* if we're not (re)negotiating,
294 item = pqueue_peek(s->d1->rcvd_records);
301 item = pqueue_pop(s->d1->rcvd_records);
304 if (s->s3->rbuf.buf != NULL)
305 OPENSSL_free(s->s3->rbuf.buf);
307 s->packet = rdata->packet;
308 s->packet_length = rdata->packet_length;
309 memcpy(&(s->s3->rbuf), &(rdata->rbuf), sizeof(SSL3_BUFFER));
310 memcpy(&(s->s3->rrec), &(rdata->rrec), sizeof(SSL3_RECORD));
325 dtls1_process_record(SSL *s) in dtls1_process_record() argument
336 rr= &(s->s3->rrec); in dtls1_process_record()
337 sess = s->session; in dtls1_process_record()
342 rr->input= &(s->packet[DTLS1_RT_HEADER_LENGTH]); in dtls1_process_record()
365 enc_err = s->method->ssl3_enc->enc(s,0); in dtls1_process_record()
384 (s->enc_read_ctx == NULL) || in dtls1_process_record()
385 (s->read_hash == NULL)) in dtls1_process_record()
390 mac_size=EVP_MD_size(s->read_hash); in dtls1_process_record()
414 i=s->method->ssl3_enc->mac(s,md,0); in dtls1_process_record()
422 if (s->expand != NULL) in dtls1_process_record()
430 if (!ssl3_do_uncompress(s)) in dtls1_process_record()
455 s->packet_length=0; in dtls1_process_record()
456 dtls1_record_bitmap_update(s, &(s->d1->bitmap));/* Mark receipt of record. */ in dtls1_process_record()
468 ssl3_send_alert(s,SSL3_AL_FATAL,al); in dtls1_process_record()
483 int dtls1_get_record(SSL *s) in dtls1_get_record() argument
494 rr= &(s->s3->rrec); in dtls1_get_record()
495 sess=s->session; in dtls1_get_record()
499 if ( ! dtls1_process_buffered_records(s)) in dtls1_get_record()
503 if (dtls1_get_processed_record(s)) in dtls1_get_record()
509 if ( (s->rstate != SSL_ST_READ_BODY) || in dtls1_get_record()
510 (s->packet_length < DTLS1_RT_HEADER_LENGTH)) in dtls1_get_record()
512 n=ssl3_read_n(s, DTLS1_RT_HEADER_LENGTH, s->s3->rbuf.len, 0); in dtls1_get_record()
516 OPENSSL_assert(s->packet_length == DTLS1_RT_HEADER_LENGTH); in dtls1_get_record()
518 s->rstate=SSL_ST_READ_BODY; in dtls1_get_record()
520 p=s->packet; in dtls1_get_record()
531 memcpy(&(s->s3->read_sequence[2]), p, 6); in dtls1_get_record()
537 if (!s->first_packet) in dtls1_get_record()
539 if (version != s->version && version != DTLS1_BAD_VER) in dtls1_get_record()
544 s->version=version; in dtls1_get_record()
564 s->client_version = version; in dtls1_get_record()
570 if (rr->length > s->packet_length-DTLS1_RT_HEADER_LENGTH) in dtls1_get_record()
574 n=ssl3_read_n(s,i,i,1); in dtls1_get_record()
580 s->packet_length = 0; in dtls1_get_record()
587 s->rstate=SSL_ST_READ_HEADER; /* set state for later operations */ in dtls1_get_record()
590 bitmap = dtls1_get_bitmap(s, rr, &is_next_epoch); in dtls1_get_record()
593 s->packet_length = 0; /* dump this record */ in dtls1_get_record()
598 if ( ! dtls1_record_replay_check(s, bitmap, &(rr->seq_num))) in dtls1_get_record()
600 s->packet_length=0; /* dump this record */ in dtls1_get_record()
613 dtls1_record_bitmap_update(s, bitmap); in dtls1_get_record()
614 dtls1_buffer_record(s, &(s->d1->unprocessed_rcds), rr->seq_num); in dtls1_get_record()
615 s->packet_length = 0; in dtls1_get_record()
619 if ( ! dtls1_process_record(s)) in dtls1_get_record()
622 dtls1_clear_timeouts(s); /* done waiting */ in dtls1_get_record()
626 ssl3_send_alert(s,SSL3_AL_FATAL,al); in dtls1_get_record()
658 int dtls1_read_bytes(SSL *s, int type, unsigned char *buf, int len, int peek) in dtls1_read_bytes() argument
665 if (s->s3->rbuf.buf == NULL) /* Not initialized yet */ in dtls1_read_bytes()
666 if (!ssl3_setup_buffers(s)) in dtls1_read_bytes()
679 if ( (ret = have_handshake_fragment(s, type, buf, len, peek))) in dtls1_read_bytes()
684 if (!s->in_handshake && SSL_in_init(s)) in dtls1_read_bytes()
687 i=s->handshake_func(s); in dtls1_read_bytes()
697 s->rwstate=SSL_NOTHING; in dtls1_read_bytes()
703 rr = &(s->s3->rrec); in dtls1_read_bytes()
706 if ((rr->length == 0) || (s->rstate == SSL_ST_READ_BODY)) in dtls1_read_bytes()
708 ret=dtls1_get_record(s); in dtls1_read_bytes()
711 ret = dtls1_read_failed(s, ret); in dtls1_read_bytes()
722 if (s->s3->change_cipher_spec /* set when we receive ChangeCipherSpec, in dtls1_read_bytes()
733 if (s->shutdown & SSL_RECEIVED_SHUTDOWN) in dtls1_read_bytes()
736 s->rwstate=SSL_NOTHING; in dtls1_read_bytes()
745 if (SSL_in_init(s) && (type == SSL3_RT_APPLICATION_DATA) && in dtls1_read_bytes()
746 (s->enc_read_ctx == NULL)) in dtls1_read_bytes()
767 s->rstate=SSL_ST_READ_HEADER; in dtls1_read_bytes()
788 dest_maxlen = sizeof s->d1->handshake_fragment; in dtls1_read_bytes()
789 dest = s->d1->handshake_fragment; in dtls1_read_bytes()
790 dest_len = &s->d1->handshake_fragment_len; in dtls1_read_bytes()
794 dest_maxlen = sizeof(s->d1->alert_fragment); in dtls1_read_bytes()
795 dest = s->d1->alert_fragment; in dtls1_read_bytes()
796 dest_len = &s->d1->alert_fragment_len; in dtls1_read_bytes()
814 s->rstate=SSL_ST_READ_HEADER; in dtls1_read_bytes()
834 if ((!s->server) && in dtls1_read_bytes()
835 (s->d1->handshake_fragment_len >= DTLS1_HM_HEADER_LENGTH) && in dtls1_read_bytes()
836 (s->d1->handshake_fragment[0] == SSL3_MT_HELLO_REQUEST) && in dtls1_read_bytes()
837 (s->session != NULL) && (s->session->cipher != NULL)) in dtls1_read_bytes()
839 s->d1->handshake_fragment_len = 0; in dtls1_read_bytes()
841 if ((s->d1->handshake_fragment[1] != 0) || in dtls1_read_bytes()
842 (s->d1->handshake_fragment[2] != 0) || in dtls1_read_bytes()
843 (s->d1->handshake_fragment[3] != 0)) in dtls1_read_bytes()
852 if (s->msg_callback) in dtls1_read_bytes()
853 s->msg_callback(0, s->version, SSL3_RT_HANDSHAKE, in dtls1_read_bytes()
854 s->d1->handshake_fragment, 4, s, s->msg_callback_arg); in dtls1_read_bytes()
856 if (SSL_is_init_finished(s) && in dtls1_read_bytes()
857 !(s->s3->flags & SSL3_FLAGS_NO_RENEGOTIATE_CIPHERS) && in dtls1_read_bytes()
858 !s->s3->renegotiate) in dtls1_read_bytes()
860 ssl3_renegotiate(s); in dtls1_read_bytes()
861 if (ssl3_renegotiate_check(s)) in dtls1_read_bytes()
863 i=s->handshake_func(s); in dtls1_read_bytes()
871 if (!(s->mode & SSL_MODE_AUTO_RETRY)) in dtls1_read_bytes()
873 if (s->s3->rbuf.left == 0) /* no read-ahead left? */ in dtls1_read_bytes()
880 s->rwstate=SSL_READING; in dtls1_read_bytes()
881 bio=SSL_get_rbio(s); in dtls1_read_bytes()
894 if (s->d1->alert_fragment_len >= DTLS1_AL_HEADER_LENGTH) in dtls1_read_bytes()
896 int alert_level = s->d1->alert_fragment[0]; in dtls1_read_bytes()
897 int alert_descr = s->d1->alert_fragment[1]; in dtls1_read_bytes()
899 s->d1->alert_fragment_len = 0; in dtls1_read_bytes()
901 if (s->msg_callback) in dtls1_read_bytes()
902 s->msg_callback(0, s->version, SSL3_RT_ALERT, in dtls1_read_bytes()
903 s->d1->alert_fragment, 2, s, s->msg_callback_arg); in dtls1_read_bytes()
905 if (s->info_callback != NULL) in dtls1_read_bytes()
906 cb=s->info_callback; in dtls1_read_bytes()
907 else if (s->ctx->info_callback != NULL) in dtls1_read_bytes()
908 cb=s->ctx->info_callback; in dtls1_read_bytes()
913 cb(s, SSL_CB_READ_ALERT, j); in dtls1_read_bytes()
918 s->s3->warn_alert = alert_descr; in dtls1_read_bytes()
921 s->shutdown |= SSL_RECEIVED_SHUTDOWN; in dtls1_read_bytes()
931 unsigned char *p = &(s->d1->alert_fragment[2]); in dtls1_read_bytes()
936 dtls1_retransmit_message(s, seq, frag_off, &found); in dtls1_read_bytes()
937 if ( ! found && SSL_in_init(s)) in dtls1_read_bytes()
942 ssl3_send_alert(s,SSL3_AL_WARNING, in dtls1_read_bytes()
952 s->rwstate=SSL_NOTHING; in dtls1_read_bytes()
953 s->s3->fatal_alert = alert_descr; in dtls1_read_bytes()
957 s->shutdown|=SSL_RECEIVED_SHUTDOWN; in dtls1_read_bytes()
958 SSL_CTX_remove_session(s->ctx,s->session); in dtls1_read_bytes()
971 if (s->shutdown & SSL_SENT_SHUTDOWN) /* but we have not received a shutdown */ in dtls1_read_bytes()
973 s->rwstate=SSL_NOTHING; in dtls1_read_bytes()
987 if ( (s->client_version == DTLS1_BAD_VER && rr->length != 3) || in dtls1_read_bytes()
988 (s->client_version != DTLS1_BAD_VER && rr->length != DTLS1_CCS_HEADER_LENGTH) || in dtls1_read_bytes()
998 if (s->msg_callback) in dtls1_read_bytes()
999 s->msg_callback(0, s->version, SSL3_RT_CHANGE_CIPHER_SPEC, in dtls1_read_bytes()
1000 rr->data, 1, s, s->msg_callback_arg); in dtls1_read_bytes()
1002 s->s3->change_cipher_spec=1; in dtls1_read_bytes()
1003 if (!ssl3_do_change_cipher_spec(s)) in dtls1_read_bytes()
1007 dtls1_reset_seq_numbers(s, SSL3_CC_READ); in dtls1_read_bytes()
1009 if (s->client_version == DTLS1_BAD_VER) in dtls1_read_bytes()
1010 s->d1->handshake_read_seq++; in dtls1_read_bytes()
1016 if ((s->d1->handshake_fragment_len >= DTLS1_HM_HEADER_LENGTH) && in dtls1_read_bytes()
1017 !s->in_handshake) in dtls1_read_bytes()
1023 if( rr->epoch != s->d1->r_epoch) in dtls1_read_bytes()
1029 if (((s->state&SSL_ST_MASK) == SSL_ST_OK) && in dtls1_read_bytes()
1030 !(s->s3->flags & SSL3_FLAGS_NO_RENEGOTIATE_CIPHERS)) in dtls1_read_bytes()
1035 s->state=SSL_ST_BEFORE|(s->server) in dtls1_read_bytes()
1039 s->state = s->server ? SSL_ST_ACCEPT : SSL_ST_CONNECT; in dtls1_read_bytes()
1041 s->new_session=1; in dtls1_read_bytes()
1043 i=s->handshake_func(s); in dtls1_read_bytes()
1051 if (!(s->mode & SSL_MODE_AUTO_RETRY)) in dtls1_read_bytes()
1053 if (s->s3->rbuf.left == 0) /* no read-ahead left? */ in dtls1_read_bytes()
1060 s->rwstate=SSL_READING; in dtls1_read_bytes()
1061 bio=SSL_get_rbio(s); in dtls1_read_bytes()
1075 if (s->version == TLS1_VERSION) in dtls1_read_bytes()
1101 if (s->s3->in_read_app_data && in dtls1_read_bytes()
1102 (s->s3->total_renegotiations != 0) && in dtls1_read_bytes()
1104 (s->state & SSL_ST_CONNECT) && in dtls1_read_bytes()
1105 (s->state >= SSL3_ST_CW_CLNT_HELLO_A) && in dtls1_read_bytes()
1106 (s->state <= SSL3_ST_CR_SRVR_HELLO_A) in dtls1_read_bytes()
1108 (s->state & SSL_ST_ACCEPT) && in dtls1_read_bytes()
1109 (s->state <= SSL3_ST_SW_HELLO_REQ_A) && in dtls1_read_bytes()
1110 (s->state >= SSL3_ST_SR_CLNT_HELLO_A) in dtls1_read_bytes()
1114 s->s3->in_read_app_data=2; in dtls1_read_bytes()
1127 ssl3_send_alert(s,SSL3_AL_FATAL,al); in dtls1_read_bytes()
1133 dtls1_write_app_data_bytes(SSL *s, int type, const void *buf_, int len) in dtls1_write_app_data_bytes() argument
1138 if (SSL_in_init(s) && !s->in_handshake) in dtls1_write_app_data_bytes()
1140 i=s->handshake_func(s); in dtls1_write_app_data_bytes()
1149 tot = s->s3->wnum; in dtls1_write_app_data_bytes()
1156 i = dtls1_write_bytes(s, type, buf_, len); in dtls1_write_app_data_bytes()
1161 (s->mode & SSL_MODE_ENABLE_PARTIAL_WRITE))) in dtls1_write_app_data_bytes()
1165 s->s3->empty_fragment_done = 0; in dtls1_write_app_data_bytes()
1180 have_handshake_fragment(SSL *s, int type, unsigned char *buf, in have_handshake_fragment() argument
1184 if ((type == SSL3_RT_HANDSHAKE) && (s->d1->handshake_fragment_len > 0)) in have_handshake_fragment()
1187 unsigned char *src = s->d1->handshake_fragment; in have_handshake_fragment()
1193 while ((len > 0) && (s->d1->handshake_fragment_len > 0)) in have_handshake_fragment()
1196 len--; s->d1->handshake_fragment_len--; in have_handshake_fragment()
1200 for (k = 0; k < s->d1->handshake_fragment_len; k++) in have_handshake_fragment()
1201 s->d1->handshake_fragment[k] = *src++; in have_handshake_fragment()
1214 int dtls1_write_bytes(SSL *s, int type, const void *buf_, int len) in dtls1_write_bytes() argument
1221 s->rwstate=SSL_NOTHING; in dtls1_write_bytes()
1222 tot=s->s3->wnum; in dtls1_write_bytes()
1229 mtu = BIO_ctrl(SSL_get_wbio(s), BIO_CTRL_DGRAM_GET_MTU, 0, NULL); in dtls1_write_bytes()
1232 mtu = s->d1->mtu; in dtls1_write_bytes()
1242 i=do_dtls1_write(s, type, &(buf[tot]), nw, 0); in dtls1_write_bytes()
1245 s->s3->wnum=tot; in dtls1_write_bytes()
1249 if ( (int)s->s3->wnum + i == len) in dtls1_write_bytes()
1250 s->s3->wnum = 0; in dtls1_write_bytes()
1252 s->s3->wnum += i; in dtls1_write_bytes()
1257 int do_dtls1_write(SSL *s, int type, const unsigned char *buf, unsigned int len, int create_empty_f… in do_dtls1_write() argument
1269 if (s->s3->wbuf.left != 0) in do_dtls1_write()
1272 return(ssl3_write_pending(s,type,buf,len)); in do_dtls1_write()
1276 if (s->s3->alert_dispatch) in do_dtls1_write()
1278 i=s->method->ssl_dispatch_alert(s); in do_dtls1_write()
1287 wr= &(s->s3->wrec); in do_dtls1_write()
1288 wb= &(s->s3->wbuf); in do_dtls1_write()
1289 sess=s->session; in do_dtls1_write()
1292 (s->enc_write_ctx == NULL) || in do_dtls1_write()
1293 (s->write_hash == NULL)) in do_dtls1_write()
1299 mac_size=EVP_MD_size(s->write_hash); in do_dtls1_write()
1304 if (!clear && !create_empty_fragment && !s->s3->empty_fragment_done in do_dtls1_write()
1305 && SSL_version(s) != DTLS1_VERSION) in do_dtls1_write()
1311 if (s->s3->need_empty_fragments && type == SSL3_RT_APPLICATION_DATA) in do_dtls1_write()
1317 prefix_len = s->method->do_ssl_write(s, type, buf, 0, 1); in do_dtls1_write()
1321 if (s->s3->wbuf.len < (size_t)prefix_len + SSL3_RT_MAX_PACKET_SIZE) in do_dtls1_write()
1329 s->s3->empty_fragment_done = 1; in do_dtls1_write()
1340 if (s->client_version == DTLS1_BAD_VER) in do_dtls1_write()
1344 *(p++)=(s->version>>8), in do_dtls1_write()
1345 *(p++)=s->version&0xff; in do_dtls1_write()
1356 if ( s->enc_write_ctx && in do_dtls1_write()
1357 (EVP_CIPHER_mode( s->enc_write_ctx->cipher ) & EVP_CIPH_CBC_MODE)) in do_dtls1_write()
1358 bs = EVP_CIPHER_block_size(s->enc_write_ctx->cipher); in do_dtls1_write()
1370 if (s->compress != NULL) in do_dtls1_write()
1372 if (!ssl3_do_compress(s)) in do_dtls1_write()
1390 s->method->ssl3_enc->mac(s,&(p[wr->length + bs]),1); in do_dtls1_write()
1408 s->method->ssl3_enc->enc(s,1); in do_dtls1_write()
1416 s2n(s->d1->w_epoch, pseq); in do_dtls1_write()
1422 memcpy(pseq, &(s->s3->write_sequence[2]), 6); in do_dtls1_write()
1435 dtls1_buffer_record(s, wr->data, wr->length, in do_dtls1_write()
1436 *((PQ_64BIT *)&(s->s3->write_sequence[0]))); in do_dtls1_write()
1439 ssl3_record_sequence_update(&(s->s3->write_sequence[0])); in do_dtls1_write()
1454 s->s3->wpend_tot=len; in do_dtls1_write()
1455 s->s3->wpend_buf=buf; in do_dtls1_write()
1456 s->s3->wpend_type=type; in do_dtls1_write()
1457 s->s3->wpend_ret=len; in do_dtls1_write()
1460 return ssl3_write_pending(s,type,buf,len); in do_dtls1_write()
1467 static int dtls1_record_replay_check(SSL *s, DTLS1_BITMAP *bitmap, in dtls1_record_replay_check() argument
1479 pq_64bit_bin2num(&rcd_num, s->s3->read_sequence, 8); in dtls1_record_replay_check()
1526 static void dtls1_record_bitmap_update(SSL *s, DTLS1_BITMAP *bitmap) in dtls1_record_bitmap_update() argument
1536 pq_64bit_bin2num(&rcd_num, s->s3->read_sequence, 8); in dtls1_record_bitmap_update()
1575 int dtls1_dispatch_alert(SSL *s) in dtls1_dispatch_alert() argument
1582 s->s3->alert_dispatch=0; in dtls1_dispatch_alert()
1585 *ptr++ = s->s3->send_alert[0]; in dtls1_dispatch_alert()
1586 *ptr++ = s->s3->send_alert[1]; in dtls1_dispatch_alert()
1588 if (s->s3->send_alert[1] == DTLS1_AD_MISSING_HANDSHAKE_MESSAGE) in dtls1_dispatch_alert()
1590 s2n(s->d1->handshake_read_seq, ptr); in dtls1_dispatch_alert()
1592 if ( s->d1->r_msg_hdr.frag_off == 0) /* waiting for a new msg */ in dtls1_dispatch_alert()
1595 s2n(s->d1->r_msg_hdr.seq, ptr); /* partial msg read */ in dtls1_dispatch_alert()
1599 … "s->d1->handshake_read_seq = %d, s->d1->r_msg_hdr.seq = %d\n",s->d1->handshake_read_seq,s->d1->r_… in dtls1_dispatch_alert()
1601 l2n3(s->d1->r_msg_hdr.frag_off, ptr); in dtls1_dispatch_alert()
1604 i = do_dtls1_write(s, SSL3_RT_ALERT, &buf[0], sizeof(buf), 0); in dtls1_dispatch_alert()
1607 s->s3->alert_dispatch=1; in dtls1_dispatch_alert()
1612 if ( s->s3->send_alert[0] == SSL3_AL_FATAL || in dtls1_dispatch_alert()
1613 s->s3->send_alert[1] == DTLS1_AD_MISSING_HANDSHAKE_MESSAGE) in dtls1_dispatch_alert()
1614 (void)BIO_flush(s->wbio); in dtls1_dispatch_alert()
1616 if (s->msg_callback) in dtls1_dispatch_alert()
1617 s->msg_callback(1, s->version, SSL3_RT_ALERT, s->s3->send_alert, in dtls1_dispatch_alert()
1618 2, s, s->msg_callback_arg); in dtls1_dispatch_alert()
1620 if (s->info_callback != NULL) in dtls1_dispatch_alert()
1621 cb=s->info_callback; in dtls1_dispatch_alert()
1622 else if (s->ctx->info_callback != NULL) in dtls1_dispatch_alert()
1623 cb=s->ctx->info_callback; in dtls1_dispatch_alert()
1627 j=(s->s3->send_alert[0]<<8)|s->s3->send_alert[1]; in dtls1_dispatch_alert()
1628 cb(s,SSL_CB_WRITE_ALERT,j); in dtls1_dispatch_alert()
1636 dtls1_get_bitmap(SSL *s, SSL3_RECORD *rr, unsigned int *is_next_epoch) in dtls1_get_bitmap() argument
1642 if (rr->epoch == s->d1->r_epoch) in dtls1_get_bitmap()
1643 return &s->d1->bitmap; in dtls1_get_bitmap()
1646 else if (rr->epoch == (unsigned long)(s->d1->r_epoch + 1) && in dtls1_get_bitmap()
1651 return &s->d1->next_bitmap; in dtls1_get_bitmap()
1659 dtls1_record_needs_buffering(SSL *s, SSL3_RECORD *rr, unsigned short *priority,
1671 if ( SSL_in_init(s))
1698 if ( seq_num < s->d1->handshake_read_seq)
1701 seq_num == s->d1->handshake_read_seq &&
1702 msg_hdr.frag_off < s->d1->r_msg_hdr.frag_off)
1704 else if ( seq_num == s->d1->handshake_read_seq &&
1706 msg_hdr.frag_off == s->d1->r_msg_hdr.frag_off))
1723 dtls1_reset_seq_numbers(SSL *s, int rw) in dtls1_reset_seq_numbers() argument
1726 unsigned int seq_bytes = sizeof(s->s3->read_sequence); in dtls1_reset_seq_numbers()
1730 seq = s->s3->read_sequence; in dtls1_reset_seq_numbers()
1731 s->d1->r_epoch++; in dtls1_reset_seq_numbers()
1733 pq_64bit_assign(&(s->d1->bitmap.map), &(s->d1->next_bitmap.map)); in dtls1_reset_seq_numbers()
1734 s->d1->bitmap.length = s->d1->next_bitmap.length; in dtls1_reset_seq_numbers()
1735 pq_64bit_assign(&(s->d1->bitmap.max_seq_num), in dtls1_reset_seq_numbers()
1736 &(s->d1->next_bitmap.max_seq_num)); in dtls1_reset_seq_numbers()
1738 pq_64bit_free(&(s->d1->next_bitmap.map)); in dtls1_reset_seq_numbers()
1739 pq_64bit_free(&(s->d1->next_bitmap.max_seq_num)); in dtls1_reset_seq_numbers()
1740 memset(&(s->d1->next_bitmap), 0x00, sizeof(DTLS1_BITMAP)); in dtls1_reset_seq_numbers()
1741 pq_64bit_init(&(s->d1->next_bitmap.map)); in dtls1_reset_seq_numbers()
1742 pq_64bit_init(&(s->d1->next_bitmap.max_seq_num)); in dtls1_reset_seq_numbers()
1746 seq = s->s3->write_sequence; in dtls1_reset_seq_numbers()
1747 s->d1->w_epoch++; in dtls1_reset_seq_numbers()
1775 dtls1_clear_timeouts(SSL *s) in dtls1_clear_timeouts() argument
1777 memset(&(s->d1->timeout), 0x00, sizeof(struct dtls1_timeout_st)); in dtls1_clear_timeouts()