Intalio.Signing.SDK
2.0.0
dotnet add package Intalio.Signing.SDK --version 2.0.0
NuGet\Install-Package Intalio.Signing.SDK -Version 2.0.0
This command is intended to be used within the Package Manager Console in Visual Studio, as it uses the NuGet module's version of Install-Package.
<PackageReference Include="Intalio.Signing.SDK" Version="2.0.0" />
For projects that support PackageReference, copy this XML node into the project file to reference the package.
<PackageVersion Include="Intalio.Signing.SDK" Version="2.0.0" />
<PackageReference Include="Intalio.Signing.SDK" />
For projects that support Central Package Management (CPM), copy this XML node into the solution Directory.Packages.props file to version the package.
paket add Intalio.Signing.SDK --version 2.0.0
The NuGet Team does not provide support for this client. Please contact its maintainers for support.
#r "nuget: Intalio.Signing.SDK, 2.0.0"
#r directive can be used in F# Interactive and Polyglot Notebooks. Copy this into the interactive tool or source code of the script to reference the package.
#:package Intalio.Signing.SDK@2.0.0
#:package directive can be used in C# file-based apps starting in .NET 10 preview 4. Copy this into a .cs file before any lines of code to reference the package.
#addin nuget:?package=Intalio.Signing.SDK&version=2.0.0
#tool nuget:?package=Intalio.Signing.SDK&version=2.0.0
The NuGet Team does not provide support for this client. Please contact its maintainers for support.
Intalio.Signing.SDK
Official .NET SDK for document signing. Self-contained library - pass document bytes in, get signed bytes out. No external storage configuration required.
Installation
# Package Manager
Install-Package Intalio.Signing.SDK
# .NET CLI
dotnet add package Intalio.Signing.SDK
Quick Start (Zero Configuration)
// 1. Register the SDK (Program.cs)
builder.Services.AddIntalioSigning(builder.Configuration);
// 2. Inject and use
public class MyService(ISigningService signingService)
{
public async Task<byte[]> SignDocumentAsync(byte[] documentBytes)
{
// Create sign request - just pass the bytes!
var session = await signingService.CreateSignRequestAsync(new CreateSignRequest
{
TenantId = "my-tenant",
UserId = "user-123",
DocumentBytes = documentBytes, // Pass document bytes directly
FileName = "contract.pdf", // SDK detects PDF/DOCX from extension
Placements =
[
new PlacementInput { PageNumber = 1, X = 100, Y = 700, Width = 200, Height = 50 }
]
});
// Finalize and get signed bytes back
var result = await signingService.FinalizeSignRequestAsync(session.Id);
return result.SignedDocumentBytes!; // Your signed document!
}
}
That's it! No storage URLs, no external dependencies. The SDK handles everything internally.
Configuration Options
Minimal (In-Memory, No Persistence)
{
"Signer": {
"StorageMode": "InMemory",
"PersistToDatabase": false
},
"Database": {
"Provider": "InMemory"
}
}
With Database Persistence
{
"Signer": {
"StorageMode": "Database",
"PersistToDatabase": true,
"RetentionDays": 90,
"Providers": "Aspose"
},
"Database": {
"Provider": "SqlServer",
"ConnectionString": "Server=...;Database=SigningDB;..."
},
"Aspose": {
"LicensePath": "C:\\licenses\\Aspose.Total.lic"
}
}
Storage Modes
| Mode | Description | Use Case |
|---|---|---|
InMemory |
No persistence. Bytes in → Signed bytes out | Simple signing, stateless APIs |
Database |
Documents stored in DB | Multi-party workflows, audit trails |
External |
Use external storage provider | Large documents, existing infrastructure |
SigningOptions
builder.Services.AddIntalioSigning(builder.Configuration, options =>
{
options.StorageMode = StorageMode.InMemory; // InMemory | Database | External
options.PersistToDatabase = false; // Save to DB?
options.IncludeSignedBytesInResponse = true; // Return bytes in response?
options.MaxDocumentSizeBytes = 50 * 1024 * 1024; // 50MB limit
options.RetentionDays = 90; // For DB persistence
});
Features
- Self-Contained - Pass bytes in, get signed bytes out
- Zero Configuration - Works out of the box with InMemory mode
- PDF & DOCX Support - PAdES-LT signing standard
- Multiple Providers - Aspose (default), UAE Pass, DocuSign
- Multi-Party Signing - Sequential, Parallel, Quorum patterns
- Bulk Signing - Sign multiple documents in batch
- Flexible Storage - InMemory, Database, or External
- Full Audit Trail - When persistence is enabled
Multi-Party Signing
var session = await signingService.CreateSignRequestAsync(new CreateSignRequest
{
TenantId = "my-tenant",
UserId = "initiator",
DocumentBytes = documentBytes,
FileName = "contract.pdf",
Pattern = "Sequential", // Sequential | Parallel | Quorum
Signers =
[
new SignerInput { UserId = "manager", Role = "Approver" },
new SignerInput { UserId = "director", Role = "Signer" }
],
Placements =
[
new PlacementInput { PageNumber = 1, X = 100, Y = 600, SignerUserId = "manager" },
new PlacementInput { PageNumber = 1, X = 100, Y = 700, SignerUserId = "director" }
]
});
// Each signer completes their action
await signingService.CompleteSignerAsync(session.Id, signerId);
Bulk Signing
var job = await signingService.SubmitBulkSignAsync(new BulkSignRequest
{
TenantId = "my-tenant",
UserId = "user-123",
Documents =
[
new BulkDocumentInput { DocumentBytes = doc1Bytes, FileName = "doc1.pdf" },
new BulkDocumentInput { DocumentBytes = doc2Bytes, FileName = "doc2.pdf" }
],
Placements = [new PlacementInput { PageNumber = 1, X = 100, Y = 700 }]
});
// Check progress
var status = await signingService.GetBulkSignJobAsync(job.Id);
API Reference
| Method | Description |
|---|---|
CreateSignRequestAsync() |
Create a signing session |
FinalizeSignRequestAsync() |
Apply signature, get signed bytes |
GetSignRequestAsync() |
Get session status |
ListSignRequestsAsync() |
List sessions with pagination |
CancelSignRequestAsync() |
Cancel a session |
CompleteSignerAsync() |
Mark signer as complete |
RejectSignerAsync() |
Reject signing request |
SubmitBulkSignAsync() |
Batch sign multiple documents |
GetBulkSignJobAsync() |
Check bulk job status |
Advanced: Direct Database Access
For advanced scenarios, you can access Domain entities and Infrastructure services directly:
using Platform.Signer.Domain.Entities;
using Platform.Signer.Domain.Interfaces;
using Platform.Signer.Domain.Enums;
using Platform.Signer.Infrastructure.Persistence;
public class MyAdvancedService(
ISigningSessionRepository sessionRepository,
ICertificateRepository certificateRepository,
IUnitOfWork unitOfWork,
SigningDbContext dbContext) // Direct DbContext access!
{
public async Task CustomQueryAsync()
{
// Direct DbContext for custom queries
var sessions = await dbContext.SigningSessions
.Where(s => s.TenantId == "tenant-1" && s.Status == SigningStatus.Signed)
.Include(s => s.Signers)
.ToListAsync();
}
public async Task CustomInsertAsync()
{
// Direct entity creation
var session = SigningSession.Create(
tenantId: "tenant-1",
documentRef: "doc.pdf",
provider: SigningProvider.Aspose,
placements: new[] { new Placement(1, 100, 700, 200, 50) },
pattern: SigningPattern.Single);
await sessionRepository.AddAsync(session);
await unitOfWork.SaveChangesAsync();
}
}
Available Types
| Category | Types |
|---|---|
| Entities | SigningSession, SignerEntity, Certificate, SignatureTemplate, SignatureArtifact, BulkSignJob |
| Repositories | ISigningSessionRepository, ICertificateRepository, ISignatureTemplateRepository, etc. |
| Services | IUnitOfWork, IStorageClient, ISigningProviderFactory, IEventPublisher |
| DbContext | SigningDbContext (EF Core) |
Documentation
See full documentation for complete API reference.
License
MIT
| 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 was computed. 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. |
Compatible target framework(s)
Included target framework(s) (in package)
Learn more about Target Frameworks and .NET Standard.
-
net8.0
- Aspose.PDF (>= 24.1.0)
- Aspose.Words (>= 24.1.0)
- Confluent.Kafka (>= 2.0.2)
- DocumentFormat.OpenXml (>= 3.0.0)
- DocuSign.eSign.dll (>= 6.7.0)
- Microsoft.EntityFrameworkCore (>= 8.0.0)
- Microsoft.EntityFrameworkCore.InMemory (>= 8.0.0)
- Microsoft.EntityFrameworkCore.SqlServer (>= 8.0.0)
- Microsoft.Extensions.Configuration (>= 8.0.0)
- Microsoft.Extensions.Configuration.Abstractions (>= 8.0.0)
- Microsoft.Extensions.Configuration.Json (>= 8.0.0)
- Microsoft.Extensions.DependencyInjection (>= 8.0.1)
- Microsoft.Extensions.DependencyInjection.Abstractions (>= 8.0.0)
- Microsoft.Extensions.Http (>= 8.0.1)
- Microsoft.Extensions.Http.Resilience (>= 8.0.0)
- Microsoft.Extensions.Logging.Abstractions (>= 8.0.0)
- Npgsql.EntityFrameworkCore.PostgreSQL (>= 8.0.0)
NuGet packages
This package is not used by any NuGet packages.
GitHub repositories
This package is not used by any popular GitHub repositories.