open($package) !== true) { fwrite(STDERR, "The package cannot be opened.\n"); exit(1); } $seen = array(); for ($index = 0; $index < $zip->numFiles; $index++) { $path = (string)$zip->getNameIndex($index); if (str_ends_with($path, '/')) { continue; } $data = $zip->getFromIndex($index); if (!is_string($data) || !isset($manifest['files'][$path]) || hash('sha256', $data) !== (string)$manifest['files'][$path]) { $zip->close(); fwrite(STDERR, "A packaged file is invalid: " . $path . "\n"); exit(1); } $seen[$path] = true; } $zip->close(); if (count($seen) !== count($manifest['files'])) { fwrite(STDERR, "The signed file list does not match the package.\n"); exit(1); } echo "Valid release " . $manifest['version'] . "\n"; echo count($seen) . " signed files\n";