THPDFSignatureInfo レコード
ロード済み PDF 署名 1 件について、証明書の識別情報からバイト範囲のカバレッジ、検証判定までを記述します
宣言
THPDFSignatureInfo= record
FieldName: AnsiString; // signature form field partial name
SubFilter: AnsiString; // /SubFilter of the signature dictionary
SignerName: AnsiString; // CN of the signer certificate subject
SubjectDN: AnsiString; // rendered subject distinguished name
IssuerDN: AnsiString; // rendered issuer distinguished name
SerialNumberHex: AnsiString; // certificate serial number, hex encoded
ValidFrom: TDateTime; // certificate notBefore (0 when absent)
ValidTo: TDateTime; // certificate notAfter (0 when absent)
SigningTime: TDateTime; // signed attribute 1.2.840.113549.1.9.5,
// else the /M entry, else 0
HashAlgorithm: AnsiString; // SHA-1, SHA-2, SHA-3, or SHAKE256
DigestAlgorithmOID: AnsiString;
DigestConsistencyIssue: THPDFCMSDigestConsistencyIssue;
SignaturePolicy: THPDFSignaturePolicyInfo;
Reason: AnsiString; // /Reason from the signature dictionary
Location: AnsiString; // /Location
ContactInfo: AnsiString; // /ContactInfo
ByteRange: array of Int64; // /ByteRange pairs (offset, length, ...)
CoversWholeDocument: boolean; // ByteRange spans the file except /Contents
SignedRevisionLength: Int64; // source prefix covered by this signature
UnsignedTrailingBytes: Int64; // bytes appended after the signed revision
CertificateTimeValidity: THPDFSignatureTimeValidity;
Status: THPDFSignatureVerifyStatus;
PublicKeyAlgorithm: AnsiString; // RSA, ECDSA, EdDSA, or ML-DSA
SignatureAlgorithm: AnsiString; // CMS signature algorithm name
SignatureAlgorithmOID: AnsiString;
CurveName: AnsiString; // ECDSA curve, such as 'P-256'
Timestamp: THPDFTimestampInfo; // RFC 3161 signature or document timestamp
CMSAttributes: THPDFCMSAttributeSummary;
CertificateValidation: THPDFCertificateValidationInfo;
end;
ユニット
HPDFSignVerify
フィールド
| フィールド | 目的 |
|---|---|
FieldName | 署名フォームフィールドの部分名 |
SubFilter | 署名ディクショナリの /SubFilter エントリの値 |
SignerName | 署名者証明書 subject の CN |
SubjectDN | 証明書の subject 識別名(DN)を整形した文字列 |
IssuerDN | 証明書の issuer 識別名(DN)を整形した文字列 |
SerialNumberHex | 証明書のシリアル番号(16 進エンコード) |
ValidFrom | 証明書の notBefore。ない場合は 0 |
ValidTo | 証明書の notAfter。ない場合は 0 |
SigningTime | 署名属性 1.2.840.113549.1.9.5 の値。なければ /M エントリ、それもなければ 0 |
HashAlgorithm | ダイジェストファミリー名。SHA-1、SHA-2、SHA-3、SHAKE256 のいずれか |
DigestAlgorithmOID | ダイジェストアルゴリズムのオブジェクト識別子 |
DigestConsistencyIssue | CMS 構造内のダイジェストアルゴリズム間で検出された不整合 |
SignaturePolicy | 署名がポリシーを持つ場合の署名ポリシー詳細 |
Reason | /Reason エントリの値 |
Location | /Location エントリの値 |
ContactInfo | /ContactInfo エントリの値 |
ByteRange | 対象バイト区間を記述する /ByteRange のオフセットと長さのペア |
CoversWholeDocument | /Contents の隙間を除くファイル全体をバイト範囲が覆うとき True |
SignedRevisionLength | この署名が覆うソース先頭部分の長さ |
UnsignedTrailingBytes | 署名済みリビジョンの後に追加されたバイト数 |
CertificateTimeValidity | 署名時刻が証明書の有効期間内に収まっているか |
Status | THPDFSignatureVerifyStatus 型の検証判定 |
PublicKeyAlgorithm | 公開鍵ファミリー。RSA、ECDSA、EdDSA、ML-DSA のいずれか |
SignatureAlgorithm | CMS 署名アルゴリズム名 |
SignatureAlgorithmOID | 署名アルゴリズムのオブジェクト識別子 |
CurveName | ECDSA 曲線名。P-256 など |
Timestamp | RFC 3161 署名タイムスタンプまたはドキュメントタイムスタンプの詳細 |
CMSAttributes | 署名済み CMS 属性の概要 |
CertificateValidation | 証明書チェーン検証の結果 |
使用上の注意
- 記述フィールドは
GetLoadedSignatureInfoが返します。ステータスと検証フィールドは、ダイジェスト確認の後にVerifyLoadedSignatureとVerifyLoadedSignatureExが埋めます CoversWholeDocumentとUnsignedTrailingBytesを見れば、署名後に後続リビジョンがドキュメントを変更したか分かります- 同じレコードが証明書検証にも渡されるため、1 回の呼び出しで識別情報、カバレッジ、アルゴリズム、チェーン検証まで覆えます