HPDFEvaluateCMSSignerQCStatements Function
解析 CMS 簽章資料,讀出簽署者憑證上的 eIDAS 合格憑證聲明與 PSD2 陳述式
宣告
function HPDFEvaluateCMSSignerQCStatements(const CMSDER: TBytes;
out Info: THPDFQCStatementDescriptor; out CertCount: Integer): boolean;
單元
HPDFSignVerify
參數
| 參數 | 用途 |
|---|---|
CMSDER | DER 編碼的 CMS SignedData,例如 PDF 簽章的 /Contents |
Info | 接收簽署者憑證的 ETSI EN 319 412-5 聲明(QcCompliance、QcSSCD、QcType、QcLimitValue、QcPDS),以及 ETSI TS 119 495 PSD2 陳述式 |
CertCount | 接收 CMS 資料內嵌的憑證數量;資料無法解析時為 0 |
傳回值
CMS 資料無法解析或不含可讀取的憑證時傳回 false,此時 Info 會是空的。憑證若沒有 QC 聲明,仍然傳回 true,而 Info.HasQCStatements 維持 false
簽署者憑證
函式評估的是 SignerInfo 所指明的憑證;沒有相符者時,改用第一張內嵌憑證,因為 CMS 產生器通常把簽署者放在那裡
範例
var
Info: THPDFQCStatementDescriptor;
CertCount: Integer;
begin
if HPDFEvaluateCMSSignerQCStatements(CMSDER, Info, CertCount) then
begin
if Info.QCCompliant and Info.QCSSCD then
Writeln('Qualified certificate on a qualified device');
if Info.HasPSD2Statement then
Writeln('PSD2 NCA: ', Info.PSD2NCAName, ' / ', Info.PSD2NCAId);
end;
end;
使用說明
- 此函式只檢視憑證內容;不會驗證簽章、憑證鏈,也不會查核簽發者的信任清單狀態
- 針對已載入文件中的簽章,
THotPDF.GetLoadedSignatureQCStatements可以直接回報相同的聲明,不必先抽出 CMS 資料