Bug 1085074 - Part 2 - Use explicit bit sizes for key size cert file names. r=briansmith
authorCykesiopka <cykesiopka.bmo@gmail.com>
Sun, 07 Dec 2014 20:41:00 +0100
changeset 218651 2157e6c5c0691d904f4cab75aac7160ac22e5e67
parent 218650 903c47c8b078d4ecde41ef4b1cfb0c4a6f58293b
child 218652 734d3bef2554b09beb9defe98708d2894b53c6e6
push id27937
push usercbook@mozilla.com
push dateMon, 08 Dec 2014 11:50:02 +0000
treeherdermozilla-central@0c399be939d3 [default view] [failures only]
perfherder[talos] [build metrics] [platform microbench] (compared to previous push)
reviewersbriansmith
bugs1085074
milestone37.0a1
first release with
nightly linux32
nightly linux64
nightly mac
nightly win32
nightly win64
last release without
nightly linux32
nightly linux64
nightly mac
nightly win32
nightly win64
Bug 1085074 - Part 2 - Use explicit bit sizes for key size cert file names. r=briansmith
security/certverifier/ExtendedValidation.cpp
security/manager/ssl/tests/unit/test_keysize.js
security/manager/ssl/tests/unit/test_keysize/cert9.db
security/manager/ssl/tests/unit/test_keysize/dsa-caBad.der
security/manager/ssl/tests/unit/test_keysize/dsa-caOK.der
security/manager/ssl/tests/unit/test_keysize/dsa-eeBad-intOK-caOK.der
security/manager/ssl/tests/unit/test_keysize/dsa-eeOK-intBad-caOK.der
security/manager/ssl/tests/unit/test_keysize/dsa-eeOK-intOK-caBad.der
security/manager/ssl/tests/unit/test_keysize/dsa-eeOK-intOK-caOK.der
security/manager/ssl/tests/unit/test_keysize/dsa-intBad-caOK.der
security/manager/ssl/tests/unit/test_keysize/dsa-intOK-caBad.der
security/manager/ssl/tests/unit/test_keysize/dsa-intOK-caOK.der
security/manager/ssl/tests/unit/test_keysize/ee_dsa_1024-int_dsa_1024-root_dsa_1024.der
security/manager/ssl/tests/unit/test_keysize/ee_dsa_1024-int_dsa_1024-root_dsa_960.der
security/manager/ssl/tests/unit/test_keysize/ee_dsa_1024-int_dsa_960-root_dsa_1024.der
security/manager/ssl/tests/unit/test_keysize/ee_dsa_960-int_dsa_1024-root_dsa_1024.der
security/manager/ssl/tests/unit/test_keysize/ee_rsa_1016-int_rsa_1024-root_rsa_1024.der
security/manager/ssl/tests/unit/test_keysize/ee_rsa_1024-int_rsa_1016-root_rsa_1024.der
security/manager/ssl/tests/unit/test_keysize/ee_rsa_1024-int_rsa_1024-root_rsa_1016.der
security/manager/ssl/tests/unit/test_keysize/ee_rsa_1024-int_rsa_1024-root_rsa_1024.der
security/manager/ssl/tests/unit/test_keysize/ev-rsa-caBad.der
security/manager/ssl/tests/unit/test_keysize/ev-rsa-eeBad-intOK-caOK.der
security/manager/ssl/tests/unit/test_keysize/ev-rsa-eeOK-intBad-caOK.der
security/manager/ssl/tests/unit/test_keysize/ev-rsa-eeOK-intOK-caBad.der
security/manager/ssl/tests/unit/test_keysize/ev-rsa-eeOK-intOK-caOK.der
security/manager/ssl/tests/unit/test_keysize/ev-rsa-intBad-caOK.der
security/manager/ssl/tests/unit/test_keysize/ev-rsa-intOK-caBad.der
security/manager/ssl/tests/unit/test_keysize/ev-rsa-intOK-caOK.der
security/manager/ssl/tests/unit/test_keysize/ev_ee_rsa_2040-ev_int_rsa_2048-evroot.der
security/manager/ssl/tests/unit/test_keysize/ev_ee_rsa_2048-ev_int_rsa_2040-evroot.der
security/manager/ssl/tests/unit/test_keysize/ev_ee_rsa_2048-ev_int_rsa_2048-ev_root_rsa_2040.der
security/manager/ssl/tests/unit/test_keysize/ev_ee_rsa_2048-ev_int_rsa_2048-evroot.der
security/manager/ssl/tests/unit/test_keysize/ev_int_rsa_2040-evroot.der
security/manager/ssl/tests/unit/test_keysize/ev_int_rsa_2048-ev_root_rsa_2040.der
security/manager/ssl/tests/unit/test_keysize/ev_int_rsa_2048-evroot.der
security/manager/ssl/tests/unit/test_keysize/ev_root_rsa_2040.der
security/manager/ssl/tests/unit/test_keysize/generate.py
security/manager/ssl/tests/unit/test_keysize/int_dsa_1024-root_dsa_1024.der
security/manager/ssl/tests/unit/test_keysize/int_dsa_1024-root_dsa_960.der
security/manager/ssl/tests/unit/test_keysize/int_dsa_960-root_dsa_1024.der
security/manager/ssl/tests/unit/test_keysize/int_rsa_1016-root_rsa_1024.der
security/manager/ssl/tests/unit/test_keysize/int_rsa_1024-root_rsa_1016.der
security/manager/ssl/tests/unit/test_keysize/int_rsa_1024-root_rsa_1024.der
security/manager/ssl/tests/unit/test_keysize/key4.db
security/manager/ssl/tests/unit/test_keysize/root_dsa_1024.der
security/manager/ssl/tests/unit/test_keysize/root_dsa_960.der
security/manager/ssl/tests/unit/test_keysize/root_rsa_1016.der
security/manager/ssl/tests/unit/test_keysize/root_rsa_1024.der
security/manager/ssl/tests/unit/test_keysize/rsa-caBad.der
security/manager/ssl/tests/unit/test_keysize/rsa-caOK.der
security/manager/ssl/tests/unit/test_keysize/rsa-eeBad-intOK-caOK.der
security/manager/ssl/tests/unit/test_keysize/rsa-eeOK-intBad-caOK.der
security/manager/ssl/tests/unit/test_keysize/rsa-eeOK-intOK-caBad.der
security/manager/ssl/tests/unit/test_keysize/rsa-eeOK-intOK-caOK.der
security/manager/ssl/tests/unit/test_keysize/rsa-intBad-caOK.der
security/manager/ssl/tests/unit/test_keysize/rsa-intOK-caBad.der
security/manager/ssl/tests/unit/test_keysize/rsa-intOK-caOK.der
security/manager/ssl/tests/unit/test_keysize_ev.js
--- a/security/certverifier/ExtendedValidation.cpp
+++ b/security/certverifier/ExtendedValidation.cpp
@@ -118,26 +118,26 @@ static struct nsMyTrustedEVInfo myTruste
     "IFZpZXcxIzAhBgNVBAoMGk1vemlsbGEgLSBFViBkZWJ1ZyB0ZXN0IENBMR0wGwYD"
     "VQQLDBRTZWN1cml0eSBFbmdpbmVlcmluZzEvMC0GA1UEAwwmWFBDU2hlbGwgRVYg"
     "VGVzdGluZyAodW50cnVzdHdvcnRoeSkgQ0E=",
     "At+3zdo=",
     nullptr
   },
   {
     // The RSA root with an inadequate key size used for EV key size checking
-    // O=ev-rsa-caBad,CN=XPCShell Key Size Testing rsa 2040-bit (EV)
+    // O=ev_root_rsa_2040,CN=XPCShell Key Size Testing rsa 2040-bit (EV)
     "1.3.6.1.4.1.13769.666.666.666.1.500.9.1",
     "DEBUGtesting EV OID",
     SEC_OID_UNKNOWN,
-    { 0x0E, 0xE2, 0x7A, 0x44, 0xD3, 0xAB, 0x66, 0x1A, 0x31, 0xBF, 0x0C,
-      0x1C, 0xFC, 0xAA, 0xD9, 0xD6, 0x27, 0x75, 0xC2, 0xDB, 0xC5, 0x69,
-      0xD7, 0x1C, 0xDE, 0x9C, 0x7E, 0xD5, 0x86, 0x88, 0x6C, 0xB7 },
-    "ME0xNDAyBgNVBAMMK1hQQ1NoZWxsIEtleSBTaXplIFRlc3RpbmcgcnNhIDIwNDAt"
-    "Yml0IChFVikxFTATBgNVBAoMDGV2LXJzYS1jYUJhZA==",
-    "PCQ3",
+    { 0xA9, 0xCF, 0x93, 0x7B, 0x12, 0x9E, 0x39, 0xD2, 0x43, 0x10, 0x33,
+      0x6B, 0xC6, 0xAD, 0x86, 0xA2, 0x7A, 0x9D, 0xA4, 0x5B, 0x67, 0xB2,
+      0xB7, 0xC1, 0xDC, 0x47, 0x8E, 0xD8, 0xA9, 0x6E, 0x2D, 0x6A },
+    "MFExNDAyBgNVBAMMK1hQQ1NoZWxsIEtleSBTaXplIFRlc3RpbmcgcnNhIDIwNDAt"
+    "Yml0IChFVikxGTAXBgNVBAoMEGV2X3Jvb3RfcnNhXzIwNDA=",
+    "ASt16w==",
     nullptr
   },
 #endif
   {
     // OU=Security Communication EV RootCA1,O="SECOM Trust Systems CO.,LTD.",C=JP
     "1.2.392.200091.100.721.1",
     "SECOM EV OID",
     SEC_OID_UNKNOWN,
--- a/security/manager/ssl/tests/unit/test_keysize.js
+++ b/security/manager/ssl/tests/unit/test_keysize.js
@@ -48,33 +48,47 @@ function check_fail(cert) {
 }
 
 function check_fail_ca(cert) {
   return check_cert_err_generic(cert,
                                 MOZILLA_PKIX_ERROR_INADEQUATE_KEY_SIZE,
                                 certificateUsageSSLCA);
 }
 
-function check_for_key_type(key_type) {
+function checkForKeyType(keyType, inadequateKeySize, adequateKeySize) {
+  let rootOKName = "root_" + keyType + "_" + adequateKeySize;
+  let rootNotOKName = "root_" + keyType + "_" + inadequateKeySize;
+  let intOKName = "int_" + keyType + "_" + adequateKeySize;
+  let intNotOKName = "int_" + keyType + "_" + inadequateKeySize;
+  let eeOKName = "ee_" + keyType + "_" + adequateKeySize;
+  let eeNotOKName = "ee_" + keyType + "_" + inadequateKeySize;
+
   // Chain with certs that have adequate sizes for DV
-  check_ok_ca(load_cert(key_type + "-caOK", "CTu,CTu,CTu"));
-  check_ok_ca(load_cert(key_type + "-intOK-caOK", ",,"));
-  check_ok(certFromFile(key_type + "-eeOK-intOK-caOK.der"));
+  let intFullName = intOKName + "-" + rootOKName;
+  let eeFullName = eeOKName + "-" + intOKName + "-" + rootOKName;
+  check_ok_ca(load_cert(rootOKName, "CTu,CTu,CTu"));
+  check_ok_ca(load_cert(intFullName, ",,"));
+  check_ok(certFromFile(eeFullName + ".der"));
 
   // Chain with a root cert that has an inadequate size for DV
-  check_fail_ca(load_cert(key_type + "-caBad", "CTu,CTu,CTu"));
-  check_fail_ca(load_cert(key_type + "-intOK-caBad", ",,"));
-  check_fail(certFromFile(key_type + "-eeOK-intOK-caBad.der"));
+  intFullName = intOKName + "-" + rootNotOKName;
+  eeFullName = eeOKName + "-" + intOKName + "-" + rootNotOKName;
+  check_fail_ca(load_cert(rootNotOKName, "CTu,CTu,CTu"));
+  check_fail_ca(load_cert(intFullName, ",,"));
+  check_fail(certFromFile(eeFullName + ".der"));
 
   // Chain with an intermediate cert that has an inadequate size for DV
-  check_fail_ca(load_cert(key_type + "-intBad-caOK", ",,"));
-  check_fail(certFromFile(key_type + "-eeOK-intBad-caOK.der"));
+  intFullName = intNotOKName + "-" + rootOKName;
+  eeFullName = eeOKName + "-" + intNotOKName + "-" + rootOKName;
+  check_fail_ca(load_cert(intFullName, ",,"));
+  check_fail(certFromFile(eeFullName + ".der"));
 
   // Chain with an end entity cert that has an inadequate size for DV
-  check_fail(certFromFile(key_type + "-eeBad-intOK-caOK.der"));
+  eeFullName = eeNotOKName + "-" + intOKName + "-" + rootOKName;
+  check_fail(certFromFile(eeFullName + ".der"));
 }
 
 function run_test() {
-  check_for_key_type("rsa");
-  check_for_key_type("dsa");
+  checkForKeyType("rsa", 1016, 1024);
+  checkForKeyType("dsa", 960, 1024);
 
   run_next_test();
 }
index fc7e8d3ec2d9a9958b9806b875a0bc1cc30b79bb..841806c987c943409889ce7cd161295274a51c40
GIT binary patch
literal 32768
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
DxoF?K
deleted file mode 100644
index c947b11aee4d6c182a4db36fe6e821b9add6fd1f..0000000000000000000000000000000000000000
GIT binary patch
literal 0
Hc$@<O00001
deleted file mode 100644
index 0d23ff16acd40ab6df8cdb1bf7389cc2fad1b557..0000000000000000000000000000000000000000
GIT binary patch
literal 0
Hc$@<O00001
deleted file mode 100644
index a7947ec96f63b99c0a3f0333dafccdea62a04075..0000000000000000000000000000000000000000
GIT binary patch
literal 0
Hc$@<O00001
deleted file mode 100644
index c01e16e6dfa83d4783f5997bb79e2ac6a9a86df7..0000000000000000000000000000000000000000
GIT binary patch
literal 0
Hc$@<O00001
deleted file mode 100644
index 063df6a78dc81ea90fee3314c3bcb9bc90ee0403..0000000000000000000000000000000000000000
GIT binary patch
literal 0
Hc$@<O00001
deleted file mode 100644
index c391cca156216925c7ecfaf633da74fd41c3645f..0000000000000000000000000000000000000000
GIT binary patch
literal 0
Hc$@<O00001
deleted file mode 100644
index ad2a39bcefb5d9b521f9d9a5b5707a912c9ffd6b..0000000000000000000000000000000000000000
GIT binary patch
literal 0
Hc$@<O00001
deleted file mode 100644
index 035ac42e0c72c98716487764adf9a7970cf1db85..0000000000000000000000000000000000000000
GIT binary patch
literal 0
Hc$@<O00001
deleted file mode 100644
index 4a1a9a91fb2e17e13d99a05115e825702b95bbfd..0000000000000000000000000000000000000000
GIT binary patch
literal 0
Hc$@<O00001
new file mode 100644
index 0000000000000000000000000000000000000000..b65f22e4f8c1e283208f8ec9ae0ce8b2ebb87ed8
GIT binary patch
literal 757
zc$_n6V)|&%#I$|^GZP~d6AM#Z?;`_lHqL}L55`nx7G@@cFhhL<T{h-W7G@r`hydr{
zjMSVQ1@F{Kh2YGpRE3b#;*!j~bcK}SL<K_wBNN@E%o0Oo14WPqE*`1OypnjJR6JO!
zC_f*;GmsPKH8e3aG%_@>Ftji=h!W>D0&)#4pj?9_((Q$6;NnqBO+{FX#|=%4+ksez
zja{qF<D3NxBakD{)Y!=IyU4stF*9?K@#DwaSKQuc_HgFhPg`yp+;en2kpJk;r*@aU
zdE&MKyR9`m)K*IvwDG4kt+St7Z!7gIE-~pY$K*YSZaT->JXo%;TD&_ozv&b6d)con
z-4g;He|{5vBPsn_&c&wLw{49NoxH7?+L9>wty!hJ$!Pz!Wf?;9Cp}+ym4-8kGTc7$
zZv|)QFRS>~pW3&xcWLZ<GPxDxv}UKItQ}fsgL#@-4ut3KIWN)E%n;`w{L#|uoBq~y
z`!;v1SSlfye8o=w6Hj|b?x9^V$u_OLN?ns#@&m42$hDQ<qU^NqeVz3Ez~3A7Mb;=K
zDc}CSIc-9Yal8IPll(`s?=Wt!wYVCdm3fGDV)2FS-O~aU6_@0R_nv7e+c2NYrP_hH
zv4w%DvB9Q4_RsQn2R4VDbrv=DZAfhl)D>1flz3;o$=#FUb7O;<eD<+vH)M3!hHhB%
z&G+(#Ii+)Jd6s{x_E-_8((gIF*mg&S{E51tYU#rIdltGI#5-OoG(_w&)%{U&aZP;5
zwY{D`M!C;RzqWqbf0wB*d#&-@cjj+z8p|&+-u7UPZOP^|lr+k$&tRa#Bw~6+ic7os
plS}<;1JgQ3Ps^Cq%LSQ4lo;o93oeOu{&3yoSA>_JH0u{T2>}0KBv$|c
new file mode 100644
index 0000000000000000000000000000000000000000..a59c9f054d576782e5a7ab618e91fcfd15b614bb
GIT binary patch
literal 755
zc$_n6VtQ}T#I$w+GZP~d6AP37+!h0FHqL}L55`nx7G@@cP(ytKT{h-W7G@r`hydr{
zjMSVQ1@F{Kh2YGpRE3b#;*!j~bcK}SL<K_wBNN@E%o0N-0|k%<E*{CuypnjJR6JO!
zC_f*<votd>kQ3)MG%++ZGBmI-v@kV@66ZAnat$q@T!Tc?t<^Kofmo}Wnu@R$w-cHe
zw*#>b8@pDU$2kiYMj%I?sj-pacaeFQVrJ$d<HwJ;ueiO@?BUG0pSIjIxaa74Apg;w
zPwg&y^Tcffc3W$BsI8VTXyZ?7T4z7E-d5^aTw>B)j>&rt-E@w%d9YkxwRm@Ge$yxB
z_p)DEx+erY{`@BTMpF8<oQqAfZ`&FlI(b_&wIxyVTeC`clhOWd%QA%IPkO%aDh+26
zWw?Fh-wMvqUsmy}KecaX@6y=!WO6IWY0XYaSv$1O2J<wv90<?db6%pSnIX<W_@kxQ
zH~p>a_HFK1u~b4Z`HG$VC!Y3>+(Wx!l5JXfmAWRg<Of{4kZUWyMcHZJ`#S0SfxkEE
zi>y&fQoj9tbJ~O)<97XpCi#zM-(lQdYjHI^EAtTR#NrFtyQc*zDlW+r?>*B{wqZV(
zOSJ=YV+#XQV?#)ci+Pszs_CJ-Pgb(Kr?R|e{`bPA&c^iZ?Wepl7vmaQg5DfcDmK5c
zxT^Naxr?@jvJEe!R|gv|Fni~ponZa{bQ44J<W+CWmRvpB;rgXrWRXn!pG4=Vzy6U?
zCu^h(i;}}U>$l|9BriK!cJ=g}MGo&33fuT{{vWQI$sIQ7%Vw2sloZOW&tRa#B%-i)
t!%Y9Dj2nV>GMOlJtuSs=(obL#5nhoK)Lq;2s$PD^#Eos1IZ4_v_5ebQB_#j=
new file mode 100644
index 0000000000000000000000000000000000000000..04f41127667403c59b8f41e2bbdb11e6b7bb42f9
GIT binary patch
literal 756
zc$_n6V)|gv#I$w+GZP~d6ANS51ug?_HqL}L55`nx7G@@c5JNo!9X94r7G@sRhydr{
zjMSVQ1@F{Kh2YGpRE3b#;*!j~bcK}SL<LJT1Kp&|5<?{e1(13!9?8tSl6as@JV>S}
zKOe#|G%zwTkQ3)MG%++ZGBmI-v@kV@66ZAnat$q@T!TbIeFI&Ht!nsf1sMmn7V1nc
z9@W%TxJA0SozTR%1Bi9l*tOa`&RMW90y*+bjg1Vyi_E(eGcy+%KYqM@#qEt|4`<H(
zwB@G3JxA9A`H${=YIoV2CvF?C+gigzZMB3!8-H5UI{Ufxwo=dH5|i$7Ox|<orgN;#
zgXQ|F#k*7Un?5nWm;K7pJt5%n=Qq(elG3l`Tx^<s+t&Ed$=jN#Es2ufnpL`+jP`F^
zmLVj6(({E^X*iQ8!|fygR&a*?vWj2*seL<pm&U#)lUqSfYj#S?+M#ten5U`bKzQz+
z^AbJH3~>&^A1%GU>2F=PZ*#|rr4oY4SM20J@w9j39@-U?Y}3lC)HRtUKj7MhTwD1q
z%1-;<*Gb<G{Jl|MWQ|gi^6l@N(<bB?x9cx7$$vEa4&(M(i>u*TnTJ>>7GKETJuOgC
zaY>$d@0o_O4fDBNsvVdcTNyy^n5w~8&N@#_#$m&9sjqg*A`a_Kt=CVse=^JdoPXAu
z1-lq{9_>rMtbOcHW#sAAZW>=irWrdjez!4EUv|0rbMVU9#$Fd&WA2-?vbsy`IJ)BC
zv_#J1URjeCORP7aZ)p?EIy*%=W7X!x=}TIEO{(Kv_PFQ&rvF`g;wRjj@Wl9;8;|}Q
zloZNrz+j*Y478?ye|^LoTFn;DIAwGvYNnfRl>2ce5rh9M6B2E9yFQ(;;punYH1#8I
Ho^J;LIBq6h
new file mode 100644
index 0000000000000000000000000000000000000000..dc1bb7e19ed82ba34aa3cd5abfba710b30fb6b7c
GIT binary patch
literal 728
zc$_n6V!C3`#57?6GZP~d6SHw>p8+=;XF{6?V=6NXGm}A>p}v7G8*?ZNGmlzCfOBw0
zYEF)VcWR|VaAsAiLP%<HNoHQULP~L>f}w$tiEdJ6iJ`KAB1i)lk5pz}Njy+09xPRq
zpO4@f$cghBniv`y85&p^T9_I{iSrr(xrP={u0evKo`DX;URC_|TACSvt%a)R;!#aa
z1=|CXz~h1@#@RqD$;PhL=5fw~g%QZ%VX9;}|B8JY<GX_^PrTmTT$SVSYt>ch{2M7x
zSwdKMXDrzEa-rdomAgKto~k+`y`j2TtACQL!h$mf@we4GXP!!Ea(>+65kLR>6q$yC
z$tJyS4c)C7KJ4oAZ-w)#D*dojHh;A+;?t9IHPu#?7J0w9DbW=|TXn0s4_{rG;L9Y+
zFx%KPp#N{~O^f4G)`h7|mU+Qky_Kng?F#FCr?onPacR-6iW17FGLKAT^s>(to%nF=
zjMh#ro~Bv5KbcLdT<|1g*_0H{!t*!d9%O4xNcO+pzcXUZmx{lKO)okMP82i>k2~9Y
z`&aG-ev9^nj;$sR|Kkh8r#GHhwYqjQd+m*Sz21`zl}CLZ)_F)h;dxb{AHrP201S>J
z?L0l77XJV9?m}@9bK5&++ulb?Z_Zb(EP7IXK2QD4^!^<i4{m+3_S?=j5taAFhr6?z
z7n-fkjNEOPv(9G6<vsh<Jf~?e7T<g!%c(g_l53m3luYdVtN+*gF4}cmDSO3~vmZZZ
zh~9Gc`!rpDb?~Nj$`LMc1;x#MtJqOeA+sTafgUh`j%621l-Zhnzb36xwW{D?K-u|>
c8ldn^LH%B-**$%;y|wkTZ+h-wlQBOJ09PLwx&QzG
new file mode 100644
index 0000000000000000000000000000000000000000..7a7de11151e19bf03aca7b56dc615e7a68d4f4fd
GIT binary patch
literal 561
zc$_n6V$wBeVw|>snTe5!iCNR>lL0Rqr&gOs+jm|@Ms8LHgD^vV16?-eP!?t$wTJ-c
z;EdFq90l*xN`>Ies#JxL)Z&uNymW=4;zR{Q10xgNq|6dSWdlW!1}+|{%)F9#pj13q
zswh7n!84E(=QT7jG&C|aurRbRF^&@FH3D)CEudV3Bogd3Gy~fU)xgE0mYNE+2q=Tc
z4UO}Veapzoz}(owV9?mX)Y!mqHfG|!d6T~fJz;8Jnz2jr<F4|oYUVoz-qME6`kO8u
z(G6Q<v#(t8q{Y*{A6n<06P(pn**EJ!M9n<2*XQ@FDtt22$iK&v|NpWtY>vl+c8Dj2
z&dzzevV2vH$ZfmSrt_EIq#usnfA7#em8i-EZx@}&>G$<Jx@q16OUWPYG1>R;__s1K
zGcquu#RYR?BZIqcv!OzntP0yI39heK*0mjDkqzX3sHIb5(<^s5B0!Y!<s0wc(Q4l(
zFKSuSbV8pu<=&BK?JE<cB({8#Q}-_m=D59Q^S7GZ3yfwKi?7PtSa({gD|DF8vkb{e
samjqUH9E`U&-}^L-$virmb&ZGy(<-ag5SOq^-r$kU_O{4b7q+#0On-OKmY&$
new file mode 100644
index 0000000000000000000000000000000000000000..318be79df350fd727354097e5846e9508e755edb
GIT binary patch
literal 562
zc$_n6V$w5cVw|ynnTe5!iG?XjzsG==jZ>@5qwPB{BO^B}gF%>~zJV?qb0`Zlk6J{4
zb8tp#PL6_iYNbMOW>u;}NNRCOW?s5NQE{Szp@E^9Zc=86p|XJ@NCOv-RAydDJWwhg
zELD`B591k`7|4n98k!gy8W|c`7+RPZM~U+q0l9`2P_97|3HBP9fbE59;NnqBO@&*e
zi^mO(^O1ea$jZRn*vnwh*vZt`$Z+`Kt0eCty<ayKm&TXrtyl1GoGHfpo4M;l*c+Ei
z_4}TOcAMNx`uvFh*|aAnxva;U=9<g!7O~fQq;`m3)|`~|x}b)wWmB(E{Ps<+)t7{Z
z-<YsaQexJ(V*&g(Yt4&VE5oc$9`MbvP7&QOuX+E}XB*02Rmb1jVR1sg_o?b`zGc@n
znV1<F7||kwxv_y^c1cXfvjXp?WeM6(GE~34FG;bRH1FI^F~xi}-ed3gn~JC{`}(zW
zU4!If+rvqxW8WFfnEQTVUWR@5|4n<oHc0JF?I_+PrR8Lv=r$v${mKb5rOpEFt^NsR
t4>;X<7*2@f?lI|gd*}OD=Tct&&%d&Qj?x>CM+@;>zUO4Qx-G)~7XWc%%838~
new file mode 100644
index 0000000000000000000000000000000000000000..dd0d891762e6d95ff54d8be4d52452cb4c90c94b
GIT binary patch
literal 563
zc$_n6V$wHgVw|ynnTe5!iG^Xkm#YCU8>d#AN85K^Mn-N{27@p|eFI%K=1>-99<_)7
z=irRgoE!!3)Jlcm%&Js{kksOm%)E4kqT)maLjxld-K5MCLuCU+kOnRusm#2Rc%W1~
zSgI&LAI38@GmsPKH8e3aG%_@>Ftji+juPiJ0&)#4pj?9_((Q$6;NnqBO+{FX#|@41
zk$ua^%D~*%%V5yh$<)}$aH88nYO-_3iwlt-T<gra4zArTZ&T^UbKP^2!1}JnNOiaG
z#w+&e#(g;df7(ZDu7^%}#i!>#^M84`Rd?$*caHyl`@A~D+KR6F3g5aoS@c_kNgn5m
zOgHDVMyvCdcb`@Zh~c;$@bg>7eVq!MbicbDpN?5>Il1-GtPd~xCr(<<SsJ3w#LURR
zh!z>lKzFIsoQU4|g8jsg31&&+Ntt4oe$ScTr*bW{&dG9L&Hv(`g?$@LJa3<T+UJ@*
zO<VQUx?WFd>+`p~#hz}=bJ1|WzV`jCc|wiFwl?qTcc<F<J$S=$Hj=yRsYA?q+w+Vk
pn5q_}y<K*gZGLp@^&{(MFqH(qK7RLm*~GwW7G_xnUCwhGDgZko&=CLt
new file mode 100644
index 0000000000000000000000000000000000000000..9fa9c4f0c3e577608fd18d2c8eb874b6ced94f20
GIT binary patch
literal 562
zc$_n6V$w5cVw}E!nTe5!iP_X$z<`&HQ>)FR?K>|cBR4C9L71Vwfi4?!C<`->T10?z
za7JoQj)He;r9yCKRjNWrYH>+sUb;e2aiW5ufsu)BQf7&vvVkH<0~e1}W?o4=P%0iQ
zRg|BP;2Fq?^BS5M8X6fISQuKE7)6Qm8UeY67ErE166y9rHE{8$rKTdR#p8y?`N+Oy
zWMyD(>}4=$>||<eWVm1^I_;m$<anm0&~)b{C7xn`&25V=7tPEQys_7L;>`uZdD%z5
z-@N#3g^1#Yw>y5BExzjh%F)-WgWvvt?6X7D>s`+ENY0o&%Q{$Vnak@XffqZj8>pu>
z`#xM*ee9ImtX2EpEm+C!HDlw27xV09dA-{xTKngCLiLt}R^=w&t;=JKRx&X&GBBb=
z1~brIS%rEt^sP5CCKcb9sFnM0X0gq|Gl>#%-@bD>J^1i;$IrDBqNJ1}q)P$>ng4`N
z%eg#dLyP0vZwp03+$YbzQF7mq`6GMR6&)7~!^k5)J3_hpH~xKkcKz3qiYE!Xd)qWR
nzC4-V>XWjhUZC#9a&ggP_A`omHdmjN{kCaJt!&8qUn_V4+N#i`
deleted file mode 100644
index eabede0ac26ab3d3eabc6e175c14ffc35b0d66ec..0000000000000000000000000000000000000000
GIT binary patch
literal 0
Hc$@<O00001
deleted file mode 100644
index c2f4fdf85865e54b4eee235bca2bdffe94b7f0b2..0000000000000000000000000000000000000000
GIT binary patch
literal 0
Hc$@<O00001
deleted file mode 100644
index 3be15bfe7840fd23cf980260e9e9d9a2f7d6147a..0000000000000000000000000000000000000000
GIT binary patch
literal 0
Hc$@<O00001
deleted file mode 100644
index f04231307a4fd4d41beb058e5bfd75261cc4c5b0..0000000000000000000000000000000000000000
GIT binary patch
literal 0
Hc$@<O00001
deleted file mode 100644
index 0d7a0fe87b6e83f66f2a06a7dfd0d2fe9cee5543..0000000000000000000000000000000000000000
GIT binary patch
literal 0
Hc$@<O00001
deleted file mode 100644
index 50d382c3117549d5f764a8a57cff1760e175f17e..0000000000000000000000000000000000000000
GIT binary patch
literal 0
Hc$@<O00001
deleted file mode 100644
index 3147b266c44938b472deebeae887c6d8c923f900..0000000000000000000000000000000000000000
GIT binary patch
literal 0
Hc$@<O00001
deleted file mode 100644
index 660da8e45d9aeb8a0857c4f6f6acdafa260b6dcc..0000000000000000000000000000000000000000
GIT binary patch
literal 0
Hc$@<O00001
new file mode 100644
index 0000000000000000000000000000000000000000..b42eeaa59f4af41dd45b087a778adc8157312997
GIT binary patch
literal 1006
zc$_n6Vt!@N#B^x^GZP~d6H^Ya0WTY;R+~rLcV0$DZdL|^a6=OVBR1wx7G@sphydr{
zjMSVQ1@F{Kh2YGpRE3b#;*!j~bcLegL<J)Q6ARs>%n}6+*Dy^(c>`IHE-oIi)Ux=@
zypnjJl6bI^)Uu-d{1O8>ab80cLqj7&0}De76U!)ZULzpa&;rUeNF&8!1BAtT209Rn
zRe=_#ro!ws(8b}7CPqbMKQpp2FgG#sF#yFmnVJ|G7`|PLm|rOy9s4S2i-g|+ZnL*1
zULHK<$M)=N?aR6)LPEEnO;LKJxaxS*sh1xf&1PuZn$graas8Sso7q>JP1k%8dUW#8
zCH?evi$x4#mo=_7Z#cYRT7co-mF-p>rTS_n@2k(x(MWhvxV&vnV5{K^)+Ywx`^p<C
z!>1SJvwS{!HY{(A<dtc>$2E0s-95hOWHEOu+vRDyGV7x694wula@=X_&V?K1-x0E~
zkegPkDKl$1|C<}3rzH-@oN(Op?~KSP)k{CtL?)H#>&S;)R5(|9C8%zV(Wf?rb>1FU
z7rA}dwx2Gu4tY^suIFUq*q#!_c3$^j*{g_aYRP#iMbQxpCcoC-vnZ5_nUR5UapOjV
z#&rg9Y#iEbjI6BejEpQn1_1_sFunm}n^Q(fNr9EVetCJhUTQ^RZb43}UUGh}l?4#!
z6BQHs20p-ulT~1GHE=d?WD^1!&BFNFvsDTN8JkNu84a`zG+|aUF^b7Tt<0?~0j7qO
z{M^LMJiVO!<is5P<bq<fgba*SMuuRX6Sn^0CQp^;$I07otDbMAaLl!`X#F9NC1Df(
zO|H2a&SWQh_S1fopFw+DLZ-O-Oo%CAexI$qKVqRFTVnx_aO>*>!mbN`TnrN0-8qLd
zQs%E?^1jq3GLc3H_|(@|Wk)=15aFu1_CV){N5Ny>?EHRid-lDRpXPlv{h0Ks((HTG
z%oW|-IfWW$+tQ0K`97KvQ&P01(@4Q&f78wuorA_5is>g7?Dbl7)T8r?0fS=l7IvlA
z?b(8bU%WrGBv)1c;>qcEJH%|{_k^R-?)*Xbe<HU2Rdecg&vxEr-I!**rCRW3Y_)L1
i>~AZU<+{bY2duod^~xvjOFQcK?G0f&o_gusBoP40m3c(~
new file mode 100644
index 0000000000000000000000000000000000000000..230084e78585461db09f3600e65c3454b3456faa
GIT binary patch
literal 1008
zc$_n6Vt!-L#B_B5GZP~d6AR;{o3;kLY@Awc9&O)w85y}*84SV=O$?0Km_u2Zd9)(}
zoP#q`b8-~CQ!5pMGpkY+LQ;!MGV{_Eii#5zj0{W+bdxem6f|7JG!5kqWI?*Pc*Ii6
z;xqF~;(<!y!Aergit_VI4CKUl4NVLUjSLMe3@uD7qQrTPfLuchDAyp36pJko7V8=4
zKrB`TTAZ2+v)4iwhdY`Wm5}|+$jZRn#K_M86z5`UVq|2v8Wy5{Y4@GO*8=0d$7hCc
zI+n-z>-0_SJ)>(`%(tiQO;Bt8^Kw?tx~<DyUbz&UOJ8f;eoHxG;+dXT;g2WuTUSW_
zbozbCX0=1Ia>ml_VUOpkP4cK~ySB(@+1#yJC*JSaxHw=6Pp1(_p4j6_lC12H9-Rp^
zN^5M{5FYaV-17%2;?<Izi+%5gh26^i&G*lubwP;K3d_f5<~{m#BR%h0m!9>RxSa;K
zH6~gtH;CZ8>UdR9US+Z3hZYAZ^_cDJ8z-*cy>r3WBNyk-+uB^TD~BV4_gq)QRIl!r
ztWoak5+6^9*eYSj&!A#a$NE38JVMVve{Se!7SkKQAE+n#Sz9b-?EkkbkcpX*fpKx;
zMuWz6261d0+H8!htn7@8EI|eV27WNU0b`p}MoCG5mA-y?dAVL{MPhD2PO4sVey)`T
z5a<&X75WA~z?hR&U~x5YHgIGU0vgT2_}a5o3IrLOOE?(~v<)<2Rx&Y)$wIBntt<g1
zhm`!>#LPUsoc!d(9R1{iVziVDj8z7Pt}_h(Pdz9(_2hp>)cl8hY7VN))l0gSt7GdY
zE(rVLm=xr-YsSGNHv?{+5$XF^5<ku7gVN&Xrw#>t46wO%wxiZ?<AO8Wx3#ugKl{9R
zXX9P_sJ6eSSN`qrv?&XdaxN^^_xQCb{n$2*DjxAA+eL0)yD)Lt*-ODUSAJ8{-tD_@
z;;GGhUA8G`&k>K*+WWSPPyYj}%Ez|ub9Vy#65Zox-8l0j(A%oLRp0F5M(e_9*C+IM
z#3Y2T65PSfP?&Xj&W_v9pK%2q3#n3zQT-diQzkv(>aD|W8+Qxv-I!Zf!&W(6x<+Nr
m-^U#r4hu1U`Vn(?rqkgr<w;WWIFpX3?V6KsE9~53{tf^{Vt;-B
new file mode 100644
index 0000000000000000000000000000000000000000..cb4a38934fba2cf2a4dc5aa5caa6c2034157ada7
GIT binary patch
literal 1039
zc$_n6V&OJuV*0#*nTe5!iG?xDB;0_PjZ>@5qwPB{BO^B}gF&L9iGdLtb0`Zlk9I_W
zb8tp#PL6_iYNbMOW>u;}NNRCOW?s5NQE{Szk%5VYZc=86f`)6DrlF>RI!G56k3wo$
zd}dxrJWxqISP76{l%Ee5Fffo4=QT7jG&C|aurRbRF^dxCH3D)CEudV30y3RoVPFPv
zf<Dm7)KnA~;CE3IqY`pBFtRc*H!<=v0L8hOniv@wHgD+O`zPNvrAe#PeRci;vrxCn
zvl9+~{T=1@D*Ep#Asxvt?%WSn9{<a&z##O+@3Ff1Ubfe2Y6o{sW%$^=VqapL+k5Yg
zJ6y};JF|mV-CjHA&!+MjVb68+K9n4<zY}fyF6Hz*{|{-?MGpo3;i@~c#KL`+!(Scq
zdoiUs0S}+?GTX{IMp}G%xA%<SU$v`mGX(PQ-r+LwY&F~VGcY(}hi&1pX{S%h3ERF&
zP}wEb&8%i@vnuPwk+_+f8#neZT_|wQaJBeXAubJu=ed(bb_en(=OissztSnL+Niv7
z$?Bf`4=WxqfBEya?b;>YpD*WROlaGaC82C~;jZJ=NTrVnZ!-Mb6y`E9GcqtPZrp9q
zxWgcWjYFG_k(HI5k&z|FAj%*D#y4PW^T{YFDX`MlFE20GORY%EEyzjLOU}==vH${7
zBSqi92N;{O3M{S$&IXQbLO@Gc7+-s~N`W9_a|tJ-fwqAr%yK41F<GePxs@frB$AS!
zo0yrWmy@5In4_OuP>hz&nL*LoT=;9Zee%8gPD`iiNZxz2N9d=VYRXN)=PNdSdr_{e
z^ZrEL-Q_M(2RP?2gnmh$)6SK5+f_Rw{^+mM&X;su=B--!h&3uO&Me=7oonlrl$}Z*
z+OLlk%r`pla$go-qU6Ti$E565i|4LXF0D|$qx{0pVy^Eo!#mfPY%lG7(BZTElS#f?
z<&^pSx+Ya~)z65E@4LmC^T+Tg6Vo&9E5SySYGz6poOG)-Wt(}r;PJ!zh5kNHMQfQA
ztx_Y8xc$22P<G_S6aLLp7JfRNZoV;{W5wNPC-~EM%w+w#!Qzj0^ZVN$7TKjOQr^4$
j{;{2nJ^SZ(Ty#BsrR^aPlX{JqijxTAf^{Ew4jcghqrity
new file mode 100644
index 0000000000000000000000000000000000000000..c388c49d6bb0e729d834307107be7dcfe77cff8b
GIT binary patch
literal 1009
zc$_n6Vt#AT#B_B5GZP~d6ANSHt7QhfY@Awc9&O)w85y}*84SV=O$?0Km_u2Zd9)(}
zoP#q`b8-~CQ!5pMGpkY+LQ;!MGV{_Eii#5zj0{XHbdxem6f|7JG!5kqWI?*Pc*Ii6
z;xqF~;(<!y!Aergit_VI4CKUl4NVLUjSLMe3@uDdqQrTPfLuchDAyp3OpEmlbRZV1
z0xeEWMYb2KJDM1kkp0Za%D~*j$j<;2=VEGNWMtT!v3P3v&Tq3HUj0z9()ft{MsF+s
z<bSUl!nn5HaCB2q@A+{{Vb-tN>zQk9>?@o%3%zIT(>I@<>N#&#)e6H(xqW-sxD=QF
z(|>ive(e%jMy~RAF&`%Wc=l34d0W?2`9{584%>p)|Mm4zuzzG)<9+g6aqC9@rMd~*
zv!`TjExEM5^Vxgx%LNNU{wc?tU9?}SN>20M??3Y2{eLUhqzd#Xd&b+jKiKnHamDf6
z={I}ZYts#0^oOz+J2)1zbYFDId$LB*;nfV4zeoLc|K*-+8M*7=^!q1W6R)w(Xna<z
zH%nt%|K;8G?T;P8-vnQi?Qa%s`t$fvfxaErk%R1QMr+e=OqM>%%f!scz__?^qe0_3
zgE%%0Z8k<$R(3{4mLP)w13wtwfU(Ufqokz3N?*Ucyj(A}A~ClhCsi*wKiA3v2=s}H
z3Vj0~V9d!Xu(%pH8#uBF0gYy1eC^pP1%iytC7g@~+6J01E14L@WT95(R+a#hLrQ*b
zVrHIRPJVJ?j(&1MF<MGy21RCZprF7D3H_?Y(LTG@noQa#u72A8<2PfuhtfI8%*LCP
zr}g~LWUWit%4^JhX0ph+D7VDNSzM)W-kf`IGWPY46}L=}Z*}ETu=_V@^~zfQV>|Z=
z+uW6lzV}c5#glhC4{lhynxVSr1aIR1tMLgb7iMwF8`yiU@mYT)d5YX*mn+3bWc9Dy
z@6B)QVf9$nP*XJ{wd9s0-yyr(Yg~4Ua!gKWI-|+FHG!>e<JIYgKH9!%Gx#>_S3Dmm
z=i2++B67Xi)h3PqpEVwuB+nMKT;=BMxBCC;8OBU!n*RH5GBD`kcYXA_le;@Eazba=
htK(76=ZpIrA8uQGt^UuBW&duj^tqM#BE>+Z4gixjefa<Y
new file mode 100644
index 0000000000000000000000000000000000000000..d6fbb6bf64dd45ddd0749bc7b15f694b96a3b524
GIT binary patch
literal 1089
zc$_n6VzD)7Vpd(i%*4pV#KL%}U(bM-jZ>@5qwPB{BO^B}gF)kRLv903Hs(+kHesgF
zU>JvkhsoK|P|QFC#9`;*_02EMD@n}EQwYmUEjLs)Py~r{@ksgRS7qkpBr51CxP~dD
zq$ZW7E0m-bmnZ-=%Nj_76mj#21g9pK7G;)HD!AsQXXd4*7G>t88|oYAf~1*w)FJ|$
zgELZdazI9e05t<;6*Pd>6_pm3l;;<fWK?Pb%`=b_=QT7jG&C|aurRbRF^>}GH3D)C
zEudV3a6=OVBZ!gOa3j4_D;0t>t5V?x7ZoQe7#Wxt=q6>BC}_BbX&TBK$U;0LmRc5{
znO71IR1yzXl3G@jpI>6o#HffIYK*K5%uS4Z3_x*CrY1%PhFi8zIZGbilnYD|T>p%>
z=|T<TGXA**Vu!v8GWayL`dn~NGM=9=Vt@Tbz&l0H?~x`(HD$j}?kX-_5U|ag&1c6>
zo((cvdNm}sooU;)dlk=ytBt|04p@Gde!IdpYH#4pv|WD7-hbS2xBl1KPwx_Jgzx{_
z(00#6XZp@<t`}Iv&YXKVd9%_P2mP7XXGgtCtZ-1Qon?Q2(Zs?x%%!fILYG}-yzjXD
z&d>7&DlCsgSoy@CPCFm6NwD^!otI694ZHE9f*B$&)m0>ZZcO?&rAEu%fnUV-{o}<O
zx}ILL_V=q?_T=@-`3pn#X7H?5VyaYWbS%x!+8<=#c#&IRjnL$URhRvasGVnGW@KPo
z+<3sCajyYCFeGJ#85#exuo^G}DFbeh06z;0Fafd|__J|nvoW%=vNJNWI2$+`*u(e+
zjBUmlB_#z``ugSN<$9?ViMa(isd~xzxmFfHppQLb^bLGKrYo?x8URgW69SsW!uZ;=
zRSE<dn@czu4YUn3VRkSvipfIl$gKpW(UkmLV1m}m$xlwq(N8WYM#~w%IA&z<&U$UM
zFYnHRN*2>wn|HE&-ZV$&FaMEww>KDcpOP_cI>o!oPhWax(d1JH1->`rt8RQ7I(HW9
zmVmr7@k%#Bt1V@0rtv4G3#4v7#VT}tg71`jmkZ}T5NLaC@z|?b)K_gPW3y{TkNsb6
zDfYwsy^j~4(3|klbD~kDuFB7lbsIU}-)CDM;?kuNEhf<MF;VJqfqd$>9h<f}#tJ%Q
z-}@1#{^0Hl?VwBj4hpX`s@I98ZGNWJv-&}`>a?#9ejW|8-*I-$o~o@6o8~5OU&<*c
zXgxhCAcy_c>L#lh-b{%Jhs3YGnH2V3zsULZ1a;=$OMbehZn|={D@JOskW6pwVWY;=
K#kZTCjsgJORE3!U
new file mode 100644
index 0000000000000000000000000000000000000000..943a0f459bd66f0b7439de8e0f4b76fd248bee14
GIT binary patch
literal 1022
zc$_n6V*X{&#PoOpGZP~d6APo!wsHerHcqWJkGAi;jEvl@3<iOQCI&`q%%LpIJlYWf
z&cPX}IXMd6sg(-BnN_I@A*sbBnR)37Ma78<Mg}GZx=EQO3L36qnud}F;vijIJOZg@
z@kROhCGkKt@gOw@a^k#(CWeMah6Waf7A9s<;=D#cuAv2#Ymi8al@<sqH4W4uRw@9k
z%*=z^XrYVYgeFEMWREhkGB7tW@-qO%xtN+585tf#-wt<M7W8!Hn`JAWJ6)Qm)6CnO
z@BEC3`P{V6CEt@6nIpJumR){UdquZqC#T>&r7fPHYrUdWgt~>_tav4Q@n!bATVDbm
zCwOXp`LW-Rv2fD)<Ff3L;U4CTU(Y;aJ||k|l}_cpTY49lY>1uN|LY;2(9_A*<;P20
z3sUqBlq&ihKYLr4;ld#m_Jzt5pX}BaTqk81&hwOWqsG$iT}RE;_B>eD@gs0r*lFHt
zyBc;D6ub<pSo_O%wbHu@6)z)$rgCa=$N%Kpe%$5NzfU{l`F>4xa7?*qw585VN~vM9
z9MhYv2AWeZ_TA8W7#e-=%%9^+`oj2wLMOjJz5VA`tzY&@jMmmO_A)UuGB7S~JY~>$
z+<+e#sItP0jQ?3!4VZzH0XIm1pM?dOXxI!Q**LV>7+G1_85vo84ZICJVSEF|HrtGn
zk^(Dz{qpj1z0``t+=84`z2y8{D+?gdClp8e20kEr6j)phoDCe=gn*{9FuwL|l>$M=
z<`Pau18oCMm~BjqVzN-%aw|)KNhBpdH!(9$FDE}aF-JeSpcpM(1EZUP!C1x0Idkdh
zYsX?La&(Js81Mfb!WTF@^xmRrd(Dr$)W293eEKU>^O41o#-=G3bv2`>ZMgf?>S081
z>ZS-cr9kiXoc;x2qU9D0nxcPhXMbaG+W6=NqyI<a4R!1M1?I2OdtUiJ`fj7kOZN!Q
zNsGO8ri<xk+%c|PHreIQ+eD=+W_OvKSLFI_^77i_>^<vox|_zW!nw7JZU4vh&&-kX
zzZG!x0+V2G(w{7bz-?B^OE$jnn{w^&k%bk>>ZdtEJK}y$*yAhd-SOP1H)MNr!D4~e
zUixCey<#!1R<pS_CU?v^U-$F0!WVwE@7JW=pCmCo{PlZ9EW?Y>J5AJ=zjDaZjf?XS
F0{|G$c`yI~
new file mode 100644
index 0000000000000000000000000000000000000000..72eef2f6d9bb845bd5a2892fa2478692976052ca
GIT binary patch
literal 1090
zc$_n6VzD!5Vpdzg%*4pV#KLH7f7*bTjZ>@5qwPB{BO^B}gF)kRLv903Hs(+kHesgF
zU>JvkhsoK|P|QFC#9`;*_02EMD@n}EQwYmUEjLs)Py~r{@ksgRS7qkpBr51CxP~dD
zq$ZW7E0m-bmnZ-=%Nj_76mj#21g9pK7G;)HD!AsQXXd4*7G>t88|oYAf~1*w)FJ|$
zgELZdazI9e05t<;6*Pd>6_pm3l;;<fWK?Pb%`=b_=QT7jG&C|aurRbRF^&@FH3D)C
zEudV3a6=OVBZ!gOa3j4_D;0t>t5V?x7ZoQe7#WyY=q6>BC}_BbX&TBK$U;0LmRc5{
znO71IR1yzXl3G@jpI>6o#HfTEYK*K5%uS5^3_x)%rY1&4hF!C`SLJfpdLO&b*r%D7
zck_GvFY_vyK8Hp6693{`@5r~l;#m26;bV(wwu#Z(!{p7j`$)&F33WQG(Ct0h=EGbS
zfnvrJ?7x?8i&itvSGBflu&kXb`QBk`^43jHOgvSN*!o}N=Gi;xoMM_!M8&)}pC*KB
z)ld0#_Vap$Gn`&Z&zTbZkKgZ_TiwOJRCx0{;SH0k>@}1BZb;2w;XSJHz~zP0tSQ2m
z>PmeM+MnVyS;SYJ6nsOVT;i$3t;rHki!c1XXclb~BByh##df8`x5@)D>py+n|8k>P
zS;E~`4<YaW->Uzv|8(`f>qO1t$Df&%Zd_B;B_MxQ^S=t){+q@wS<lv8IenaonUR5U
zapM7l#=Qpoz@U^BW@P-&!fL<_qzt%00{kp2z!b=4;LpaP&Bn;e%Ff8h;%wk(U=QOP
zFt!<Il#~=$>Fbx5m+PfgB<2?6r0ON-=UQ0+fj;(_(Kqk`nXbU%Y5+8iO$cZf3*&3g
zRw)o<Y%bwsG|)ECgxSHwC?*TFBexQiNK^82fhk%qCqFqcM?bls7%gisgW@)#Q8n%P
z=}8Xf{&BCp#@BY-uj*^{tjzoUKE_$|zJ1a=(z9UG-=qtjv)5Jh8XP{ivcQ$|(~X>&
zUMhRJ`DUnzXFAuc*SQz^wQr9@OutX~+bWyi?oM9I8?KtvmOMJa=ea~OW5%+3w`7j*
z*~52b&oozui{2~Szs(Og%YEcc`pUV6?n|r^ESB{dEY>ypvWKsD^QW_V^E`Q%94lgB
zK74WV-B}&`nl=XW+BSM*+WzE^Ie2z2=Uw;ikF7Z|-?Tb)v-P}|c27N*etE?fwYPJ-
zKYWiV<cOTSLS(ndfi1Bu2X$MgTIk4??NUn=KC`Fv?z>eUhaP_K`d9GJwN&A}(Xy?X
Ki#*QURRsWt?29k}
new file mode 100644
index 0000000000000000000000000000000000000000..18d9f67651c8b3b12c2928efed17eb0f78d27ee1
GIT binary patch
literal 989
zc$_n6V!mn6#B^u@GZP~d6APnu>1zXCHcqWJkGAi;jEvl@3<iOQCI&`q%%LpIJlYWf
z&cPX}IXMd6sg(-BnN_I@A*sbBnR)37Ma78<Mg}GZx=EQO3L36qnud}F;vijIJOZg@
z@kROhCGkKt@gOw@a^k#(CWeMah6Waf7AB@q;=D#cuAv2#OA9NT7!{E{#>mRR+{DPo
z02JqBYGPzy*#0d!p_*N_)7|~<ojH+W4>=DD#hG8qS?6|phRWqj=W|_}boAvlxHeDw
zo;bVSR_-vvv7d{#vRIeZctjdL6yXs39sb*8>q~dBlB3Dt+3PMpdD-s$^2$32&&Ac-
zd9QYRD{07>PCT<^mz{jsbtCQw?;b^&8zGrnt7nAr{fa$vn2+&xfV#4|kNBgj5wo)v
z?pE8La@KBT#Fyl{=b;&=oU?MLSvy_3<39D0=#q)krZxANbuCF|KUjQU#qZ97RO!7E
zp&{Qmi#&7PTeW>#@+Ifru4AniemH6CG^=gr7k}}p@7%NNL3>n%IiJrr$Iq+M+*i%-
zN-Os|{>N!!_hfm?l6cWlCT2zk#>I`h3>vo^@B_n8R+y3TKMSh?GmtXi1_|)9umIBt
zn}H`Ahc+7{D=RxABa5wpwSgs!Z@}25n^96yV5P5LUS6)3T9KGrkdvyHoS$oD0R;N!
zQKE0)12R{E#nr&sz>!S|XbKDCYtL3G5M*pF;bb(>HqeBb&crAt3pG8rvILj{Qu1>X
zGxPLv@{<#D^pgvU(UL7QC{oq`XKjA`|FjxY{<psie})`7A8tGCukrSZeeDG`I#aDO
z{<w>H{h2GJCNH_PZYlpa`M0u<nkR2MDRTGxG{c-XAKBxDe&3W_I_ao+5r3$I>(ND8
z+Z)ZC+!uw3T>ccg`R11MXS7b`Zj3zk`<Ca{hvzc`Klqfpw+jZYDiH~pI;ZB%l+a?q
z&+~iMPhR@s-_}XZE6in7!!P$d+?npu@mBZtN{^Xs6NB}{J6^=xoYdn}d_4ZSEXQBA
z+m*ksuQ$AXPVfAew_H!p3-go-K9rmFIIe0vzs2L}cM?8D*?w+*ld=8~cbT+;c8c;z
hMrPxE;cK|WHkUF#U;HC@Uv7WHgO!U#(_c;31^^%VZW90i
--- a/security/manager/ssl/tests/unit/test_keysize/generate.py
+++ b/security/manager/ssl/tests/unit/test_keysize/generate.py
@@ -28,50 +28,58 @@ aia_suffix = '/\n'
 mozilla_testing_ev_policy = ('certificatePolicies = @v3_ca_ev_cp\n\n' +
                              '[ v3_ca_ev_cp ]\n' +
                              'policyIdentifier = ' +
                              '1.3.6.1.4.1.13769.666.666.666.1.500.9.1\n\n' +
                              'CPS.1 = "http://mytestdomain.local/cps"')
 
 generated_ev_root_filenames = []
 
-def generate_and_maybe_import_cert(key_type, cert_name_suffix, base_ext_text,
-                                   signer_key_filename, signer_cert_filename,
-                                   dsa_param_filename, key_size, generate_ev):
+def generate_and_maybe_import_cert(key_type, cert_name_prefix, cert_name_suffix,
+                                   base_ext_text, signer_key_filename,
+                                   signer_cert_filename, dsa_param_filename,
+                                   key_size, generate_ev):
     """
     Generates a certificate and imports it into the NSS DB if appropriate.
 
     Arguments:
       key_type -- the type of key generated: potential values: 'rsa', 'dsa',
                   or any of the curves found by 'openssl ecparam -list_curves'
+      cert_name_prefix -- prefix of the generated cert name
       cert_name_suffix -- suffix of the generated cert name
       base_ext_text -- the base text for the x509 extensions to be added to the
                        certificate (extra extensions will be added if generating
                        an EV cert)
       signer_key_filename -- the filename of the key from which the cert will
                              be signed. If an empty string is passed in the cert
                              will be self signed (think CA roots).
       signer_cert_filename -- the filename of the signer cert that will sign the
                               certificate being generated. Ignored if an empty
                               string is passed in for signer_key_filename.
                               Must be in DER format.
       dsa_param_filename -- the filename for the DSA param file
       key_size -- public key size for RSA certs
       generate_ev -- whether an EV cert should be generated
 
     Output:
+      cert_name -- the resultant (nick)name of the certificate
       key_filename -- the filename of the key file (PEM format)
       cert_filename -- the filename of the certificate (DER format)
     """
-    cert_name = key_type + cert_name_suffix
+    cert_name = cert_name_prefix + '_' + key_type + '_' + key_size
+
+    # If the suffix is not the empty string, add a hyphen for visual separation
+    if cert_name_suffix:
+        cert_name += '-' + cert_name_suffix
+
     ev_ext_text = ''
     subject_string = ('/CN=XPCShell Key Size Testing %s %s-bit' %
                       (key_type, key_size))
     if generate_ev:
-        cert_name = 'ev-' + cert_name
+        cert_name = 'ev_' + cert_name
         ev_ext_text = (aia_prefix + cert_name + aia_suffix +
                        mozilla_testing_ev_policy)
         subject_string += ' (EV)'
 
     # Use the organization field to store the cert nickname for easier debugging
     subject_string += '/O=' + cert_name
 
     [key_filename, cert_filename] = CertUtils.generate_cert_generic(
@@ -94,17 +102,17 @@ def generate_and_maybe_import_cert(key_t
                                                     cert_filename, key_filename,
                                                     cert_name)
         CertUtils.import_cert_and_pkcs12(srcdir, cert_filename, pkcs12_filename,
                                          cert_name, ',,')
 
         if not signer_key_filename:
             generated_ev_root_filenames.append(cert_filename)
 
-    return [key_filename, cert_filename]
+    return [cert_name, key_filename, cert_filename]
 
 def generate_certs(key_type, inadequate_key_size, adequate_key_size, generate_ev):
     """
     Generates the various certificates used by the key size tests.
 
     Arguments:
       key_type -- the type of key generated: potential values: 'rsa', 'dsa',
                   or any of the curves found by 'openssl ecparam -list_curves'
@@ -116,109 +124,118 @@ def generate_certs(key_type, inadequate_
     """
     if key_type == 'dsa':
         CertUtils.init_dsa(db_dir, dsaNotOK_param_filename, inadequate_key_size)
         CertUtils.init_dsa(db_dir, dsaOK_param_filename, adequate_key_size)
 
     # Generate chain with certs that have adequate sizes
     if generate_ev and key_type == 'rsa':
         # Reuse the existing RSA EV root
-        caOK_cert_name = 'evroot'
+        rootOK_nick = 'evroot'
         caOK_key = '../test_ev_certs/evroot.key'
         caOK_cert = '../test_ev_certs/evroot.der'
         caOK_pkcs12_filename = '../test_ev_certs/evroot.p12'
         CertUtils.import_cert_and_pkcs12(srcdir, caOK_cert, caOK_pkcs12_filename,
-                                         caOK_cert_name, ',,')
+                                         rootOK_nick, ',,')
     else:
-        [caOK_key, caOK_cert] = generate_and_maybe_import_cert(
+        [rootOK_nick, caOK_key, caOK_cert] = generate_and_maybe_import_cert(
             key_type,
-            '-caOK',
+            'root',
+            '',
             ca_ext_text,
             '',
             '',
             dsaOK_param_filename,
             adequate_key_size,
             generate_ev)
 
-    [intOK_key, intOK_cert] = generate_and_maybe_import_cert(
+    [intOK_nick, intOK_key, intOK_cert] = generate_and_maybe_import_cert(
         key_type,
-        '-intOK-caOK',
+        'int',
+        rootOK_nick,
         ca_ext_text,
         caOK_key,
         caOK_cert,
         dsaOK_param_filename,
         adequate_key_size,
         generate_ev)
 
     generate_and_maybe_import_cert(
         key_type,
-        '-eeOK-intOK-caOK',
+        'ee',
+        intOK_nick,
         ee_ext_text,
         intOK_key,
         intOK_cert,
         dsaOK_param_filename,
         adequate_key_size,
         generate_ev)
 
     # Generate chain with a root cert that has an inadequate size
-    [rootNotOK_key, rootNotOK_cert] = generate_and_maybe_import_cert(
+    [rootNotOK_nick, rootNotOK_key, rootNotOK_cert] = generate_and_maybe_import_cert(
         key_type,
-        '-caBad',
+        'root',
+        '',
         ca_ext_text,
         '',
         '',
         dsaNotOK_param_filename,
         inadequate_key_size,
         generate_ev)
 
-    [int_key, int_cert] = generate_and_maybe_import_cert(
+    [int_nick, int_key, int_cert] = generate_and_maybe_import_cert(
         key_type,
-        '-intOK-caBad',
+        'int',
+        rootNotOK_nick,
         ca_ext_text,
         rootNotOK_key,
         rootNotOK_cert,
         dsaOK_param_filename,
         adequate_key_size,
         generate_ev)
 
     generate_and_maybe_import_cert(
         key_type,
-        '-eeOK-intOK-caBad',
+        'ee',
+        int_nick,
         ee_ext_text,
         int_key,
         int_cert,
         dsaOK_param_filename,
         adequate_key_size,
         generate_ev)
 
     # Generate chain with an intermediate cert that has an inadequate size
-    [intNotOK_key, intNotOK_cert] = generate_and_maybe_import_cert(
+    [intNotOK_nick, intNotOK_key, intNotOK_cert] = generate_and_maybe_import_cert(
         key_type,
-        '-intBad-caOK',
+        'int',
+        rootOK_nick,
         ca_ext_text,
         caOK_key,
         caOK_cert,
         dsaNotOK_param_filename,
         inadequate_key_size,
         generate_ev)
 
     generate_and_maybe_import_cert(
         key_type,
-        '-eeOK-intBad-caOK',
+        'ee',
+        intNotOK_nick,
         ee_ext_text,
         intNotOK_key,
         intNotOK_cert,
         dsaOK_param_filename,
         adequate_key_size,
         generate_ev)
 
     # Generate chain with an end entity cert that has an inadequate size
     generate_and_maybe_import_cert(
         key_type,
-        '-eeBad-intOK-caOK',
+        'ee',
+        intOK_nick,
         ee_ext_text,
         intOK_key,
         intOK_cert,
         dsaNotOK_param_filename,
         inadequate_key_size,
         generate_ev)
 
 # Create a NSS DB for use by the OCSP responder.
new file mode 100644
index 0000000000000000000000000000000000000000..1db4f98d1f4cc7d58202513987e57d4cc594cac6
GIT binary patch
literal 766
zc$_n6V)|v!#I$1pGZP~d6Ep9G)dt*boC$3njH%2l%uEKJhWZA&Y|No7%sgrl0nWi0
zsW~|c-l>%e!I@R53L&Y*C7F5Y3Ms{j3Wf$oCb~(PC5B=KA|MT1JiJBu`6cl{xp<JA
zft)z6p^2fPk)eTwp@peIlsK;ukZWiG<r;*MZk4iuBE%}G%shlmx~TRxG423j9X58Y
zHji@_EQ~;oJX2#M!|x*VF2&5uMaGXGZ(nhHquIlmb3bjlX>iZc^+5ikJD=KJ_U4J(
z2JE)h@K9SVVbI2(*0j!kZoRG4v$({hyBw4E9J=WoYx7{azH0IA)cmGT%<pBtvUE=f
zc>MWI^o^wSYdII2X5Y3oK6LW7W@<~K<hN#(?k1!C+m>Yr$)EIm;Z+*WB+796$iEew
zp}(x+SAS~X&fcZ5@5$s=kkgu-lCpMaoekz`YB>;|yXU+_PcuWDgYZX7uW$NW*X`Tf
zv0|x&VDc3^`A<CU9l3{g#U$Ib@+x&rX2}n@b|KeRev7ixzV~&~_XB@#)E8N!l%#z7
z`{uL>ImYe!3r+GL&A!99z1HGtcvj{i)``UzvUg7lR8(A&C*FIep=`r^E|+Qt=EhbA
zkUKsf4BdUwa9*>UK~C!vfohAYH2*%=VwH1Eldjjy+IqoPMp<yj8_x_QmktxjIc#;&
zFFu{v`)Kp|lh<F=-bzq=_V(%T<OrqPp|9pML@S+nlEHFB^YyhC=QE!t<?ecWRcv0W
zg2GzOv&oa0XLs#5T)V%HBfER!??2TkSLB5ch#ip4c)VD_K+b?47{#)}jEw(TSPhtg
z6fl7T1^8Kj$&--{CABi^GZ^SFiIjdwoq8<5KW5*0x4fekP50V%Gc+)X_{{YEF*)~B
S{f~O{xep6|*YgS8v;_d?Y$}cb
new file mode 100644
index 0000000000000000000000000000000000000000..1372d246685daddaf3f1f8b52574f5b5617847ee
GIT binary patch
literal 763
zc$_n6V)|~-#I$7rGZP~d6SETkJ_Bwx&V)7(##Ck&W+nr7Lp=i>Hs(+kW**gu0O#P0
z)SMgz@6<|#;LNI2g^<+ZlFYnxg_Pn%1xqsn-K5MCLs0`^ka{j2o}&Exl6at0JW$F&
zPMp`!#L&>l(7?jb!qgy2oYx4*HMD?o4MGj|4Rj$Eso}TC(7?z9Y?G3K0>mcC%shxi
zU?~)9n;5qPu?`!%R-4B;3l>HoN1my%k>Pidd6!~l<|5<AkGHS5z0vI9%(<Vo+%&l7
z=z1Xk(Vb82E_?IDZ3A{&Yj~)wmN01JPitCdKeygi>RDW3(p`?pdk)=nj<tEPTwk?#
zcWQpqC+7FEUs<{*1U&xyCi+HF`n8;kO|x&?8Xr1&TQjvKQSw`}N_Ugd{%y-Lgyc_p
zzVIpyXA)(&edON?&d^_0@vA?zZ)fk)*!N^|E68chPDxoiw9W?eG_@QE&)sugqNkZ5
z&O!L2rPnw8t?Tw}?pU!@LNNJ?o%|=B_Kw^`yJC`UT6vYaCbQ%RT)U8KE5AkAY2W)g
z>HC4dH|mS5QA$$2{e5%VgdF2`{e>p^k7nOt++J&OH9RZx5bMO^3)#D;1u7~o$rJBA
z(@?fyK9@_i19M{w15;x|#uUBf!v5=-o)yi~JilLj=F>e7*utc|{!e!^ST6MSMaAp?
zk6xW==9iaQRNGS@r2R&tt;6u|@*X#D35J~!#k|j5Y;Bg$O?!V!dIsZk3pvr**9#7d
zuPP7xbIi>)>jLX#hZ)z}mQQf$s^(m+f4OMUG!EV+{2wjm9iP|#`e(^IuNcS03I=ip
z{J;p76=r1o&%$cJ45WaG6DYvX0!*5WY$z#}*?_@77Z|G3eK%fBm3}mB{k~es7Au8K
gzvP)7GKuhidbxPbecQOY?ah|k7#hXHgFnmz06)wlYybcN
new file mode 100644
index 0000000000000000000000000000000000000000..9880e5c664efba9ca80b7a591ae2b045cdb1f820
GIT binary patch
literal 737
zc$_n6V!CV4#58jOGZP~d6LaOSw+7s7oC$3njH%2l%uEKJhWZA&Y|No7%sgrl0nWi0
zsW~|c-l>%e!I@R53L&Y*C7F5Y3Ms{j3Wf$oCb~(PC5B=KA|MT1JiJBu`6cl{xp<JA
zft)z6p^2fPk)eTwp@peIlsK;ukZWiG<r;(->KW)jtWw2qm8F>h*d`?d1&B?OnRyV4
zKr*PdHZjfyVo5f3tu~Ky7A%ZF4i8f$!}(Y2(-_|!TzTU4=H{v#hhM9%O6T85dCC&P
zx;taRwwDVHkF4DFIrUW45$O%p#ajK7WEB>iF^Ipd-Z}GBLX-337LWM(*Qdxd6ihbh
zb!+Hu&G2DYpMNWyUsdUcrLy^}g%O{gl&h(>s<g=a%}t4}5ZbC+&3*Xl$^>5~QHI&Z
zrUCtbb8lK4pRz7YWwOi*=IX6X6>L{n?>nv435-jNc2$&6K9zZ7BBPgmuIR*vYiG1}
za`80H+WpCFTIGT#8Ox@ma2B4w8TTMtYeKUB_5Pg^Yra(cJ#2c>QE;N5QFz?h-rK)&
zFYsHmFLZ1*arhr!7(Tu6#H!V`o7rn`)a&)0Y^Xfy^RUiC>Iu)Q0{sx?8U|o+bXys|
zoNK1c^DxAc@36=;1-maC8|I5=yo=`#e;6{eS>l7j&vUQ#F*e-Uyea6qglh1VHJX<3
zGIi_Lxn5rM(<huIaypOS$8&G|J>#!j7uh3!<=ug5DU(Bo{?6&pZTpfSwP2N~K|luM
z+ry&Sx;d9$ai#W5obZ>el-pymf`Oa?KQIzyg&7(Dv#=U411Vq%1Pbu80Mj2M8%lCy
zHe@i+0|w!$!;3xFNp6#DdC*vS^82TKKUaP?01EGzqw~7G%WM<(ogE%>5?_u59}#f^
E0F}5ESO5S3
new file mode 100644
index 0000000000000000000000000000000000000000..818eb1173cd06195d0413510255658d0f9d221f5
GIT binary patch
literal 571
zc$_n6Vlp>qVqCC*nTe5!iG|TG<ADJ$8>d#AN85K^Mn-N{1_Mt+eFI%K=1>-99<_)7
z=irRgoE!!3)Jlcm%&Js{kksOm%)E4kqT)maLjxld-K5MCLoovpkOnRu-lF{cl6at8
zJV?$!PMp`!#L&>l(7?jb!o)aAoYx4*HMD?o4Z=vU%FqmKm9l{%#44%GJeW;DDO7tK
z=OKHFk(GhDv4_E+v4g3xfnmeUrBxR{Cbp(5x7hys2G?4D#ToCT%Qmj5ZK#%zWEI}B
zZqo0zl5=4bb0=t@-9IH)WQ)bY_T_g}qrMr&_V49sf46k$*QK$(b9&hy8bt^=X<l7!
z>sS}RPX3J0$;I^-y!ID(aaXGA_RSQvEf(D$x#+<I?K(?`1G%+a#eFKeUiyYi%!~|-
zixmvy4ETZmkQHWR{LjK_zzn1exIqH^EG)pNVMB`)=Eg<_hmYn4HE;MH?Wt$35WU2&
z<9fYDzmHGK_D9I6n@@#OJ}eE+Iql%4QdMoh`eNBa!Pj;F71Uicrrl!trsw<BI$LZe
zj~{1!YRKQDrd4b^4Mje)Upk>D5mefv+c|k%YAQ$WrgJujjCpMD%T(A!erId;l3{J1
RQ_DQP_OGnK(%Rq<J^**!y#xRN
new file mode 100644
index 0000000000000000000000000000000000000000..8ab24e0c332633cb84522328312808be932e72e8
GIT binary patch
literal 571
zc$_n6Vlp>qVqCa@nTe5!iG^Xmn7;up8>d#AN85K^Mn-N{1_Mt+eFI%K=1>-99<_)7
z=irRgoE!!3)Jlcm%&Js{kksOm%)E4kqT)maLjyxI-K5MCLoovpkOnRu-lF{cl6at8
zJV?$!PMp`!#L&>l(7?jb!o)aAoYx4*HMD?o4Z=vU%E$z4m9l{%#44%GJeW;DDO7tK
z=OcTHk(GhDv6sQ1v6HE>kztyY1Mh`6zlf-k`AkiL8m(-f-ZG@=d;j~M|EO?&?70i~
zMCA^g)Bm~KwpPY3=c@7i6WtPO6Y8T@wk>So`ERlG{-x-w>zpT5Llo8io#L9dt@!Kx
z$KOtUttnJ$GUF*RJ*ArY)72yB&fYn1r0#6IEdG7wv*$@E*|Aoa?sU&OKPx^bl!=*<
zfpM{dft&$9&?B<KjEw(TSPhtglmRzLfS-j07&mNavBKQgz;LR5&MosR*B6(E+dFRF
zB$9vDR!-<kO7Qxn`A%M!D!BfeCTrA9F;u+&uI>?s<EGZd=GVDqwNB7@zUzdmb^GJu
z_q=hD_dXQO4E#~H!{B0iz{}p><~!u)*G{-|<;-@Es_kERZ~d21oz^`&di(6>%^MZW
Un2%jxbJ@<|viO`ums8(q0Jq}I#{d8T
new file mode 100644
index 0000000000000000000000000000000000000000..18e3c22538de7ade813e4c22e56252ffcdd93e17
GIT binary patch
literal 572
zc$_n6VzMx3VqCa@nTe5!iG{H&+QNXBjZ>@5qwPB{BO^B}gMp`^zJV?qb0`Zlk6J{4
zb8tp#PL6_iYNbMOW>u;}NNRCOW?s5NQE{Szp@ET!Zc=86p_qXPNCOuSZ&7}JNjy+4
z9wcWVC(dhVVrXb&XkcMzVPX^|&T9nZ8d^ZP24SRIrEH)Gu}Ug44`Guos=bZ#kv+x8
z%D~*%%V5yh$<)}$u%vuO>f~z~LL2++oc8vcZ^%zz;NH8<wVJE>d0N7&DGu}eox3>K
zNjMgH&y1K^v%_!UnqKF9;&E%MkJn_q5KsH`GFL_Nyw<Y@9ziqtJMS)jwA@zuJM-m~
z$@_0f*3A=Kr++WUQsHs>`a8#;MXb<^l4RVPxv6A*d8tSAg3z`pEaLr4%!~|-ixmvy
z4ETW_krifS{LjK_zzn1exIqH^EG)pdVMB`*W}wSw=|1~6|Mu0prF~Jo2MwOp-3ip5
z+ohHtF}FoyzNU|qV+9j`y#Dbe)BC<EahWd2G0gbsbo#Z_vbDQROmB#4Fg}iabo@g^
z)V{~cY{5k*?`qrJcVu@c-qfpdAS9V3j<@Jrmr-WyUWe1mWVJqBj;_CM<aONPxV7rD
NlJ=JY?Q7iKlK?L^#0dZZ
index dba491b555c9bb73295e2308200897bb07a907c4..6575e38eb97e7a4688f5b99577cb0f766c1befdf
GIT binary patch
literal 51200
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
new file mode 100644
index 0000000000000000000000000000000000000000..b14b30adc504ab12755a33d84de7853f86af91ea
GIT binary patch
literal 753
zc$_n6VtQ-P#I$+=GZP~d6LY|V1_N$3&V)7(##Ck&W+nqqLwy5XHs(+kW*)VO0O#P0
z)SMgz@6<|#;LNI2g^<+ZlFYnxg_Pn%1w#WP6WyfD5<@Wq5s(Hh9^Rt-{E~Q}Ts%n5
zKu(<3(8SQt$k4#T(8AOpN}SgS$ThTpa;a%m6XOmb)?s7UYV$Z}!NLgS$TKxIGW;$w
z?^4XnTx9(C@%9zBH<~@1Irr0+n+EqBT@U0xy7Q^sWpAFiZNP484G*=|5(aJjX-(_w
z=hoXwJ&Q|By2~+n&!L;nu{IBu>#G*;PR(!n#Qa|ND@*r;fXAQTMBhkCzm{{cY4&Yf
z<3lHJYo@j&N`7lr>25OGzinBDko-x{7ha{|Ori|8kNjJ~8T!jAe)XsJ?d)9|`<_g0
z1v#zRDJg4**4bd5rj`TYxqHq_^fWWXIS7BW^!ld1b=|(r9V?bf2qs^#lmEoi-jRD~
zS4^@^E3Z=5WS0DZYZr2D<+mt1?R#G*eLwK`MtzYrN=eGMzi&>PkYn7gztANA(d;{n
z+iNYZhG%6SVx3rgA$#|<Kt;tRdE&ii8p<}z=W?lbU~X(>0J)>}U4YI<36nO1ABrjy
z7Y1;z+b0`dYc}2aYniQD=H-PdE5ts0m-gmsd49mmJxgg>_hb8mhxT6e6+F3Z^|=Dp
z1y(Cs4sFW0AJyO7d3QGRjj!(&8opOo|I~5oe37FVVP8>yYyHPV={?mm`Yu@sp6*?|
zCS=B6jcsr4in+<oJ+`xuNo}!$ft&$9Fji%S85#exuo^G}DPWoe3h=W4QzRoBN&;op
zXE4xV5)rGJFzLW;<trEULLbX*S`n`HcoGkji221@+XL&aNk3V-vFA&%l-C)5olO83
CF(XC*
new file mode 100644
index 0000000000000000000000000000000000000000..a7d663f8d758a7dead56874d1cd70925a0b6519a
GIT binary patch
literal 720
zc$_n6Vmf2c#MHHbnTe5!iG|^-9iIU=8)rhB2V*KT3p0~}yP=+e4jXeQ3p0;uM1XT}
zMruxuf_G}ALU3kPszOL=aY<%gx<X2EqJpKFfo@V}iJ_>0Fi1TY4^L5ken~t~Djq0h
zAScdiXkut+WN2VvXkls)CC+OE<QiH)xzw|$iE$PXOR}+RwRxPgU||Guc$g{~&c9-x
z#`x~w$`h|QH&^92{91KYI{!w>Q<f0c-5CqEy<BK`WaX~Usi&%rNN=bv*6N=mtFYjV
zLHup?&Y7nYnw%fEc*M`YK1HUXV6sWCTSIqih7Y^?{9EDts!BgBmCau*jQI4VTurrA
zrA6LvZc228&{o}Q?!#ACCipUmGR!tM4e0-yd(-0hlyzY$lVx5oS8rviV7tP4-)XH*
zU|d?XtD=PRsmvo28NKXtMJGO7JEOIei>GPU?oVdZDi=J-ST-evv+(@QxChx<6O#R}
z_wS5Y^QGeNVbhC_f)fRe!sE{N-u{()f#0Hip<}Cw!~gig@ac^wR;{kx%wBt=Ua$9L
zL*-GQhjkuOPk3Gx=!Y;@GcZ*sSguKUES&Iu<Ni~n>Bb`Z4UTg*ujc-Ke)2@I^K9jF
zHf-~0I2gyBa&6y~la}@~%QbJDU)#&QGv4jM%+BX09fKpi4o~=6W4YOhgO%yOQ0CS6
zS+hmw-MRSv!S+ooWl^HGB1<-CaUY0gK7O3H;PZiwr*q@iSew4xshGJ~!9dP{9~f=2
z!i<dnSy&C2ffO*s0R{M3fa#5q4JG+8>oXYWFp1dm96El@UHNOn<f;{W<vN93h5NQM
biD+-QxBW<!t=M1HY2`Lr`qf9m+*bhr2Dc7L
new file mode 100644
index 0000000000000000000000000000000000000000..a3af113da56ba307230c2428faa3dfdf67da3a41
GIT binary patch
literal 557
zc$_n6V$w8dVw}8ynTe5!iG`8TztMn~jZ>@5qwPB{BO^B}gMp`^zJV?qb0`Zlk6J{4
zb8tp#PL6_iYNbMOW>u;}NNRCOW?s5NQE{Szp@E^9Zc=86p_qXPNCOuSZ&7}JNjy+4
z9wcWVC(dhVVrXb&XkcMzVPYI5&T9nZ8d^ZP)U>K`9<o0eSs9ocdl(EFJD3_97_MJ`
zyfa*N)1vj)B{g~scLe+O2uRh4{olB7y^Yp|2}@SJZ8a@td+fr~_tP?TQuvQU>F)v#
z#aBqUF8}n#ch=T3)kZz9)=BHHiC-J_NHOv0x}d+Bp+ZUaU%c4P*@n92809|hm2q6|
z^6~4w?^8Y()vK`uGpODC$i1<|eZm&CfFrU@%!~|-ixmvy4ETXgmlbAY{LjK_zzn1e
zxIqH^EG)p-U_*-sW}w5f5@sHXeDyYV`_031i?pJrnLpF}xv*@SLF?`l`-2YM{$6&q
zSV+(K*7B6(Ju+^Nxp5`e+0_+~>4d2siJtmC--LPPYt7I(LJ?+<1Pnzp;=hH=G~@1%
w%V3%jd)cLa*;LM1U9s%?&l}G2XgoRM-X<ydw?3N1=n>nzj<#Z^SL)h#0EAP%LjV8(
new file mode 100644
index 0000000000000000000000000000000000000000..5848b6a09e4569e0683406fe91d9def2a6dce379
GIT binary patch
literal 559
zc$_n6V$wEfVw|#onTe5!iG^XNX@>zX8>d#AN85K^Mn-N{1_Mt+eFI%K=1>-99<_)7
z=irRgoE!!3)Jlcm%&Js{kksOm%)E4kqT)maLjxld-K5MCLoovpkOnRu-lF{cl6at8
zJV?$!PMp`!#L&>l(7?jb!o(;_oYx4*HMD?oscBW?d}MzxvNA9?_A(eWb}}_KGOYi7
zVXE*E;}?4;?epL1)b*%|(SGxm2bZn$r6PIfJ9{l(EoWGBBzy5!%Zl#2(B-K+zPBBY
ze95tV!Sjdn_Hk|EmY=4uN41luw}WX#VM5A26$Poc=k&75XN&$0mcFqe!&Kh4$Xjog
z1khLWg?TJLd0VLp>nDG;U372z{aLn&VHvBLm>C%u7b_UZ8Sn$$E-TE)_@9N<fEh>`
zaDxQ+Sy+J4!G;zQ%s`i~oGbjB@6A5BzHMwv${S`iIcrQi`u`-0;FDBUC3l9cYVT|g
z<jJ~zF1xD1IZ>nko$j3dPM+6)9XHw^$y$_kvoG5qUr>6!OK@_i)XS)CpDu5+IvNxz
yWvb|W!om92sraMvS|_gB7bt%V(bkz1An@Vg^Y-FHt2P>J&W}o}n`Jf4`ziojCB2XU
deleted file mode 100644
index b7ff2c94e03e8e855ec42946ed5cfae2e4351837..0000000000000000000000000000000000000000
GIT binary patch
literal 0
Hc$@<O00001
deleted file mode 100644
index ab42878ab1455ea8ac473caf0498abe468d222e1..0000000000000000000000000000000000000000
GIT binary patch
literal 0
Hc$@<O00001
deleted file mode 100644
index 2ec11beb7a00d95f163c485082461ccfbd7c4c44..0000000000000000000000000000000000000000
GIT binary patch
literal 0
Hc$@<O00001
deleted file mode 100644
index bd23f70d7506a3dcb8c84f5c65a8299fe5de1ade..0000000000000000000000000000000000000000
GIT binary patch
literal 0
Hc$@<O00001
deleted file mode 100644
index 8ad88d3f551804afa4cbd6739cec647cfe3735d8..0000000000000000000000000000000000000000
GIT binary patch
literal 0
Hc$@<O00001
deleted file mode 100644
index be843f5263e288faad1ee2be7e75fa46da6f3708..0000000000000000000000000000000000000000
GIT binary patch
literal 0
Hc$@<O00001
deleted file mode 100644
index 58b688db61cf13ec39a953cf2167b3600d4d9a25..0000000000000000000000000000000000000000
GIT binary patch
literal 0
Hc$@<O00001
deleted file mode 100644
index 26f46a1bbc47f0d42c3b2ca49b0a2515a9505714..0000000000000000000000000000000000000000
GIT binary patch
literal 0
Hc$@<O00001
deleted file mode 100644
index 74c7eddfcac8594e6ad1d78d40ccb43e1caeeb8c..0000000000000000000000000000000000000000
GIT binary patch
literal 0
Hc$@<O00001
--- a/security/manager/ssl/tests/unit/test_keysize_ev.js
+++ b/security/manager/ssl/tests/unit/test_keysize_ev.js
@@ -41,48 +41,40 @@ function checkEVStatus(cert, usage, isEV
   equal(hasEVPolicy.value, isEVExpected);
   equal(0, error);
 }
 
 /**
  * Adds a single EV key size test.
  *
  * @param {Array} expectedNamesForOCSP
- *        An array of nicknames of the certs to be responded to. The cert name
- *        prefix is not added to the nicknames in this array.
- * @param {String} certNamePrefix
- *        The prefix to prepend to the passed in cert names.
+ *        An array of nicknames of the certs to be responded to.
  * @param {String} rootCACertFileName
  *        The file name of the root CA cert. Can begin with ".." to reference
  *        certs in folders other than "test_keysize/".
  * @param {Array} subCACertFileNames
  *        An array of file names of any sub CA certificates.
  * @param {String} endEntityCertFileName
  *        The file name of the end entity cert.
  * @param {Boolean} expectedResult
  *        Whether the chain is expected to validate as EV.
  */
-function addKeySizeTestForEV(expectedNamesForOCSP, certNamePrefix,
+function addKeySizeTestForEV(expectedNamesForOCSP,
                              rootCACertFileName, subCACertFileNames,
                              endEntityCertFileName, expectedResult)
 {
   add_test(function() {
     clearOCSPCache();
     let ocspResponder = getOCSPResponder(expectedNamesForOCSP);
 
-    // Don't prepend the cert name prefix if rootCACertFileName starts with ".."
-    // to support reusing certs in other directories.
-    let rootCertNamePrefix = rootCACertFileName.startsWith("..")
-                           ? ""
-                           : certNamePrefix;
-    loadCert(rootCertNamePrefix + rootCACertFileName, "CTu,CTu,CTu");
+    loadCert(rootCACertFileName, "CTu,CTu,CTu");
     for (let subCACertFileName of subCACertFileNames) {
-      loadCert(certNamePrefix + subCACertFileName, ",,");
+      loadCert(subCACertFileName, ",,");
     }
-    checkEVStatus(certFromFile(certNamePrefix + endEntityCertFileName + ".der"),
+    checkEVStatus(certFromFile(endEntityCertFileName + ".der"),
                   certificateUsageSSLServer, expectedResult);
 
     ocspResponder.stop(run_next_test);
   });
 }
 
 /**
  * For debug builds which have the test EV roots compiled in, checks for the
@@ -92,67 +84,75 @@ function addKeySizeTestForEV(expectedNam
  * For opt builds which don't have the test EV roots compiled in, checks that
  * none of the chains validate as EV.
  *
  * Note: This function assumes that the key size requirements for EV are greater
  * than or equal to the requirements for DV.
  *
  * @param {String} keyType
  *        The key type to check (e.g. "rsa").
+ * @param {Number} inadequateKeySize
+ *        The inadequate key size of the generated certs.
+ * @param {Number} adequateKeySize
+ *        The adequate key size of the generated certs.
  */
-function checkForKeyType(keyType) {
-  let certNamePrefix = "ev-" + keyType;
-
+function checkForKeyType(keyType, inadequateKeySize, adequateKeySize) {
   // Reuse the existing test RSA EV root
-  let rootCAOKCertFileName = keyType == "rsa" ? "../test_ev_certs/evroot"
-                                              : "-caOK";
+  let rootOKCertFileName = keyType == "rsa"
+                         ? "../test_ev_certs/evroot"
+                         : "ev_root_" + keyType + "_" + adequateKeySize;
+  let rootOKName = keyType == "rsa"
+                 ? "evroot"
+                 : "ev_root_" + keyType + "_" + adequateKeySize;
+  let rootNotOKName = "ev_root_" + keyType + "_" + inadequateKeySize;
+  let intOKName = "ev_int_" + keyType + "_" + adequateKeySize;
+  let intNotOKName = "ev_int_" + keyType + "_" + inadequateKeySize;
+  let eeOKName = "ev_ee_" + keyType + "_" + adequateKeySize;
+  let eeNotOKName = "ev_ee_" + keyType + "_" + inadequateKeySize;
 
   // Chain with certs that have adequate sizes for EV and DV
   // In opt builds, this chain is only validated for DV. Hence, an OCSP fetch
-  // will not be done for the "-intOK-caOK" intermediate in such a build.
+  // will for example not be done for the "ev_int_rsa_2048-evroot" intermediate
+  // in such a build.
+  let intFullName = intOKName + "-" + rootOKName;
+  let eeFullName = eeOKName + "-" + intOKName + "-" + rootOKName;
   let expectedNamesForOCSP = isDebugBuild
-                           ? [ certNamePrefix + "-intOK-caOK",
-                               certNamePrefix + "-eeOK-intOK-caOK" ]
-                           : [ certNamePrefix + "-eeOK-intOK-caOK" ];
-  addKeySizeTestForEV(expectedNamesForOCSP, certNamePrefix,
-                      rootCAOKCertFileName,
-                      ["-intOK-caOK"],
-                      "-eeOK-intOK-caOK",
-                      isDebugBuild);
+                           ? [ intFullName,
+                               eeFullName ]
+                           : [ eeFullName ];
+  addKeySizeTestForEV(expectedNamesForOCSP, rootOKCertFileName,
+                      [ intFullName ], eeFullName, isDebugBuild);
 
   // Chain with a root cert that has an inadequate size for EV, but
   // adequate size for DV
-  expectedNamesForOCSP = [ certNamePrefix + "-eeOK-intOK-caBad" ];
-  addKeySizeTestForEV(expectedNamesForOCSP, certNamePrefix,
-                      "-caBad",
-                      ["-intOK-caBad"],
-                      "-eeOK-intOK-caBad",
-                      false);
+  intFullName = intOKName + "-" + rootNotOKName;
+  eeFullName = eeOKName + "-" + intOKName + "-" + rootNotOKName;
+  expectedNamesForOCSP = [ eeFullName ];
+  addKeySizeTestForEV(expectedNamesForOCSP, rootNotOKName,
+                      [ intFullName ], eeFullName, false);
 
   // Chain with an intermediate cert that has an inadequate size for EV, but
   // adequate size for DV
+  intFullName = intNotOKName + "-" + rootOKName;
+  eeFullName = eeOKName + "-" + intNotOKName + "-" + rootOKName;
   expectedNamesForOCSP = isDebugBuild
-                       ? [ certNamePrefix + "-intBad-caOK" ]
-                       : [ certNamePrefix + "-eeOK-intBad-caOK" ];
-  addKeySizeTestForEV(expectedNamesForOCSP, certNamePrefix,
-                      rootCAOKCertFileName,
-                      ["-intBad-caOK"],
-                      "-eeOK-intBad-caOK",
-                      false);
+                       ? [ intFullName ]
+                       : [ eeFullName ];
+  addKeySizeTestForEV(expectedNamesForOCSP, rootOKCertFileName,
+                      [ intFullName ], eeFullName, false);
 
   // Chain with an end entity cert that has an inadequate size for EV, but
   // adequate size for DV
-  expectedNamesForOCSP = [ certNamePrefix + "-eeBad-intOK-caOK" ];
-  addKeySizeTestForEV(expectedNamesForOCSP, certNamePrefix,
-                      rootCAOKCertFileName,
-                      ["-intOK-caOK"],
-                      "-eeBad-intOK-caOK",
-                      false);
+  intFullName = intOKName + "-" + rootOKName;
+  eeFullName = eeNotOKName + "-" + intOKName + "-" + rootOKName;
+  expectedNamesForOCSP = [ eeFullName ];
+  addKeySizeTestForEV(expectedNamesForOCSP, rootOKCertFileName,
+                      [ intFullName ], eeFullName, false);
 }
 
 function run_test() {
   // Setup OCSP responder
   Services.prefs.setCharPref("network.dns.localDomains", "www.example.com");
 
-  checkForKeyType("rsa");
+  checkForKeyType("rsa", 2040, 2048);
 
   run_next_test();
 }