open($file) !== true) { throw new RuntimeException("Failed to open APK"); } $manifest = $zip->getFromName("META-INF/MANIFEST.MF"); if ($manifest === false) { return null; } $found = false; $entryName = ""; for ($i = 0; $i < $zip->numFiles; $i++) { $entryStat = $zip->statIndex($i); if ($entryStat === false || !isset($entryStat['name'])) { continue; } $entryName = $entryStat['name']; if (!preg_match("~^META-INF/[^\/]+\.SF$~", $entryName)) { continue; } $found = true; } if (!$found) { return null; } $signManifest = $zip->getFromName($entryName); if ($signManifest === false) { return false; } } }