Don't fail if the PSK identity doesn't match
authorMatt Caswell <matt@openssl.org>
Fri, 6 Jul 2018 08:16:51 +0000 (09:16 +0100)
committerMatt Caswell <matt@openssl.org>
Fri, 6 Jul 2018 22:38:53 +0000 (23:38 +0100)
In 1.1.0 s_server if the PSK identity doesn't match what we have then
a warning is printed and we continue the connection anyway. In 1.1.1,
if TLSv1.3 is used and the identity doesn't match then we abort the
connection. We should really be consistent with the old behaviour.

Reviewed-by: Rich Salz <rsalz@openssl.org>
(Merged from https://github.com/openssl/openssl/pull/6659)

apps/s_server.c

index 4e8a9e27bcc74c2fd6185546853679b278aedb5b..94c18266f73676152423de509667662921aa7dfc 100644 (file)
@@ -192,8 +192,11 @@ static int psk_find_session_cb(SSL *ssl, const unsigned char *identity,
     const SSL_CIPHER *cipher = NULL;
 
     if (strlen(psk_identity) != identity_len
     const SSL_CIPHER *cipher = NULL;
 
     if (strlen(psk_identity) != identity_len
-            || memcmp(psk_identity, identity, identity_len) != 0)
-        return 0;
+            || memcmp(psk_identity, identity, identity_len) != 0) {
+        BIO_printf(bio_s_out,
+                   "PSK warning: client identity not what we expected"
+                   " (got '%s' expected '%s')\n", identity, psk_identity);
+    }
 
     if (psksess != NULL) {
         SSL_SESSION_up_ref(psksess);
 
     if (psksess != NULL) {
         SSL_SESSION_up_ref(psksess);