PHPackages                             kukux/digital-signature - PHPackages - PHPackages  [Skip to content](#main-content)[PHPackages](/)[Directory](/)[Categories](/categories)[Trending](/trending)[Leaderboard](/leaderboard)[Changelog](/changelog)[Analyze](/analyze)[Collections](/collections)[Log in](/login)[Sign up](/register)

1. [Directory](/)
2. /
3. [PDF &amp; Document Generation](/categories/documents)
4. /
5. kukux/digital-signature

ActiveLibrary[PDF &amp; Document Generation](/categories/documents)

kukux/digital-signature
=======================

A Laravel Filament package for digital signature capture, certificate issuance, and PDF signing (v3 + v4 + v5 compatible).

v1.5.5(2w ago)060MITPHPPHP ^8.2

Since Apr 15Pushed 2w agoCompare

[ Source](https://github.com/cortejojicoy/digital-signature)[ Packagist](https://packagist.org/packages/kukux/digital-signature)[ RSS](/packages/kukux-digital-signature/feed)WikiDiscussions main Synced 1w ago

READMEChangelogDependencies (10)Versions (59)Used By (0)

Digital Signature for Filament
==============================

[](#digital-signature-for-filament)

[![Latest Version on Packagist](https://camo.githubusercontent.com/c7c30961ec5de08f40dd337c1e348b168134fbde32a38ef55b70352d094b2a54/68747470733a2f2f696d672e736869656c64732e696f2f7061636b61676973742f762f6b756b75782f6469676974616c2d7369676e61747572652e7376673f7374796c653d666c61742d737175617265)](https://packagist.org/packages/kukux/digital-signature)[![Total Downloads](https://camo.githubusercontent.com/40e7fc943cf50f99309d9b1e92198d0289ca8ec38f259f60d100d46a022b2cf5/68747470733a2f2f696d672e736869656c64732e696f2f7061636b61676973742f64742f6b756b75782f6469676974616c2d7369676e61747572652e7376673f7374796c653d666c61742d737175617265)](https://packagist.org/packages/kukux/digital-signature)[![License](https://camo.githubusercontent.com/f59d673cfebe7df079cee25759e7f5049489c1093bab21c55d2e0c89aba8f9bb/68747470733a2f2f696d672e736869656c64732e696f2f7061636b61676973742f6c2f6b756b75782f6469676974616c2d7369676e61747572652e7376673f7374796c653d666c61742d737175617265)](https://packagist.org/packages/kukux/digital-signature)

A Laravel Filament plugin for capturing signatures, issuing X.509 certificates, and embedding cryptographically signed stamps into PDF documents.

**Supports:** Filament v4 and v5 — Laravel 11 / 12 — PHP 8.2+

---

Documentation
-------------

[](#documentation)

DocDescription[Installation](docs/installation.md)Composer, migrations, plugin registration, admin resource[Configuration](docs/configuration.md)All config keys and env variables[Model Setup](docs/model-setup.md)Signable interface and HasSignatures trait[Filament Components](docs/filament-components.md)SignaturePad, SignatureColumn, SignatureResource, SignDocumentAction[Signing Workflow](docs/signing-workflow.md)Full lifecycle and SignatureManager API[Ad-hoc Signing](docs/ad-hoc-signing.md)Implement document signing outside a package resource[Certificates](docs/certificates.md)Certificate issuance, CA setup, CFSSL[Security](docs/security.md)HMAC metadata, machine binding, DB cross-validation, forgery detection---

Requirements
------------

[](#requirements)

- PHP 8.2+ with `ext-openssl` and `ext-gd`
- Laravel 11 or 12
- Filament 3, 4, or 5

---

Quick Install
-------------

[](#quick-install)

```
composer require kukux/digital-signature
php artisan vendor:publish --tag=signature-migrations
php artisan vendor:publish --tag=signature-config
php artisan migrate
php artisan filament:assets
```

`filament:assets` publishes the plugin's JS bundle (signature pad + picker) so it's reachable from the panel — re-run it after every `composer update` of this package.

Register the plugin in your panel provider:

```
// app/Providers/Filament/AdminPanelProvider.php
use Kukux\DigitalSignature\SignaturePlugin;

->plugins([
    SignaturePlugin::make()
        ->navigationGroup('Documents')   // optional
        ->navigationIcon('heroicon-o-pencil-square')  // optional
        ->navigationSort(10),             // optional
])
```

This registers:

- **Signatures** — a full admin resource for registering reusable signature images and viewing signature records
- **Sign Document** — header actions inside the Signatures resource for signing with a registered signature

---

Preparing a Signable Model
--------------------------

[](#preparing-a-signable-model)

Any model whose PDF can be signed must implement `Signable` and use `HasSignatures`.

```
use Kukux\DigitalSignature\Contracts\Signable;
use Kukux\DigitalSignature\Traits\HasSignatures;

class Contract extends Model implements Signable
{
    use HasSignatures;

    public function getSignableTitle(): string   { return $this->title; }
    public function getSignablePdfPath(): string { return $this->pdf_path; }
    public function getSignableId(): int|string  { return $this->id; }
}
```

---

Adding the Sign Action to Your Own Resource
-------------------------------------------

[](#adding-the-sign-action-to-your-own-resource)

First let the signer register a reusable signature from the built-in **Signatures** resource. Then add `SignDocumentAction` to any resource whose model implements `Signable`.

```
use Kukux\DigitalSignature\Filament\Actions\SignDocumentAction;
use Kukux\DigitalSignature\Filament\Columns\SignatureColumn;

class ContractResource extends Resource
{
    public static function table(Table $table): Table
    {
        return $table
            ->columns([
                TextColumn::make('title'),
                SignatureColumn::make('signature')->thumbSize(80, 32),
            ])
            ->actions([
                SignDocumentAction::make()
                    ->stampAt(page: 1, x: 100, y: 650, w: 200, h: 80),
            ]);
    }
}
```

For controller-driven or custom page flows, see [Ad-hoc Signing](docs/ad-hoc-signing.md).

---

Built-in Signatures Admin Resource
----------------------------------

[](#built-in-signatures-admin-resource)

When the plugin is registered, a **Signatures** resource appears in the sidebar automatically.

Register `SignaturePlugin::make()` on every Filament panel that should use the package. If a panel discovers or registers `SignatureResource` without the plugin, Filament can report `Plugin [signature] is not registered for panel [admin]`.

**List page** — table of all signature records with thumbnail, signer, status, and method.
**View page** — full infolist showing the large signature image, signer details, security metadata.

Both pages include a **Sign Document** header action.

Customize appearance:

```
SignaturePlugin::make()
    ->navigationGroup('Documents')
    ->navigationIcon('heroicon-o-pencil-square')
    ->navigationSort(10)
    ->navigationLabel('Document Signatures')

// Disable the resource entirely (bring your own):
SignaturePlugin::make()->withoutResource()
```

---

Security Highlights
-------------------

[](#security-highlights)

FeatureDefaultPKCS#7 cryptographic signature embedded in PDFAlways onDocMDP P=2 — post-signing modification detectionAlways onHMAC-signed PNG metadata (tEXt + XMP)Always onXMP metadata visible in macOS Preview &amp; Windows ExplorerAlways onSigner identity (name + email) embedded in PNGAlways onForgery / screenshot upload rejectionAlways onDocument integrity hashes (before + after)Always onMachine binding — DB cross-validation on re-uploadAlways onMachine lock — reject re-upload from different device`SIGNATURE_MACHINE_LOCK=true`CRL certificate revocation check`SIGNATURE_CRL_ENABLED=true`RFC 3161 trusted timestamp via TSA`SIGNATURE_TSA_URL=https://...`For full details see [docs/security.md](docs/security.md).

---

Queue
-----

[](#queue)

Signing runs asynchronously. Start a queue worker:

```
php artisan queue:work
```

To sign synchronously (no queue required):

```
SignDocumentAction::make()   // default is now synchronous
```

The action calls `embedAndFinalize()` directly unless you opt in to queued signing:

```
SignDocumentAction::make()->queued()
```

###  Health Score

47

—

FairBetter than 93% of packages

Maintenance96

Actively maintained with recent releases

Popularity12

Limited adoption so far

Community8

Small or concentrated contributor base

Maturity60

Established project with proven stability

 Bus Factor1

Top contributor holds 98.5% of commits — single point of failure

How is this calculated?**Maintenance (25%)** — Last commit recency, latest release date, and issue-to-star ratio. Uses a 2-year decay window.

**Popularity (30%)** — Total and monthly downloads, GitHub stars, and forks. Logarithmic scaling prevents top-heavy scores.

**Community (15%)** — Contributors, dependents, forks, watchers, and maintainers. Measures real ecosystem engagement.

**Maturity (30%)** — Project age, version count, PHP version support, and release stability.

###  Release Activity

Cadence

Every ~1 days

Total

58

Last Release

18d ago

### Community

Maintainers

![](https://avatars.githubusercontent.com/u/34363543?v=4)[cortejojicoy](/maintainers/cortejojicoy)[@cortejojicoy](https://github.com/cortejojicoy)

---

Top Contributors

[![cortejojicoy](https://avatars.githubusercontent.com/u/34363543?v=4)](https://github.com/cortejojicoy "cortejojicoy (129 commits)")[![Jicoy](https://avatars.githubusercontent.com/u/108109666?v=4)](https://github.com/Jicoy "Jicoy (2 commits)")

---

Tags

laravelpdffilamentdigital-signaturepadespkisignature-pad

###  Code Quality

TestsPest

Static AnalysisPHPStan

Code StyleLaravel Pint

Type Coverage Yes

### Embed Badge

![Health badge](/badges/kukux-digital-signature/health.svg)

```
[![Health](https://phpackages.com/badges/kukux-digital-signature/health.svg)](https://phpackages.com/packages/kukux-digital-signature)
```

###  Alternatives

[codewithdennis/larament

Larament is a time-saving starter kit to quickly launch Laravel 13.x projects. It includes FilamentPHP 5.x pre-installed and configured, along with additional tools and features to streamline your development workflow.

3861.7k](/packages/codewithdennis-larament)[ercogx/laravel-filament-starter-kit

This is a Filament v5 Starter Kit for Laravel 13, designed to accelerate the development of Filament-powered applications.

441.7k](/packages/ercogx-laravel-filament-starter-kit)

PHPackages © 2026

[Directory](/)[Categories](/categories)[Trending](/trending)[Changelog](/changelog)[Analyze](/analyze)
