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입니다
거부하는 입력
- 상위 경계를 넘어서는 길이, 최소 길이 인코딩이 아닌 형태, indefinite 길이
- 바깥
SEQUENCE뒤에 남는 바이트 - 빠지거나 남는 컴포넌트, tag가 틀린 컴포넌트:
rolesOfPSP는SEQUENCE OF SEQUENCE { OBJECT IDENTIFIER, UTF8String }이어야 하고nCAName과nCAId는UTF8String이어야 합니다 - 역할 이름, NCA 이름, NCA 식별자가 유효한 UTF-8 문자 1~256자가 아닌 경우
예제
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을 읽습니다. 서명에서 statement를 읽으려면 CMS 데이터에는
HPDFEvaluateCMSSignerQCStatements를, 로드한 문서에는THotPDF.GetLoadedSignatureQCStatements를 사용합니다