PLBuildModernDetachedCMS

암호학, 디지털 서명

설명

Windows CryptoAPI 메시지 레이어가 표현하지 못하는 알고리즘을 위해 RSA, ECDSA, Ed25519 서명을 감싸는 분리형 CMS SignedData를 만듭니다

서명자 인증서와 체인 컨텍스트, 다이제스트 알고리즘, 커밋먼트 타입과 서명 정책 DER, 폐기 정보, 패딩 정책이 모두 매개변수로 들어가고, 원시 서명은 CNG NCrypt, 외부 다이제스트 서명자 콜백 또는 순수 Pascal Ed25519 경로가 공급합니다

구문

Delphi

Function PLBuildModernDetachedCMS(CertContext: Pointer;
  Const CertificateDER, Ed25519Seed, Data, SubFilter: AnsiString;
  DigestAlgorithm: Integer; Const CommitmentTypeDER,
  SignaturePolicyDER: AnsiString; NCryptKeyHandle: TPLIntPtr= 0;
  AllowPrivateKeyUI: Boolean= False;
  ExternalSigner: TPDFlibExternalDigestSignEvent= Nil;
  ExternalSender: TObject= Nil; ExternalSignProcessID: Integer= 0;
  ExternalSignatureAlgorithm: Integer= 0;
  RSAPSSPadding: Boolean= False;
  Const RevocationInfoDER: AnsiString= ''): AnsiString;

매개변수

CertContext서명 인증서의 Windows CERT_CONTEXT 핸들입니다. 순수 외부 서명자 경로에서는 Nil입니다
CertificateDERDER 인코딩된 서명 인증서로, 포함 인증서와 발급자/일련번호 참조에 쓰입니다
Ed25519SeedCNG 없이 Ed25519로 서명할 때의 32바이트 시드이고, 그 외에는 비어 있습니다
Data분리 서명이 덮는, 이미 다이제스트된 범위 바이트입니다
SubFilter속성 선택을 이끄는 /ETSI.CAdES.detached 같은 대상 /SubFilter입니다
DigestAlgorithmOrd(TPDFlibDigestAlgorithm)과 일치하는 다이제스트 알고리즘 서수입니다. 2 SHA-256, 3 SHA-384, 4 SHA-512, 5~7은 SHA-3 계열입니다
CommitmentTypeDERDER 인코딩된 커밋먼트 타입 속성이며 없으면 비어 있습니다
SignaturePolicyDERDER 인코딩된 서명 정책 식별자이며 없으면 비어 있습니다
NCryptKeyHandle열린 CNG 키 핸들입니다. 0이면 함수가 인증서 개인 키를 직접 열고, 선택적으로 UI를 보여 줍니다
AllowPrivateKeyUI키에 사용자 존재가 필요할 때 CNG 키 획득 대화상자를 허용합니다
ExternalSigner다이제스트를 받아 원시 서명을 반환하는 콜백입니다. HSM이나 원격 서명용입니다
ExternalSenderExternalSigner 콜백에 다시 전달되는 발신자입니다
ExternalSignProcessID콜백에 다시 전달되는 서명 프로세스 식별자입니다
ExternalSignatureAlgorithmPL_EXTERNAL_SIGNATURE_RSA_PKCS1, PL_EXTERNAL_SIGNATURE_ECDSA_DER, PL_EXTERNAL_SIGNATURE_ECDSA_P1363 중 하나입니다
RSAPSSPaddingRSA 서명에 RSASSA-PSS 패딩을 선택합니다
RevocationInfoDERRevocationInfoChoices로 포함할 미리 수집한 폐기 정보입니다

반환 값

DER 인코딩된 분리형 CMS이며, 서명 단계 중 무엇이든 실패하면 빈 문자열입니다

비고

이 루틴은 서명 프로세스의 최신 서명 경로 뒤에 있는 엔진입니다. 직접 호출하면 커밋먼트와 정책 속성을 완전히 제어할 수 있고, 반환된 바이트는 PLIsModernDetachedCMS로 검증된 데이터처럼 PDF /Contents 구멍에 들어갑니다

참고 항목

PLVerifyModernDetachedCMS, PLIsModernDetachedCMS, PLModernSignatureSizeEstimate, TPDFlibExternalDigestSignEvent, SetSignProcessExternalDigestSigner