瀏覽代碼

gnutls: Added more status checking when verifying peer

Tatsuhiro Tsujikawa 13 年之前
父節點
當前提交
d6f73292fa
共有 1 個文件被更改,包括 11 次插入0 次删除
  1. 11 0
      src/SocketCore.cc

+ 11 - 0
src/SocketCore.cc

@@ -1060,6 +1060,17 @@ bool SocketCore::tlsHandshake(TLSContext* tlsctx, const std::string& hostname)
         if(status & GNUTLS_CERT_SIGNER_NOT_FOUND) {
           errors += " `issuer is not known'";
         }
+        // TODO should check GNUTLS_CERT_SIGNER_NOT_CA ?
+        if(status & GNUTLS_CERT_INSECURE_ALGORITHM) {
+          errors += " `insecure algorithm'";
+        }
+        if(status & GNUTLS_CERT_NOT_ACTIVATED) {
+          errors += " `not activated yet'";
+        }
+        if(status & GNUTLS_CERT_EXPIRED) {
+          errors += " `expired'";
+        }
+        // TODO Add GNUTLS_CERT_SIGNATURE_FAILURE here
         if(!errors.empty()) {
           throw DL_ABORT_EX(fmt(MSG_CERT_VERIFICATION_FAILED, errors.c_str()));
         }