Skip to content

Commit 0411027

Browse files
committed
BCJSSE: Log ClientHello and ServerHello extension types (FINEST)
1 parent 5f54a7e commit 0411027

File tree

2 files changed

+56
-0
lines changed

2 files changed

+56
-0
lines changed

tls/src/main/java/org/bouncycastle/jsse/provider/JsseUtils.java

Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -45,6 +45,7 @@
4545
import org.bouncycastle.tls.CertificateStatus;
4646
import org.bouncycastle.tls.CertificateStatusType;
4747
import org.bouncycastle.tls.ClientCertificateType;
48+
import org.bouncycastle.tls.ExtensionType;
4849
import org.bouncycastle.tls.IdentifierType;
4950
import org.bouncycastle.tls.KeyExchangeAlgorithm;
5051
import org.bouncycastle.tls.NamedGroup;
@@ -158,6 +159,24 @@ static String[] getArray(Collection<String> c)
158159
return c.toArray(new String[c.size()]);
159160
}
160161

162+
static String getExtensionsReport(String title, Hashtable extensions)
163+
{
164+
StringBuilder sb = new StringBuilder(title);
165+
sb.append(':');
166+
if (extensions != null)
167+
{
168+
Enumeration e = extensions.keys();
169+
while (e.hasMoreElements())
170+
{
171+
Integer extType = (Integer)e.nextElement();
172+
173+
sb.append(' ');
174+
sb.append(ExtensionType.getText(extType.intValue()));
175+
}
176+
}
177+
return sb.toString();
178+
}
179+
161180
static String[] getKeysArray(Map<String, ?> m)
162181
{
163182
return getArray(m.keySet());

tls/src/main/java/org/bouncycastle/jsse/provider/ProvTlsClientProtocol.java

Lines changed: 37 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,15 +1,21 @@
11
package org.bouncycastle.jsse.provider;
22

3+
import java.io.ByteArrayInputStream;
34
import java.io.Closeable;
45
import java.io.IOException;
56
import java.io.InputStream;
67
import java.io.OutputStream;
8+
import java.util.logging.Level;
9+
import java.util.logging.Logger;
710

811
import org.bouncycastle.tls.RenegotiationPolicy;
12+
import org.bouncycastle.tls.ServerHello;
913
import org.bouncycastle.tls.TlsClientProtocol;
1014

1115
class ProvTlsClientProtocol extends TlsClientProtocol
1216
{
17+
private static final Logger LOG = Logger.getLogger(ProvTlsClientProtocol.class.getName());
18+
1319
private static final boolean provAcceptRenegotiation = PropertyUtils.getBooleanSystemProperty(
1420
"org.bouncycastle.jsse.client.acceptRenegotiation", false);
1521

@@ -33,4 +39,35 @@ protected int getRenegotiationPolicy()
3339
{
3440
return provAcceptRenegotiation ? RenegotiationPolicy.ACCEPT : RenegotiationPolicy.DENY;
3541
}
42+
43+
@Override
44+
protected ServerHello receiveServerHelloMessage(ByteArrayInputStream buf) throws IOException
45+
{
46+
ServerHello serverHello = super.receiveServerHelloMessage(buf);
47+
48+
if (LOG.isLoggable(Level.FINEST))
49+
{
50+
String title = getClientID() + " ServerHello extensions";
51+
LOG.finest(JsseUtils.getExtensionsReport(title, serverHello.getExtensions()));
52+
}
53+
54+
return serverHello;
55+
}
56+
57+
@Override
58+
protected void sendClientHelloMessage() throws IOException
59+
{
60+
if (LOG.isLoggable(Level.FINEST))
61+
{
62+
String title = getClientID() + " ClientHello extensions";
63+
LOG.finest(JsseUtils.getExtensionsReport(title, clientHello.getExtensions()));
64+
}
65+
66+
super.sendClientHelloMessage();
67+
}
68+
69+
private String getClientID()
70+
{
71+
return ((ProvTlsClient)tlsClient).getID();
72+
}
3673
}

0 commit comments

Comments
 (0)