HPDFParsePSD2QcStatement Function
把單一 ETSI TS 119 495 PSD2QcType 的 DER 解析成 THPDFPSD2QcStatement,格式錯誤的輸入一律整體拒收
宣告
function HPDFParsePSD2QcStatement(const StatementInfoDER: TBytes;
out Statement: THPDFPSD2QcStatement): boolean;
單元
HPDFSignVerify
參數
| 參數 | 用途 |
|---|---|
StatementInfoDER | QCStatement 0.4.0.19495.2 的 statementInfo:恰好一個 DER 編碼的 SEQUENCE { rolesOfPSP, nCAName, nCAId } |
Statement | 接收角色以及 NCA 名稱與識別碼;函式傳回 false 時一律為空 |
傳回值
緩衝區內是格式良好的 PSD2QcType 時傳回 true;緩衝區為空或出現下列任何偏差時傳回 false
拒收的輸入
- 長度越過所屬上層、非最短長度編碼與不定長度
- 外層
SEQUENCE之後還有位元組 - 缺少或多出元件,或元件帶錯 tag:
rolesOfPSP必須是SEQUENCE OF SEQUENCE { OBJECT IDENTIFIER, UTF8String },nCAName與nCAId必須是UTF8String - 角色名稱、NCA 名稱與 NCA 識別碼不是 1 到 256 個有效 UTF-8 字元
範例
var
Statement: THPDFPSD2QcStatement;
I: Integer;
begin
if HPDFParsePSD2QcStatement(StatementInfoDER, Statement) then
begin
for I:= 0 to High(Statement.RolesOfPSP) do
Writeln(Statement.RolesOfPSP[I].Name, ' (', Statement.RolesOfPSP[I].OID, ')');
Writeln('NCA: ', Statement.NCAName, ' / ', Statement.NCAId);
end;
end;
使用說明
- 已定義的角色 OID 是
0.4.0.19495.1.1(PSP_AS,帳戶服務)、0.4.0.19495.1.2(PSP_PI,付款啟動)、0.4.0.19495.1.3(PSP_AI,帳戶資訊)與0.4.0.19495.1.4(PSP_IC,卡式支付工具的發行) - 此函式讀的是手上已有的 DER;要從簽章中讀出陳述式,請對 CMS 資料呼叫
HPDFEvaluateCMSSignerQCStatements,或對已載入文件呼叫THotPDF.GetLoadedSignatureQCStatements