| Index: net/cert/cert_verify_proc.cc
 | 
| diff --git a/net/cert/cert_verify_proc.cc b/net/cert/cert_verify_proc.cc
 | 
| index df7054072ab12f19c209f15190e5034049afe13e..4dd7560683413ba8db9213bb7dec1e1bb7e00213 100644
 | 
| --- a/net/cert/cert_verify_proc.cc
 | 
| +++ b/net/cert/cert_verify_proc.cc
 | 
| @@ -4,6 +4,7 @@
 | 
|  
 | 
|  #include "net/cert/cert_verify_proc.h"
 | 
|  
 | 
| +#include "base/basictypes.h"
 | 
|  #include "base/metrics/histogram.h"
 | 
|  #include "base/sha1.h"
 | 
|  #include "base/strings/stringprintf.h"
 | 
| @@ -341,6 +342,25 @@ bool CertVerifyProc::IsBlacklisted(X509Certificate* cert) {
 | 
|      }
 | 
|    }
 | 
|  
 | 
| +  // CloudFlare revoked all certificates issued prior to April 2nd, 2014. Thus
 | 
| +  // all certificates where the CN ends with ".cloudflare.com" with a prior
 | 
| +  // issuance date are rejected.
 | 
| +  //
 | 
| +  // The old certs had a lifetime of five years, so this can be removed April
 | 
| +  // 2nd, 2019.
 | 
| +  const std::string& cn = cert->subject().common_name;
 | 
| +  static const char kCloudFlareCNSuffix[] = ".cloudflare.com";
 | 
| +  // kCloudFlareEpoch is the base::Time internal value for midnight at the
 | 
| +  // beginning of April 2nd, 2014, UTC.
 | 
| +  static const int64 kCloudFlareEpoch = INT64_C(13040870400000000);
 | 
| +  if (cn.size() > arraysize(kCloudFlareCNSuffix) - 1 &&
 | 
| +      cn.compare(cn.size() - (arraysize(kCloudFlareCNSuffix) - 1),
 | 
| +                 arraysize(kCloudFlareCNSuffix) - 1,
 | 
| +                 kCloudFlareCNSuffix) == 0 &&
 | 
| +      cert->valid_start() < base::Time::FromInternalValue(kCloudFlareEpoch)) {
 | 
| +    return true;
 | 
| +  }
 | 
| +
 | 
|    return false;
 | 
|  }
 | 
|  
 | 
| 
 |