Charta.Signing
1.8.0
dotnet add package Charta.Signing --version 1.8.0
NuGet\Install-Package Charta.Signing -Version 1.8.0
<PackageReference Include="Charta.Signing" Version="1.8.0" />
<PackageVersion Include="Charta.Signing" Version="1.8.0" />
<PackageReference Include="Charta.Signing" />
paket add Charta.Signing --version 1.8.0
#r "nuget: Charta.Signing, 1.8.0"
#:package Charta.Signing@1.8.0
#addin nuget:?package=Charta.Signing&version=1.8.0
#tool nuget:?package=Charta.Signing&version=1.8.0
Charta.Signing
PAdES digital signatures for Charta — sign generated PDFs with an X.509 certificate. Uses only the .NET cryptography stack: no BouncyCastle, no native dependencies.
Usage
using Charta;
using Charta.Signing;
using System.Security.Cryptography.X509Certificates;
var cert = X509CertificateLoader.LoadPkcs12FromFile("signer.pfx", "password");
var signer = PdfSigners.FromCertificate(cert);
Document.Create(doc => doc.Page(page => page.Content().Text("Signed with Charta")))
.GenerateSignedPdf("signed.pdf", signer, new SignatureInfo
{
Reason = "I approve this document",
Location = "Istanbul",
});
The result carries an invisible signature over the whole document (PAdES baseline B-B): a detached
CMS SignedData with a SHA-256 digest and the ESS signing-certificate-v2 attribute. Include the
issuing chain via the additionalCertificates argument so validators can verify it.
Trusted timestamps (PAdES B-T)
Pass an ITimestampAuthority to embed an RFC 3161 signature timestamp as an unsigned CMS attribute —
the signature becomes PAdES B-T, and the signing time is asserted by a trusted third party rather
than the signer:
var tsa = TimestampAuthorities.Http(new Uri("https://freetsa.org/tsr"));
var signer = PdfSigners.FromCertificate(cert, timestampAuthority: tsa);
TimestampAuthorities.Http posts to any RFC 3161 HTTP TSA (optionally with basic auth). To route
through an offline TSA, a queue, or a captured response, implement ITimestampAuthority yourself —
it takes a DER TimeStampReq and returns the DER TimeStampResp.
License
| Product | Versions Compatible and additional computed target framework versions. |
|---|---|
| .NET | net8.0 is compatible. net8.0-android was computed. net8.0-browser was computed. net8.0-ios was computed. net8.0-maccatalyst was computed. net8.0-macos was computed. net8.0-tvos was computed. net8.0-windows was computed. net9.0 was computed. net9.0-android was computed. net9.0-browser was computed. net9.0-ios was computed. net9.0-maccatalyst was computed. net9.0-macos was computed. net9.0-tvos was computed. net9.0-windows was computed. net10.0 is compatible. net10.0-android was computed. net10.0-browser was computed. net10.0-ios was computed. net10.0-maccatalyst was computed. net10.0-macos was computed. net10.0-tvos was computed. net10.0-windows was computed. |
-
net10.0
- Charta (>= 1.8.0)
- System.Security.Cryptography.Pkcs (>= 8.0.1)
-
net8.0
- Charta (>= 1.8.0)
- System.Security.Cryptography.Pkcs (>= 8.0.1)
NuGet packages
This package is not used by any NuGet packages.
GitHub repositories
This package is not used by any popular GitHub repositories.