eirwego / license-reader
Library to read Eirwego license
Requires
- php: ~7
- ext-openssl: *
- eirwego/license: ^0.1.0
- jms/serializer: ^3.0
Requires (Dev)
This package is auto-updated.
Last update: 2026-01-16 12:39:16 UTC
README
Bibliothèque PHP pour lire et valider des licences Eirwego chiffrées et signées numériquement.
Description
Cette bibliothèque permet de :
- Lire des fichiers de licence (
.lic) et leurs signatures (.sig) - Vérifier l'authenticité d'une licence via signature numérique
- Déchiffrer le contenu d'une licence protégée
- Désérialiser la licence en objet PHP
Installation
Via Composer
composer require eirwego/license-reader
Prérequis
- PHP 7.0 ou supérieur
- Extension OpenSSL activée
- Package
eirwego/license(définit la classeLicense)
Utilisation
Exemple basique
<?php
use Eirwego\License\Reader;
// 1. Créer une instance avec le nom de base des fichiers
$reader = new Reader('/path/to/license');
// 2. Vérifier la signature avec la clé publique
$publicKey = file_get_contents('/path/to/public_key.pem');
$reader->verify($publicKey);
// 3. Déchiffrer la licence avec la clé et l'IV
$key = 'your-encryption-key';
$iv = 'hexadecimal-initialization-vector';
$reader->unlock($key, $iv);
// 4. Récupérer l'objet License
$license = $reader->getLicense();
// Utiliser la licence
echo "Type: " . $license->type . "\n";
echo "Seats: " . $license->seats . "\n";
echo "URL: " . $license->url . "\n";
Workflow complet
Le processus de lecture d'une licence suit un workflow strict :
1. new Reader($basename)
└─> Lit les fichiers $basename.lic et $basename.sig
2. verify($publicKey)
└─> Vérifie la signature numérique de la licence
3. unlock($key, $iv)
└─> Déchiffre le contenu de la licence
4. getLicense()
└─> Retourne l'objet License désérialisé
Important : Les étapes doivent être exécutées dans cet ordre. Chaque étape valide l'état requis avant de continuer.
Gestion des erreurs
<?php
use Eirwego\License\Reader;
try {
$reader = new Reader('/path/to/license');
$reader->verify($publicKey);
$reader->unlock($key, $iv);
$license = $reader->getLicense();
} catch (Exception $e) {
// Gérer les erreurs :
// - Lecture des fichiers
// - Vérification de signature
// - Déchiffrement
// - Désérialisation
echo "Erreur: " . $e->getMessage() . "\n";
}
Structure de la licence
La classe License (définie dans le package eirwego/license) contient les propriétés suivantes :
seats(int) : Nombre de sièges/utilisateurs autoriséstype(string) : Type de licenceurl(string) : URL associée à la licence
Format des fichiers
Fichier de licence (.lic)
Le fichier .lic contient le contenu de la licence chiffré avec AES-128-CBC et encodé en base64.
Fichier de signature (.sig)
Le fichier .sig contient la signature numérique du contenu chiffré, générée avec une clé privée RSA.
Sécurité
- Chiffrement : AES-128-CBC
- Signature : RSA avec clé publique/privée
- Validation : La signature doit être vérifiée avant le déchiffrement
Dépendances
php:~7ext-openssl:*eirwego/license:^0.1.0jms/serializer:^3.0
Développement
Outils de développement
- PHP CS Fixer : Formatage du code
- PHPStan : Analyse statique du code
Installation des dépendances de développement
composer install --dev
Formatage du code
vendor/bin/php-cs-fixer fix
Analyse statique
vendor/bin/phpstan analyse
Structure du projet
license-reader.lib/
├── config/
│ └── serializer/
│ └── Eirwego.License.xml # Configuration de sérialisation JMS
├── src/
│ └── Reader.php # Classe principale
├── composer.json # Configuration Composer
├── .php_cs.dist # Configuration PHP CS Fixer
└── README.md # Ce fichier
Licence
Ce projet est sous licence BSD-2-Clause. Voir le fichier de licence dans le code source pour plus de détails.
Auteur
- Alexandre Lahure - alexandre@lahu.re
Support
Pour toute question ou problème, veuillez ouvrir une issue sur le dépôt du projet.