sgcSign release notes

Every public release of sgcSign, newest first. Each version lists what was added, what was fixed and anything that changes behaviour, exactly as it is written in the history file that ships with the product.

sgcSign product page · Download

sgcSign 2026.8.0 Latest

  • 2026.8.0: 2026 August
  • NewNew TsgcXMLDSigSigner component: signs XML with plain XML-DSig, no XAdES properties. One generic component driven entirely by configuration, so a signed SAML 2.0 assertion and a SOAP WS-Security message are two configurations of it rather than two different components.
  • NewSign any element by its ID attribute. The attribute name is configurable because it differs by standard: ID for SAML, wsu:Id for WS-Security, Id for XAdES. The signer can add it when the element does not have one.
  • NewSupport for the InclusiveNamespaces PrefixList of exclusive canonicalization, needed when a prefix appears only inside an attribute value such as xsi:type="xs:string". Without it the declaration is dropped and the digest changes, which is a common cause of a counterparty rejecting a signature.
  • NewSignature placement control: first or last child of any element, or immediately before or after a named sibling. SAML requires the signature between saml2:Issuer and saml2:Subject.
  • NewKeyInfo content is selectable: certificate, subject name, issuer and serial, RSA key value, or any combination.
  • NewTsgcDocumentSigner can produce plain XML-DSig, by setting Format to sfXMLDSig and configuring its XMLDSig property.
  • NewsgcSign Server: new /api/v1/sign/xmldsig endpoint with the same configuration as JSON, documented in the OpenAPI specification.
  • NewRSASSA-PSS signatures are now verified, covering the MGF1 forms and explicit PSS parameters. A variant that cannot be checked is reported as indeterminate with the reason. The German EU Trusted List now verifies.
  • NewDocuments carrying more than one signature are now fully verified, every signature checked.
  • Newsgcsign CLI: new WinHTTP transport, the default on Windows, which signs over HTTPS without any OpenSSL DLL. TLS 1.2 and 1.3 come from the operating system, trust comes from the Windows certificate store, and the system proxy settings are honoured. The new --transport option selects auto, winhttp or indy.
  • Newsgcsign CLI: new --openssl-api, --openssl-dir, --cacert and --tls-version options for the indy transport. --openssl-api defaults to auto, which probes OpenSSL 3.0, then 1.1, then 1.0, and uses the newest library that loads, so the client is no longer tied to OpenSSL 1.0.2. Each option also reads an environment variable: SGCSIGN_TRANSPORT, SGCSIGN_OPENSSL_API, SGCSIGN_OPENSSL_DIR, SGCSIGN_CACERT and SGCSIGN_TLS_VERSION.
  • NewsgcSign Server: new server.tls.provider setting, openssl or schannel. With schannel the HTTPS listener uses the Windows TLS stack and needs no OpenSSL DLL at all, taking either a PFX through cert_file and password, or a certificate already in the Windows store through cert_hash, cert_store_name and cert_store_path.
  • NewsgcSign Server: new server.tls.openssl_api setting, auto by default, which probes OpenSSL 3.0, then 1.1, then 1.0 and uses the newest library that loads. An explicit 1.0, 1.1 or 3.0 pins one generation. New server.tls.openssl_dir and server.tls.version_min settings, and the startup banner now reports the TLS provider and the API actually in use.
  • NewsgcSign Server: the TLS certificate password can be supplied through server.tls.password_env, which names an environment variable and takes precedence over the literal password key, matching how every other secret in the configuration file is handled.
  • FixedSecurity: a document with two or more signatures was reported as valid after checking only the first one. The enveloped-signature transform also removed the first signature in the document rather than the one being verified, and reused the first SignedInfo when checking any later signature.
  • FixedSecurity: a processing instruction whose target starts with "xml", such as the common xml-stylesheet, was discarded as if it were the XML declaration and left out of the digest, so it could be deleted or altered after signing while the signature still verified. Documents of that shape should be signed again.
  • FixedEU Trusted Lists and any document using xml:lang or another xml: attribute failed verification. The xml prefix is bound by the XML specification and never declared with xmlns, but was treated as undeclared, so canonicalization emitted a spurious xmlns:xml="" and sorted the attribute into the wrong group. Output now matches an independent implementation.
  • FixedSignature verification could be misled by a decoy. The signature was located with a plain text search, so something resembling a signature inside a comment, CDATA section, processing instruction or DOCTYPE internal subset could capture it, or capture a reference by its Id.
  • FixedCanonicalization emitted a line break for a comment before the root element even under a method that strips comments and produces no output for it, so signatures over such documents did not match what a conforming verifier computed.
  • FixedDocuments starting with a UTF-8 byte order mark failed to parse, so verification failed on signatures that were perfectly sound.
  • FixedSigning failed on a document with a comment, processing instruction or DOCTYPE before the root element, and a DOCTYPE with an internal subset failed to parse. With a signature parent element configured, a prolog comment containing text resembling a closing tag could place the signature inside that comment.
  • FixedSignatures referencing an element by its ID, and the SignedInfo element, are now canonicalized with the namespaces inherited from their ancestors, as the specification requires. Signatures made by earlier versions under an inclusive canonicalization profile are still accepted and reported as such, so they stay usable while telling you to sign again; the new TsgcSignatureVerifier.StrictCanonicalization property turns that acceptance off. The reference covering your document is always verified strictly.
  • FixedEU Trusted Lists were being damaged by our own downloader, which moved these signed documents as text and re-encoded them on the way to the cache, changing bytes and breaking the signature. They are now carried as bytes end to end, and a document that is not valid UTF-8 is reported as an error instead of being guessed. A list cached by an earlier version may already be damaged, so refresh the cache once after updating.
  • FixedDemos: a certificate provider could be released while an interface pointing at it was still alive, which could crash the demo. The Authenticode, ClickOnce, NuGet and VSIX demos leaked a provider on every signing operation, and EU_Employment reported its own containers as invalid by passing the whole signature file, envelope included, to the verifier.
  • FixedPFX certificates: fixed an error when signing on 64-bit Windows with a certificate that uses a modern CNG private key. Signing could fail with "NCryptSignHash failed: NTSTATUS=$200000000" even though the certificate and the password were correct. The signature was in fact created correctly, the problem was the check on the result, so nothing signed before the error appeared was affected. 32-bit applications were never affected.
  • Fixedsgcsign CLI: signing over HTTPS could fail with "server unreachable: server closed the connection without sending a response (server-side error)" when the fault was entirely on the client. Every OpenSSL failure, including being unable to load the library at all, was reported as a server error, which sent users looking at a server that was working correctly. Client side TLS failures are now reported as TLS errors, naming the libraries that were tried and the bitness of the process, and exit with the new code 7.
  • Fixedsgcsign CLI: the client could only load the OpenSSL 1.0 API, so it required libeay32.dll and ssleay32.dll and could not use OpenSSL 1.1 or 3.x. The server had the same restriction. Both now select the API generation, and both default to detecting the newest one available.
  • Fixedsgcsign CLI: the TLS connection offered SSL 2.0 and SSL 3.0 alongside the TLS versions. Only TLS 1.0 through 1.3 are offered now, and --tls-version raises the minimum.
  • FixedDocumentation: the technical guide stated that the server accepted the OpenSSL 1.1 and 3.x library names. That was never true, the server always loaded the OpenSSL 1.0 API. The guide now documents the TLS provider settings, the CLI TLS options and the full list of CLI exit codes.
  • FixedPAdES: signing never finished. It hung at 100% CPU on any PDF, because two loops that copy bytes out of the document never advanced their index and so kept reading the same byte. The first reads the document Catalog dictionary and runs on every signature, which is why no PDF could be signed. The second reads an object number and runs when the Catalog cannot be read from a classic trailer, as in PDFs that use a cross-reference stream, and on every visible signature to locate the page object; that one also grew a string on each pass, so it ended in an out of memory rather than only spinning. The .NET implementation was never affected, it uses counted loops in both places. Reported by a customer with a sample PDF, thank you.

sgcSign 2026.7.0

  • 2026.7.0: 2026 July
  • NewKSeF bulk client: a "save now, decrypt later" workflow. You can save a pack's encryption key and IV to a small JSON file, save the downloaded encrypted parts as one .zip.aes file, and later decrypt and unzip that saved file using the JSON key, all without a live order or bearer token.
  • NewKSeF bulk demo: new "Save Pack + Keys" button (writes the .zip.aes plus a .keys.json) and a "Decrypt Saved Pack..." button that picks the .aes, finds its matching .json automatically, then decrypts and extracts it.
  • NewCertificate decoder (X.509): now exposes the full set of fields you would see in an online certificate decoder, including key size, friendly public-key and signature algorithm names, the serial number in colon and decimal forms, certificate policies, subject and authority key identifiers, the issuer name sub-fields, MD5/SHA-1/SHA-256 thumbprints, and the SubjectPublicKeyInfo (SPKI) SHA-256 pin. A new helper turns common OIDs into readable names.
  • NewNew CertificateInfo demo: loads a certificate from PEM, Base64, DER or a file and shows every field grouped like a certificate decoder, then runs an OCSP revocation check that finds the responder URL from the certificate itself.
  • NewCertificate issuer checking with real cryptographic verification: new methods confirm a certificate was actually signed by a candidate issuer (RSA and ECDSA) and match the issuer name and key identifiers. The CA-issuer and OCSP URLs are now available separately, and the CertificateInfo demo can verify the issuer and auto-load the issuing CA before the OCSP check.
  • NewCertificate names in LDAP form: new properties show the Subject and Issuer names in RFC 2253 / RFC 4514 (LDAP) style (CN first, comma-separated), alongside the existing X.500 order, so it is easy to compare a certificate name against tools and XML that use the LDAP string form.
  • NewPKCS#12 (.p12 / .pfx) support: the certificate class can now load a certificate straight from a password-protected .p12 or .pfx file, and save a certificate to a password-protected .p12. If the file contains several certificates, the main certificate is loaded and the remaining CA certificates are available separately. The PFX and PEM key providers can now also save the certificate together with its private key to a password-protected .p12, which means a PEM certificate and key can be converted into a .pfx.
  • NewXAdES B-LT and B-LTA signature levels: the signer can now embed the full validation material (all certificates plus the timestamp authority's chain) and revocation data (CRLs and OCSP responses), and B-LTA adds an archive timestamp for long-term validity. New properties for the OCSP client, extra certificates and CRL files on both signers; the EU qualified profile now produces genuine XAdES-B-LTA, and outputs validate as BASELINE-T/-LT/-LTA on the EU DSS validator. The XAdES demo gained B-LT and B-LTA variants.
  • NewTicketBAI per-province profiles for Araba, Bizkaia and Gipuzkoa, each with its tax authority's official signature policy (Gipuzkoa policy v1.2). The original combined profile keeps the Bizkaia values for backward compatibility. Bizkaia signatures were validated end to end against the official Batuz/LROE test environment (accepted as "Correcto", with a tampered signature correctly rejected). The TicketBAI demo gained a province selector.
  • NewPortugal SAF-T (Portaria 363/2010) invoice signing: a new signer produces the required RSA-SHA1 signature over the invoice fields, exposes the four printable characters carried on the invoice and in the QR code, and was verified against the official worked example. The SAF-T PT demo gained a signing panel.
  • FixedZIP extraction now does a proper raw inflate on XE2 and later, instead of wrapping the data in a fake zlib stream with a placeholder checksum that newer zlib rejected with "data error". This affects every ZIP extraction path (ASiC, KSeF bulk export); the older D7..DXE path is unchanged.
  • FixedKSeF bulk client: HTTP errors now include the server's response text (shown as "HTTP - <body>", trimmed), so a 400 or 403 shows the KSeF explanation instead of just the status code.
  • FixedKSeF bulk client: the bearer token is no longer attached when downloading pre-signed part URLs. KSeF serves the parts from Azure storage authenticated by the query-string signature, so sending the Authorization header made Azure reject the download with 403. The token is now dropped whenever the part URL has a query string.
  • FixedKSeF bulk client: responses are now read as UTF-8, so Polish characters in status messages display correctly instead of garbled text.
  • FixedKSeF bulk demo: a not-yet-downloaded part now shows "Ready" once the export is complete, instead of the confusing "Pending".
  • FixedKSeF bulk demo: on an HTTP error the log now shows the status line, all response headers and the body, so even body-less gateway rejections (401/403) show a reason and validation errors (400) show their message.
  • FixedKSeF bulk demo: when an export finishes with no parts, the log now explains that no invoices matched the chosen date range, subject type or date type, instead of a later bare "No parts to download".
  • FixedKSeF bulk demo: the date range now defaults to the current month on startup, which stays within the KSeF 3-month export limit, instead of a fixed past month.
  • FixedVeriFactu profile: corrected the signature policy. It referenced the Facturae policy with a SHA-1-length digest labelled as SHA-256, which strict validators reject; it now uses the Spanish AGE policy with its official SHA-1 digest and inclusive canonicalization, per Orden HAC/1177/2024.
  • FixedTicketBAI profile: fixed a malformed policy URL and a corrupted policy digest; it now carries the official Bizkaia v1.0 policy identifier and SHA-256 digest.
  • FixedFatturaPA profile: removed the signature policy reference. Italy's SDI accepts plain CAdES-BES or XAdES-BES signatures with no policy, so the profile now emits pure XAdES-BES.
  • FixedFiskalizacija profile: updated to Fiskalizacija 2.0 (the eRacun channel, in force since January 2026): RSA-SHA256 with exclusive canonicalization. The old cash-register channel used RSA-SHA1 with the ZKI code and is a separate mechanism.
  • FixedSignature profiles now have a single source of truth: one configuration holds every profile's values and both the signer and the server admin dashboard read from it, so they can no longer drift apart.
  • FixedEnveloping XAdES signatures are now verifiable by outside validators. The embedded object's digest is now computed over the canonicalized element with an explicit transform declared (instead of over raw bytes), and the reference now carries the matching Id, so it no longer dangles.
  • FixedThe XAdES signature-timestamp imprint is now spec-correct at every level: the hash is taken over the canonicalized signature-value element (with the canonicalization method declared) instead of the raw Base64 text, so timestamps pass strict verification such as the EU DSS.
  • BreakingSigning at the B-LT or B-LTA level now raises a clear error when no timestamp authority is set, or no revocation source (OCSP client or CRL files) is available, instead of quietly producing a lower level. This affects the EU qualified profile and the B-LT employment profiles (DE/IT/AT/BE/PT); the EU_Employment demo and console generator ship wired with a TSA and the new test CA material.

sgcSign 2026.6.0

  • 2026.6.0: 2026 June
  • NewNew sgcSign Server: self-hosted REST signing server (TsgcSignServer) that signs executables and documents remotely over a TLS HTTP API. Signs Authenticode PE files (exe/dll/sys/msi/cab/ocx, optional dual SHA-1 + SHA-256), PDF (PAdES), XML (XAdES, with country e-invoicing profiles), CAdES (detached PKCS#7), ClickOnce manifests, NuGet packages, VSIX extensions and PowerShell scripts, all with optional RFC 3161 timestamping, plus a signature verify endpoint.
  • NewsgcSign Server: pluggable key providers selected per request: Windows Certificate Store, PFX, PEM, PKCS#11 / HSM (YubiKey), AWS KMS, Azure Trusted Signing, Google Cloud KMS, HashiCorp Vault and Certum SimplySign; passwords, PINs and cloud secrets are read from environment variables instead of the config file.
  • NewsgcSign Server: browser admin console (dashboard, API keys, providers, users, projects, audit), API-key authentication with per-key rate limits and daily quotas, multi-tenant projects, optional sign-approval workflow, tamper-evident hash-chained audit log, Prometheus metrics, outbound webhooks and an OpenAPI 3.1 document with built-in Swagger UI.
  • NewsgcSign Server: runs as a Windows service or console application, configured by a single JSON file (sgcSignServer.conf.json) with a built-in firewall (IP allow/deny, brute-force and rate limiting), TLS with optional ACME / Let's Encrypt challenge serving, and SQLite storage. New command-line client "sgcsign" (sign, verify, keys, health) talks to the server with --server / --apikey and supports Authenticode pre-hash (--prehash), so CI agents upload a hash instead of the whole binary.
  • NewTsgcKSeFBulkClient: bulk-invoice-export pipeline (sgcSign_KSeF_Bulk), 4-step async-init
  • NewNew demo KSeFBulk: standalone VCL, all design-time controls
  • NewTsgcPAdESSigner.VisibleSignature: on-page visible signature appearance (Form XObject renders signer name, reason, location and signing date), wires the widget /AP /N and the page /Annots; active when VisibleSignature.Enabled is True
  • FixedTsgcKSeFCrypto.RSAOAEPEncryptWithCert: non-RSA cert early rejection w/ clear OID error
  • FixedTsgcPAdESSigner: signed PDFs are now linked into the document AcroForm (Catalog /Fields + /SigFlags 3) so Adobe Acrobat and other viewers detect the signature. Previous versions wrote a cryptographically valid signature that no viewer displayed, because the incremental update never re-emitted the /Root catalog with an /AcroForm. The signer now parses the real /Root, merges or creates the AcroForm, wires the signature field, and builds a multi-subsection xref.

sgcSign 2026.5.0

  • 2026.5.0: 2026 May
  • NewTsgcAuthenticodeSigner: Microsoft Authenticode signer for Windows PE files (.exe, .dll, .sys) with SHA-1/256/384/512, RFC3161 timestamps and nested signatures.
  • NewTsgcAuthenticodeVerifier: Authenticode signature verification for Windows PE files.
  • NewTsgcCMSBuilder: shared CMS/PKCS#7 builder used by CAdES, PAdES and Authenticode signers.
  • NeweIDAS / EU compliance pack: new sgcSign_ASiC (ASiC-S/E containers per ETSI EN 319 162-1), sgcSign_TrustList (LOTL/EUTL fetch + cache + IsQualifiedAtTime, ~3600 services across 31 MS), sgcSign_KeyProvider_CSC (Cloud Signature Consortium v2 client for remote QTSPs); 9 country employment profiles spEmploymentDE/IT/ES/FR/PL/AT/BE/PT/NL pre-tuned per member-state labour law.
  • NewNew demo EU_Employment showing the new features.
  • NewsgcSign Server: self-hosted remote code-signing daemon (sgcSignServer.exe, console + Windows service) exposing the full signing engine over a REST API and a Bootstrap web admin console; FireDAC/SQLite storage, PBKDF2-SHA256 admin passwords and API-key auth, SHA-256 hash-chained audit log, thread-safe per-provider sign dispatcher and 9 supported provider kinds (WinCertStore, PFX, PEM, PKCS#11, AWS KMS, Azure Trusted Signing, Google Cloud KMS, HashiCorp Vault, Certum); requires Delphi 10 Seattle or newer.
  • Newsgcsign command-line client and esegece.sgcSign.Client .NET SDK (netstandard2.0 / net6.0 / net8.0 / net9.0), plus esegece.sgcsign .NET global tool, with sign / verify / keys / health verbs and a shared exit-code contract.
  • NewHash-only Authenticode signing: new POST /api/v1/sign/authenticode/hash endpoint accepts a precomputed PE hash and returns the unattached PKCS#7 SignedData blob for local embedding by the client; sgcsign sign --prehash (Delphi CLI) and TsgcSignClient.SignAuthenticodeHashAsync (.NET SDK) round-trip a 32-byte hash instead of the full binary, dropping multi-megabyte uploads to a few KB on bandwidth-constrained CI agents.
  • NewTsgcClickOnceSigner: ClickOnce / VSTO manifest signer (.application / .exe.manifest) using enveloped W3C XML-DSig per Microsoft mage.exe spec.
  • NewTsgcNuGetSigner: NuGet author package signer (.nupkg) producing PKCS#7 SignedData with optional RFC3161 timestamp.
  • NewTsgcVSIXSigner: VSIX (Open Packaging Convention) digital signature signer with per-part XML-DSig references.
  • NewCI/CD integrations: GitHub Actions composite Action, Azure DevOps native task, Jenkins pipeline DSL, Windows Server Core Dockerfile + docker-compose, Helm chart.
  • NewsgcSign_QRCode unit: pure-Pascal QR Code generator per ISO/IEC 18004, byte mode, all four ECC levels, versions 1-40, GF(256) Reed-Solomon, full mask-penalty scoring, TBitmap renderer; published GenerateQRCode + RenderQRMatrix + GetAlignmentPositions.
  • NewKSeF demo: Online vs Offline mode tabs.
  • NewTsgcPEMKeyProvider: ECDSA P-256/P-384/P-521 support via BCrypt CNG (BCryptImportKeyPair with ECCPRIVATEBLOB, raw r||s SignData output for XML-DSig); new SignDataPSS method (BCryptSignHash + BCRYPT_PAD_PSS, SHA-256, salt=32) for RSA-PSS signatures.
  • NewTsgcSignatureVerifier: ECDSA signature verification (ImportECDSAPublicKey from BCRYPT_ECCPUBLIC_BLOB + VerifyECDSASignature) for curves P-256/P-384/P-521 in both VerifySignatureValue (XAdES) and VerifyData code paths.
  • NewTsgcX509Certificate: KeyUsage extension parsed and exposed via KeyUsage property + HasKeyUsageDigitalSignature / HasKeyUsageNonRepudiation helpers; new PublicKeyParameters property exposes the raw AlgorithmIdentifier parameters TLV (named-curve OID for EC certs, used by the verifier to import EC public keys).
  • NewTsgcProfilePeppolBG: new Bulgarian Peppol BIS Billing 3.0 signature profile (XAdES B-T, SHA-256, exclusive C14N, timestamp on); spPeppolBG enum value, server admin profiles grid entry "Peppol BG / Bulgaria", Server REST string mapping peppolbg / peppol_bg, Delphi and C++Builder demos signing a Bulgarian UBL 2.1 Invoice (BGN, 20% VAT, BG VAT/EIK, BG IBAN, schemeID 9926 endpoint).
  • FixedTsgcPEMKeyProvider hardened end-to-end: Unicode ReadFileContent fix, two-step PKCS#8 decode, AT_KEYEXCHANGE keyspec, GUID-suffixed CSP container, native encrypted PKCS#8 (PBES2/PBKDF2/AES-CBC) via BCrypt, LoadCertificateOnly + EC marker recognition.
  • FixedTsgcXAdESSigner KSeF/ETSI conformance: V1 SigningCertificate wrapper, conditional SignaturePolicyIdentifier emission, decimal X509SerialNumber, SignedProperties built once (clock-race fix), explicit exc-c14n Transforms on SignedProperties Reference, new SignatureParentElement property; TsgcSignatureVerifier now resolves URI=#<Id> by element-Id lookup.
  • FixedTsgcPFXKeyProvider supports modern P12s: PKCS12_PREFER_CNG_KSP + multi-cert iterate-and-probe + two-stage acquire (ONLY_NCRYPT then PREFER_NCRYPT), CNG signing via NCryptSignHash. Design-time component linkage gains Notification(opRemove) auto-clear across all 9 signer/verifier components. KSeF demo migrated to FA(3) and PEM provider.
  • FixedTsgcX509Certificate ParseExtensions: the X.509v3 [3] EXPLICIT Extensions tag content was being double-wrapped before parsing, causing KeyUsage, ExtendedKeyUsage, AIA, CDP, SubjectAltName and BasicConstraints to be silently skipped on every certificate.
  • FixedBuild hygiene: W1000 (UTF8Decode deprecated) in sgcSign_ASiC fixed via {$IFDEF UNICODE} UTF8ToString fallback; H2077 (vTailLen unused) in sgcSign_XAdES; H2219 dead-code symbols BuildQualifyingProperties (sgcSign_XAdES) and ExtractAttribute (sgcSign_TrustList) removed.
  • FixedTsgcSignatureVerifier: ExtractFullElement now handles XML self-closing tags (<ds:DigestMethod Algorithm=".../sha1"/> etc.). Previous versions returned an empty string, causing URIToHashAlgorithm to default to SHA-256; FacturaeB2B (SHA-1) verification then reported "Digest length mismatch for Reference 0".
  • FixedTsgcSignatureVerifier: applies implicit Inclusive C14N to fragment / empty-URI references that omit an explicit C14N transform, per XML-DSig section 4.3.3.2. Fixes "Digest value mismatch" on the KeyInfo and body references in inclusive-C14N profiles (FacturaeB2B).
  • NewTsgcDocumentSigner: high-level facade now properly produces XAdES for AdES profiles. Internally delegates to TsgcXAdESSigner for the sfXAdES path; raises a clear error for sfPAdES/sfCAdES (use TsgcPAdESSigner / TsgcCAdESSigner). Added published Format: TsgcSignatureFormat property (default sfXAdES). Previous versions emitted plain XML-DSig regardless of profile, which national e-invoicing services rejected.
  • NewTsgcPFXKeyProvider: new published HashAlgorithm property (default haSHA256). TsgcXAdESSigner now pushes the active profile's hash into PFX providers, so FacturaeB2B-signed PFX-backed invoices are RSA-SHA1 as the profile requires; previous versions hardcoded SHA-256 in the PFX path and FACe rejected with INVALID_INVOICE-122 "los datos de la firma no son correctos".
  • NewWideString overloads on the public signing/verification API: TsgcXAdESSigner.SignXML/SignXMLDetached/SignXMLEnveloping, TsgcDocumentSigner.SignXML/SignXMLDetached/SignXMLEnveloping, TsgcSignatureVerifier.Verify. Lossless Unicode in/out on Delphi 7 (no ACP step); equivalent to the string overloads on Delphi 2009+. Recommended for callers passing non-ACP text such as Polish characters.

sgcSign 2026.4.0

  • 2026.4.0: 2026 April
  • NewTsgcDocumentSigner: high-level document signing component supporting XAdES, CAdES and PAdES formats.
  • NewTsgcXAdESSigner: XAdES XML Advanced Electronic Signature implementation.
  • NewTsgcCAdESSigner: CAdES CMS Advanced Electronic Signature implementation.
  • NewTsgcPAdESSigner: PAdES PDF Advanced Electronic Signature implementation.
  • NewTsgcSignatureVerifier: signature verification component.
  • NewTsgcXMLDSigEngine: XML Digital Signature engine.
  • NewTsgcC14NEngine: XML Canonicalization engine.
  • NewTsgcHashProvider: hash computation component.
  • NewTsgcTSAClient: Timestamp Authority client.
  • NewTsgcOCSPClient: OCSP certificate status verification client.
  • NewTsgcCRLCache: Certificate Revocation List cache.
  • NewTsgcX509Certificate: X.509 certificate handling.
  • NewTsgcASN1Parser: ASN.1 structure parser.
  • NewTsgcWindowsCertStoreProvider: Windows Certificate Store key provider.
  • NewTsgcPFXKeyProvider: PFX/PKCS#12 file key provider.
  • NewTsgcPEMKeyProvider: PEM file key provider.
  • NewTsgcPKCS11Provider: PKCS#11 hardware token key provider.
  • NewTsgcAWSKMSKeyProvider: AWS Key Management Service key provider.
  • NewTsgcAzureTrustedSigningProvider: Azure Trusted Signing key provider.
  • NewTsgcGCloudKMSKeyProvider: Google Cloud KMS key provider.
  • NewTsgcCertumSimplySignProvider: Certum SimplySign key provider.
  • NewTsgcHashiCorpVaultKeyProvider: HashiCorp Vault key provider.
  • NewTsgcProfileVeriFactu: Spanish VeriFactu e-invoicing profile.
  • NewTsgcProfileTicketBAI: Basque Country TicketBAI e-invoicing profile.
  • NewTsgcProfileFacturaeB2B: Spanish FacturaE B2B profile.
  • NewTsgcProfileEIDAS: eIDAS qualified electronic signature profile.
  • NewTsgcProfileFatturaPA: Italian FatturaPA e-invoicing profile.
  • NewTsgcProfileSAFTPT: Portuguese SAF-T e-invoicing profile.
  • NewTsgcProfileKSeF: Polish KSeF e-invoicing profile.
  • NewTsgcProfileFacturX: French Factur-X e-invoicing profile.
  • NewTsgcProfileEFactura: Romanian eFactura e-invoicing profile.
  • NewTsgcProfileNAVOnline: Hungarian NAV Online e-invoicing profile.
  • NewTsgcProfileFiskalizacija: Croatian Fiskalizacija e-invoicing profile.
  • NewTsgcProfilePeppolBE: Belgian Peppol e-invoicing profile.
  • NewTsgcProfileMyDATA: Greek myDATA e-invoicing profile.

Get the current release

Every licence includes a year of updates, and the trial is the full product.