Go to file
2021-07-29 21:14:48 +02:00
include Force ACSM files to be parsed using UTF8 locale 2021-07-17 09:34:03 +02:00
scripts ACSM data mut be unescaped before parsing 2021-07-16 20:38:32 +02:00
src Force ACSM files to be parsed using UTF8 locale 2021-07-17 09:34:03 +02:00
utils Fix bad utils return value on error. Build network errors with a message and not just an error code. 2021-07-29 21:14:48 +02:00
.gitignore Initial commit 2021-07-03 21:57:53 +02:00
LICENSE Initial commit 2021-07-03 21:57:53 +02:00
Makefile Add STATIC_UTILS option to Makefile 2021-07-05 20:23:25 +02:00
README_package.md Update README.md 2021-07-12 21:26:53 +02:00
README.md Update README.md 2021-07-12 21:26:53 +02:00

Introduction

libgourou is a free implementation of Adobe's ADEPT protocol used to add DRM on ePub files. It overcome the lacks of Adobe support for Linux platforms.

Architecture

Like RMSDK, libgourou has a client/server scheme. All platform specific functions (crypto, network...) has to be implemented in a client class (that derives from DRMProcessorClient) while server implements ADEPT protocol. A reference implementation using Qt, OpenSSL and libzip is provided (in utils directory).

Main fucntions to use from gourou::DRMProcessor are :

  • Get an ePub from an ACSM file : fulfill() and download()
  • Create a new device : createDRMProcessor()
  • Register a new device : signIn() and activateDevice()

You can import configuration from (at least) :

  • Kobo device : .adept/device.xml, .adept/devicesalt and .adept/activation.xml
  • Bookeen device : .adobe-digital-editions/device.xml, root/devkey.bin and .adobe-digital-editions/activation.xml

Or create a new one. Be careful : there is a limited number of devices that can be created bye one account.

ePub are encrypted using a shared key : one account / multiple devices, so you can create and register a device into your computer and read downloaded (and encrypted) ePub file with your eReader configured using the same AdobeID account.

Dependencies

For libgourou :

  • None

For utils :

  • QT5Core
  • QT5Network
  • OpenSSL
  • libzip

Compilation

Use make command

make [CROSS=XXX] [DEBUG=1] [STATIC_UTILS=1]

CROSS can define a cross compiler prefix (ie arm-linux-gnueabihf-)

DEBUG can be set to compile in DEBUG mode

STATIC_UTILS to build utils with static library (libgourou.a) instead of default dynamic one (libgourou.so)

Utils

You can import configuration from your eReader or create a new one with utils/activate :

export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$PWD
./utils/activate -u <AdobeID USERNAME>

Then a ./.adept directory is created with all configuration file

To download an ePub :

export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$PWD
./utils/acsmdownloader -f <ACSM_FILE>

Grégory Soutadé

License

libgourou : LGPL v3 or later

utils : BSD

Special thanks

  • Jens for all test samples and utils testing