function FreshOcspResponse(const Der: TBytes; UtcNow: TDateTime): Boolean;
function CryptoUtcNow: TDateTime;
| 函数 | 说明 |
|---|---|
FreshOcspResponse | 只有 Der 包含大小受限、状态成功的基本 OCSP 响应结构,且所有响应条目均通过基于 UtcNow 的时效检查时才返回 True;这只是预过滤,不会验证证据的真实性 |
CryptoUtcNow | 通过平台时区转换返回当前 UTC TDateTime,不会把本地时间当作 UTC |
| 检查项 | 限制或行为 |
|---|---|
| DER 响应大小 | 不能为空,且最多 1 MiB |
| SingleResponse 条目 | 至少一个,硬上限为 64 |
| 时钟偏差 | 未来时间或过期比较允许 300 秒偏差 |
producedAt 和 thisUpdate | 距当前时间最多一天,且不得超过允许的未来偏差 |
nextUpdate | 存在时不得早于 thisUpdate,并须在允许偏差范围内仍然有效 |
| 格式错误或不支持的响应 | 返回 False,包括外层 OCSP 响应失败或响应类型不受支持的情况 |
True 结果只允许原生验证器继续检查响应,不能证明响应者签名、响应者权限、颁发者匹配、证书标识或证书状态为正常
FPdfCryptoSsl 通过 OpenSSL 验证 OCSP,FPdfCryptoMac 通过 Security.framework 验证传入的响应;应用应分别检查签名、信任和吊销结果,不能把 FreshOcspResponse 当作吊销判定
该辅助函数不发送 HTTP 请求,不添加信任锚,不修改系统信任,也不使用持久缓存;调用方明确传入 UTC,因此时间边界测试可以保持确定性