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, OpenCertContext | PFX ファイル、表示名で指定するシステムストア証明書、外部の証明書コンテキストのいずれかをバインドします |
| OpenEd25519, OpenEd25519FromFile | メモリまたはファイルから Ed25519 キーペアをバインドします |
| OpenCNGKey, OpenCNGKeyHandle | プロバイダーとキー名、またはキーハンドルで CNG キーをバインドします |
| OpenExternalDigestSigner | ダイジェスト署名を外部コールバックに委譲します |
| SelectField | 完全修飾名とページで署名フィールドを選択します |
| SetSignatureProperty | spReason、spLocation、spContactInfo、spFieldImage、spSubFilter、spFieldImageOptions のいずれかを設定します |
| SetAppearanceText | 追記時にフィールド外観へ書き込まれる自動生成の可視テキストブロックを保持します |
| SetSignatureBounds | 明示的な座標にフィールドを配置します |
| SetPassthrough | 外部署名のために、指定長ぴったりのパススルー署名を生成します |
| SetDocTimeStamp | 署名をドキュメントタイムスタンプに切り替えます |
| SetDigestAlgorithm | 署名に使うダイジェストを選択します |
| SetContentsReserveBytes, SetContentsEstimate | 余分なバイトを予約するか、チェーン・CRL・OCSP・タイムスタンプの推定値に安全マージンを足して予約サイズを決めます |
| SetRevocationInfo | 事前収集した失効データを DER 形式で埋め込みます |
| SetCommitmentType, SetSignaturePolicy, SetLegalAttestation | 署名の意図、ポリシー、法的証明を宣言します |
| SetDocMDP | DocMDP レベル 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