@ -155,9 +155,6 @@ qcrypto_tls_session_pull(void *opaque, void *buf, size_t len)
}
}
# define TLS_PRIORITY_ADDITIONAL_ANON "+ANON-DH"
# define TLS_PRIORITY_ADDITIONAL_PSK "+ECDHE-PSK:+DHE-PSK:+PSK"
QCryptoTLSSession *
qcrypto_tls_session_new ( QCryptoTLSCreds * creds ,
const char * hostname ,
@ -167,6 +164,7 @@ qcrypto_tls_session_new(QCryptoTLSCreds *creds,
{
QCryptoTLSSession * session ;
int ret ;
g_autofree char * prio = NULL ;
session = g_new0 ( QCryptoTLSSession , 1 ) ;
trace_qcrypto_tls_session_new (
@ -200,28 +198,17 @@ qcrypto_tls_session_new(QCryptoTLSCreds *creds,
goto error ;
}
prio = qcrypto_tls_creds_get_priority ( creds ) ;
ret = gnutls_priority_set_direct ( session - > handle , prio , NULL ) ;
if ( ret < 0 ) {
error_setg ( errp , " Unable to set TLS session priority %s: %s " ,
prio , gnutls_strerror ( ret ) ) ;
goto error ;
}
if ( object_dynamic_cast ( OBJECT ( creds ) ,
TYPE_QCRYPTO_TLS_CREDS_ANON ) ) {
QCryptoTLSCredsAnon * acreds = QCRYPTO_TLS_CREDS_ANON ( creds ) ;
char * prio ;
if ( creds - > priority ! = NULL ) {
prio = g_strdup_printf ( " %s:%s " ,
creds - > priority ,
TLS_PRIORITY_ADDITIONAL_ANON ) ;
} else {
prio = g_strdup ( CONFIG_TLS_PRIORITY " : "
TLS_PRIORITY_ADDITIONAL_ANON ) ;
}
ret = gnutls_priority_set_direct ( session - > handle , prio , NULL ) ;
if ( ret < 0 ) {
error_setg ( errp , " Unable to set TLS session priority %s: %s " ,
prio , gnutls_strerror ( ret ) ) ;
g_free ( prio ) ;
goto error ;
}
g_free ( prio ) ;
if ( creds - > endpoint = = QCRYPTO_TLS_CREDS_ENDPOINT_SERVER ) {
ret = gnutls_credentials_set ( session - > handle ,
GNUTLS_CRD_ANON ,
@ -239,25 +226,6 @@ qcrypto_tls_session_new(QCryptoTLSCreds *creds,
} else if ( object_dynamic_cast ( OBJECT ( creds ) ,
TYPE_QCRYPTO_TLS_CREDS_PSK ) ) {
QCryptoTLSCredsPSK * pcreds = QCRYPTO_TLS_CREDS_PSK ( creds ) ;
char * prio ;
if ( creds - > priority ! = NULL ) {
prio = g_strdup_printf ( " %s:%s " ,
creds - > priority ,
TLS_PRIORITY_ADDITIONAL_PSK ) ;
} else {
prio = g_strdup ( CONFIG_TLS_PRIORITY " : "
TLS_PRIORITY_ADDITIONAL_PSK ) ;
}
ret = gnutls_priority_set_direct ( session - > handle , prio , NULL ) ;
if ( ret < 0 ) {
error_setg ( errp , " Unable to set TLS session priority %s: %s " ,
prio , gnutls_strerror ( ret ) ) ;
g_free ( prio ) ;
goto error ;
}
g_free ( prio ) ;
if ( creds - > endpoint = = QCRYPTO_TLS_CREDS_ENDPOINT_SERVER ) {
ret = gnutls_credentials_set ( session - > handle ,
GNUTLS_CRD_PSK ,
@ -275,17 +243,7 @@ qcrypto_tls_session_new(QCryptoTLSCreds *creds,
} else if ( object_dynamic_cast ( OBJECT ( creds ) ,
TYPE_QCRYPTO_TLS_CREDS_X509 ) ) {
QCryptoTLSCredsX509 * tcreds = QCRYPTO_TLS_CREDS_X509 ( creds ) ;
const char * prio = creds - > priority ;
if ( ! prio ) {
prio = CONFIG_TLS_PRIORITY ;
}
ret = gnutls_priority_set_direct ( session - > handle , prio , NULL ) ;
if ( ret < 0 ) {
error_setg ( errp , " Cannot set default TLS session priority %s: %s " ,
prio , gnutls_strerror ( ret ) ) ;
goto error ;
}
ret = gnutls_credentials_set ( session - > handle ,
GNUTLS_CRD_CERTIFICATE ,
tcreds - > data ) ;