TPDFlibSigner

Security and Signatures

설명

TPDFlibSigner는 독립형 서명 엔진입니다. TPDFlibSignDoc 대상과 TPDFlibPFXFile 아이덴티티를 짝지어 완성된 서명을 새 증분 리비전으로 기록합니다

PDF를 파일·스트림·문자열에서 열고, open 계열 메서드 중 하나로 아이덴티티를 바인드하고, 대상 필드를 고르고, 서명을 설정한 뒤 AppendToFile, AppendToStream, ApplySignature로 마무리합니다

이 클래스는 서명 기능 전체를 다룹니다. 다이제스트 선택, 내용 예약과 추정, 폐기 정보, 커밋먼트 타입, 서명 정책, 법적 증명, DocMDP 인증 레벨, 필드 잠금, 문서 타임스탬프, 고정 길이 패스스루 서명

파사드는 문서화된 SignProcess 함수들로 같은 파이프라인을 노출합니다. 서명 워크플로를 더 큰 커스텀 리비전 라이터에 넣어야 할 때 이 클래스를 직접 씁니다

구문

Delphi

TPDFlibSigner = Class
  Public
    Constructor Create;
    Destructor Destroy; Override;
    Function OpenPDF(Const FileName: WideString; Const Password: WideString): TPDFlibSignerResult;
    Function OpenPDFStream(SourceStream: TStream; Const Password: WideString): TPDFlibSignerResult;
    Function OpenPDFString(Const SourceString: AnsiString; Const Password: WideString): TPDFlibSignerResult;
    Function OpenPFX(Const FileName: WideString; Const Password: AnsiString; UseMachineKeyset: Boolean): TPDFlibSignerResult;
    Function OpenCertStore(Const StoreName, CertName: WideString; UseMachineStore: Boolean): TPDFlibSignerResult;
    Function OpenCertContext(CertContext: Pointer): TPDFlibSignerResult;
    Function OpenEd25519(Const CertificateDER, PrivateKeyDER: AnsiString): TPDFlibSignerResult;
    Function OpenEd25519FromFile(Const CertificateFile, PrivateKeyFile: WideString): TPDFlibSignerResult;
    Function OpenCNGKey(Const CertificateDER: AnsiString;
      Const ProviderName, KeyName: WideString; UseMachineKey, AllowUI: Boolean): TPDFlibSignerResult;
    Function OpenCNGKeyHandle(Const CertificateDER: AnsiString; KeyHandle: TPLIntPtr; AllowUI: Boolean): TPDFlibSignerResult;
    Function OpenExternalDigestSigner(Const CertificateDER: AnsiString;
      Signer: TPDFlibExternalDigestSignEvent; Sender: TObject;
      SignProcessID, SignatureAlgorithm, SignatureReserveBytes: Integer): TPDFlibSignerResult;
    Procedure SetPrivateKeyUI(AllowUI: Boolean);
    Procedure SetRSAPSSPadding(Enable: Boolean);
    Procedure SetLegalAttestation(Const Value: WideString);
    Procedure SelectField(Const FieldName: WideString; FieldPage: Integer);
    Procedure SetSignatureProperty(SignatureProperty: TPDFlibSignatureProperty; Const NewValue: AnsiString);
    Procedure SetAppearanceText(Const Text: WideString; FontSize, FontRed, FontGreen, FontBlue: Double);
    Procedure SetSignatureBounds(Left, Top, Width, Height: Double);
    Procedure SetPassthrough(SignatureLength: Integer);
    Procedure SetDocTimeStamp(SignatureLength: Integer);
    Procedure SetDigestAlgorithm(Algorithm: TPDFlibDigestAlgorithm);
    Procedure SetContentsReserveBytes(ExtraBytes: Integer);
    Procedure SetContentsEstimate(ChainBytes, CRLBytes, OCSPBytes, TimeStampBytes, SafetyMarginPercent: Integer);
    Procedure SetRevocationInfo(Const RevocationInfoDER: AnsiString);
    Procedure SetCommitmentType(CommitmentType: Integer);
    Procedure SetDocMDP(Level: Integer);
    Function SetFieldLock(Const Action: AnsiString; Const Fields: TArray): Boolean;
    Procedure SetSignaturePolicy(Const PolicyOID: AnsiString; Const PolicyHashBytes: AnsiString; HashAlgorithm: TPDFlibDigestAlgorithm);
    Function AppendToFile(Const FileName: WideString): Boolean;
    Function AppendToStream(TargetStream: TStream): Boolean;
    Function ApplySignature: Boolean;
    Function GetByteRange(Index: Integer): Int64;
    Function GetEstimatedContentsBytes: Integer;
    Procedure SetInPlace;
    Property IsDocTimeStamp: Boolean Read FIsDocTimeStamp;
  End;

메서드

OpenPDF, OpenPDFStream, OpenPDFString서명할 문서를 파일, 스트림, ANSI 문자열에서 엽니다
OpenPFX, OpenCertStore, OpenCertContextPFX 파일, 표시 이름으로 고른 시스템 스토어 인증서, 외부 인증서 컨텍스트 중 하나를 바인드합니다
OpenEd25519, OpenEd25519FromFile메모리나 파일에서 Ed25519 키 쌍을 바인드합니다
OpenCNGKey, OpenCNGKeyHandle프로바이더·키 이름 또는 키 핸들로 CNG 키를 바인드합니다
OpenExternalDigestSigner다이제스트 서명을 외부 콜백에 위임합니다
SelectField완전한 이름과 페이지로 시그니처 필드를 고릅니다
SetSignaturePropertyspReason, spLocation, spContactInfo, spFieldImage, spSubFilter, spFieldImageOptions 중 하나를 설정합니다
SetAppearanceText덧붙이는 시점에 필드 외관에 기록되는 자동 생성 가시 텍스트 블록을 담습니다
SetSignatureBounds명시적 좌표에 필드를 배치합니다
SetPassthrough외부 서명용으로 정확히 지정한 길이의 패스스루 서명을 만들어냅니다
SetDocTimeStamp서명을 문서 타임스탬프로 전환합니다
SetDigestAlgorithm서명에 쓸 다이제스트를 고릅니다
SetContentsReserveBytes, SetContentsEstimate여분 바이트를 예약하거나, 체인·CRL·OCSP·타임스탬프 추정치에 안전 여유를 더해 예약 크기를 정합니다
SetRevocationInfo미리 모은 폐기 데이터를 DER 형식으로 끼워 넣습니다
SetCommitmentType, SetSignaturePolicy, SetLegalAttestation서명 의도, 정책, 법적 증명을 선언합니다
SetDocMDPDocMDP 레벨 1, 2, 3의 인증 서명을 켭니다. SelectField보다 먼저 호출해야 합니다
SetFieldLock액션과 필드 이름 목록이 담긴 필드 잠금 딕셔너리를 기록합니다
AppendToFile, AppendToStream서명된 리비전을 새 파일이나 스트림에 기록합니다
ApplySignature그 자리의 문서에 서명을 적용합니다
GetByteRange, GetEstimatedContentsBytes리비전을 만든 뒤 ByteRange 항목과 내용 추정 크기를 다시 읽습니다
SetInPlace리비전을 연 문서의 그 자리 업데이트로 표시합니다

매개변수

IsDocTimeStamp서명자가 문서 타임스탬프를 만들고 있으면 True

비고

모든 open 계열 메서드는 TPDFlibSignerResult를 반환합니다

DocMDP 레벨은 ISO 32000 변환 P 값에 대응합니다: 1 = 변경 없음, 2 = 폼 작성, 3 = 주석. 0이 아니면 AcroForm /SigFlags의 AppendOnly 비트가 켜져 뷰어가 인증을 강제합니다

참고 항목

TPDFlibSignDoc, TPDFlibPFXFile, TPDFlibSignerResult, NewSignProcessFromFile, SetSignProcessDocMDP