Trae tu propia clave — 10 proveedores
Todos los proveedores implementan la interfaz IsgcKeyProvider — el mismo código de firma funciona con archivos locales, tarjetas inteligentes, HSM, KMS en la nube o QTSP remotos. Cambia con una sola línea.
Todos los proveedores implementan la interfaz IsgcKeyProvider — el mismo código de firma funciona con archivos locales, tarjetas inteligentes, HSM, KMS en la nube o QTSP remotos. Cambia con una sola línea.
TsgcPFXKeyProviderArchivos PFX / PKCS#12. Clave local protegida por contraseña. Ideal para desarrollo, despliegues pequeños y cualquier flujo en el que el certificado se distribuye como un único archivo .pfx/.p12.
PKCS12_PREFER_CNG_KSP — la firma SHA-256/384/512 funciona sea cual sea el CSP original.
.pfx con varios certificados se recorren automáticamente hasta encontrar el que contiene la clave privada.
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;
TsgcPEMKeyProviderArchivos PEM. PKCS#8 cifrado con soporte nativo PBES2 / PBKDF2 / AES-CBC, además del formato heredado de clave privada RSA con DEK-Info. Ideal para pipelines basados en OpenSSL.
BEGIN CERTIFICATE, BEGIN RSA PRIVATE KEY, BEGIN PRIVATE KEY y BEGIN ENCRYPTED PRIVATE KEY.
PrivateKeyFile vacío.
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;
TsgcWindowsCertStoreProviderAlmacén de certificados de Windows. Almacenes de máquina local y de usuario actual. Ideal para apps de escritorio que usan certificados ya emitidos por AD o cualquier despliegue en el que Windows ya gestiona el ciclo de vida del certificado.
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 / tokens hardware. Tarjetas inteligentes, tokens USB, HSM — SafeNet, YubiKey, Nitrokey, Thales. Obligatorio para firmas electrónicas cualificadas en la mayoría de jurisdicciones de la UE.
CKM_RSA_PKCS y CKM_ECDSA_SHA256.
EnumerateSlots / EnumerateCertificates para elegir el slot adecuado en tiempo de ejecución.
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. El servicio cualificado de firma de código de Microsoft. Authenticode sin tener que comprar un certificado EV — Microsoft es propietario del certificado y aprovisiona la clave de firma por ti.
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. El servicio de custodia de claves de Amazon respaldado por HSM. Combínalo con un certificado emitido por AWS para firmar en la nube sin exponer la clave privada.
KeyId acepta ID de clave, ARN de clave o ARN de alias.
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. Mismo modelo operativo que AWS KMS. El archivo JSON de cuenta de servicio se autentica mediante intercambio JWT por un access token OAuth2 y luego firma a través de la API de Cloud KMS.
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. El motor de secretos Transit de Vault realiza la firma. Ideal para custodia de claves autoalojada y gobernada por políticas, cuando Vault ya forma parte de la pila.
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. QTSP polaco. Firmas electrónicas cualificadas mediante PIN autorizado por app móvil, sin necesidad de token USB. Elección habitual para los flujos polacos de KSeF y ZUS.
ListCertificates expone todos los certificados disponibles en la cuenta.
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. Interfaz genérica para cualquier QTSP que implemente CSC v2 — Universign, D-Trust sign-me, A-Trust, FNMT Cl@ve Firma, Evrotrust, Intesi Group. El proveedor guarda la clave cualificada en un QSCD remoto; sgcSign solo envía el hash del documento.
cscBasic, cscOAuth2 y cscOTP (contraseña de un solo uso para doble factor).
credentials/authorize + signatures/signHash según la spec CSC v2.
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;
Todos los proveedores implementan IsgcKeyProvider. El código del firmador nunca sabe si la clave vive en disco, en un token, en Azure o detrás de una API CSC v2.
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);