✅ THẬT
Verify ID có trong registry, trạng thái active, chưa hết hạn, server signature hợp lệ, và SHA-256 của PDF tải lên khớp bản ghi gốc.
QR/hash tự mang theo chỉ chứng minh file khớp với thông tin trong link. Registry v14 xác nhận bản ghi có được server đăng ký thật không, chữ ký HMAC có hợp lệ không, có bị thu hồi/tạm khóa/hết hạn không, và PDF hiện tại có bị sửa so với bản gốc không.
Verify ID có trong registry, trạng thái active, chưa hết hạn, server signature hợp lệ, và SHA-256 của PDF tải lên khớp bản ghi gốc.
Verify ID có trong registry nhưng SHA-256 của PDF tải lên khác bản gốc. Chỉ cần sửa 1 byte là hash sẽ khác.
ID có thật nhưng chưa upload PDF hoặc chưa cung cấp SHA-256. Trust score sẽ cảnh báo vì chưa đủ dữ liệu để kết luận.
Bản ghi tồn tại nhưng admin đã revoke/suspend hoặc certificate đã expired. Trang verify sẽ chặn kết luận thật.
SHA-256 cho file kết quả trong trình duyệt.Verify ID + SHA-256 + metadata vào data/verify-registry.json qua API Vercel/GitHub.PFSP_VERIFY_SIGNING_SECRET để tạo server signature.verify.html, trang gọi /api/verify, hiển thị verdict, trust score, checks và timeline.API trả trustScore 0-100 và trustLevel dựa trên signature, status, expiry, hash và size.
Verify nhiều ID/link/certificate một lần bằng POST action=batch-verify.
Admin đăng ký nhiều record, có dry-run để xem trước và tránh ghi nhầm.
Admin có thể normalize registry, tạo fingerprint/link còn thiếu và ký lại record khi cần.
Trong Vercel → Project Settings → Environment Variables, thêm:
PFSP_VERIFY_SIGNING_SECRET=chuoi_ky_hmac_rieng PFSP_VERIFY_ADMIN_SECRET=mat_khau_admin_manh PFSP_PUBLIC_BASE_URL=https://your-domain.example PFSP_VERIFY_ALLOWED_ORIGINS=https://your-domain.example PFSP_CORS_ORIGIN=https://your-domain.example PFSP_GITHUB_TOKEN=github_pat_co_quyen_contents_write PFSP_GITHUB_OWNER=ten_owner PFSP_GITHUB_REPO=ten_repo PFSP_GITHUB_BRANCH=main PFSP_REGISTRY_PATH=data/verify-registry.json
Nếu chưa cấu hình GitHub token, API vẫn kiểm tra được registry tĩnh, nhưng khi đăng ký sẽ trả về JSON patch để bạn tự commit vào data/verify-registry.json.
GET /api/verify?id=PFSP-...&sha256=...&size=...
GET /api/verify?action=self-test
GET /api/verify?action=lookup-hash&sha256=...
GET /api/verify?action=certificate&id=PFSP-...
GET /api/verify?action=portal
GET /api/verify?action=public-search&q=...
GET /api/verify?action=badge&id=PFSP-...
GET /api/verify?action=printable-certificate&id=PFSP-...
POST /api/verify { "action":"batch-verify", "items":[...] }
POST /api/verify { "action":"auto-register", "certificate": {...} }
POST /api/verify { "action":"register", "certificate": {...}, "adminSecret":"..." }
POST /api/verify { "action":"bulk-register", "items":[...], "adminSecret":"..." }
POST /api/verify { "action":"revoke|suspend|restore|set-expiry|repair", "id":"PFSP-...", "adminSecret":"..." }
Bản nâng cấp có trust score, timeline, batch verify, bulk register, hash lookup, certificate export, suspend/restore/revoke/expiry, audit log, backup, repair/re-sign và admin diagnostics.