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 = 注釈可。非ゼロのときは AcroForm の /SigFlags AppendOnly ビットが立つため、ビューアーが認証を強制します

関連項目

TPDFlibSignDoc, TPDFlibPFXFile, TPDFlibSignerResult, NewSignProcessFromFile, SetSignProcessDocMDP