HPDFParsePSD2QcStatement Function
Analisa o DER de um PSD2QcType da ETSI TS 119 495 em um THPDFPSD2QcStatement e rejeita qualquer entrada malformada como um todo
Declaração
function HPDFParsePSD2QcStatement(const StatementInfoDER: TBytes;
out Statement: THPDFPSD2QcStatement): boolean;
Unidade
HPDFSignVerify
Parâmetros
| Nome | Finalidade |
|---|---|
StatementInfoDER | O statementInfo do QCStatement 0.4.0.19495.2: exatamente um SEQUENCE { rolesOfPSP, nCAName, nCAId } codificado em DER |
Statement | Recebe os papéis e o nome e identificador da NCA; vazio sempre que a função retorna false |
Valor de retorno
true quando o buffer contém um PSD2QcType bem formado; false para um buffer vazio e para qualquer um dos desvios abaixo
Entrada rejeitada
- Comprimentos que ultrapassam o seu elemento pai, codificações de comprimento não mínimas e comprimentos indefinidos
- Bytes após o
SEQUENCEexterno - Componentes ausentes ou em excesso e componentes com tag errada:
rolesOfPSPdeve ser umSEQUENCE OF SEQUENCE { OBJECT IDENTIFIER, UTF8String },nCANameenCAIddevem serUTF8String - Nomes de papéis, nomes de NCA e identificadores de NCA que não sejam de 1 a 256 caracteres de UTF-8 válido
Exemplo
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;
Notas de uso
- Os OIDs de papel definidos são
0.4.0.19495.1.1(PSP_AS, serviço de contas),0.4.0.19495.1.2(PSP_PI, iniciação de pagamento),0.4.0.19495.1.3(PSP_AI, informação de contas) e0.4.0.19495.1.4(PSP_IC, emissão de instrumentos de pagamento baseados em cartão) - A função lê um DER que você já possui; para ler a declaração de uma assinatura, use
HPDFEvaluateCMSSignerQCStatementsnos dados CMS ouTHotPDF.GetLoadedSignatureQCStatementsem um documento carregado