[期望版本] */ declare(strict_types=1); require_once __DIR__ . DIRECTORY_SEPARATOR . 'lib' . DIRECTORY_SEPARATOR . 'package_signature.php'; $root = dirname(__DIR__) . DIRECTORY_SEPARATOR; $zip = $argv[1] ?? ''; $ver = $argv[2] ?? ''; if ($zip === '') { fwrite(STDERR, "用法:php scripts/package_verify.php [期望版本]\n"); exit(1); } if (! is_file($zip)) { fwrite(STDERR, "包不存在:{$zip}\n"); exit(1); } $pubFile = $root . 'ywxapp' . DIRECTORY_SEPARATOR . 'data' . DIRECTORY_SEPARATOR . 'package_public.pem'; if (! is_file($pubFile)) { fwrite(STDERR, "公钥不存在:{$pubFile}\n请先执行 php scripts/package_keygen.php\n"); exit(1); } try { $info = pkVerifyPackage($zip, (string) file_get_contents($pubFile), $ver); } catch (Throwable $e) { fwrite(STDERR, "[FAIL] " . $e->getMessage() . "\n"); exit(1); } echo "[OK] 验签通过:{$zip}\n"; echo " 版本 : {$info['version']}\n"; echo " 条目数 : {$info['files']}\n"; echo " 算法 : {$info['alg']}\n"; echo " 签发时间 : " . date('Y-m-d H:i:s', $info['signed_at']) . "\n"; echo " sha256 : " . hash_file('sha256', $zip) . "\n";