From 488b9b02f981542feacd839e7f954414e1a9f49c Mon Sep 17 00:00:00 2001 From: Hans-Christoph Steiner Date: Fri, 14 Jul 2017 21:54:35 +0200 Subject: [PATCH] update Issue763MultiRepo test to work with valid signatures The test files used in Issue763MultiRepo.java are signed using MD5, which is now considered invalid. So if that test is run on any recent Java, it will fail with a signature error. This updates the test files to be signed with SHA1 instead. * index.microg.jar is a new version fetched from https://microg.org * index.antox.jar was resigned with the testy.at.or.at key, since antox website doesn't exist anymore. --- .../fdroid/updater/Issue763MultiRepo.java | 4 ++-- app/src/test/resources/index.antox.jar | Bin 5206 -> 5174 bytes app/src/test/resources/index.microg.jar | Bin 5132 -> 6044 bytes 3 files changed, 2 insertions(+), 2 deletions(-) diff --git a/app/src/test/java/org/fdroid/fdroid/updater/Issue763MultiRepo.java b/app/src/test/java/org/fdroid/fdroid/updater/Issue763MultiRepo.java index 8358613e0..4db34ac39 100644 --- a/app/src/test/java/org/fdroid/fdroid/updater/Issue763MultiRepo.java +++ b/app/src/test/java/org/fdroid/fdroid/updater/Issue763MultiRepo.java @@ -32,7 +32,7 @@ public class Issue763MultiRepo extends MultiRepoUpdaterTest { String microGCert = "308202ed308201d5a003020102020426ffa009300d06092a864886f70d01010b05003027310b300906035504061302444531183016060355040a130f4e4f47415050532050726f6a656374301e170d3132313030363132303533325a170d3337303933303132303533325a3027310b300906035504061302444531183016060355040a130f4e4f47415050532050726f6a65637430820122300d06092a864886f70d01010105000382010f003082010a02820101009a8d2a5336b0eaaad89ce447828c7753b157459b79e3215dc962ca48f58c2cd7650df67d2dd7bda0880c682791f32b35c504e43e77b43c3e4e541f86e35a8293a54fb46e6b16af54d3a4eda458f1a7c8bc1b7479861ca7043337180e40079d9cdccb7e051ada9b6c88c9ec635541e2ebf0842521c3024c826f6fd6db6fd117c74e859d5af4db04448965ab5469b71ce719939a06ef30580f50febf96c474a7d265bb63f86a822ff7b643de6b76e966a18553c2858416cf3309dd24278374bdd82b4404ef6f7f122cec93859351fc6e5ea947e3ceb9d67374fe970e593e5cd05c905e1d24f5a5484f4aadef766e498adf64f7cf04bddd602ae8137b6eea40722d0203010001a321301f301d0603551d0e04160414110b7aa9ebc840b20399f69a431f4dba6ac42a64300d06092a864886f70d01010b0500038201010007c32ad893349cf86952fb5a49cfdc9b13f5e3c800aece77b2e7e0e9c83e34052f140f357ec7e6f4b432dc1ed542218a14835acd2df2deea7efd3fd5e8f1c34e1fb39ec6a427c6e6f4178b609b369040ac1f8844b789f3694dc640de06e44b247afed11637173f36f5886170fafd74954049858c6096308fc93c1bc4dd5685fa7a1f982a422f2a3b36baa8c9500474cf2af91c39cbec1bc898d10194d368aa5e91f1137ec115087c31962d8f76cd120d28c249cf76f4c70f5baa08c70a7234ce4123be080cee789477401965cfe537b924ef36747e8caca62dfefdd1a6288dcb1c4fd2aaa6131a7ad254e9742022cfd597d2ca5c660ce9e41ff537e5a4041e37"; microGRepo = createRepo("MicroG", "https://microg.org/fdroid/repo", context, microGCert); - String antoxCert = "308204f1308202d9a0030201020204565444c6300d06092a864886f70d01010b050030293110300e060355040b1307462d44726f6964311530130603550403130c706b672e746f782e63686174301e170d3136303131323037353333395a170d3433303533303037353333395a30293110300e060355040b1307462d44726f6964311530130603550403130c706b672e746f782e6368617430820222300d06092a864886f70d01010105000382020f003082020a0282020100a16c61417d25545d681d7c01acea881f268bb4d708099aa12143f12d24a18afe120f532901efc3a26137915bba5ffd4e8f0d21783965b2c207593b44002e6ed7ca6cbb124829c134950c9c76388d70cdb5c1ac37581687f1a4a51ce7d5c0a21ab000bae2c14572d26693de8b33726852e262ec9c85bed5d6a1e236977862d8e796a3722bc69346ae27951527963165469ab4ec9c8a38ccabd4c3de718eeaa8ff054bcd04374ac46af7cf011d97bd2625c4c7f6c2851b0cab8446eaf2f94a2b1506aafdfb192d0a31ede495fd4cc4e122f92daa500806d29aa3f63e51dbf6f00fb37979b4b70543f019d55e95173165378983517f2d2811fe79d491f09dc2568794c3a09f539986d4489b939d65c26a83f6b6165976c00cd648d081afc3a5eeabd1c4e3c0ae42d92197f4086caca8bcfe939036d02f84e815b95842da27daea297bd098507f806012fe0cae2d4dd38bd876a7efb0c173bfae260e820d56e7026afe4f8806d12ffa2e75da33d178472625414d2ed3e0fe9ef1f2ba0b26b877960bea54c8e32f36540758712b40775b56ef1149db3df17202e5163733df12a48011f9077e34aebeba2fe11dc578ce12bd26a30a1d458d0172378b530de118dc46823e17f6bbb7d0163483531e12d416f6f9d90d63b6c248a30058fb1c0b1c78a50601fdad0ca22dbfa470059251f37ce558a7bacf2ebad2d810049717aee16c8d530203010001a321301f301d0603551d0e0416041419f45074c35bffc3bdc4ebee34966db52cfcb54e300d06092a864886f70d01010b05000382020100426ce3f1a5944dbd41e6abc5348e32f220f46b58a8794091e5de1f6248af18e42c0b1ed9c5196b27c9fbd0aa59170653f3044b0f8cd60f027f888be91fdb52fb7e6f3c125bbbf968ca1d43fede1a47a82ebd89ef37e2abc5931f2475ed7c3b95707c75f1e90e0f08460288ee090e5136a4dd682ddf8755b6d2c8e8ff58037865d69f198599371cca60e6ab8cac7c35de1edfaff2730a8c91489e30c7d770fe7b2299b41229d27989bf20260d43c8c077e53ec11e1a17b8879ec8c995fb9fa178d6ffdd6629c3104601368cc76e0f10f7ad3a2a729f92d219700dd44a8621a8102ec61e28d534b518633b4edb125966e80bf006f0e1258f7bd36357ab2ebdb8fb40fb1616f75bf5db2689b3910dff266084832159afc1571454a8070fe2a02389254e5f3cbab933a57117cb76bb615c4180c88f3bd04c6f23ea75ac05ab81dd4ddd2c9f2b3eb94d54682f12c7838612f434b00a6da678e9e82b5b4a18c037929a622773c6bc4bcf1eb45872c998248d98812d6be1a77d0d70182b9b2296b8802fbd0fb2f04b78bfafbaae756940f777ae43f63e8f47e97618063fc743ba1dd3d37bb434581fb3487420dd893fa474d87b94923102c12a680ede3107c680be0d8d5e7f89c0033a740f0ba3e1563baddb540f0f9154653b003d9dd3cbdd649e808ecfec9dd8d9949ccabb7b8b7ad287023bc8ca12dad9892158da300a25de07aaca"; + String antoxCert = "308204e1308202c9a0030201020204483450fa300d06092a864886f70d01010b050030213110300e060355040b1307462d44726f6964310d300b06035504031304736f7661301e170d3136303832333133333131365a170d3434303130393133333131365a30213110300e060355040b1307462d44726f6964310d300b06035504031304736f766130820222300d06092a864886f70d01010105000382020f003082020a0282020100dfdcd120f3ab224999dddf4ea33ea588d295e4d7130bef48c143e9d76e5c0e0e9e5d45e64208e35feebc79a83f08939dd6a343b7d1e2179930a105a1249ccd36d88ff3feffc6e4dc53dae0163a7876dd45ecc1ddb0adf5099aa56c1a84b52affcd45d0711ffa4de864f35ac0333ebe61ea8673eeda35a88f6af678cc4d0f80b089338ac8f2a8279a64195c611d19445cab3fd1a020afed9bd739bb95142fb2c00a8f847db5ef3325c814f8eb741bacf86ed3907bfe6e4564d2de5895df0c263824e0b75407589bae2d3a4666c13b92102d8781a8ee9bb4a5a1a78c4a9c21efdaf5584da42e84418b28f5a81d0456a3dc5b420991801e6b21e38c99bbe018a5b2d690894a114bc860d35601416aa4dc52216aff8a288d4775cddf8b72d45fd2f87303a8e9c0d67e442530be28eaf139894337266e0b33d57f949256ab32083bcc545bc18a83c9ab8247c12aea037e2b68dee31c734cb1f04f241d3b94caa3a2b258ffaf8e6eae9fbbe029a934dc0a0859c5f120334812693a1c09352340a39f2a678dbc1afa2a978bfee43afefcb7e224a58af2f3d647e5745db59061236b8af6fcfd93b3602f9e456978534f3a7851e800071bf56da80401c81d91c45f82568373af0576b1cc5eef9b85654124b6319770be3cdba3fbebe3715e8918fb6c8966624f3d0e815effac3d2ee06dd34ab9c693218b2c7c06ba99d6b74d4f17b8c3cb0203010001a321301f301d0603551d0e04160414d62bee9f3798509546acc62eb1de14b08b954d4f300d06092a864886f70d01010b05000382020100743f7c5692085895f9d1fffad390fb4202c15f123ed094df259185960fd6dadf66cb19851070f180297bba4e6996a4434616573b375cfee94fee73a4505a7ec29136b7e6c22e6436290e3686fe4379d4e3140ec6a08e70cfd3ed5b634a5eb5136efaaabf5f38e0432d3d79568a556970b8cfba2972f5d23a3856d8a981b9e9bbbbb88f35e708bde9cbc5f681cbd974085b9da28911296fe2579fa64bbe9fa0b93475a7a8db051080b0c5fade0d1c018e7858cd4cbe95145b0620e2f632cbe0f8af9cbf22e2fdaa72245ae31b0877b07181cc69dd2df74454251d8de58d25e76354abe7eb690f22e59b08795a8f2c98c578e0599503d9085927634072c82c9f82abd50fd12b8fd1a9d1954eb5cc0b4cfb5796b5aaec0356643b4a65a368442d92ef94edd3ac6a2b7fe3571b8cf9f462729228aab023ef9183f73792f5379633ccac51079177d604c6bc1873ada6f07d8da6d68c897e88a5fa5d63fdb8df820f46090e0716e7562dd3c140ba279a65b996f60addb0abe29d4bf2f5abe89480771d492307b926d91f02f341b2148502903c43d40f3c6c86a811d060711f0698b384acdcc0add44eb54e42962d3d041accc715afd49407715adc09350cb55e8d9281a3b0b6b5fcd91726eede9b7c8b13afdebb2c2b377629595f1096ba62fb14946dbac5f3c5f0b4e5b712e7acc7dcf6c46cdc5e6d6dfdeee55a0c92c2d70f080ac6"; antoxRepo = createRepo("Tox", "https://pkg.tox.chat/fdroid/repo", context, antoxCert); } @@ -127,7 +127,7 @@ public class Issue763MultiRepo extends MultiRepoUpdaterTest { assertApksExist(actualApksAfterUpdate, vendingPackage, expectedVendingVersions); String gmsPackage = "com.google.android.gms"; - int[] expectedGmsVersions = new int[] {9452267, 9452266, 9452265, 9258262, 9258259, 9258258, 8492252, }; + int[] expectedGmsVersions = new int[] {11059462, 10545451, 10545440, 10087438, 10087435, 9258259, 8492252, }; assertApp(gmsPackage, expectedGmsVersions); assertApksExist(actualApksAfterUpdate, gmsPackage, expectedGmsVersions); diff --git a/app/src/test/resources/index.antox.jar b/app/src/test/resources/index.antox.jar index ab864b28fb6104ddc056e218930041e4a728ea35..22500f09918add1121b165b8c91418a399319b9c 100644 GIT binary patch literal 5174 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 DYk0!LlEpVcg0O;Bqed@TZAJ7%gs8hjk04rB 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 T>u&yq2mC2L)6I`me>?vL69N~s