Breng je eigen sleutel mee — 10 providers
Alle providers implementeren de IsgcKeyProvider-interface — dezelfde ondertekencode werkt tegen lokale bestanden, smartcards, HSM's, cloud-KMS of remote QTSP's. Wissel met één regel.
Alle providers implementeren de IsgcKeyProvider-interface — dezelfde ondertekencode werkt tegen lokale bestanden, smartcards, HSM's, cloud-KMS of remote QTSP's. Wissel met één regel.
TsgcPFXKeyProviderPFX / PKCS#12 files. Lokale, met een wachtwoord beveiligde sleutel. Het beste voor ontwikkeling, kleine implementaties en elke workflow waarin het certificaat als één .pfx/.p12-bestand wordt geleverd.
PKCS12_PREFER_CNG_KSP op Windows, in puur Pascal geparseerd op Linux64, macOS, iOS en Android. SHA-256-/384-/512-ondertekening werkt ongeacht de oorspronkelijke CSP.
.pfx-bestanden met meerdere certificaten worden automatisch doorlopen tot het certificaat met de private sleutel is gevonden.
var
vPFX: TsgcPFXKeyProvider;
begin
vPFX := TsgcPFXKeyProvider.Create(nil);
try
vPFX.FileName := 'certificate.pfx';
vPFX.Password := 'mypassword';
vPFX.LoadFromFile;
// vSigner.KeyProvider := vPFX;
finally
vPFX.Free;
end;
end;
TsgcPEMKeyProviderPEM files. Versleutelde PKCS#8 met native PBES2- / PBKDF2- / AES-CBC-ondersteuning, plus het oudere DEK-Info-formaat voor privésleutels van RSA. Het beste voor pijplijnen op basis van OpenSSL.
BEGIN CERTIFICATE, BEGIN RSA PRIVATE KEY, BEGIN PRIVATE KEY, BEGIN ENCRYPTED PRIVATE KEY worden allemaal ondersteund.
PrivateKeyFile dan leeg.
var
vPEM: TsgcPEMKeyProvider;
begin
vPEM := TsgcPEMKeyProvider.Create(nil);
try
vPEM.CertificateFile := 'cert.pem';
vPEM.PrivateKeyFile := 'key.pem';
vPEM.PrivateKeyPassword := 'secret';
vPEM.LoadFromFile;
// vSigner.KeyProvider := vPEM;
finally
vPEM.Free;
end;
end;
TsgcWindowsCertStoreProviderWindows Certificate Store. Stores voor de lokale machine en de huidige gebruiker. Het beste voor desktop-apps die bestaande door AD uitgegeven certificaten gebruiken, of voor elke implementatie waarbij Windows de levenscyclus van het certificaat al beheert.
var
vStore: TsgcWindowsCertStoreProvider;
begin
vStore := TsgcWindowsCertStoreProvider.Create(nil);
try
vStore.StoreName := 'MY';
vStore.StoreLocation := cslCurrentUser;
vStore.SelectCertificateBySubject('My Company');
// vSigner.KeyProvider := vStore;
finally
vStore.Free;
end;
end;
TsgcPKCS11ProviderPKCS#11 / Hardware Tokens. Smartcards, USB-tokens en HSM's: SafeNet, YubiKey, Nitrokey, Thales. Vereist voor gekwalificeerde elektronische handtekeningen in de meeste EU-rechtsgebieden.
CKM_RSA_PKCS and CKM_ECDSA_SHA256 mechanismen worden ondersteund.
EnumerateSlots / EnumerateCertificates helpers om tijdens runtime het juiste slot te kiezen.
var
vTok: TsgcPKCS11Provider;
begin
vTok := TsgcPKCS11Provider.Create(nil);
try
vTok.LibraryPath := 'C:\token\pkcs11.dll';
vTok.SlotIndex := 0;
vTok.PIN := '1234';
vTok.CertificateLabel := 'MyCert';
vTok.Connect;
// vSigner.KeyProvider := vTok;
finally
vTok.Free;
end;
end;
TsgcAzureTrustedSigningProviderAzure Trusted Signing. De gekwalificeerde codeondertekeningsdienst van Microsoft. Authenticode zonder een EV-certificaat te kopen: Microsoft is eigenaar van het certificaat en richt de ondertekeningssleutel voor je in.
var
vAzure: TsgcAzureTrustedSigningProvider;
begin
vAzure := TsgcAzureTrustedSigningProvider.Create(nil);
try
vAzure.TenantId := 'your-tenant-id';
vAzure.ClientId := 'your-client-id';
vAzure.ClientSecret := 'your-client-secret';
vAzure.AccountName := 'mySigningAccount';
vAzure.CertificateProfileName := 'default';
vAzure.Connect;
// vSigner.KeyProvider := vAzure;
finally
vAzure.Free;
end;
end;
TsgcAWSKMSKeyProviderAWS Key Management Service. De door HSM ondersteunde sleutelbeheerdienst van Amazon. Combineer met een door AWS uitgegeven certificaat voor ondertekening in de cloud, zonder de privésleutel bloot te geven.
KeyId accepteert key-ID, key-ARN of alias-ARN.
var
vAWS: TsgcAWSKMSKeyProvider;
begin
vAWS := TsgcAWSKMSKeyProvider.Create(nil);
try
vAWS.AccessKeyId := 'AKIAIOSFODNN7EXAMPLE';
vAWS.SecretAccessKey := 'wJalrXUtnFEMI/K7MDENG/...';
vAWS.Region := 'us-east-1';
vAWS.KeyId := 'arn:aws:kms:us-east-1:...:key/my-key';
vAWS.Connect;
// vSigner.KeyProvider := vAWS;
finally
vAWS.Free;
end;
end;
TsgcGCloudKMSKeyProviderGoogle Cloud KMS. Hetzelfde werkmodel als AWS KMS. Het JSON-bestand van het service-account authenticeert via een JWT-uitwisseling naar een OAuth2-toegangstoken en ondertekent daarna via de Cloud KMS-API.
var
vGCloud: TsgcGCloudKMSKeyProvider;
begin
vGCloud := TsgcGCloudKMSKeyProvider.Create(nil);
try
vGCloud.ProjectId := 'my-project';
vGCloud.LocationId := 'global';
vGCloud.KeyRingId := 'my-key-ring';
vGCloud.KeyId := 'my-signing-key';
vGCloud.KeyVersion := '1';
vGCloud.ServiceAccountJSON := 'C:\keys\sa.json';
vGCloud.Connect;
// vSigner.KeyProvider := vGCloud;
finally
vGCloud.Free;
end;
end;
TsgcHashiCorpVaultKeyProviderHashiCorp Vault. De Transit-secrets-engine van Vault voert de ondertekening uit. Het beste voor self-hosted, policy-gestuurd sleutelbeheer waarbij Vault al deel uitmaakt van de stack.
SetCertificateFromFile.
'transit'.
var
vVault: TsgcHashiCorpVaultKeyProvider;
begin
vVault := TsgcHashiCorpVaultKeyProvider.Create(nil);
try
vVault.VaultAddress := 'https://vault.example.com:8200';
vVault.Token := 's.myVaultToken';
vVault.MountPath := 'transit';
vVault.KeyName := 'my-signing-key';
vVault.Connect;
vVault.SetCertificateFromFile('C:\certs\signing-cert.pem');
// vSigner.KeyProvider := vVault;
finally
vVault.Free;
end;
end;
TsgcCertumSimplySignProviderCertum SimplySign. Poolse QTSP. Gekwalificeerde elektronische handtekeningen via een PIN die wordt geautoriseerd door een mobiele app, zonder USB-token. Een veelgekozen optie voor Poolse KSeF- en ZUS-workflows.
ListCertificates toont elk certificaat dat in het account beschikbaar is.
var
vCertum: TsgcCertumSimplySignProvider;
begin
vCertum := TsgcCertumSimplySignProvider.Create(nil);
try
vCertum.ClientId := 'your-client-id';
vCertum.ClientSecret := 'your-client-secret';
vCertum.Username := 'user@example.com';
vCertum.Password := 'account-password';
vCertum.PIN := '123456';
vCertum.BaseURL := 'https://cloudsign.certum.pl';
vCertum.Connect;
// vSigner.KeyProvider := vCertum;
finally
vCertum.Free;
end;
end;
TsgcCSCKeyProviderCloud Signature Consortium API v2. Generieke interface naar elke QTSP die CSC v2 implementeert — Universign, D-Trust sign-me, A-Trust, FNMT Cl@ve Firma, Evrotrust, Intesi Group. De provider bewaart de gekwalificeerde sleutel in een remote QSCD; sgcSign stuurt alleen de document-hash.
cscBasic, cscOAuth2, cscOTP (one-time password voor two-factor).
credentials/authorize + signatures/signHash aan volgens de CSC v2-specificatie.
var
vCSC: TsgcCSCKeyProvider;
vCreds: TStringArray;
begin
vCSC := TsgcCSCKeyProvider.Create(nil);
try
vCSC.BaseURL := 'https://api.qtsp.example/csc/v2';
vCSC.AuthMethod := cscBasic;
vCSC.Username := 'alice';
vCSC.Password := 'secret';
vCreds := vCSC.ListCredentials;
vCSC.CredentialID := vCreds[0];
vCSC.PIN := '123456';
vCSC.OTP := '987654';
vCSC.LoadCredentialInfo;
// vSigner.KeyProvider := vCSC;
finally
vCSC.Free;
end;
end;
Elke provider implementeert IsgcKeyProvider. De signer-code weet nooit of de sleutel op schijf staat, op een token, in Azure of achter een CSC v2-API.
function SignWithAnyProvider(
aProvider: IsgcKeyProvider; const aXML: string): string;
var
vSigner: TsgcXAdESSigner;
begin
vSigner := TsgcXAdESSigner.Create(nil);
try
vSigner.KeyProvider := aProvider;
vSigner.Profile.LoadProfile(spEmploymentDE);
Result := vSigner.SignXML(aXML);
finally
vSigner.Free;
end;
end;
// Caller picks the provider; signer doesn't care.
SignWithAnyProvider(vPFX, vXML);
SignWithAnyProvider(vAzure, vXML);
SignWithAnyProvider(vCSC, vXML);