Make truncated hmac a runtime option server-side
Reading the documentation of ssl_set_truncated_hmac() may give the impression I changed the default for clients but I didn't, the old documentation was wrong.
This commit is contained in:
parent
8e4b3374d7
commit
e117a8fc0d
6 changed files with 72 additions and 13 deletions
|
@ -109,6 +109,7 @@ int main( int argc, char *argv[] )
|
|||
#define DFL_MAX_VERSION -1
|
||||
#define DFL_AUTH_MODE SSL_VERIFY_OPTIONAL
|
||||
#define DFL_MFL_CODE SSL_MAX_FRAG_LEN_NONE
|
||||
#define DFL_TRUNC_HMAC -1
|
||||
#define DFL_TICKETS SSL_SESSION_TICKETS_ENABLED
|
||||
#define DFL_TICKET_TIMEOUT -1
|
||||
#define DFL_CACHE_MAX -1
|
||||
|
@ -171,6 +172,7 @@ struct options
|
|||
int max_version; /* maximum protocol version accepted */
|
||||
int auth_mode; /* verify mode for connection */
|
||||
unsigned char mfl_code; /* code for maximum fragment length */
|
||||
int trunc_hmac; /* accept truncated hmac? */
|
||||
int tickets; /* enable / disable session tickets */
|
||||
int ticket_timeout; /* session ticket lifetime */
|
||||
int cache_max; /* max number of session cache entries */
|
||||
|
@ -295,6 +297,13 @@ static int my_send( void *ctx, const unsigned char *buf, size_t len )
|
|||
#define USAGE_MAX_FRAG_LEN ""
|
||||
#endif /* POLARSSL_SSL_MAX_FRAGMENT_LENGTH */
|
||||
|
||||
#if defined(POLARSSL_SSL_TRUNCATED_HMAC)
|
||||
#define USAGE_TRUNC_HMAC \
|
||||
" trunc_hmac=%%d default: library default\n"
|
||||
#else
|
||||
#define USAGE_TRUNC_HMAC ""
|
||||
#endif
|
||||
|
||||
#if defined(POLARSSL_SSL_ALPN)
|
||||
#define USAGE_ALPN \
|
||||
" alpn=%%s default: \"\" (disabled)\n" \
|
||||
|
@ -341,6 +350,7 @@ static int my_send( void *ctx, const unsigned char *buf, size_t len )
|
|||
USAGE_TICKETS \
|
||||
USAGE_CACHE \
|
||||
USAGE_MAX_FRAG_LEN \
|
||||
USAGE_TRUNC_HMAC \
|
||||
USAGE_ALPN \
|
||||
USAGE_EMS \
|
||||
USAGE_ETM \
|
||||
|
@ -726,6 +736,7 @@ int main( int argc, char *argv[] )
|
|||
opt.max_version = DFL_MAX_VERSION;
|
||||
opt.auth_mode = DFL_AUTH_MODE;
|
||||
opt.mfl_code = DFL_MFL_CODE;
|
||||
opt.trunc_hmac = DFL_TRUNC_HMAC;
|
||||
opt.tickets = DFL_TICKETS;
|
||||
opt.ticket_timeout = DFL_TICKET_TIMEOUT;
|
||||
opt.cache_max = DFL_CACHE_MAX;
|
||||
|
@ -902,6 +913,15 @@ int main( int argc, char *argv[] )
|
|||
{
|
||||
opt.alpn_string = q;
|
||||
}
|
||||
else if( strcmp( p, "trunc_hmac" ) == 0 )
|
||||
{
|
||||
switch( atoi( q ) )
|
||||
{
|
||||
case 0: opt.trunc_hmac = SSL_TRUNC_HMAC_DISABLED; break;
|
||||
case 1: opt.trunc_hmac = SSL_TRUNC_HMAC_ENABLED; break;
|
||||
default: goto usage;
|
||||
}
|
||||
}
|
||||
else if( strcmp( p, "extended_ms" ) == 0 )
|
||||
{
|
||||
switch( atoi( q ) )
|
||||
|
@ -1297,6 +1317,11 @@ int main( int argc, char *argv[] )
|
|||
};
|
||||
#endif
|
||||
|
||||
#if defined(POLARSSL_SSL_TRUNCATED_HMAC)
|
||||
if( opt.trunc_hmac != DFL_TRUNC_HMAC )
|
||||
ssl_set_truncated_hmac( &ssl, opt.trunc_hmac );
|
||||
#endif
|
||||
|
||||
#if defined(POLARSSL_SSL_EXTENDED_MASTER_SECRET)
|
||||
if( opt.extended_ms != DFL_EXTENDED_MS )
|
||||
ssl_set_extended_master_secret( &ssl, opt.extended_ms );
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue