Blob Blame History Raw

<!DOCTYPE html>
<html lang='en'>
<head>
    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/>
    <title>Tree - rpms/java-11-openjdk - src.fedoraproject.org</title>
        <link rel="shortcut icon" type="image/vnd.microsoft.icon"
        href="/theme/static/favicon.ico?version=5.8.1"/>
    <link href="/theme/static/fedora-bootstrap-1.3.0/fedora-bootstrap.min.css?version=5.8.1"
        type="text/css" rel="stylesheet" />
    <link href="/theme/static/fonts/fonts.css?version=5.8.1"
        rel="stylesheet" type="text/css" />
    <link href="/theme/static/fonts/hack_fonts/css/hack-extended.min.css?version=5.8.1"
        type="text/css" rel="stylesheet" />
    <link href="/theme/static/theme.css?version=5.8.1"
        type="text/css" rel="stylesheet" />

    <link type="text/css" rel="stylesheet" nonce="nxj3waVrXu0uApedibTzBvT7F" href="/static/vendor/font-awesome/font-awesome.css?version=5.8.1"/>
    <link type="text/css" rel="stylesheet" nonce="nxj3waVrXu0uApedibTzBvT7F" href="/static/pagure.css?version=5.8.1"/>
<link nonce="nxj3waVrXu0uApedibTzBvT7F" rel="stylesheet" href="/static/vendor/highlight.js/styles/github.css?version=5.8.1"/>
<link nonce="nxj3waVrXu0uApedibTzBvT7F" rel="stylesheet" href="/static/vendor/highlightjs-line-numbers/highlightjs-line-numbers.min.css?version=5.8.1"/>
<style nonce="nxj3waVrXu0uApedibTzBvT7F">
  .hljs {
    background: #fff;
  }
</style>
  </head>
  <body id="home">
    
    <!-- start masthead -->
    <nav class="navbar navbar-light masthead p-0 navbar-expand">
      <div class="container">
        <a href="/" class="navbar-brand">
        <img height=40px src="/theme/static/pagure-logo.png?version=5.8.1"
             alt="pagure Logo" id="pagureLogo"/>
        </a>
        <ul class="navbar-nav ml-auto">
          <li class="nav-item">
            <a class="btn btn-primary" href="/login/?next=https://src.fedoraproject.org/rpms/java-11-openjdk/blob/master/f/jdk8236039-status_request_extension.patch">Log In</a>
          </li>
        </ul>
      </div>
    </nav>
    <!-- close masthead-->

    <div class="bodycontent">


<div class="bg-light border border-bottom pt-3">
  <div class="container">
    <div class="row mb-3">
      <div class="col-6">
        <div class="row">
        <div class="col-auto pr-0">
            <h3>
<i class="fa fa-archive text-muted"></i></h3>
        </div>
        <div class="col-auto pl-2">
            <h3 class="mb-0">
<a href="/projects/rpms/%2A">rpms</a>&nbsp;/&nbsp;<a href="/rpms/java-11-openjdk"><strong>java-11-openjdk</strong></a>
            </h3>
        </div>
        </div>
      </div>
      <div class="col-6 text-right">
        <div class="btn-group">
        <div class="btn-group">
        <a href="#"
            class="btn btn-sm dropdown-toggle btn-outline-primary"
            data-toggle="dropdown" id="watch-button">
          <i class="fa fa-clone fa-fw"></i>
          <span>Clone</span>
        </a>
        <div class="dropdown-menu dropdown-menu-right">
          <div class="m-3" id="source-dropdown" class="pointer">
            <div>
              <h5><strong>Source Code</strong></h5>

              <div class="form-group">
                <div class="input-group input-group-sm">
                  <div class="input-group-prepend"><span class="input-group-text">GIT</span></div>
                  <input class="form-control bg-white select-on-focus" type="text" value="https://src.fedoraproject.org/rpms/java-11-openjdk.git" readonly>
                </div>
              </div>
            </div>
          </div>
        </div>

      </div>
    </div>
  </div>
</div>

<ul class="nav nav-tabs nav-small border-bottom-0">
  <li class="nav-item mr-2 text-dark">
    <a class="nav-link active" href="/rpms/java-11-openjdk">
        <i class="fa fa-code fa-fw text-muted"></i>
        <span class="d-none d-md-inline">Source</span>
    </a>
  </li>

    <li class="nav-item mr-2 text-dark">
        <a class="nav-link" href="https://bugzilla.redhat.com/buglist.cgi?bug_status=NEW&bug_status=ASSIGNED&classification=Fedora&product=Fedora&component=java-11-openjdk">
          <i class="fa fa-fw text-muted fa-exclamation-circle"></i>
          <span class="d-none d-md-inline">Issues&nbsp;</span>
          <span class="fa fa-external-link"></span>
        </a>
    </li>

    <li class="nav-item mr-2 text-dark">
      <a class="nav-link" href="/rpms/java-11-openjdk/pull-requests">
          <i class="fa fa-fw text-muted fa-arrow-circle-down"></i>
          <span class="d-none d-md-inline">Pull Requests&nbsp;</span>
          <span class="badge badge-secondary py-0 d-none d-md-inline">
            3
          </span>
      </a>
    </li>


    <li class="nav-item mr-2 text-dark">
      <a class="nav-link" href="/rpms/java-11-openjdk/stats">
          <i class="fa fa-line-chart fa-fw text-muted"></i>
          <span class="d-none d-md-inline">Stats</span>
      </a>
    </li>


</ul>
  </div>
</div>

<div class="container pt-5 repo-body-container">
  <div class="row">
    <div class="col-2">
<nav class="nav nav-tabs nav-sidetabs flex-column">
  <a class=
      "nav-link nowrap
"
      href="/rpms/java-11-openjdk">
      <i class="fa fa-home text-muted fa-fw"></i>&nbsp;<span class="d-none d-md-inline">Overview</span>
  </a>
  <a class=
    "nav-link nowrap
 active"
    href="/rpms/java-11-openjdk/tree/master">
    <i class="fa fa-file-code-o text-muted fa-fw"></i>&nbsp;Files
  </a>
  <a class=
    "nav-link nowrap
"
    href="/rpms/java-11-openjdk/commits/master">
    <i class="fa fa-list-alt text-muted fa-fw" data-glyph="spreadsheet"></i>&nbsp;Commits
  </a>
  <a class=
    "nav-link nowrap
"
    href="/rpms/java-11-openjdk/branches?branchname=master">
    <i class="fa fa-random text-muted fa-fw"></i>&nbsp;Branches
  </a>
  <a class=
    "nav-link nowrap
"
    href="/rpms/java-11-openjdk/forks">
    <i class="fa fa-code-fork text-muted fa-fw"></i>&nbsp;Forks
  </a>
  <a class=
    "nav-link nowrap
"
    href="/rpms/java-11-openjdk/releases">
    <i class="fa fa-tags text-muted fa-fw"></i>&nbsp;Releases
  </a>

  <div class="col-xs-2 line-height-1"></div>
  <p>Monitoring status:</p>
  <div class="btn-group">
    <button title="Monitoring status" class="btn btn-sm btn-outline-primary disabled"
        id="monitoring-button">
      <i id="monitoring-icon" class="fa fa-fw fa-eye"></i>
      <span id="monitoring-label" class="fa fa-circle-o-notch fa-spin fa-1x fa-fw"></span>
    </button>
  </div>


  <script type="text/javascript" nonce="nxj3waVrXu0uApedibTzBvT7F">
    window.addEventListener('load', function() {

      set_up_monitoring = function(status){
        var _label = "Disabled"
        if (status === "monitoring") {
          _label = "Monitoring";
          $("#monitoring-icon").attr("class", "fa fa-fw fa-eye")
        } else if (status === "monitoring-with-scratch") {
          _label = "Scratch builds"
          $("#monitoring-icon").attr("class", "fa fa-fw fa-eye")
        } else {
          $("#monitoring-icon").attr("class", "fa fa-fw fa-eye-slash")
        }

        $("#monitoring-label").text(_label);
        $("#monitoring-label").removeClass("fa fa-circle-o-notch fa-spin fa-1x fa-fw");
      }

      $.ajax({
        url: "/_dg/anitya/rpms/java-11-openjdk",
        type: 'GET',
        dataType: 'json',
        success: function(res) {
          console.log(res);
          set_up_monitoring(res.monitoring)
        }
      });



    });
  </script>

</nav>    </div>
    <div class="col-10">
  <div class="row mb-1">
    <div class="col-sm-6">
    <h3>
      Files
    </h3>
    </div>

    <div class="col-sm-6">
      <div class="float-right">
          <div class="btn-group">
            <a href="#" class="btn btn-outline-light border-secondary text-dark btn-sm dropdown-toggle"
                    data-toggle="dropdown" aria-haspopup="true" aria-expanded="false">
                    <span class="fa fa-random fa-fw"></span> Branch: <span class="font-weight-bold">master</span>
          </a>
            <div class="dropdown-menu dropdown-menu-right">
                  <a class="dropdown-item pl-1 " href="/rpms/java-11-openjdk/tree/cups-libs">
                      <span class="fa fa-random fa-fw"></span> <span class="">cups-libs</span>
                  </a>
                  <a class="dropdown-item pl-1 " href="/rpms/java-11-openjdk/tree/f27">
                      <span class="fa fa-random fa-fw"></span> <span class="">f27</span>
                  </a>
                  <a class="dropdown-item pl-1 " href="/rpms/java-11-openjdk/tree/f28">
                      <span class="fa fa-random fa-fw"></span> <span class="">f28</span>
                  </a>
                  <a class="dropdown-item pl-1 " href="/rpms/java-11-openjdk/tree/f29">
                      <span class="fa fa-random fa-fw"></span> <span class="">f29</span>
                  </a>
                  <a class="dropdown-item pl-1 " href="/rpms/java-11-openjdk/tree/f30">
                      <span class="fa fa-random fa-fw"></span> <span class="">f30</span>
                  </a>
                  <a class="dropdown-item pl-1 " href="/rpms/java-11-openjdk/tree/f31">
                      <span class="fa fa-random fa-fw"></span> <span class="">f31</span>
                  </a>
                  <a class="dropdown-item pl-1 " href="/rpms/java-11-openjdk/tree/f32">
                      <span class="fa fa-random fa-fw"></span> <span class="">f32</span>
                  </a>
                  <a class="dropdown-item pl-1 active" href="/rpms/java-11-openjdk/tree/master">
                      <span class="fa fa-random fa-fw"></span> <span class="font-weight-bold">master</span>
                  </a>
            </div>
          </div>
    </div>
  </div>
  </div>
    <div class="card mb-3">
      <div class="card-header">
        <ol class="breadcrumb p-0 bg-transparent mb-0">
          <li class="breadcrumb-item">
            <a href="/rpms/java-11-openjdk/tree/master">
              <span class="fa fa-random">
              </span>&nbsp; master
            </a>
          </li>
          <li class="active breadcrumb-item">
            <span class="fa fa-file" data-glyph="">
            </span>&nbsp; jdk8236039-status_request_extension.patch
          </li>
        </ol>
      </div>

  <div class="card-body p-0">
            <div class="bg-light border text-right pr-2">
                <form class="btn btn-sm" method="POST" name="fork_project"
                    action="/fork_edit/rpms/java-11-openjdk/edit/master/f/jdk8236039-status_request_extension.patch">
                    <button class="btn btn-sm btn-secondary fork_project_btn">
                            Fork and Edit
                    </button>
                    
                </form>

                <a class="btn btn-secondary btn-sm" href="/rpms/java-11-openjdk/blob/master/f/jdk8236039-status_request_extension.patch" title="View as blob">Blob</a>

                <a class="btn btn-secondary btn-sm" href="/rpms/java-11-openjdk/blame/jdk8236039-status_request_extension.patch?identifier=master" title="View git blame">Blame</a>

                <a class="btn btn-secondary btn-sm" href="/rpms/java-11-openjdk/raw/master/f/jdk8236039-status_request_extension.patch" title="View as raw">Raw</a>
            </div>

        <pre class="syntaxhighlightblock"><code class="lang-diff"># HG changeset patch
# User jnimeh
# Date 1578287079 28800
#      Sun Jan 05 21:04:39 2020 -0800
# Node ID b9d1ce20dd4b2ce34e74c8fa2d784335231abcd1
# Parent  3782f295811625b65d57f1aef15daa10d82a58a7
8236039: JSSE Client does not accept status_request extension in CertificateRequest messages for TLS 1.3
Reviewed-by: xuelei

diff --git a/src/java.base/share/classes/sun/security/ssl/CertStatusExtension.java b/src/java.base/share/classes/sun/security/ssl/CertStatusExtension.java
--- a/src/java.base/share/classes/sun/security/ssl/CertStatusExtension.java
+++ b/src/java.base/share/classes/sun/security/ssl/CertStatusExtension.java
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2015, 2019, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2015, 2020, Oracle and/or its affiliates. All rights reserved.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
  * This code is free software; you can redistribute it and/or modify it
@@ -39,11 +39,7 @@
 import javax.net.ssl.SSLProtocolException;
 import sun.security.provider.certpath.OCSPResponse;
 import sun.security.provider.certpath.ResponderId;
-import static sun.security.ssl.SSLExtension.CH_STATUS_REQUEST;
-import static sun.security.ssl.SSLExtension.CH_STATUS_REQUEST_V2;
 import sun.security.ssl.SSLExtension.ExtensionConsumer;
-import static sun.security.ssl.SSLExtension.SH_STATUS_REQUEST;
-import static sun.security.ssl.SSLExtension.SH_STATUS_REQUEST_V2;
 import sun.security.ssl.SSLExtension.SSLExtensionSpec;
 import sun.security.ssl.SSLHandshake.HandshakeMessage;
 import sun.security.util.DerInputStream;
@@ -434,8 +430,9 @@
                     } else {
                         extBuilder.append(&#34;,\n&#34;);
                     }
-                    extBuilder.append(
-                            &#34;{\n&#34; + Utilities.indent(ext.toString()) + &#34;}&#34;);
+                    extBuilder.append(&#34;{\n&#34;).
+                            append(Utilities.indent(ext.toString())).
+                            append(&#34;}&#34;);
                 }
 
                 extsStr = extBuilder.toString();
@@ -552,11 +549,11 @@
                 return null;
             }
 
-            if (!chc.sslConfig.isAvailable(CH_STATUS_REQUEST)) {
+            if (!chc.sslConfig.isAvailable(SSLExtension.CH_STATUS_REQUEST)) {
                 if (SSLLogger.isOn &amp;&amp; SSLLogger.isOn(&#34;ssl,handshake&#34;)) {
                     SSLLogger.fine(
                         &#34;Ignore unavailable extension: &#34; +
-                        CH_STATUS_REQUEST.name);
+                        SSLExtension.CH_STATUS_REQUEST.name);
                 }
                 return null;
             }
@@ -568,8 +565,8 @@
             byte[] extData = new byte[] {0x01, 0x00, 0x00, 0x00, 0x00};
 
             // Update the context.
-            chc.handshakeExtensions.put(
-                    CH_STATUS_REQUEST, CertStatusRequestSpec.DEFAULT);
+            chc.handshakeExtensions.put(SSLExtension.CH_STATUS_REQUEST,
+                    CertStatusRequestSpec.DEFAULT);
 
             return extData;
         }
@@ -593,10 +590,10 @@
             // The consuming happens in server side only.
             ServerHandshakeContext shc = (ServerHandshakeContext)context;
 
-            if (!shc.sslConfig.isAvailable(CH_STATUS_REQUEST)) {
+            if (!shc.sslConfig.isAvailable(SSLExtension.CH_STATUS_REQUEST)) {
                 if (SSLLogger.isOn &amp;&amp; SSLLogger.isOn(&#34;ssl,handshake&#34;)) {
                     SSLLogger.fine(&#34;Ignore unavailable extension: &#34; +
-                        CH_STATUS_REQUEST.name);
+                        SSLExtension.CH_STATUS_REQUEST.name);
                 }
                 return;     // ignore the extension
             }
@@ -610,7 +607,7 @@
             }
 
             // Update the context.
-            shc.handshakeExtensions.put(CH_STATUS_REQUEST, spec);
+            shc.handshakeExtensions.put(SSLExtension.CH_STATUS_REQUEST, spec);
             if (!shc.isResumption &amp;&amp;
                     !shc.negotiatedProtocol.useTLS13PlusSpec()) {
                 shc.handshakeProducers.put(SSLHandshake.CERTIFICATE_STATUS.id,
@@ -654,13 +651,12 @@
 
             // In response to &#34;status_request&#34; extension request only.
             CertStatusRequestSpec spec = (CertStatusRequestSpec)
-                    shc.handshakeExtensions.get(CH_STATUS_REQUEST);
+                    shc.handshakeExtensions.get(SSLExtension.CH_STATUS_REQUEST);
             if (spec == null) {
                 // Ignore, no status_request extension requested.
                 if (SSLLogger.isOn &amp;&amp; SSLLogger.isOn(&#34;ssl,handshake&#34;)) {
-                    SSLLogger.finest(
-                        &#34;Ignore unavailable extension: &#34; +
-                        CH_STATUS_REQUEST.name);
+                    SSLLogger.finest(&#34;Ignore unavailable extension: &#34; +
+                        SSLExtension.CH_STATUS_REQUEST.name);
                 }
 
                 return null;        // ignore the extension
@@ -681,8 +677,8 @@
             byte[] extData = new byte[0];
 
             // Update the context.
-            shc.handshakeExtensions.put(
-                    SH_STATUS_REQUEST, CertStatusRequestSpec.DEFAULT);
+            shc.handshakeExtensions.put(SSLExtension.SH_STATUS_REQUEST,
+                    CertStatusRequestSpec.DEFAULT);
 
             return extData;
         }
@@ -708,7 +704,7 @@
 
             // In response to &#34;status_request&#34; extension request only.
             CertStatusRequestSpec requestedCsr = (CertStatusRequestSpec)
-                    chc.handshakeExtensions.get(CH_STATUS_REQUEST);
+                    chc.handshakeExtensions.get(SSLExtension.CH_STATUS_REQUEST);
             if (requestedCsr == null) {
                 throw chc.conContext.fatal(Alert.UNEXPECTED_MESSAGE,
                     &#34;Unexpected status_request extension in ServerHello&#34;);
@@ -722,8 +718,8 @@
             }
 
             // Update the context.
-            chc.handshakeExtensions.put(
-                    SH_STATUS_REQUEST, CertStatusRequestSpec.DEFAULT);
+            chc.handshakeExtensions.put(SSLExtension.SH_STATUS_REQUEST,
+                    CertStatusRequestSpec.DEFAULT);
 
             // Since we&#39;ve received a legitimate status_request in the
             // ServerHello, stapling is active if it&#39;s been enabled.
@@ -909,7 +905,7 @@
                 return null;
             }
 
-            if (!chc.sslConfig.isAvailable(CH_STATUS_REQUEST_V2)) {
+            if (!chc.sslConfig.isAvailable(SSLExtension.CH_STATUS_REQUEST_V2)) {
                 if (SSLLogger.isOn &amp;&amp; SSLLogger.isOn(&#34;ssl,handshake&#34;)) {
                     SSLLogger.finest(
                         &#34;Ignore unavailable status_request_v2 extension&#34;);
@@ -926,8 +922,8 @@
                 0x00, 0x07, 0x02, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00};
 
             // Update the context.
-            chc.handshakeExtensions.put(
-                    CH_STATUS_REQUEST_V2, CertStatusRequestV2Spec.DEFAULT);
+            chc.handshakeExtensions.put(SSLExtension.CH_STATUS_REQUEST_V2,
+                    CertStatusRequestV2Spec.DEFAULT);
 
             return extData;
         }
@@ -951,7 +947,7 @@
             // The consuming happens in server side only.
             ServerHandshakeContext shc = (ServerHandshakeContext)context;
 
-            if (!shc.sslConfig.isAvailable(CH_STATUS_REQUEST_V2)) {
+            if (!shc.sslConfig.isAvailable(SSLExtension.CH_STATUS_REQUEST_V2)) {
                 if (SSLLogger.isOn &amp;&amp; SSLLogger.isOn(&#34;ssl,handshake&#34;)) {
                     SSLLogger.finest(
                         &#34;Ignore unavailable status_request_v2 extension&#34;);
@@ -969,7 +965,8 @@
             }
 
             // Update the context.
-            shc.handshakeExtensions.put(CH_STATUS_REQUEST_V2, spec);
+            shc.handshakeExtensions.put(SSLExtension.CH_STATUS_REQUEST_V2,
+                    spec);
             if (!shc.isResumption) {
                 shc.handshakeProducers.putIfAbsent(
                         SSLHandshake.CERTIFICATE_STATUS.id,
@@ -1013,7 +1010,7 @@
 
             // In response to &#34;status_request_v2&#34; extension request only
             CertStatusRequestV2Spec spec = (CertStatusRequestV2Spec)
-                    shc.handshakeExtensions.get(CH_STATUS_REQUEST_V2);
+                shc.handshakeExtensions.get(SSLExtension.CH_STATUS_REQUEST_V2);
             if (spec == null) {
                 // Ignore, no status_request_v2 extension requested.
                 if (SSLLogger.isOn &amp;&amp; SSLLogger.isOn(&#34;ssl,handshake&#34;)) {
@@ -1038,8 +1035,8 @@
             byte[] extData = new byte[0];
 
             // Update the context.
-            shc.handshakeExtensions.put(
-                    SH_STATUS_REQUEST_V2, CertStatusRequestV2Spec.DEFAULT);
+            shc.handshakeExtensions.put(SSLExtension.SH_STATUS_REQUEST_V2,
+                    CertStatusRequestV2Spec.DEFAULT);
 
             return extData;
         }
@@ -1065,7 +1062,7 @@
 
             // In response to &#34;status_request&#34; extension request only
             CertStatusRequestV2Spec requestedCsr = (CertStatusRequestV2Spec)
-                    chc.handshakeExtensions.get(CH_STATUS_REQUEST_V2);
+                chc.handshakeExtensions.get(SSLExtension.CH_STATUS_REQUEST_V2);
             if (requestedCsr == null) {
                 throw chc.conContext.fatal(Alert.UNEXPECTED_MESSAGE,
                     &#34;Unexpected status_request_v2 extension in ServerHello&#34;);
@@ -1079,8 +1076,8 @@
             }
 
             // Update the context.
-            chc.handshakeExtensions.put(
-                    SH_STATUS_REQUEST_V2, CertStatusRequestV2Spec.DEFAULT);
+            chc.handshakeExtensions.put(SSLExtension.SH_STATUS_REQUEST_V2,
+                    CertStatusRequestV2Spec.DEFAULT);
 
             // Since we&#39;ve received a legitimate status_request in the
             // ServerHello, stapling is active if it&#39;s been enabled.  If it
diff --git a/src/java.base/share/classes/sun/security/ssl/SSLExtension.java b/src/java.base/share/classes/sun/security/ssl/SSLExtension.java
--- a/src/java.base/share/classes/sun/security/ssl/SSLExtension.java
+++ b/src/java.base/share/classes/sun/security/ssl/SSLExtension.java
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2018, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2018, 2020, Oracle and/or its affiliates. All rights reserved.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
  * This code is free software; you can redistribute it and/or modify it
@@ -113,7 +113,6 @@
                                 null,
                                 null,
                                 CertStatusExtension.certStatusReqStringizer),
-
     CR_STATUS_REQUEST       (0x0005, &#34;status_request&#34;),
     CT_STATUS_REQUEST       (0x0005, &#34;status_request&#34;,
                                 SSLHandshake.CERTIFICATE,
@@ -124,6 +123,7 @@
                                 null,
                                 null,
                                 CertStatusExtension.certStatusRespStringizer),
+
     // extensions defined in RFC 4681
     USER_MAPPING            (0x0006, &#34;user_mapping&#34;),
 
@@ -515,6 +515,16 @@
         return null;
     }
 
+    static String nameOf(int extensionType) {
+        for (SSLExtension ext : SSLExtension.values()) {
+            if (ext.id == extensionType) {
+                return ext.name;
+            }
+        }
+
+        return &#34;unknown extension&#34;;
+    }
+
     static boolean isConsumable(int extensionType) {
         for (SSLExtension ext : SSLExtension.values()) {
             if (ext.id == extensionType &amp;&amp;
diff --git a/src/java.base/share/classes/sun/security/ssl/SSLExtensions.java b/src/java.base/share/classes/sun/security/ssl/SSLExtensions.java
--- a/src/java.base/share/classes/sun/security/ssl/SSLExtensions.java
+++ b/src/java.base/share/classes/sun/security/ssl/SSLExtensions.java
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2018, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2018, 2020 Oracle and/or its affiliates. All rights reserved.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
  * This code is free software; you can redistribute it and/or modify it
@@ -86,11 +86,14 @@
                                 &#34;Received buggy supported_groups extension &#34; +
                                 &#34;in the ServerHello handshake message&#34;);
                     }
-                } else {
+                } else if (handshakeType == SSLHandshake.SERVER_HELLO) {
                     throw hm.handshakeContext.conContext.fatal(
-                        Alert.UNSUPPORTED_EXTENSION,
-                        &#34;extension (&#34; + extId +
-                        &#34;) should not be presented in &#34; + handshakeType.name);
+                            Alert.UNSUPPORTED_EXTENSION, &#34;extension (&#34; +
+                                    extId + &#34;) should not be presented in &#34; +
+                                    handshakeType.name);
+                } else {
+                    isSupported = false;
+                    // debug log to ignore unknown extension for handshakeType
                 }
             }
 
@@ -365,9 +368,10 @@
     }
 
     private static String toString(int extId, byte[] extData) {
+        String extName = SSLExtension.nameOf(extId);
         MessageFormat messageFormat = new MessageFormat(
-            &#34;\&#34;unknown extension ({0})\&#34;: &#39;{&#39;\n&#34; +
-            &#34;{1}\n&#34; +
+            &#34;\&#34;{0} ({1})\&#34;: &#39;{&#39;\n&#34; +
+            &#34;{2}\n&#34; +
             &#34;&#39;}&#39;&#34;,
             Locale.ENGLISH);
 
@@ -375,6 +379,7 @@
         String encoded = hexEncoder.encodeBuffer(extData);
 
         Object[] messageFields = {
+            extName,
             extId,
             Utilities.indent(encoded)
         };
</code></pre>
  </div>
 </div> <!-- end .card-->

</div>
</div>
</div>
    </div>

        <div class="footer pt-4 text-white">
        <div class="container">
            <div class="d-flex align-items-center">
                <div>
                    <div>Powered by <a href="https://pagure.io/pagure" class="notblue">Pagure</a> 5.8.1</div>
                    <div>
                        <a href="https://docs.pagure.org/pagure/usage/index.html" class="notblue">Documentation</a> &bull;
                        <a href="https://pagure.io/pagure/new_issue" class="notblue">File an Issue</a> &bull;
                        <a href="/about">About this Instance</a> &bull;
                        <a href="/ssh_info" class="notblue">SSH Hostkey/Fingerprint</a>
                    </div>
                </div>
                <div class="ml-auto text-right">
                    <div>&copy; 2014-2019 Red Hat, Inc. and others.</div>
                </div>
            </div>
        </div>
    </div>


    <script type="text/javascript" nonce="nxj3waVrXu0uApedibTzBvT7F" src="/static/vendor/jquery/jquery.min.js?version=5.8.1"></script>

    <script src="/static/vendor/bootstrap/bootstrap.bundle.min.js?version=5.8.1"></script>

    <script type="text/javascript" nonce="nxj3waVrXu0uApedibTzBvT7F">
      $('[data-toggle="tooltip"]').tooltip({placement : 'bottom'});
      $(".cancel_btn").click(function() {
        history.back();
      });
    </script>

<script type="text/javascript"  nonce="nxj3waVrXu0uApedibTzBvT7F" src="/static/vendor/lazyload/lazyload.min.js?version=5.8.1"></script>

<script type="text/javascript" nonce="nxj3waVrXu0uApedibTzBvT7F">
window.addEventListener("load", function(event) {
    lazyload();
});
</script>

<script type="text/javascript" nonce="nxj3waVrXu0uApedibTzBvT7F">
$("#giturl-toggle").on('click', function(event){
  event.stopPropagation();
  $("#giturl-more").toggle();
  $("#giturl-toggle").hide();
})

$(".fork_project_btn").click(function() {
  $('#fork_project').submit();
});

$(".select-on-focus").on("focus", function() {
  $(this).select();
});

</script>

<script type="text/javascript" nonce="nxj3waVrXu0uApedibTzBvT7F" src="/static/vendor/highlight.js/highlight.pack.js?version=5.8.1"></script>
<script type="text/javascript" nonce="nxj3waVrXu0uApedibTzBvT7F" src="/static/vendor/highlightjs-line-numbers/highlightjs-line-numbers.min.js?version=5.8.1"></script>
<script type="text/javascript" nonce="nxj3waVrXu0uApedibTzBvT7F" src="/static/vendor/highlight.js/spec.js?version=5.8.1"></script>

<script type="text/javascript" nonce="nxj3waVrXu0uApedibTzBvT7F">
  $(document).ready(function() {
  $('.fork_project_btn').click($("[name=fork_project]").submit);

  $('pre.syntaxhighlightblock code').each(function(i, block) {
    hljs.highlightBlock(block);
    hljs.lineNumbersBlock(block);
  });

  var cls = "highlighted-line";
  var lines = location.hash.substr(2).split('-').map(function (x) { return parseInt(x, 10) });
  if (! isNaN(lines[0]))
  {
    for (var i = lines[lines.length - 1]; i >= lines[0]; i--) {
      $('#_' + i).parent().parent().addClass(cls);
    }
    setTimeout(function(){
      $("#_" + lines[0]).get(0).scrollIntoView({behavior: "instant", block: "start", inline: "nearest"});
    }, 50);
  }
});
</script>

<script type="text/javascript" nonce="nxj3waVrXu0uApedibTzBvT7F">

  function updateHighlight() {
    var cls = "highlighted-line";
    $('.' + cls).removeClass(cls)
    if (location.hash !== '') {
      var lines = location.hash.substr(2).split('-').map(function (x) { return parseInt(x, 10) });
      for (var i = lines[lines.length - 1]; i >= lines[0]; i--) {
        $('[data-line-number=' + i + ']').closest('tr').addClass(cls);
      }
      return lines;
    }
    return [];
  }
  $(window).on('hashchange', updateHighlight);
  var selected = [];
  $("[data-line-number]").click(function (ev) {
    var line = $(this).attr('data-line-number');
    if (ev.shiftKey) {
      selected = selected.slice(-1).concat(line);
    } else {
      selected = [line];
    }

    var hash = '_' + selected[0];
    if (selected.length === 2) {
      hash = '_' + Math.min(selected[0], selected[1]) + '-' + Math.max(selected[0], selected[1]);
    }
    window.location.hash = hash;
    return false;
  });

</script>



</body>
</html>