From 76de1b05ae95b6c723eb5f8978f96e4870e57518 Mon Sep 17 00:00:00 2001
From: Martin Nilsson <nilsson@opera.com>
Date: Mon, 22 Sep 2014 17:13:04 +0200
Subject: [PATCH] The TLS padding extension is implemented. The actual
 extension ID is still undecided, but doesn't matter.

---
 lib/modules/SSL.pmod/Constants.pmod        | 2 +-
 lib/modules/SSL.pmod/ServerConnection.pike | 7 +++++++
 2 files changed, 8 insertions(+), 1 deletion(-)

diff --git a/lib/modules/SSL.pmod/Constants.pmod b/lib/modules/SSL.pmod/Constants.pmod
index 55bee83680..56c3af24ee 100644
--- a/lib/modules/SSL.pmod/Constants.pmod
+++ b/lib/modules/SSL.pmod/Constants.pmod
@@ -67,7 +67,7 @@
  *  [/] 56-bit Export Cipher	draft-ietf-tls-56-bit-ciphersuites-01.txt
  *  [/] Next Protocol Negotiation  	draft-agl-tls-nextprotoneg
  *  [ ] Chacha20Poly1305	draft-agl-tls-chacha20poly1305-02.txt
- *  [ ] TLS Padding		draft-agl-tls-padding
+ *  [/] TLS Padding		draft-agl-tls-padding
  *  [X] TLS Fallback SCSV	draft-ietf-tls-downgrade-scsv-00.txt
  *  [ ] SSL 3.4/TLS 1.3		draft-ietf-tls-tls13-02.txt
  *  [ ] Prohibit RC4		draft-ietf-tls-prohibiting-rc4
diff --git a/lib/modules/SSL.pmod/ServerConnection.pike b/lib/modules/SSL.pmod/ServerConnection.pike
index 3b9dc64ff6..71862cfe44 100644
--- a/lib/modules/SSL.pmod/ServerConnection.pike
+++ b/lib/modules/SSL.pmod/ServerConnection.pike
@@ -561,6 +561,13 @@ int(-1..1) handle_handshake(int type, string(8bit) data, string(8bit) raw)
 	      }
 	      break;
 
+            case EXTENSION_padding:
+              if( !equal(String.range((string)extension_data), ({0,0})) )
+                send_packet(alert(ALERT_fatal, ALERT_illegal_parameter,
+                                  "Possible covert side channel in padding.\n"
+                                  ));
+              break;
+
 	    default:
               SSL3_DEBUG_MSG("Unhandled extension %O (%d bytes)\n",
                              (string)extension_data,
-- 
GitLab