Skip to content

Commit

Permalink
Provide the API functions SSL_SESSION_has_ticket and
Browse files Browse the repository at this point in the history
SSL_SESSION_get_ticket_lifetime_hint. The latter has been reported as
required to fix Qt for OpenSSL 1.1.0. I have also added the former in order
to determine whether a ticket is present or not - otherwise it is difficult
to know whether a zero lifetime hint is because the server set it to 0, or
because there is no ticket.

Reviewed-by: Tim Hudson <tjh@openssl.org>
  • Loading branch information
mattcaswell committed Feb 10, 2015
1 parent 75ea363 commit f2baac2
Show file tree
Hide file tree
Showing 3 changed files with 46 additions and 0 deletions.
34 changes: 34 additions & 0 deletions doc/ssl/SSL_SESSION_has_ticket.pod
Original file line number Diff line number Diff line change
@@ -0,0 +1,34 @@
=pod

=head1 NAME

SSL_SESSION_has_ticket, SSL_SESSION_get_ticket_lifetime_hint - check whether a session has an associated ticket, and get its lifetime hint.

=head1 SYNOPSIS

#include <openssl/ssl.h>

int SSL_SESSION_has_ticket(const SSL_SESSION *s);
unsigned long SSL_SESSION_get_ticket_lifetime_hint(const SSL_SESSION *s);

=head1 DESCRIPTION

SSL_SESSION_has_ticket() returns 1 if there is a Session Ticket associated with
this session, and 0 otherwise.

SSL_SESSION_get_ticket_lifetime_hint returns the lifetime hint in seconds
associated with the session ticket.

=head1 SEE ALSO

L<ssl(3)|ssl(3)>,
L<d2i_SSL_SESSION(3)|d2i_SSL_SESSION(3)>,
L<SSL_SESSION_get_time(3)|SSL_SESSION_get_time(3)>,
L<SSL_SESSION_free(3)|SSL_SESSION_free(3)>

=head1 HISTORY

SSL_SESSION_has_ticket and SSL_SESSION_get_ticket_lifetime_hint were added in
OpenSSL 1.1.0.

=cut
2 changes: 2 additions & 0 deletions ssl/ssl.h
Original file line number Diff line number Diff line change
Expand Up @@ -1460,6 +1460,8 @@ long SSL_SESSION_get_time(const SSL_SESSION *s);
long SSL_SESSION_set_time(SSL_SESSION *s, long t);
long SSL_SESSION_get_timeout(const SSL_SESSION *s);
long SSL_SESSION_set_timeout(SSL_SESSION *s, long t);
int SSL_SESSION_has_ticket(const SSL_SESSION *s);
unsigned long SSL_SESSION_get_ticket_lifetime_hint(const SSL_SESSION *s);
void SSL_copy_session_id(SSL *to, const SSL *from);
X509 *SSL_SESSION_get0_peer(SSL_SESSION *s);
int SSL_SESSION_set1_id_context(SSL_SESSION *s, const unsigned char *sid_ctx,
Expand Down
10 changes: 10 additions & 0 deletions ssl/ssl_sess.c
Original file line number Diff line number Diff line change
Expand Up @@ -848,6 +848,16 @@ long SSL_SESSION_set_time(SSL_SESSION *s, long t)
return (t);
}

int SSL_SESSION_has_ticket(const SSL_SESSION *s)
{
return (s->tlsext_ticklen > 0) ? 1 : 0;
}

unsigned long SSL_SESSION_get_ticket_lifetime_hint(const SSL_SESSION *s)
{
return s->tlsext_tick_lifetime_hint;
}

X509 *SSL_SESSION_get0_peer(SSL_SESSION *s)
{
return s->peer;
Expand Down

0 comments on commit f2baac2

Please sign in to comment.