eirwego/license-reader

Library to read Eirwego license

Installs: 6

Dependents: 0

Suggesters: 0

Security: 0

pkg:composer/eirwego/license-reader

v0.1.1 2020-11-11 22:48 UTC

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 classe License)

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és
  • type (string) : Type de licence
  • url (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: ~7
  • ext-openssl: *
  • eirwego/license: ^0.1.0
  • jms/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.