sgcSign 機能リファレンス
sgcSign デジタル署名スイートの完全な機能カタログです ― Delphi 7 ~ Delphi 13、C++Builder、.NET 向けに署名標準、キープロバイダー、国別プロファイル、検証、EU トラストリスト統合、ETSI 検証レポートを網羅します。
sgcSign デジタル署名スイートの完全な機能カタログです ― Delphi 7 ~ Delphi 13、C++Builder、.NET 向けに署名標準、キープロバイダー、国別プロファイル、検証、EU トラストリスト統合、ETSI 検証レポートを網羅します。
sgcSign はキー管理、署名操作、出力フォーマットを分離しています。任意のキープロバイダーと任意の署名者を組み合わせ、1 つのコンポーネントを変更するだけでローカル PFX とクラウド KMS を切り替えられます。
証明書と秘密鍵のアクセスを単一インターフェースの背後に抽象化します。ローカルファイル、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 パッケージング)。
4 つの AdES レベル(B-B、B-T、B-LT、B-LTA)すべてで完全な ETSI 署名フォーマットをカバーし、コード署名向けの Microsoft Authenticode にも対応します。
XML 高度電子署名です。エンベロープ、デタッチ、エンベロービングの各モードに対応します。B-B / B-T / B-LT / B-LTA レベルをサポートします。署名位置を固定するエンベロープフォーマット(KSeF /v2/auth/xades-signature)向けの SignatureParentElement を提供します。Delphi 7 以降の WideString オーバーロードでポーランド語・スペイン語・ドイツ語の発音符号文字に対応します。
PDF 高度電子署名です。PDF 内に埋め込まれた署名で、署名者名・理由・場所・連絡先情報・設定可能な矩形を含む可視署名外観に対応します。Adobe Acrobat と互換性があります。TSA + OCSP を使用した PAdES-T、-LT レベルをサポートします。
任意のファイルまたはデータストリームに対する CMS/PKCS#7 バイナリ署名です。デタッチ形式とアタッチ形式に対応します。CAdES-BES、CAdES-T(タイムスタンプ付き)、CAdES-XL(失効値付き長期)をサポートします。
関連署名コンテナです。1 つまたは複数のドキュメントを XAdES または CAdES 署名とともに ZIP フォーマットアーカイブにまとめます。シンプル形式(apASiCS、単一ドキュメント)またはエクステンデッド形式(apASiCE、マニフェスト+複数ドキュメント)に対応します。最初の ZIP エントリは非圧縮の mimetype マーカーで、先頭約 50 バイトで検証者がコンテナを検出できます。
Windows PE ファイル(.exe、.dll、.sys、.ocx、.cpl、.scr)向けの Microsoft Authenticode です。SHA-1、SHA-256(デフォルト)、SHA-384、SHA-512 ハッシュアルゴリズムに対応します。RFC 3161 タイムスタンプトークン、レガシー+最新の検証者との互換性のためのネスト(デュアル)署名をサポートします。sgcSign Server で利用可能です。
各フォーマットで 4 つの ETSI 適合レベルすべてをサポートします:B-B(基本)、B-T(タイムスタンプ)、B-LT(長期、失効値付き)、B-LTA(アーカイブ、アーカイブタイムスタンプ付き)。TSA クライアントと OCSP レスポンダーを追加することで署名を B-B から B-LT に昇格できます。
すべてのプロバイダーは 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 行変更するだけで対応国を切り替えられます。
| プロファイル | 国 | システム | フォーマット | レベル |
|---|---|---|---|---|
spVeriFactu | スペイン | VeriFactu (AEAT) | XAdES-EPES | B-B |
spTicketBAI | スペイン(バスク) | TicketBAI | XAdES-EPES | B-B |
spFacturaeB2B | スペイン | Facturae 3.x / FACe | XAdES-EPES | B-T |
spFatturaPA | イタリア | FatturaPA (SDI) | XAdES-BES | B-B |
spSAFTPT | ポルトガル | SAF-T PT | RSA-SHA256 | B-B |
spKSeF | ポーランド | KSeF (Krajowy System e-Faktur) | XAdES | B-T |
spFacturX | フランス / ドイツ | Factur-X / ZUGFeRD | XAdES | B-B |
spEFactura | ルーマニア | e-Factura (ANAF) | XAdES | B-T |
spNAVOnline | ハンガリー | NAV Online | XML-DSig | B-B |
spFiskalizacija | クロアチア | Fiskalizacija | XML-DSig | B-B |
spPeppolBE | ベルギー | Peppol UBL 2.0 | XAdES | B-T |
spPeppolBG | ブルガリア | Peppol UBL 2.1 | XAdES | B-T |
spMyDATA | ギリシャ | myDATA (AADE) | XAdES | B-B |
EU 加盟国の労働法要件(ドイツの § 126a BGB、イタリアの FEQ など)に準拠した eIDAS 適合署名です。管轄ごとに事前設定済みで、Profile.LoadProfile(spEmploymentXX) を使用して TsgcXAdESSigner に読み込みます。
| プロファイル | 国 | レベル | ハッシュ | タイムスタンプ | OCSP | 備考 |
|---|---|---|---|---|---|---|
spEmploymentDE | ドイツ | B-LT | SHA-256 | あり | あり | 書面形式の契約に § 126a BGB による QES が必要です。 |
spEmploymentIT | イタリア | B-LT | SHA-256 | あり | あり | FEQ 認定署名。INPS ポータルは XAdES と CAdES の両方を受け付けます。 |
spEmploymentES | スペイン | B-T | SHA-256 | あり | なし | AdES で十分です。SEPE / TGSS ポータルは FNMT または DNIe が必要です。 |
spEmploymentFR | フランス | B-T | SHA-256 | あり | なし | AdES 可。DSP2 / RGS に基づくリモート署名では QES が推奨されます。 |
spEmploymentAT | オーストリア | B-LT | SHA-256 | あり | あり | Handy-Signatur / ID Austria 経由の QES が一般的です。 |
spEmploymentBE | ベルギー | B-LT | SHA-256 | あり | あり | eID カード(BeID)経由の QES です。 |
spEmploymentPT | ポルトガル | B-LT | SHA-256 | あり | あり | Cartão do Cidadão / Chave Móvel Digital 経由の QES です。 |
spEmploymentNL | オランダ | B-T | SHA-256 | あり | なし | AdES は一般的に受け入れられます。一部の HR ポータル(UWV)では QES が必要です。 |
spEmploymentPL | ポーランド | B-T | SHA-256 | あり | なし | 契約が ZUS / PUE に提出される場合は Profil Zaufany または認定証明書による QES が必要です。 |
完全な検証パイプラインと EU トラストリスト統合、標準化された ETSI TS 119 102-2 XML 検証レポートを提供します ― EU 労働裁判所および行政機関の検証者が署名の有効性の法的証明として受け入れます。
TsgcSignatureVerifier は完全なパイプラインをカバーします:ダイジェスト確認、RSA / ECDSA 署名検証、証明書チェーン検証、OCSP 失効確認、長期検証のための埋め込み RevocationValues、SignedProperties の ID ベースフラグメントルックアップ。
TsgcEUTrustList は ETSI TS 119 612 の信頼リスト一覧と約 31 の加盟国別信頼リストを解析します。任意の X.509 証明書を EU ライブレジストリと照合して eIDAS 認定として分類できます。エアギャップ環境向けのオフラインモードキャッシュをサポートします。
すべての検証で標準化された XML 検証レポート(v1.2.1)を生成します ― EU 労働裁判所および行政機関の検証者が署名の有効性の法的証明として受け入れる形式です。
TsgcTSAClient は任意の RFC 3161 タイムスタンプ認証局に接続します。署名を B-B から B-T、B-LT、B-LTA に昇格できます ― 署名証明書の有効期限が切れた後も長期にわたって検証可能です。
TsgcOCSPClient は RFC 6960 Online Certificate Status Protocol チェックを実行します。リアルタイム失効確認を行い、OCSP レスポンスを B-LT 署名に埋め込むことで、レスポンダーが後にオフラインになっても文書の検証を可能にします。
一貫した XML 署名処理のためのインクルーシブ C14N(xml-c14n11)とエクスクルーシブ C14N(xml-exc-c14n)をサポートします。各国別プロファイルが規制機関の要件に応じた正規化方式を選択します。
全体で Windows CNG / BCrypt 暗号化を使用 ― OpenSSL DLL は不要です。暗号化 PKCS#8 PEM 向けのネイティブ PBES2 / PBKDF2 / AES-CBC。ネットワーク操作には WinHTTP を使用します。
Delphi 7 から RAD Studio 13 まですべての Delphi コンパイラおよび C++Builder をサポートします。モダンなユニットはレガシー互換性のためにガードされています(例:TsgcASiCContainer は D2010 以降のジェネリクスが必要で、D7 では空のユニットとしてコンパイルされます)。
.NET Framework 2.0 ~ 4.8、.NET Core、.NET 5 ~ 9、.NET Standard 向けのミラー C# 移植版です。同一の Tsgc* クラス名、Delphi ライブラリと同一の API サーフェスです。
すべてのライセンスにソースコードが完全付属します。検査、カスタマイズ、監査、拡張が可能です。コンポーネントクラス名はデザイン時 IDE 統合のために登録されています。
すべての X.509 / CRL / OCSP / TSA タイムスタンプは RFC 5280、RFC 3161、RFC 6960 に準拠した UTC TDateTime 値として保存されます。各コンポーネントの *Local プロパティでローカル時刻に変換できます。
バイナリの無料再配布が可能です。ドキュメントごとの料金やデプロイメントごとのライセンスなしに、好きなだけドキュメントに署名できます。
spFatturaPA、ポーランドなら spKSeF に切り替え
// 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;
// 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 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;