#### Aperçu Pendant la traduction de libjourou du C++ vers Java, j'ai réalisé que j'avais besoin d'un ou de plusieurs fichiers ePub chiffrés pour mes tests. J'ai donc écrit EncryptEPub pour accomplir cette tâche. EncryptEPub.jar prend un fichier ePub non chiffré et le transforme en un fichier ePub chiffré. Il commence par créer une clé symétrique AES de 128 bits (16 octets). Ensuite, en utilisant soit un fichier "activation.xml" compatible avec libgourou, soit les données du registre Windows, il chiffre cette clé symétrique avec la clé publique provenant du certificat de licence X509 de l'utilisateur ("adept:licenseCertificate"). Il encode ensuite cette clé en base64 et, avec l'UUID de l'utilisateur et une UUID constante, il crée un document XML minimal "rights". Il lit ensuite l'entrée '.opf' du fichier ePub original, telle qu'enregistrée dans l'entrée ZIP "META-INF/container.xml", et analyse son nœud XML <spine>. Il parcourt ensuite l'intégralité du fichier ePub original, copiant les entrées du fichier d'origine vers un nouveau fichier d'archive ZIP de sortie. Il commence par extraire chaque entrée et la décompresse en utilisant la méthode 'Inflate'. Si l'entrée n'est pas référencée dans le nœud du fichier '.opf', il l'ajoute à la nouvelle archive en utilisant la méthode 'Deflate' (compression). Si elle est référencée, il la compresse en utilisant la méthode 'Deflate' sans l'ajouter, chiffre les données compressées avec la clé symétrique AES, puis ajoute les données chiffrées à la nouvelle archive ePub en utilisant la méthode 'Store' (sans compression). Pour chaque fichier chiffré, il crée également un élément dans un document XML d'encryption, référençant le nom de l'entrée et spécifiant l'algorithme de chiffrement (AES-128-CBC). #### Par example: ``  ``  ``   `urn:uuid:82919621-81bd-419a-880b-c52eabc22bf1</resource>`  ``  ``   ``  `` `` Enfin, les documents XML "rights" et "encryption" sont convertis en fichiers XML et ajoutés à l'ePub de sortie. Cette archive obtenue est le fichier ePub fortement chiffré, complet avec les métadonnées TPM nécessaire, le rendant prêt pour les tests. #### Format d'utilisation: > java -jar EncryptEPub.jar \[-hV\] \[--win\] \[-a=<nomFichierActivation>\] > \[-D=<dossierAdept>\] <fichierEPub> #### Options de Ligne de Commande > ##### "-h" ou "--help" > > Affiche l'aide du programme (instructions d'utilisation) puis se termine. > > ##### "-V" ou "--version" > > Affiche les informations de version puis se termine. > > ##### "<fichierEPub>" > > Le nom et le chemin du fichier ePub à traiter. S'il n'est pas spécifié, ou > s'il n'existe pas, le programme affichera un message d'erreur et se terminera. > > ##### "-a" ou "--activation-file" \[<nomFichierActivation>\] > > Spécifie le nom du fichier XML contenant l'UUID de l'utilisateur et son > certificat de clé publique, dans le même format que celui utilisé par le > fichier activation.xml de libgourou. Seuls les éléments <adept:user> et > <adept:privateLicenseKey> sont requis. Si ce paramètre n'est pas fourni, > le nom "activation.xml" sera utilisé par défaut. > > ##### "-D" ou "--adept-directory" \[<cheminDossier>\] > > Spécifie le répertoire qui contient le fichier d'activation. S'il n'est pas > spécifié, le répertoire de travail actuel sera utilisé. > > ##### "--win" > > Lit le certificat de licence et l'UUID de l'utilisateur directement du > Registre Windows au lieu d'utiliser le fichier d'activation. Si cette option > est spécifiée _et_ que le programme est exécuté sur Windows, il tentera de > lire l'UUID de l'utilisateur et le certificat de clé publique X509 à partir > des clés de Registre : > > HKEY_CURRENT_USER\Software\Adobe\Adept\Activation\0001\0000, et > HKEY_CURRENT_USER\Software\Adobe\Adept\Activation\0001\0002 > > Ces clés doivent exister si Adobe Digital Editions a été installé et activé > sur la même machine que celle où EncryptEPub est exécuté. > ##### Gestion des erreurs > > Si l'option "--win" est spécifiée, et que les clés de Registre ne peuvent > être trouvées, le programme affichera un message d'erreur et se terminera. > > Si l'option "--win" n'est pas spécifiée, et que le fichier d'activation ne > peut être trouvé, le programme affichera un message d'erreur et se > terminera.