diff options
author | Dr. Stephen Henson <steve@openssl.org> | 2010-02-01 16:48:40 +0000 |
---|---|---|
committer | Dr. Stephen Henson <steve@openssl.org> | 2010-02-01 16:48:40 +0000 |
commit | 0484ff5ec1356b66cb2680d62bca552511958912 (patch) | |
tree | d43461e6a31f42902c9b83d2e624da87ae4eed4b /ssl | |
parent | 4acc2fed6cb35b0feab476bea25cad984f37c68c (diff) |
PR: 2160
Submitted by: Robin Seggelmann <seggelmann@fh-muenster.de>
Make session tickets work with DTLS.
Diffstat (limited to 'ssl')
-rw-r--r-- | ssl/d1_srvr.c | 5 | ||||
-rw-r--r-- | ssl/ssl_asn1.c | 4 | ||||
-rw-r--r-- | ssl/ssl_sess.c | 2 |
3 files changed, 6 insertions, 5 deletions
diff --git a/ssl/d1_srvr.c b/ssl/d1_srvr.c index efff45bf5e..5b313664dd 100644 --- a/ssl/d1_srvr.c +++ b/ssl/d1_srvr.c @@ -1303,9 +1303,10 @@ int dtls1_send_newsession_ticket(SSL *s) p += hlen; /* Now write out lengths: p points to end of data written */ /* 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; - s2n(len - 18, p); /* Ticket length */ + s2n(len - DTLS1_HM_HEADER_LENGTH - 6, p); /* number of bytes to write */ s->init_num= len; diff --git a/ssl/ssl_asn1.c b/ssl/ssl_asn1.c index 1748e8b825..d82e47a14e 100644 --- a/ssl/ssl_asn1.c +++ b/ssl/ssl_asn1.c @@ -334,7 +334,7 @@ SSL_SESSION *d2i_SSL_SESSION(SSL_SESSION **a, const unsigned char **pp, ((unsigned long)os.data[1]<< 8L)| (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) { @@ -355,7 +355,7 @@ SSL_SESSION *d2i_SSL_SESSION(SSL_SESSION **a, const unsigned char **pp, ret->cipher_id=id; 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; else /* if (ssl_version>>8 == SSL2_VERSION_MAJOR) */ i=SSL2_MAX_SSL_SESSION_ID_LENGTH; diff --git a/ssl/ssl_sess.c b/ssl/ssl_sess.c index e6eeccdc5f..e7802e1d9e 100644 --- a/ssl/ssl_sess.c +++ b/ssl/ssl_sess.c @@ -423,7 +423,7 @@ int ssl_get_prev_session(SSL *s, unsigned char *session_id, int len, p=buf; l=ret->cipher_id; 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])); else ret->cipher=ssl_get_cipher_by_char(s,&(buf[1])); |