Enterprise 에디션
계약
한눈에 보기
섹션 제목: “한눈에 보기”NextPDF Enterprise는 Enterprise 구성 요소가 의존성 역전 및 테스트 가능성을 위해 바인딩하는 작은 공개 인터페이스 집합을 노출합니다. 첫 번째는 RFC 3161 타임스탬프 토큰을 요청하기 위한 TSA 클라이언트 계약입니다. 이것들은 통합 이음새입니다. 그 자체가 암호화 작업을 수행하거나 어떤 적합성도 단언하지 않습니다.
가용성 및 라이선스
섹션 제목: “가용성 및 라이선스”이 기능은 NextPDF Enterprise(nextpdf/enterprise)로 제공되며 Enterprise 계층 라이선스 봉투로 활성화됩니다. 해당 엔타이틀먼트가 없는 배포는 이 기능의 클래스를 로드하지 않습니다. 에디션을 비교하고 라이선스를 받으십시오.
composer require nextpdf/enterprise:^3개념 개요
섹션 제목: “개념 개요”TsaClientInterface는 하나의 작업을 선언합니다. getDocumentTimestamp($documentHash)는 문서 해시에 대한 DER로 인코딩된 RFC 3161 TimeStampToken을 반환합니다. Enterprise 구성 요소는 구체적인 클라이언트가 아니라 이 인터페이스를 받아들이므로, 타임스탬프 동작을 주입하고 테스트에서 대체할 수 있습니다.
TsaClientAdapter는 Core 타임스탬프 클라이언트를 이 인터페이스에 맞추는 얇은 래퍼입니다. Core 클라이언트는 final 클래스이므로 Enterprise 인터페이스를 직접 구현할 수 없습니다. 따라서 어댑터가 동작을 변경하지 않고 둘을 연결합니다. 어디서나 TsaClientInterface를 주입하십시오. 컴포지션 루트에서 TsaClientAdapter(또는 자체 구현)를 배선하십시오.
이 모듈이 단언하는 것
섹션 제목: “이 모듈이 단언하는 것”이 모듈은 통합 계약을 정의합니다. 그 자체가 작업을 수행하지 않습니다.
TsaClientInterface는 타임스탬프 토큰을 얻는 방법을 기술합니다. 토큰을 검증하거나, TSA를 보증하거나, 토큰이 법적 효력을 부여한다고 단언하지 않습니다.TsaClientAdapter는 호출을 변경 없이 전달합니다. 어떤 동작이나 보증도 추가하지 않습니다.
타임스탬프 토큰을 얻는 것은 감사 및 장기 검증 워크플로를 지원합니다. 법적 증명이나 인증이 아닙니다.
계층 경계
섹션 제목: “계층 경계”Contracts는 Enterprise 전용 통합 표면입니다. 구체적인 TSA 클라이언트는 Core(NextPDF\Security\Timestamp)에 있습니다. 이 모듈은 Enterprise 구성 요소가 분리되고 테스트 가능한 상태로 유지되도록 Enterprise 대상 인터페이스와 어댑터만 제공합니다.
이렇게 작동하는 이유
섹션 제목: “이렇게 작동하는 이유”Core TsaClient는 final 클래스이므로 Enterprise 인터페이스를 직접 구현할 수 없습니다. 그럼에도 Enterprise는 의존성 역전과 테스트 가능한 구성 요소를 위해 주입 가능하고 모킹 가능한 타임스탬프 이음새가 필요합니다. NextPDF는 인터페이스를 Enterprise 계층에서 소유하고 구체적인 Core 클라이언트를 얇은 어댑터로 연결하여 이를 해결합니다. 왕복은 Core에 남고, Enterprise는 클라이언트를 복제하거나 final 보증을 완화하지 않고도 안정적인 계약을 얻습니다. 그러면 테스트에서 가짜 구현으로 대체하는 데 Core 코드를 변경할 필요가 없습니다.
설계 배경: 타임스탬프와 신뢰할 수 있는 시간.
API 표면
섹션 제목: “API 표면”| 클래스 / 인터페이스 | 책임 |
|---|---|
TsaClientInterface | 계약: DER로 인코딩된 RFC 3161 타임스탬프 토큰을 요청합니다. |
TsaClientAdapter | Core 타임스탬프 클라이언트를 TsaClientInterface에 맞춥니다. |
코드 샘플 — 빠른 시작
섹션 제목: “코드 샘플 — 빠른 시작”use NextPDF\Enterprise\Contracts\TsaClientInterface;
final class MySigner{ public function __construct(private TsaClientInterface $tsa) {}}코드 샘플 — 프로덕션
섹션 제목: “코드 샘플 — 프로덕션”use NextPDF\Enterprise\Contracts\TsaClientAdapter;
// Composition root: bridge the Core client into the Enterprise contract.$tsa = new TsaClientAdapter($coreTsaClient);$container->set(TsaClientInterface::class, $tsa);// Components depend on the interface; the adapter is wired once here.엣지 케이스 및 함정
섹션 제목: “엣지 케이스 및 함정”- 어댑터는 기반 클라이언트의 예외를 변경 없이 전달합니다. TSA 실패는 호출 지점에서 처리하십시오.
- 반환된 토큰은 판정이 아니라 바이트입니다. 필요한 곳에서 이를 검증하고 확인하십시오(Evidence / Signature 참조).
인터페이스와 어댑터는 측정 가능한 오버헤드를 추가하지 않습니다. 비용은 전적으로 기반 TSA 왕복입니다.
보안 참고
섹션 제목: “보안 참고”구체적인 클라이언트 뒤의 TSA 엔드포인트를 신뢰 경계로 취급하십시오. 이 계약은 토큰이나 TSA 인증서 체인을 검증하지 않습니다. 검증은 서명 및 증거 표면의 몫입니다.
데이터 레지던시 및 PII 완화
섹션 제목: “데이터 레지던시 및 PII 완화”이 계약을 통과하는 것은 문서 해시뿐이며 — 문서 콘텐츠는 아닙니다. 레지던시 고려 사항은 이 인터페이스가 아니라 구체적인 TSA 클라이언트 구현에 적용됩니다.
안전한 텔레메트리 및 로그 스크러빙
섹션 제목: “안전한 텔레메트리 및 로그 스크러빙”문서 해시는 로그에 기록해도 안전합니다. 원시 토큰 바이트를 공유 싱크에 기록하지 마십시오. 무결성에 민감한 아티팩트로 취급하십시오.
적합성
섹션 제목: “적합성”| 동작 | 참조 | 상태 |
|---|---|---|
| 타임스탬프 토큰 요청 및 바인딩 | IETF RFC 3161 §2 | 계약 형태만(작업은 구체적인 클라이언트가 수행) |
이 표는 계약이 형성된 기준이 되는 명세를 기록합니다. 인터페이스는 이음새를 정의합니다. 어떤 적합성이나 증명 주장도 하지 않습니다.
FIPS 모드 동작
섹션 제목: “FIPS 모드 동작”이 모듈은 암호화 작업을 수행하지 않습니다. 알고리즘 선택과 FIPS 모드 동작은 구체적인 TSA 클라이언트와 Security 모듈이 관장합니다.
위협 모델
섹션 제목: “위협 모델”계약 표면은 최소입니다. 해시 입력, 토큰 바이트 출력입니다. 완화책은 어떤 콘텐츠도 경계를 넘지 않고, 검증 책임이 Evidence 및 Signature 모듈에 명시적으로 위임된다는 것입니다.
동작 계약
섹션 제목: “동작 계약”- TSA 클라이언트 인터페이스는 하나의 작업을 선언합니다. 문서 해시에 대한 DER로 인코딩된 RFC 3161 TimeStampToken을 반환합니다. Enterprise 구성 요소는 구체적인 클라이언트가 아니라 인터페이스에 의존합니다.
- 어댑터는 동작을 변경하지 않고 Core 타임스탬프 클라이언트를 이 인터페이스에 연결하는 얇은 래퍼이며, 기반 클라이언트의 예외를 변경 없이 전달합니다.
- 인터페이스는 토큰을 얻는 방법을 기술합니다. 토큰을 검증하거나, TSA를 보증하거나, 법적 효력을 단언하지 않습니다.
- 반환된 토큰은 판정이 아니라 바이트입니다 — 검증과 확인은 Evidence 및 Signature 표면의 몫입니다.
게시 경계
섹션 제목: “게시 경계”이 페이지는 외부에서 관찰 가능한 동작과 지원되는 공개 API 표면만 문서화합니다. 내부 네임스페이스 경로, 헬퍼 클래스, 메커니즘 표, 런북 파일명, 티켓 접두사는 범위 밖입니다.
Core 폴백
섹션 제목: “Core 폴백”구체적인 TSA 클라이언트는 Core에 있습니다. 이 모듈은 Enterprise 구성 요소가 분리되고 테스트 가능한 상태로 유지되도록 Enterprise 대상 인터페이스와 어댑터만 제공합니다. Enterprise 대상 이음새 자체에는 Core 계층의 등가물이 없습니다 — Core는 이 인터페이스가 아니라 구체적인 클라이언트를 노출합니다.
Pro 폴백
섹션 제목: “Pro 폴백”Pro 폴백 — 없음. 이 기능에는 Pro 계층의 등가물이 없습니다. Enterprise 대상 TSA 클라이언트 인터페이스와 어댑터는 nextpdf/enterprise 패키지로만 제공됩니다.
Enterprise 경계 참고
섹션 제목: “Enterprise 경계 참고”인터페이스와 어댑터는 동작 수준에서 설명됩니다. 어댑터는 호출을 변경 없이 전달하며 어떤 동작도 추가하지 않습니다. 구체적인 TSA 클라이언트와 그 내부 사항은 Core 관심사이며 이 Enterprise 통합 표면의 범위 밖입니다.
배포 경계
섹션 제목: “배포 경계”이 계약을 통과하는 것은 문서 해시뿐이며 — 문서 콘텐츠는 아닙니다. 운영자는 컴포지션 루트에서 어댑터 또는 사용자 정의 구현을 배선하고 그 뒤의 구체적인 TSA 클라이언트를 소유합니다. 레지던시, TSA 엔드포인트 신뢰 경계, 인증서 체인 검증은 이 인터페이스가 아니라 그 구체적인 클라이언트에 적용됩니다.
법률 준수 경계
섹션 제목: “법률 준수 경계”이 계약 표면에는 수출 통제 제한이 적용되지 않습니다. 타임스탬프 토큰을 얻는 것은 감사 및 장기 검증 워크플로를 지원합니다. 법적 증명이나 인증이 아닙니다. 이 문서는 법률 의견이 아닙니다. 자체 준수 담당자 및 법률 자문에게 문의하십시오.
함께 보기
섹션 제목: “함께 보기”- Contracts — Deep Reference — 전체 클래스 및 메서드 표면.
- Evidence — RFC 3161 토큰을 패키지에 임베드합니다.
- Validation — LTV 구조적 검사.
- Specifications: PAdES — 타임스탬프 맥락.