sgcSign 機能リファレンス

sgcSign デジタル署名スイートの完全な機能カタログです ― Delphi 7 ~ Delphi 13、C++Builder、.NET 向けに署名標準、キープロバイダー、国別プロファイル、検証、EU トラストリスト統合、ETSI 検証レポートを網羅します。

3 層構造、1 つのエンジン

sgcSign はキー管理、署名操作、出力フォーマットを分離しています。任意のキープロバイダーと任意の署名者を組み合わせ、1 つのコンポーネントを変更するだけでローカル PFX とクラウド KMS を切り替えられます。

キープロバイダー (IsgcKeyProvider)

証明書と秘密鍵のアクセスを単一インターフェースの背後に抽象化します。ローカルファイル、Windows 証明書ストア、PKCS#11 ハードウェアトークン、Azure / AWS / Google Cloud KMS、HashiCorp Vault、Certum SimplySign、CSC v2 リモート QTSP に対応します。

署名者

各 ETSI フォーマット向けの専用署名者:TsgcXAdESSigner、TsgcPAdESSigner、TsgcCAdESSigner、TsgcAuthenticodeSigner。さらに TsgcDocumentSigner ― 国別プロファイルから適切な署名者を自動選択・設定する統合高レベル API です。

サポートコンポーネント

TsgcTSAClient(RFC 3161 タイムスタンプ)、TsgcOCSPClient(失効確認)、TsgcSignatureVerifier(検証)、TsgcEUTrustList(LOTL/EUTL)、TsgcASiCContainer(ASiC-S/ASiC-E ZIP パッケージング)。

XAdES、PAdES、CAdES、ASiC & Authenticode

4 つの AdES レベル(B-B、B-T、B-LT、B-LTA)すべてで完全な ETSI 署名フォーマットをカバーし、コード署名向けの Microsoft Authenticode にも対応します。

XAdES — ETSI EN 319 132

XML 高度電子署名です。エンベロープ、デタッチ、エンベロービングの各モードに対応します。B-B / B-T / B-LT / B-LTA レベルをサポートします。署名位置を固定するエンベロープフォーマット(KSeF /v2/auth/xades-signature)向けの SignatureParentElement を提供します。Delphi 7 以降の WideString オーバーロードでポーランド語・スペイン語・ドイツ語の発音符号文字に対応します。

PAdES — ETSI EN 319 142

PDF 高度電子署名です。PDF 内に埋め込まれた署名で、署名者名・理由・場所・連絡先情報・設定可能な矩形を含む可視署名外観に対応します。Adobe Acrobat と互換性があります。TSA + OCSP を使用した PAdES-T、-LT レベルをサポートします。

CAdES — ETSI EN 319 122

任意のファイルまたはデータストリームに対する CMS/PKCS#7 バイナリ署名です。デタッチ形式とアタッチ形式に対応します。CAdES-BES、CAdES-T(タイムスタンプ付き)、CAdES-XL(失効値付き長期)をサポートします。

ASiC-S / ASiC-E — ETSI EN 319 162

関連署名コンテナです。1 つまたは複数のドキュメントを XAdES または CAdES 署名とともに ZIP フォーマットアーカイブにまとめます。シンプル形式(apASiCS、単一ドキュメント)またはエクステンデッド形式(apASiCE、マニフェスト+複数ドキュメント)に対応します。最初の ZIP エントリは非圧縮の mimetype マーカーで、先頭約 50 バイトで検証者がコンテナを検出できます。

Authenticode — コード署名

Windows PE ファイル(.exe、.dll、.sys、.ocx、.cpl、.scr)向けの Microsoft Authenticode です。SHA-1、SHA-256(デフォルト)、SHA-384、SHA-512 ハッシュアルゴリズムに対応します。RFC 3161 タイムスタンプトークン、レガシー+最新の検証者との互換性のためのネスト(デュアル)署名をサポートします。sgcSign Server で利用可能です。

AdES レベル — B-B / B-T / B-LT / B-LTA

各フォーマットで 4 つの ETSI 適合レベルすべてをサポートします:B-B(基本)、B-T(タイムスタンプ)、B-LT(長期、失効値付き)、B-LTA(アーカイブ、アーカイブタイムスタンプ付き)。TSA クライアントと OCSP レスポンダーを追加することで署名を B-B から B-LT に昇格できます。

ローカル、ハードウェア、クラウド & リモート QTSP

すべてのプロバイダーは IsgcKeyProvider を実装しています。署名コードを変更せずにいずれのキーソースにも切り替えられます。

コンポーネント 種別 用途
TsgcPFXKeyProvider ローカルファイル (PKCS#12) パスワード保護された PFX/.p12 ファイル。ネイティブ Windows CNG をサポートします。
TsgcPEMKeyProvider ローカルファイル (PEM) 暗号化 PKCS#8 鍵付きの PEM 証明書。ネイティブ PBES2 / PBKDF2 / AES-CBC 復号 ― OpenSSL DLL 不要。
TsgcWindowsCertStoreProvider Windows ストア ローカルマシンおよびカレントユーザーストア。Active Directory と グループポリシーの統合をサポートします。
TsgcPKCS11Provider ハードウェアトークン PKCS#11 ドライバー経由のスマートカードおよび HSM ― SafeNet、YubiKey、Nitrokey、Thales、Utimaco など。
TsgcAzureTrustedSigningProvider クラウド (Microsoft) Azure Trusted Signing ― Microsoft の認定署名サービス。OAuth2 クライアントクレデンシャル。Azure Key Vault とは別のサービスです。
TsgcAWSKMSKeyProvider クラウド (AWS) AWS Key Management Service。鍵は AWS 内に保存され、ネットワークを出るのはドキュメントハッシュのみです。
TsgcGCloudKMSKeyProvider クラウド (Google) Google Cloud Key Management。サービスアカウント認証を使用します。
TsgcHashiCorpVaultKeyProvider クラウド (セルフホスト) HashiCorp Vault トランジット署名エンジン。鍵は Vault クラスターから外に出ることはありません。
TsgcCertumSimplySignProvider リモート QTSP Certum SimplySign ― ポーランドの認定電子署名プロバイダー。KSeF、ZUS、PUE に対応します。
TsgcCSCKeyProvider リモート QTSP (CSC v2) 汎用 Cloud Signature Consortium v2 クライアント ― Universign、D-Trust sign-me、A-Trust、FNMT Cl@ve Firma、Evrotrust、Intesi Group、および CSC v2 API を公開する任意の QTSP に対応します。

欧州の電子請求書発行と雇用契約署名

各プロファイルはハッシュアルゴリズム、正規化、署名レベル、RFC 3161 タイムスタンプポリシー、OCSP 失効要件を対象国の規制機関の要件に合わせて事前設定しています。1 行変更するだけで対応国を切り替えられます。

電子請求書プロファイル(12 種類)

プロファイル システム フォーマット レベル
spVeriFactuスペインVeriFactu (AEAT)XAdES-EPESB-B
spTicketBAIスペイン(バスク)TicketBAIXAdES-EPESB-B
spFacturaeB2BスペインFacturae 3.x / FACeXAdES-EPESB-T
spFatturaPAイタリアFatturaPA (SDI)XAdES-BESB-B
spSAFTPTポルトガルSAF-T PTRSA-SHA256B-B
spKSeFポーランドKSeF (Krajowy System e-Faktur)XAdESB-T
spFacturXフランス / ドイツFactur-X / ZUGFeRDXAdESB-B
spEFacturaルーマニアe-Factura (ANAF)XAdESB-T
spNAVOnlineハンガリーNAV OnlineXML-DSigB-B
spFiskalizacijaクロアチアFiskalizacijaXML-DSigB-B
spPeppolBEベルギーPeppol UBL 2.0XAdESB-T
spPeppolBGブルガリアPeppol UBL 2.1XAdESB-T
spMyDATAギリシャmyDATA (AADE)XAdESB-B

EU 雇用契約プロファイル(9 種類)

EU 加盟国の労働法要件(ドイツの § 126a BGB、イタリアの FEQ など)に準拠した eIDAS 適合署名です。管轄ごとに事前設定済みで、Profile.LoadProfile(spEmploymentXX) を使用して TsgcXAdESSigner に読み込みます。

プロファイル レベル ハッシュ タイムスタンプ OCSP 備考
spEmploymentDEドイツB-LTSHA-256ありあり書面形式の契約に § 126a BGB による QES が必要です。
spEmploymentITイタリアB-LTSHA-256ありありFEQ 認定署名。INPS ポータルは XAdES と CAdES の両方を受け付けます。
spEmploymentESスペインB-TSHA-256ありなしAdES で十分です。SEPE / TGSS ポータルは FNMT または DNIe が必要です。
spEmploymentFRフランスB-TSHA-256ありなしAdES 可。DSP2 / RGS に基づくリモート署名では QES が推奨されます。
spEmploymentATオーストリアB-LTSHA-256ありありHandy-Signatur / ID Austria 経由の QES が一般的です。
spEmploymentBEベルギーB-LTSHA-256ありありeID カード(BeID)経由の QES です。
spEmploymentPTポルトガルB-LTSHA-256ありありCartão do Cidadão / Chave Móvel Digital 経由の QES です。
spEmploymentNLオランダB-TSHA-256ありなしAdES は一般的に受け入れられます。一部の HR ポータル(UWV)では QES が必要です。
spEmploymentPLポーランドB-TSHA-256ありなし契約が ZUS / PUE に提出される場合は Profil Zaufany または認定証明書による QES が必要です。

EU と同じ方法で検証する

完全な検証パイプラインと EU トラストリスト統合、標準化された ETSI TS 119 102-2 XML 検証レポートを提供します ― EU 労働裁判所および行政機関の検証者が署名の有効性の法的証明として受け入れます。

LTV 付き署名検証

TsgcSignatureVerifier は完全なパイプラインをカバーします:ダイジェスト確認、RSA / ECDSA 署名検証、証明書チェーン検証、OCSP 失効確認、長期検証のための埋め込み RevocationValues、SignedProperties の ID ベースフラグメントルックアップ。

EU トラストリスト (LOTL / EUTL)

TsgcEUTrustList は ETSI TS 119 612 の信頼リスト一覧と約 31 の加盟国別信頼リストを解析します。任意の X.509 証明書を EU ライブレジストリと照合して eIDAS 認定として分類できます。エアギャップ環境向けのオフラインモードキャッシュをサポートします。

ETSI TS 119 102-2 検証レポート

すべての検証で標準化された XML 検証レポート(v1.2.1)を生成します ― EU 労働裁判所および行政機関の検証者が署名の有効性の法的証明として受け入れる形式です。

RFC 3161 タイムスタンプ

TsgcTSAClient は任意の RFC 3161 タイムスタンプ認証局に接続します。署名を B-B から B-T、B-LT、B-LTA に昇格できます ― 署名証明書の有効期限が切れた後も長期にわたって検証可能です。

OCSP 失効確認

TsgcOCSPClient は RFC 6960 Online Certificate Status Protocol チェックを実行します。リアルタイム失効確認を行い、OCSP レスポンスを B-LT 署名に埋め込むことで、レスポンダーが後にオフラインになっても文書の検証を可能にします。

XML 正規化 (C14N)

一貫した XML 署名処理のためのインクルーシブ C14N(xml-c14n11)とエクスクルーシブ C14N(xml-exc-c14n)をサポートします。各国別プロファイルが規制機関の要件に応じた正規化方式を選択します。

ネイティブ、自己完結型、クロスバージョン対応

外部 DLL 不要

全体で Windows CNG / BCrypt 暗号化を使用 ― OpenSSL DLL は不要です。暗号化 PKCS#8 PEM 向けのネイティブ PBES2 / PBKDF2 / AES-CBC。ネットワーク操作には WinHTTP を使用します。

Delphi 7 ~ Delphi 13 対応

Delphi 7 から RAD Studio 13 まですべての Delphi コンパイラおよび C++Builder をサポートします。モダンなユニットはレガシー互換性のためにガードされています(例:TsgcASiCContainer は D2010 以降のジェネリクスが必要で、D7 では空のユニットとしてコンパイルされます)。

.NET 実装

.NET Framework 2.0 ~ 4.8、.NET Core、.NET 5 ~ 9、.NET Standard 向けのミラー C# 移植版です。同一の Tsgc* クラス名、Delphi ライブラリと同一の API サーフェスです。

フルソースコード付き

すべてのライセンスにソースコードが完全付属します。検査、カスタマイズ、監査、拡張が可能です。コンポーネントクラス名はデザイン時 IDE 統合のために登録されています。

全体で UTC タイムスタンプ

すべての X.509 / CRL / OCSP / TSA タイムスタンプは RFC 5280、RFC 3161、RFC 6960 に準拠した UTC TDateTime 値として保存されます。各コンポーネントの *Local プロパティでローカル時刻に変換できます。

ランタイムロイヤリティ不要

バイナリの無料再配布が可能です。ドキュメントごとの料金やデプロイメントごとのライセンスなしに、好きなだけドキュメントに署名できます。

同一 API で 3 種類のキーソース

ローカル PFX で VeriFactu 請求書に署名する

  • 単一の高レベルコンポーネント(TsgcDocumentSigner)
  • プロファイルが XAdES-EPES、B-B、SHA-256、エクスクルーシブ C14N を自動選択
  • イタリアなら spFatturaPA、ポーランドなら spKSeF に切り替え
SignVeriFactu.pas
// Sign Spanish VeriFactu invoice
var
  vKeyProvider: TsgcPFXKeyProvider;
  vSigner: TsgcDocumentSigner;
begin
  vKeyProvider := TsgcPFXKeyProvider.Create(nil);
  try
    vKeyProvider.FileName := 'certificate.pfx';
    vKeyProvider.Password := 'secret';
    vKeyProvider.LoadFromFile;

    vSigner := TsgcDocumentSigner.Create(nil);
    try
      vSigner.KeyProvider := vKeyProvider;
      vSigner.Profile := spVeriFactu;
      memoSigned.Text := vSigner.SignXML(memoXML.Text);
    finally
      vSigner.Free;
    end;
  finally
    vKeyProvider.Free;
  end;
end;

Azure Trusted Signing で EXE に Authenticode 署名する

  • クラウドキー、ローカル PFX や USB トークン不要
  • OAuth2 クライアントクレデンシャル認証
  • Microsoft 発行のパブリックトラスト証明書
SignWithAzure.pas
// Authenticode-sign with Azure Trusted Signing
var
  vKeyProvider: TsgcAzureTrustedSigningProvider;
  vSigner: TsgcAuthenticodeSigner;
begin
  vKeyProvider := TsgcAzureTrustedSigningProvider.Create(nil);
  vSigner := TsgcAuthenticodeSigner.Create(nil);
  try
    vKeyProvider.AccountName := 'my-trusted-signing-account';
    vKeyProvider.CertificateProfileName := 'public-trust';
    vKeyProvider.Endpoint := 'https://eus.codesigning.azure.net';

    vSigner.KeyProvider := vKeyProvider;
    vSigner.SignFile('myapp.exe', 'myapp-signed.exe');
  finally
    vSigner.Free;
    vKeyProvider.Free;
  end;
end;

PAdES-T — 可視署名とタイムスタンプ付き PDF

  • サブジェクト名で Windows ストアから証明書を取得
  • RFC 3161 タイムスタンプを署名に埋め込み
  • 理由と場所を含む可視署名外観
SignPDFVisible.pas
// PAdES-T with visible signature appearance
var
  vKeyProvider: TsgcWindowsCertStoreProvider;
  vSigner: TsgcPAdESSigner;
  vTSA: TsgcTSAClient;
begin
  vKeyProvider := TsgcWindowsCertStoreProvider.Create(nil);
  vSigner := TsgcPAdESSigner.Create(nil);
  vTSA := TsgcTSAClient.Create(nil);
  try
    vKeyProvider.SubjectName := 'CN=Acme Corp';
    vKeyProvider.LoadFromStore;

    vTSA.URL := 'https://freetsa.org/tsr';

    vSigner.KeyProvider := vKeyProvider;
    vSigner.TSAClient := vTSA;
    vSigner.Reason := 'Approved';
    vSigner.Location := 'Madrid, Spain';
    vSigner.VisibleSignature.Enabled := True;
    vSigner.SignPDF('contract.pdf', 'contract-signed.pdf');
  finally
    vTSA.Free;
    vSigner.Free;
    vKeyProvider.Free;
  end;
end;

eIDAS 準拠の署名を今すぐ実装する

Delphi、C++Builder、または .NET アプリケーションに XAdES、PAdES、CAdES、ASiC 署名を追加しましょう。