Submitted by: Robin Seggelmann <seggelmann@fh-muenster.de>

Make session tickets work with DTLS.
This commit is contained in:
Dr. Stephen Henson 2010-02-01 16:49:42 +00:00
parent 4e5fdd11ea
commit 868f5e44ca
3 changed files with 6 additions and 5 deletions

View File

@ -1525,9 +1525,10 @@ int dtls1_send_newsession_ticket(SSL *s)
p += hlen; p += hlen;
/* Now write out lengths: p points to end of data written */ /* Now write out lengths: p points to end of data written */
/* Total length */ /* Total length */
len = p - (unsigned char *)&(s->init_buf->data[DTLS1_HM_HEADER_LENGTH]); len = p - (unsigned char *)(s->init_buf->data);
/* Ticket length */
p=(unsigned char *)&(s->init_buf->data[DTLS1_HM_HEADER_LENGTH]) + 4; p=(unsigned char *)&(s->init_buf->data[DTLS1_HM_HEADER_LENGTH]) + 4;
s2n(len - 18, p); /* Ticket length */ s2n(len - DTLS1_HM_HEADER_LENGTH - 6, p);
/* number of bytes to write */ /* number of bytes to write */
s->init_num= len; s->init_num= len;

View File

@ -394,7 +394,7 @@ SSL_SESSION *d2i_SSL_SESSION(SSL_SESSION **a, const unsigned char **pp,
((unsigned long)os.data[1]<< 8L)| ((unsigned long)os.data[1]<< 8L)|
(unsigned long)os.data[2]; (unsigned long)os.data[2];
} }
else if ((ssl_version>>8) == SSL3_VERSION_MAJOR) else if ((ssl_version>>8) >= SSL3_VERSION_MAJOR)
{ {
if (os.length != 2) if (os.length != 2)
{ {
@ -415,7 +415,7 @@ SSL_SESSION *d2i_SSL_SESSION(SSL_SESSION **a, const unsigned char **pp,
ret->cipher_id=id; ret->cipher_id=id;
M_ASN1_D2I_get_x(ASN1_OCTET_STRING,osp,d2i_ASN1_OCTET_STRING); M_ASN1_D2I_get_x(ASN1_OCTET_STRING,osp,d2i_ASN1_OCTET_STRING);
if ((ssl_version>>8) == SSL3_VERSION_MAJOR) if ((ssl_version>>8) >= SSL3_VERSION_MAJOR)
i=SSL3_MAX_SSL_SESSION_ID_LENGTH; i=SSL3_MAX_SSL_SESSION_ID_LENGTH;
else /* if (ssl_version>>8 == SSL2_VERSION_MAJOR) */ else /* if (ssl_version>>8 == SSL2_VERSION_MAJOR) */
i=SSL2_MAX_SSL_SESSION_ID_LENGTH; i=SSL2_MAX_SSL_SESSION_ID_LENGTH;

View File

@ -538,7 +538,7 @@ int ssl_get_prev_session(SSL *s, unsigned char *session_id, int len,
p=buf; p=buf;
l=ret->cipher_id; l=ret->cipher_id;
l2n(l,p); l2n(l,p);
if ((ret->ssl_version>>8) == SSL3_VERSION_MAJOR) if ((ret->ssl_version>>8) >= SSL3_VERSION_MAJOR)
ret->cipher=ssl_get_cipher_by_char(s,&(buf[2])); ret->cipher=ssl_get_cipher_by_char(s,&(buf[2]));
else else
ret->cipher=ssl_get_cipher_by_char(s,&(buf[1])); ret->cipher=ssl_get_cipher_by_char(s,&(buf[1]));