Files
jgourou/src/EncryptEPub-fr.md

101 lines
4.7 KiB
Markdown
Raw Normal View History

#### 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 <spine> 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 <EncryptedData> 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:
`<EncryptedData xmlns="http://www.w3.org/2001/04/xmlenc#">`
&emsp;`<EncryptionMethod Algorithm="http://www.w3.org/2001/04/xmlenc#aes128-cbc"/>`
&emsp;`<KeyInfo xmlns="http://www.w3.org/2000/09/xmldsig#">`
&emsp;&emsp;`<resource xmlns="http://ns.adobe.com/adept">urn:uuid:82919621-81bd-419a-880b-c52eabc22bf1&lt;/resource>`
&emsp;`</KeyInfo>`
&emsp;`<CipherData>`
&emsp;&emsp;`<CipherReference URI="toc.html"/>`
&emsp;`</CipherData>`
`</EncryptedData>`
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=&lt;nomFichierActivation>\]
> \[-D=&lt;dossierAdept>\] &lt;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.
>
> ##### "&lt;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" \[&lt;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 &lt;adept:user> et
> &lt;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" \[&lt;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.