| Index: net/base/transport_security_state.cc
|
| diff --git a/net/base/transport_security_state.cc b/net/base/transport_security_state.cc
|
| index a0e187bedf6f116ffa80ac2299c1fff9acae91cb..5ded06a485b4e1e7e43df6683ec1e49ec2b9cbba 100644
|
| --- a/net/base/transport_security_state.cc
|
| +++ b/net/base/transport_security_state.cc
|
| @@ -895,12 +895,162 @@ bool TransportSecurityState::IsPreloadedSTS(
|
| 0,
|
| };
|
|
|
| + static const char kCertVerisignClass1[] =
|
| + "sha1/I0PRSKJViZuUfUYaeX7ATP7RcLc=";
|
| + static const char kCertVerisignClass3[] =
|
| + "sha1/4n972HfV354KP560yw4uqe/baXc=";
|
| + static const char kCertVerisignClass3_G4[] =
|
| + "sha1/7WYxNdMb1OymFMQp4xkGn5TBJlA=";
|
| + static const char kCertVerisignClass4_G3[] =
|
| + "sha1/PANDaGiVHPNpKri0Jtq6j+ki5b0=";
|
| + static const char kCertVerisignClass3_G3[] =
|
| + "sha1/IvGeLsbqzPxdI0b0wuj2xVTdXgc=";
|
| + static const char kCertVerisignClass1_G3[] =
|
| + "sha1/VRmyeKyygdftp6vBg5nDu2kEJLU=";
|
| + static const char kCertVerisignClass2_G3[] =
|
| + "sha1/Wr7Fddyu87COJxlD/H8lDD32YeM=";
|
| + static const char kCertVerisignClass3_G2[] =
|
| + "sha1/GiG0lStik84Ys2XsnA6TTLOB5tQ=";
|
| + static const char kCertVerisignClass2_G2[] =
|
| + "sha1/Eje6RRfurSkm/cHN/r7t8t7ZFFw=";
|
| + static const char kCertVerisignClass3_G5[] =
|
| + "sha1/sYEIGhmkwJQf+uiVKMEkyZs0rMc=";
|
| + static const char kCertVerisignUniversal[] =
|
| + "sha1/u8I+KQuzKHcdrT6iTb30I70GsD0=";
|
| +
|
| + static const char kCertTwitter1[] =
|
| + "sha1/Vv7zwhR9TtOIN/29MFI4cgHld40=";
|
| +
|
| + static const char kCertEntrust2048[] =
|
| + "sha1/VeSB0RGAvtiJuQijMfmhJAkWuXA=";
|
| + static const char kCertEntrustEV[] =
|
| + "sha1/ukKwgYhTiB2GY71MwF4I/upuu3c=";
|
| + static const char kCertEntrustG2[] =
|
| + "sha1/qzDTr0vY8WtYae5FaSnahLhzlIg=";
|
| + static const char kCertEntrustSSL[] =
|
| + "sha1/8BdiE1U9s/8KAGv7UISX8+1i0Bo=";
|
| +
|
| + static const char kCertGeoTrustGlobal[] =
|
| + "sha1/wHqYaI2J+6sFZAwRfap9ZbjKzE4=";
|
| + static const char kCertGeoTrustGlobal2[] =
|
| + "sha1/cTg28gIxU0crbrplRqkQFVggBQk=";
|
| + static const char kCertGeoTrustUniversal[] =
|
| + "sha1/h+hbY1PGI6MSjLD/u/VR/lmADiI=";
|
| + static const char kCertGeoTrustUniversal2[] =
|
| + "sha1/Xk9ThoXdT57KX9wNRW99UbHcm3s=";
|
| + static const char kCertGeoTrustPrimary[] =
|
| + "sha1/sBmJ5+/7Sq/LFI9YRjl2IkFQ4bo=";
|
| + static const char kCertGeoTrustPrimaryG2[] =
|
| + "sha1/vb6nG6txV/nkddlU0rcngBqCJoI=";
|
| + static const char kCertGeoTrustPrimaryG3[] =
|
| + "sha1/nKmNAK90Dd2BgNITRaWLjy6UONY=";
|
| +
|
| + static const char kCertComodoAAACertificateServices[] =
|
| + "sha1/xDAoxdPjCAwQRIssd7okU5dgu/k=";
|
| + static const char kCertComodoAddTrustClass1CARoot[] =
|
| + "sha1/i9vXzKBoU0IW9MErJUT8Apyli0c=";
|
| + static const char kCertComodoAddTrustExternalCARoot[] =
|
| + "sha1/T5x9IXmcrQ7YuQxXnxoCmeeQ84c=";
|
| + static const char kCertComodoAddTrustPublicCARoot[] =
|
| + "sha1/qFdl1ugyyMUZY3Namhd0OoHf7i4=";
|
| + static const char kCertComodoAddTrustQualifiedCARoot[] =
|
| + "sha1/vOS3IxJVmOVjQRkcUOS2R8J2Bdc=";
|
| + static const char kCertComodoCertificationAuthority[] =
|
| + "sha1/EeSR0cnkwOuazs9zVF3h8agwPsM=";
|
| + static const char kCertComodoSecureCertificateServices[] =
|
| + "sha1/PLQahC71XPIaPaVKyNG+OQh2N7w==";
|
| + static const char kCertComodoTrustedCertificateServices[] =
|
| + "sha1//nLI678ML7sOJhOTkzwsqY3cJJQ=";
|
| + static const char kCertComodoUTNDATACorpSGC[] =
|
| + "sha1/UzLRs89/+uDxoF2FTpLSnkUdtE8=";
|
| + static const char kCertComodoUTNUSERFirstClientAuthenticationandEmail[] =
|
| + "sha1/iYJnfcSdJnAAS7RQSHzePa4Ebn0=";
|
| + static const char kCertComodoUTNUSERFirstHardware[] =
|
| + "sha1/oXJfJhsomEOVXQc31YWWnUvSw0U=";
|
| + static const char kCertComodoUTNUSERFirstObject[] =
|
| + "sha1/2u1kdBScFDyr3ZmpvVsoTYs8ydg=";
|
| +
|
| + static const char kCertGTECyberTrustGlobalRoot[] =
|
| + "sha1/WXkS3mF11m/EI7d3E3THlt5viHI=";
|
| +
|
| + static const char* kTwitterComAcceptableCerts[] = {
|
| + kCertVerisignClass1,
|
| + kCertVerisignClass3,
|
| + kCertVerisignClass3_G4,
|
| + kCertVerisignClass4_G3,
|
| + kCertVerisignClass3_G3,
|
| + kCertVerisignClass1_G3,
|
| + kCertVerisignClass2_G3,
|
| + kCertVerisignClass3_G2,
|
| + kCertVerisignClass2_G2,
|
| + kCertVerisignClass3_G5,
|
| + kCertVerisignUniversal,
|
| + kCertGeoTrustGlobal,
|
| + kCertGeoTrustGlobal2,
|
| + kCertGeoTrustUniversal,
|
| + kCertGeoTrustUniversal2,
|
| + kCertGeoTrustPrimary,
|
| + kCertGeoTrustPrimaryG2,
|
| + kCertGeoTrustPrimaryG3,
|
| + kCertTwitter1,
|
| + 0,
|
| + };
|
| +
|
| + // kTwitterAcceptableCerts2 are the set of public keys valid for Twitter's
|
| + // CDNs, which includes all the keys from kTwitterAcceptableCerts1.
|
| + static const char* kTwitterCDNAcceptableCerts[] = {
|
| + kCertVerisignClass1,
|
| + kCertVerisignClass3,
|
| + kCertVerisignClass3_G4,
|
| + kCertVerisignClass4_G3,
|
| + kCertVerisignClass3_G3,
|
| + kCertVerisignClass1_G3,
|
| + kCertVerisignClass2_G3,
|
| + kCertVerisignClass3_G2,
|
| + kCertVerisignClass2_G2,
|
| + kCertVerisignClass3_G5,
|
| + kCertVerisignUniversal,
|
| + kCertGeoTrustGlobal,
|
| + kCertGeoTrustGlobal2,
|
| + kCertGeoTrustUniversal,
|
| + kCertGeoTrustUniversal2,
|
| + kCertGeoTrustPrimary,
|
| + kCertGeoTrustPrimaryG2,
|
| + kCertGeoTrustPrimaryG3,
|
| + kCertTwitter1,
|
| +
|
| + kCertEntrust2048,
|
| + kCertEntrustEV,
|
| + kCertEntrustG2,
|
| + kCertEntrustSSL,
|
| + kCertComodoAAACertificateServices,
|
| + kCertComodoAddTrustClass1CARoot,
|
| + kCertComodoAddTrustExternalCARoot,
|
| + kCertComodoAddTrustPublicCARoot,
|
| + kCertComodoAddTrustQualifiedCARoot,
|
| + kCertComodoCertificationAuthority,
|
| + kCertComodoSecureCertificateServices,
|
| + kCertComodoTrustedCertificateServices,
|
| + kCertComodoUTNDATACorpSGC,
|
| + kCertComodoUTNUSERFirstClientAuthenticationandEmail,
|
| + kCertComodoUTNUSERFirstHardware,
|
| + kCertComodoUTNUSERFirstObject,
|
| + kCertGTECyberTrustGlobalRoot,
|
| + 0,
|
| + };
|
| +
|
| // kTestAcceptableCerts doesn't actually match any public keys and is used
|
| // with "pinningtest.appspot.com", below, to test if pinning is active.
|
| static const char* kTestAcceptableCerts[] = {
|
| "sha1/AAAAAAAAAAAAAAAAAAAAAAAAAAA=",
|
| };
|
|
|
| +#if defined(OS_CHROMEOS)
|
| + static const bool kTwitterHSTS = true;
|
| +#else
|
| + static const bool kTwitterHSTS = false;
|
| +#endif
|
| +
|
| // In the medium term this list is likely to just be hardcoded here. This,
|
| // slightly odd, form removes the need for additional relocations records.
|
| static const struct HSTSPreload kPreloadedSTS[] = {
|
| @@ -1000,13 +1150,18 @@ bool TransportSecurityState::IsPreloadedSTS(
|
| {17, true, "\003api\007recurly\003com", true, 0 },
|
| {13, false, "\007greplin\003com", true, 0 },
|
| {17, false, "\003www\007greplin\003com", true, 0 },
|
| -#if defined(OS_CHROMEOS)
|
| - {13, false, "\007twitter\003com", true, 0 },
|
| - {17, false, "\003www\007twitter\003com", true, 0 },
|
| - {17, false, "\003api\007twitter\003com", true, 0 },
|
| - {17, false, "\003dev\007twitter\003com", true, 0 },
|
| - {22, false, "\010business\007twitter\003com", true, 0 },
|
| -#endif
|
| +
|
| + {13, false, "\007twitter\003com", kTwitterHSTS, kTwitterComAcceptableCerts },
|
| + {17, true, "\003www\007twitter\003com", kTwitterHSTS, kTwitterComAcceptableCerts },
|
| + {17, true, "\003api\007twitter\003com", kTwitterHSTS, kTwitterComAcceptableCerts },
|
| + {19, true, "\005oauth\007twitter\003com", kTwitterHSTS, kTwitterComAcceptableCerts },
|
| + {20, true, "\006mobile\007twitter\003com", kTwitterHSTS, kTwitterComAcceptableCerts },
|
| + {17, true, "\003dev\007twitter\003com", kTwitterHSTS, kTwitterComAcceptableCerts },
|
| + {22, true, "\010business\007twitter\003com", kTwitterHSTS, kTwitterComAcceptableCerts },
|
| +
|
| + {22, true, "\010platform\007twitter\003com", false, kTwitterCDNAcceptableCerts },
|
| + {15, true, "\003si0\005twimg\003com", false, kTwitterCDNAcceptableCerts },
|
| + {23, true, "\010twimg0-a\010akamaihd\003net", false, kTwitterCDNAcceptableCerts },
|
| };
|
| static const size_t kNumPreloadedSTS = ARRAYSIZE_UNSAFE(kPreloadedSTS);
|
|
|
|
|