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之后还有字节 - 组件缺失或多余、组件标签错误:
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