Module de signature PDF
Installation
Ce composant s’appuie sur les bibliothèques de cryptographie Bouncy Castle. Celles-ci doivent être installées dans le JRE ($JAVA_HOME/jre/lib/ext/) et déclarées dans le fichier $JAVA_HOME/jre/lib/security/java.security en ajoutant une ligne :
security.provider.2=org.bouncycastle.jce.provider.BouncyCastleProvider
Libersign et extensions
Afin de pouvoir effectuer la signature qualifiée avec le certificat de l’utilisateur, il est impératif d’installer au préalable l’application Libersign, ainsi que l’extension appropriée au navigateur utilisé.
Application Libersign
Information
Sur Windows 10, l’application Libsergin est installée dans le répertoire “%LOCALAPPDATA%\Libersign“. Il contient un exécutable JRE ainsi que l’applet dans “%LOCALAPPDATA%\LiberSign\applet\SplittedSignatureApplet.jar“.
Signature simple – cachet serveur
Connecteur com.clog.workey.connectors.parapheur.SignaturePDF
Configuration du connecteur
Ce connecteur nécessite qu’un fichier keystore contenant la clé à utiliser soit présent sur le serveur. Plusieurs propriétés doivent être configurées:
com.clog.workey.connectors.parapheur.SignaturePDF.KEYSTORE_FILE: Emplacement du fichier keystore à utiliser (obligatoire)com.clog.workey.connectors.parapheur.SignaturePDF.ALIAS: Alias présent ans le keystore à utiliser pour la signature (obligatoire)com.clog.workey.connectors.parapheur.SignaturePDF.PASSWORD: Mot de passe de l’alias (obligatoire)com.clog.workey.connectors.parapheur.SignaturePDF.HASH_ALGORITHM: Algorithme de hash à utiliser (“SHA-1” par défaut)com.clog.workey.connectors.parapheur.SignaturePDF.KEYSTORE_TYPE: Type du keystore (“PKCS12” par défaut)com.clog.workey.connectors.parapheur.SignaturePDF.KEYSTORE_PROVIDER: Type du fournisseur de keystore
par exemple:
com.clog.workey.connectors.parapheur.SignaturePDF.KEYSTORE_FILE=/chemin/vers/un/fichier/test_store com.clog.workey.connectors.parapheur.SignaturePDF.ALIAS=Workey Parapheur com.clog.workey.connectors.parapheur.SignaturePDF.PASSWORD=XXXXXXXXXXXXX com.clog.workey.connectors.parapheur.SignaturePDF.HASH_ALGORITHM=SHA1 com.clog.workey.connectors.parapheur.SignaturePDF.KEYSTORE_TYPE=pkcs12 #com.clog.workey.connectors.parapheur.SignaturePDF.KEYSTORE_PROVIDER= com.clog.workey.connectors.parapheur.SignaturePDF.image=/chemin/vers/une/image.png
En entrée
- Le champ PJ contenant les PDF à signer
- Un objet JSON précisant les options de signature (toutes les propriétés sont optionnelles):
| Propriété | Description |
|---|---|
| name | Nom du signataire. |
| location | Endroit (ou nom du serveur) où s’effectue la signature. |
| reason | Objet de la signature. |
| tsa | URL vers un serveur TSA. |
| index | Si le PDF doit être signé par plusieurs personnes et que les signatures sont visibles, ce champ doit indiquer l’index de la signature en cours (démarre à 0). |
| invisible | Booléen indiquant si la signature doit être invisible. |
| box | Objet JSON décrivant le rectangle de signature visible |
| signaturePage | Entier indiquant le numéro de page de la signature (-1 pour la dernière page, 0 pour créer une nouvelle page à la fin du document). |
| templateString | Modèle du libellé de signature, les balises “{{DN}}” et “{{DATE}}” sont remplacés par l’identité du signataire et la date de signature, respectivement |
| dateFormat | Format de la date à utiliser pour le modèle ci-dessus |
Propriétés JSON de configuration de signature électronique
| Propriété | Description |
|---|---|
| columns | Nombre de colonnes de tampons de signature par page (par défaut: 3). |
| startX | Coordonnée horizontale de départ du premier rectangle (par défaut: 50). |
| startY | Coordonnée verticale de départ du premier rectangle (par défaut: 50). |
| width | Largeur du rectangle de signature (par défaut: 150). |
| widthMargin | Marge horizontale entre deux rectangles de signature (par défaut: 20). |
| height | Hauteur du rectangle de signature (par défaut: 50). |
| heightMargin | Marge verticale entre deux rectangles de signature (par défaut: 20). |
| backgroundColor | Code hexadécimal de la couleur de fond du rectangle de signature (par défaut: “#fafafa“). |
Propriétés JSON du rectangle de signature

Image de fond
Il est également possible de configurer une image à afficher comme fond du rectangle. Pour cela, il faut renseigner la propriété système suivante avec le chemin vers le fichier image à inclure: com.clog.workey.connectors.parapheur.SignaturePDF.image
Voici un exemple de champ de configuration de signature électronique :
{
"invisible": false,
"box": {
"columns": 2,
"width": 200,
"height": 75,
},
"signaturePage": -1,
"templateString": "Signed By: {{DN}}\nOn: {{DATE}}",
"dateFormat": "yyyy-MM-dd HH:mm:ss z"
}
En sortie
- (aucun) Le contenu des pièces-jointes signées est mis à jour
Signature qualifiée
La signature qualifiée dans le module de parapheur Workey se déroule en deux étapes : la préparation et la signature proprement dite. Cette séparation permet de signer les documents sans avoir à les transférer en intégralité sur le poste client.
Étape 1 – Préparation des fichiers PDF à signer
Le connecteur com.clog.workey.connectors.parapheur.PreparePDFSignature permet de préparer des fichiers PDF à être signés par signature qualifiée.
Attention
Il est important qu’une fois ce connecteur exécuté, les pièces-jointes concernées ne doivent pas être modifiées. Cela rendrait la future signature invalide.
En entrée
- Champ de type pièce-jointe. Peut être un champ multivalué.
- (optionnel) Configuration JSON de la signature, du même type que la signature qualifiée. Par exemple :
{
"name": "Jean Dupont",
"reason": "Signature contrat de travail",
"location": "Bayonne, France",
"tsa": "http://tsa-provider/rfc3161"
}
En sortie
- JSON contenant la liste des UUID et leur digest respectif. Par exemple :
[
{ "uuid": "uuid_1", "digest": "digest_1" },
{ "uuid": "uuid_2", "digest": "digest_2" },
...
]
Script formulaire
Dans la version actuelle du module de parapheur, il est nécessaire de configurer un fichier JavaScript spécifique à chaque formulaire devant recevoir une signature qualifiée.
Ce script doit être placé à l’endroit suivant: $TOMCAT_HOME/workey/custom-js/{NOM_DU_PROCESSUS}/{NOM_DU_DOCUMENT}/{NOM_DU_FORMULAIRE}/form.js
Dans les premières lignes, il faut modifier les deux variables suivantes pour qu’elle correspondent à
$Workey$digestField = 'JSON_Signature'; $Workey$libersignField = 'Libersign';
Étape 2 – Signature des fichiers PDF
Le connecteur com.clog.workey.connectors.parapheur.AddSignature permet d’insérer la signature effectuée par Libersign dans le document PDF préalablement préparé.
En entrée
- Champ JSON comportant les données de signature. C’est celui qui est en sortie de l’étape 1.
- (optionnel) Configuration JSON de la signature, du même type que la signature qualifiée.
En sortie
- (Aucun) Le contenu des pièces-jointes signées est mis à jour.