Subject: [kitten] Channel Binding to TLS in a Java only environment

From: Tobias Markmann <[email-masked]>
Date: Thu, 13 Oct 2011 13:53:09 +0200

Hi,

is it possible to access the TLS Finished message sent of the
latest/inner-most TLS connection with standard JDK Java APIs? Has
somebody done that already? If so, how? Wondering since it was need to
have SCRAM-*-PLUS.

Cheers,
Tobi

---

From: Martin Rex <[email-masked]>
Date: Thu, 13 Oct 2011 16:11:36 +0200 (MEST)

> somebody done that already? If so, how? Wondering since it was need to

Are you actually asking for an official API in JDK to access
the tls-unique channel bindings (which consists of the **decrypted**
*first* finished message (of the two finished messages at the end
of a TLS handshake, one in each direction.  (for a full TLS handshake
the client sends the first finished message, for an abbreviated
TLS handshake, aka TLS session resume, the server sends the first
finished message).

But with the addition of TLS extension renegotiation_info (rfc5746)
that information needs to be persisted anyway, so this would have
been the perfect time to add the necessary APIs for it as well
(that's how I did it four our implementation).  Since it is a
new API, it can not adversely affect any of the existing callers,
so it was safe to ship as a feature enhancement.

But I can't speak about Java/JDK, it is nothing that I use.

-Martin

---

From: Tobias Markmann <[email-masked]>
Date: Thu, 13 Oct 2011 20:21:31 +0200

> TLS handshake, aka TLS session resume, the server sends the first

Yes. Initially I was intending to write a XMPP client for Android and
on the first look I did not find an API which provides that data for
me. I wondered whether standard JDK, SE or EE, just any JDK had an API
which provides the data OpenSSL's SSL_get_finished() function
provides.

> But I can't speak about Java/JDK, it is nothing that I use.

Right. The Java SE documentation [1] does not seem to list any method
related to that. If it had an API that would provide the data of the
finished message one could probably find it in SSLSession [2].
So if one wants to have channel binding in a Java application one
probably has to run his own TLS stack (either implemented in Java or
as a JNI binding to a C lib) which then gives you access to the
finished message.

[1] http://download.oracle.com/javase/7/docs/api/javax/net/ssl/package-summary.html
[2] http://download.oracle.com/javase/7/docs/api/javax/net/ssl/SSLSession.html

Tobi

---

From: "Cantor, Scott" <[email-masked]>
Date: Thu, 13 Oct 2011 18:48:41 +0000

>as a JNI binding to a C lib) which then gives you access to the

Or use tls-server-end-point

-- Scott