Génération de licences
Création de licences associées à un produit, un client, un site, une machine et des périodes de validité définies.
Étude de cas · Licensing · Sécurité logicielle · WPF
Application Windows développée en C# / .NET 10 pour générer, administrer et signer cryptographiquement des licences logicielles à partir d’une interface WPF moderne.
Présentation
PB BZH License Generator WPF est une application Windows conçue pour générer et administrer les licences logicielles utilisées par plusieurs applications PB BZH Concept.
Le projet reprend le cœur métier d’un générateur de licences existant et le transpose dans une interface WPF moderne. Chaque licence peut regrouper les informations du produit, du client, du site, de la machine, les périodes de validité et de maintenance ainsi que les fonctionnalités autorisées.
Une attention particulière a également été portée à la séparation entre l’interface utilisateur, le moteur de licensing et les composants sensibles liés à la signature cryptographique et à la protection du code .NET.
Fonctionnalités
L’application centralise les informations nécessaires à la création des licences et les opérations associées à leur signature et à leur réutilisation.
Création de licences associées à un produit, un client, un site, une machine et des périodes de validité définies.
Signature numérique du contenu des licences afin de permettre aux applications clientes d’en vérifier l’authenticité.
Possibilité d’associer une licence à une empreinte machine pour limiter son utilisation à un poste déterminé.
Gestion indépendante de la durée de validité de la licence et de la période de maintenance, avec modes illimités.
Enregistrement et rechargement de profils pour préparer rapidement les licences destinées aux différents produits.
Chargement d’une clé privée au format PEM utilisée par le générateur pour produire les signatures cryptographiques.
Intégration dans la licence de la liste des fonctions ou modules que l’application cliente est autorisée à activer.
Interface WPF personnalisable avec deux apparences sélectionnables depuis le menu Options.
Chaîne de génération
La génération suit une chaîne simple et contrôlée : préparation des données, sérialisation, signature et production du fichier de licence.
Architecture
Le découpage du projet limite les dépendances entre l’interface WPF, les règles métier et les composants sensibles de signature.
Cryptographie
La licence contient des données structurées et une signature cryptographique permettant à l’application cliente de vérifier qu’elles n’ont pas été altérées.
Protection du logiciel
Le projet ne se limite pas à la génération des licences : un travail spécifique a été mené sur la protection des assemblies .NET distribués.
Limitation de l’exposition des classes et membres afin de ne publier que les éléments réellement nécessaires au fonctionnement.
Durcissement des bibliothèques Core et WPF afin de rendre l’analyse statique du code distribué plus difficile.
Vérification concrète du résultat par analyse du code décompilé, tout en préservant le fonctionnement XAML / BAML de WPF.
Personnalisation
Le thème peut être sélectionné depuis le menu Options afin d’adapter l’interface à l’environnement de travail et aux préférences de l’utilisateur.
Le mode sombre constitue l’apparence principale du produit, tandis que le thème clair conserve exactement les mêmes fonctions et la même organisation visuelle.
Technologies
Le projet associe développement WPF, cryptographie, sérialisation, gestion des clés et techniques de protection des assemblies .NET.
Résultat
PB BZH License Generator WPF constitue un point central pour préparer, signer et administrer les licences de plusieurs logiciels PB BZH Concept.
La séparation entre l’interface WPF, le moteur de licensing et la cryptographie permet de réutiliser la même logique dans différentes applications clientes. Le travail sur la signature RSA, la gestion des clés et le durcissement du code complète l’aspect fonctionnel par une démarche orientée sécurité et protection du logiciel.
Un besoin similaire ?
Je peux étudier l’architecture existante, les règles de licensing, la gestion des clés et les contraintes de déploiement afin de proposer une solution adaptée.