HPDFParsePSD2QcStatement Function
Разбирает DER одного PSD2QcType из ETSI TS 119 495 в THPDFPSD2QcStatement и отклоняет любое некорректное входное данные целиком
Объявление
function HPDFParsePSD2QcStatement(const StatementInfoDER: TBytes;
out Statement: THPDFPSD2QcStatement): boolean;
Модуль
HPDFSignVerify
Параметры
| Параметр | Назначение |
|---|---|
StatementInfoDER | statementInfo из QCStatement 0.4.0.19495.2: ровно одна SEQUENCE { rolesOfPSP, nCAName, nCAId } в кодировке DER |
Statement | Получает роли, а также имя и идентификатор NCA; пуст при любом возврате false |
Возвращаемое значение
true, когда буфер содержит корректно сформированный PSD2QcType; 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, который у вас уже есть; чтобы прочитать инструкцию из подписи, вызовите
HPDFEvaluateCMSSignerQCStatementsдля данных CMS илиTHotPDF.GetLoadedSignatureQCStatementsдля загруженного документа