|
17 | 17 |
|
18 | 18 | package io.vertx.pgclient.impl.auth.scram; |
19 | 19 |
|
| 20 | +import com.ongres.scram.client.ChannelBindingPolicy; |
20 | 21 | import com.ongres.scram.client.ScramClient; |
21 | 22 | import com.ongres.scram.common.StringPreparation; |
22 | 23 | import com.ongres.scram.common.exception.ScramInvalidServerSignatureException; |
|
32 | 33 | import javax.net.ssl.SSLException; |
33 | 34 | import javax.net.ssl.SSLSession; |
34 | 35 | import java.nio.charset.StandardCharsets; |
| 36 | +import java.security.NoSuchAlgorithmException; |
35 | 37 | import java.security.cert.Certificate; |
36 | 38 | import java.security.cert.CertificateEncodingException; |
37 | 39 | import java.security.cert.X509Certificate; |
@@ -73,6 +75,7 @@ public ScramClientInitialMessage createInitialSaslMessage(ByteBuf in, ChannelHan |
73 | 75 | .username(username) // ignored by the server, use startup message |
74 | 76 | .password(password) |
75 | 77 | .stringPreparation(StringPreparation.POSTGRESQL_PREPARATION) |
| 78 | + .channelBindingPolicy(ChannelBindingPolicy.ALLOW) |
76 | 79 | .channelBinding(TlsServerEndpoint.TLS_SERVER_END_POINT, channelBindingData) |
77 | 80 | .build(); |
78 | 81 |
|
@@ -128,10 +131,10 @@ private byte[] extractChannelBindingData(ChannelHandlerContext ctx) { |
128 | 131 | Certificate peerCert = certificates[0]; // First certificate is the peer's certificate |
129 | 132 | if (peerCert instanceof X509Certificate) { |
130 | 133 | X509Certificate cert = (X509Certificate) peerCert; |
131 | | - return TlsServerEndpoint.getChannelBindingData(cert); |
| 134 | + return TlsServerEndpoint.getChannelBindingHash(cert); |
132 | 135 | } |
133 | 136 | } |
134 | | - } catch (CertificateEncodingException | SSLException e) { |
| 137 | + } catch (CertificateEncodingException | SSLException | NoSuchAlgorithmException e) { |
135 | 138 | // Cannot extract X509Certificate from SSL session |
136 | 139 | // handle as no channel binding available |
137 | 140 | } |
|
0 commit comments