}
/* finds a certificate in the cert list that contains
- * common_name field similar to name
+ * common_name (or subjectAltName) field similar to name
*/
gnutls_cert *_gnutls_find_cert(gnutls_cert ** cert_list,
int cert_list_length, char *name)
for (i = 0; i < cert_list_length; i++) {
if (cert_list[i][0].cert_info.common_name[0] != 0) {
- if (strcmp(cert_list[i][0].cert_info.common_name, name) == 0) {
+ if (strcasecmp(cert_list[i][0].cert_info.common_name, name) == 0 || strcasecmp(cert_list[i][0].subjectAltName, name) == 0) {
cert = &cert_list[i][0];
break;
}
gnutls_init(&state, GNUTLS_CLIENT);
gnutls_set_protocol_priority( state, GNUTLS_TLS1, GNUTLS_SSL3, 0);
- gnutls_set_cipher_priority( state, GNUTLS_3DES_CBC, GNUTLS_RIJNDAEL_CBC, 0);
+ gnutls_set_cipher_priority( state, GNUTLS_ARCFOUR, GNUTLS_3DES_CBC, GNUTLS_RIJNDAEL_CBC, 0);
gnutls_set_compression_priority( state, GNUTLS_ZLIB, GNUTLS_NULL_COMPRESSION, 0);
gnutls_set_kx_priority( state, GNUTLS_KX_RSA, GNUTLS_KX_SRP, GNUTLS_KX_DH_ANON, 0);
gnutls_set_mac_priority( state, GNUTLS_MAC_SHA, GNUTLS_MAC_MD5, 0);
gnutls_set_cred( state, GNUTLS_SRP, cred);
gnutls_set_cred( state, GNUTLS_X509PKI, xcred);
-// gnutls_ext_set_dnsname( state, "localhost");
+/* This TLS extension may break old implementations.
+ *
+ * gnutls_ext_set_dnsname( state, "localhost");
+ */
ret = gnutls_handshake(sd, state);
gnutls_init(&state, GNUTLS_CLIENT);
gnutls_set_protocol_priority( state, GNUTLS_TLS1, GNUTLS_SSL3, 0);
- gnutls_set_cipher_priority( state, GNUTLS_3DES_CBC, GNUTLS_TWOFISH_CBC, GNUTLS_RIJNDAEL_CBC, 0);
+ gnutls_set_cipher_priority( state, GNUTLS_ARCFOUR, GNUTLS_3DES_CBC, GNUTLS_TWOFISH_CBC, GNUTLS_RIJNDAEL_CBC, 0);
gnutls_set_compression_priority( state, GNUTLS_NULL_COMPRESSION, 0);
gnutls_set_kx_priority( state, GNUTLS_KX_RSA, GNUTLS_KX_SRP, GNUTLS_KX_DH_ANON, 0);