diff options
author | Ian Lance Taylor <ian@gcc.gnu.org> | 2012-03-30 22:09:55 +0000 |
---|---|---|
committer | Ian Lance Taylor <ian@gcc.gnu.org> | 2012-03-30 22:09:55 +0000 |
commit | 9a18821cfc7169ea9f4d0bb661e7c4ea362e993d (patch) | |
tree | 26322d11da7cc220190e0b8430565ea207eb3eab /libgo/go/crypto | |
parent | 57c7433fdc3fcb7b0cfd7b13bd11360a5e17c624 (diff) | |
download | gcc-9a18821cfc7169ea9f4d0bb661e7c4ea362e993d.tar.gz |
libgo: Update to weekly.2012-03-22.
From-SVN: r186026
Diffstat (limited to 'libgo/go/crypto')
-rw-r--r-- | libgo/go/crypto/tls/handshake_client.go | 12 |
1 files changed, 10 insertions, 2 deletions
diff --git a/libgo/go/crypto/tls/handshake_client.go b/libgo/go/crypto/tls/handshake_client.go index 266eb8f578d..2877f17387d 100644 --- a/libgo/go/crypto/tls/handshake_client.go +++ b/libgo/go/crypto/tls/handshake_client.go @@ -166,8 +166,11 @@ func (c *Conn) clientHandshake() error { } var certToSend *Certificate + var certRequested bool certReq, ok := msg.(*certificateRequestMsg) if ok { + certRequested = true + // RFC 4346 on the certificateAuthorities field: // A list of the distinguished names of acceptable certificate // authorities. These distinguished names may specify a desired @@ -238,9 +241,14 @@ func (c *Conn) clientHandshake() error { } finishedHash.Write(shd.marshal()) - if certToSend != nil { + // If the server requested a certificate then we have to send a + // Certificate message, even if it's empty because we don't have a + // certificate to send. + if certRequested { certMsg = new(certificateMsg) - certMsg.certificates = certToSend.Certificate + if certToSend != nil { + certMsg.certificates = certToSend.Certificate + } finishedHash.Write(certMsg.marshal()) c.writeRecord(recordTypeHandshake, certMsg.marshal()) } |