THotPDF.GetLoadedSignatureQCStatements 方法
声明
function GetLoadedSignatureQCStatements(SigIndex: Integer;
out Info: THPDFQCStatementInfo): boolean;
行为
对一个已加载签名做 eIDAS 合格证书评估:报告签名者证书的 ETSI EN 319 412-5 QCStatements,包括 QcCompliance、QcSSCD、各 QcType 取值、QcLimitValue 和 PDS 位置,外加 TS 119 495 的 PSD2 付款人与收款人角色
PSD2 声明
PSD2 QCStatement(0.4.0.19495.2)携带 PSD2QcType:支付服务提供者被授权的角色、国家主管机构(NCA)名称和 NCA 标识符。通过 THPDFQCStatementInfo 的以下字段报告:
HasPSD2Statement才为true;长度越界或非最小、组件缺失或多余、标签错误,或名称不是 1 到 256 个字符的有效 UTF-8 的声明会被忽略,PSD2 字段保持为空PSD2RolesOfPSP按证书顺序列出每个角色,每个角色是一个THPDFPSD2Role,含OID(0.4.0.19495.1.1PSP_AS、0.4.0.19495.1.2PSP_PI、0.4.0.19495.1.3PSP_AI、0.4.0.19495.1.4PSP_IC)与Name(证书中存储的角色名,如PSP_ASPSD2NCAName与PSD2NCAId保存 NCA 名称与标识符,例如CZ-CNBPSD2RolesPayer与PSD2RolesPayee已弃用且始终为空,因为 ETSI TS 119 495 未定义付款人与收款人角色列表;请改读PSD2RolesOfPSP(改用后者)
要解析手中已有的 DER 格式 PSD2QcType(已持有其 DER)时,调用HPDFParsePSD2QcStatement(来自 HPDFSignVerify 单元)。它填充THPDFPSD2QcStatement,对任何畸形输入返回 false(任何畸形输入返回 false)
var
Info: THPDFQCStatementInfo;
I: Integer;
begin
if HotPDF1.GetLoadedSignatureQCStatements(0, Info) and Info.HasPSD2Statement then
begin
for I:= 0 to High(Info.PSD2RolesOfPSP) do
Writeln(Info.PSD2RolesOfPSP[I].Name, ' (', Info.PSD2RolesOfPSP[I].OID, ')');
Writeln('NCA: ', Info.PSD2NCAName, ' / ', Info.PSD2NCAId);
end;
end;
合格签名启发判定
QualifiedSignatureLikely 标记的是 eIDAS 910/2014 附件 IV 的启发式判断,即 QcCompliance 加 QcSSCD;它为 false 并不能证明签名不是合格签名,因为是否信任 QTSP 服务仍由调用方决定。签名没有可用证书时返回 false签名字段没有可用证书时