PAdES 베이스라인 서명으로 PDF 서명하기(이동됨)
이 레시피는 이동되었습니다
섹션 제목: “이 레시피는 이동되었습니다”이 페이지에 있던 기존 서명 안내는 이제 대체되었습니다. 대신 표준 레시피를 사용하십시오:
이 페이지가 변경된 이유(정오표)
섹션 제목: “이 페이지가 변경된 이유(정오표)”이 페이지의 이전 버전에서는 상위 수준의 Document::setSignature() → save() 연결부가 연결되지 않았으며 NotImplementedException을 던진다고 설명했습니다. 이제는 더 이상 사실이 아닙니다. 상위 수준 연결부는 이제 실제 서명을 생성합니다.
Document::setSignature($cert, SignatureLevel::PAdES_B_B)->save()(및 그에 상응하는 output() / getPdfData())은 /Sig 필드를 쓰며, 이 필드는 /ByteRange와 DER로 인코딩된 CMS SignedData 객체를 서명 딕셔너리 Contents 항목에 담습니다. 이는 ISO 32000-2 §12.8이 ETSI.CAdES.detached SubFilter에 대해 규정하는 구조입니다. 결과물은 CMS 검증 가능합니다. 표준 CMS/PKCS#7 검증기가 이를 구문 분석하고 확인합니다.
- B-B — Core 레벨 — 는 이 연결부를 통해 직접 생성됩니다.
- B-T는 동일한 호출에서
TsaClient를 전달하여 하나의 RFC 3161 signature-time-stamp를 추가합니다. - B-LT / B-LTA는 동일한 상위 수준 연결부(
setSignature($cert, SignatureLevel::PAdES_B_LTA, $tsaClient)->save())를 통해 도달할 수 있으며, 이는 Pro 및 Enterprise 패키지가 모두 설치된 경우에 한합니다. 해당 패키지가 없으면 호출은 부분적인 장기 리비전을 쓰지 않고 페일클로즈됩니다. 암호화된 문서도 B-LT/B-LTA에 대해 페일클로즈됩니다.
하위 수준의 NextPDF\Security\Signature\DigitalSigner 경로는 계속 지원되며, 아래 표준 레시피가 처음부터 끝까지 다루는 대상입니다. 상위 수준 연결부는 동일한 서명 엔진 위에 놓인 얇은 편의 계층입니다. 통합 테스트 스위트는 두 경로를 모두 실행하며 실제로 구문 분석할 수 있는 CMS 객체를 생성합니다.
U-1 주의 사항(주장의 범위). “CMS 검증 가능”이란 생성된 객체가 RFC 5652 및 ISO 32000-2 §12.8에 따라 올바른 형식의 CMS
SignedData임을 의미합니다 — 이는 ETSI EN 319 142-1 베이스라인 프로파일 준수에 대한 주장이 아니며, 법적 유효성에 대한 주장도 아닙니다. 해당 표준의 베이스라인 레벨 부분은 검증 코퍼스에 포함되어 있지 않습니다. B-Tsignature-time-stamp요구 사항은 ETSI EN 319 122-1 §5.3, RFC 3161, RFC 5652, RFC 5816 및 ISO 32000-2 §12.8에 비추어 확인되었습니다. B-LT/B-LTA는 장기 검증 구조(DSS 딕셔너리와 DocTimeStamp 리비전)를 생성합니다. 이들은 프로파일 준수 테스트를 거친 것으로 내세우지 않습니다. 준수 여부와 법적 유효성 판단은 독립적인 검증기가 수행합니다.
변경 없이 유지된 내용
섹션 제목: “변경 없이 유지된 내용”이전 페이지가 디스크상의 산출물에 대해 주장한 구조적 사실은 여전히 정확합니다. 대체 레시피는 그 사실을 근거와 함께 다시 설명합니다:
- 서명 값은 서명 딕셔너리
Contents항목에 저장됩니다(ISO 32000-2 §12.8.1). - 다이제스트는
ByteRange에 대해 계산되며 서명 값 자체는 제외됩니다(ISO 32000-2 §12.8.1).
이 페이지는 결과로 생성된 서명이 법적으로 유효하다고 주장하지 않습니다. 이는 인증서, 그 신뢰 앵커, 검증기의 정책에 따라 달라지며, 모두 이 라이브러리의 범위 밖에 있습니다.