CMS 다중 기본 서명자
HotPDF는 최대 256개의 독립적인 기본 SignerInfo 레코드를 담는 RFC 5652 SignedData 컨테이너 하나를 만들 수 있습니다
빌드 요청
각 THPDFCMSPrimarySignerRequest는 자체 인증서와 키 머티리얼, 문서 다이제스트, THPDFCMSSignOptions, 선택적 THPDFSignatureProvider, 공급자 키 식별자를 공급합니다
HPDFCMSBuildMultiSignedData는 네이티브 키, 외부 콜백, 타임스탬프 콜백, PDF MAC 콜백, 공급자를 호출하기 전에 모든 요청을 검증하여 잘못된 뒤쪽 요청이 불필요한 부분 원격 서명 작업으로 이어지지 않게 합니다
SetLength(Signers, 2);
Signers[0].KeyMaterial := FirstKey;
Signers[0].DocumentDigest := HPDFCMSDigestBytes(DocumentBytes, cmsdaSHA256);
Signers[0].Options := FirstOptions;
Signers[1].KeyMaterial := SecondKey;
Signers[1].DocumentDigest := HPDFCMSDigestBytes(DocumentBytes, cmsdaSHA384);
Signers[1].Options := SecondOptions;
Signers[1].Provider := RemoteProvider;
Signers[1].KeyIdentifier := 'approval-key';
CMS := HPDFCMSBuildMultiSignedData(Signers);
결정적 병합
HPDFCMSMergeSignedData는 이미 빌드된 CMS 컨테이너를 결합하여 비동기 또는 분산 서명 워크플로에서 개인키 연산 반복을 피합니다
모든 입력은 definite-length signedData 엔벨로프와 집합을 사용해야 하고, 자신의 기본 서명자가 쓰는 모든 다이제스트 알고리즘을 선언해야 하며, 바이트 단위로 동일한 encapContentInfo를 가져야 합니다. 추가로 선언된 다이제스트 알고리즘은 계속 허용됩니다
병합된 컨테이너는 다이제스트 알고리즘, 인증서, 폐기 값을 중복 제거하고, 모든 SET OF 값을 DER 바이트 순서로 정렬하며, 모든 기본 서명자를 보존하고, 바깥 버전을 유효한 입력 요구 사항 중 가장 높은 것으로 올립니다
signerInfos는 DER SET OF이므로 인코딩 후에는 요청 순서를 관찰할 수 없고, 파싱과 검증 결과는 요청 순서 대신 DER 순서를 따릅니다
한 서명자 빌드와 한 컨테이너 병합은 기존 CMS 바이트를 정확히 그대로 유지합니다
독립 검증
HPDFParseCMSSignatures, HPDFVerifyCMSSignaturesEx, HPDFVerifyCMSSignerReport는 속성, 다이제스트 및 서명 정책, 일치하는 인증서, 타임스탬프, 대응 서명, 실패 상태를 포함해 기본 서명자마다 독립적인 결과를 반환합니다
malformed이거나 암호학적으로 잘못된 서명자가 유효한 형제 결과를 지우지는 않지만, 전체 Boolean 결과는 모든 기본 서명자가 성공해야 true입니다
플레이스홀더 크기 산정
HPDFCMSEstimateMultiSignerPlaceholder는 서명 없이 각 서명 길이를 산출하고, 합성 서명 값으로 정확히 중복 제거된 정적 컨테이너 형태를 빌드하며, 동적 콜백 예약을 합산하고, 구성된 전역 안전 여유, 정렬, 최솟값, 최댓값을 한 번만 적용합니다
THPDFCMSPlaceholderEstimateInfo.SignatureBytes는 모든 기본 서명자의 합계를 보고하고 cpesMixed는 서명자들이 서로 다른 추정 소스를 쓴 결과를 식별합니다
PDF 워크플로 경계
멀티 서명자 API는 하나의 컨테이너에 여러 기본 서명자를 허용하는 소비 프로필을 가진 응용 프로그램을 위해 범용 CMS 기능을 노출합니다
많은 PDF 서명 및 PAdES 워크플로는 서명 사전마다 기본 서명자 하나를 모델링하므로, 수신자 프로필이 멀티 서명자 CMS를 명시적으로 받아들이지 않는 한 별도의 PDF 서명 필드를 사용하세요
CMS SubjectKeyIdentifier 서명자, CMS 다이제스트 알고리즘 일관성, CMS 플레이스홀더 자동 크기 조정을 참고하세요