net/testserver.py: Add handler to reply with client auth status.

BUG=514575

Review URL: https://codereview.chromium.org/1275853003

Cr-Original-Commit-Position: refs/heads/master@{#342337}
Cr-Mirrored-From: https://chromium.googlesource.com/chromium/src
Cr-Mirrored-Commit: 1300c883029570b4ab83ac12e340e9500e54c7e3
diff --git a/testserver.py b/testserver.py
index ba1fd66..ad1a57d 100755
--- a/testserver.py
+++ b/testserver.py
@@ -336,6 +336,7 @@
       self.GetSSLSessionCacheHandler,
       self.SSLManySmallRecords,
       self.GetChannelID,
+      self.GetClientCert,
       self.ClientCipherListHandler,
       self.CloseSocketHandler,
       self.RangeResetHandler,
@@ -1512,6 +1513,24 @@
     self.wfile.write(hashlib.sha256(channel_id).digest().encode('base64'))
     return True
 
+  def GetClientCert(self):
+    """Send a reply whether a client certificate was provided."""
+
+    if not self._ShouldHandleRequest('/client-cert'):
+      return False
+
+    self.send_response(200)
+    self.send_header('Content-Type', 'text/plain')
+    self.end_headers()
+
+    cert_chain = self.server.tlsConnection.session.clientCertChain
+    if cert_chain != None:
+      self.wfile.write('got client cert with fingerprint: ' +
+                       cert_chain.getFingerprint())
+    else:
+      self.wfile.write('got no client cert')
+    return True
+
   def ClientCipherListHandler(self):
     """Send a reply containing the cipher suite list that the client
     provided. Each cipher suite value is serialized in decimal, followed by a