readium/architecture

Custom DRM implementation

paulocoutinhox opened this issue · 5 comments

Hi,

Today we use at our startup an ePub library that support default ePub DRM pattern specs. So, for all encrypted file, we receive the crypted data as byte array and return the byte array decrypted with our custom DRM solution.

How i can do the same using Readium2?

In my case i need know the encrypted data and a way to return the decrypted data using our function.

Can anyone help me?

Thanks.

Hi,
DRM solutions from Readium is the LCP Readium
https://www.edrlab.org/readium-lcp/

I am from Brazil and we are EDRLab partner to apply LCP DRM
We have a marketplace in develop
https://dualbooks.digital/

Using LCP DRM to distribute ebooks

We can talk about your needs

qnga commented

Hello,
You can use a custom DRM as described in the Content Protection proposal.

But, if i read correctly, it need a server like LCP, no?

In my DRM case, everything is local.

I don't find anything about how to implement without server/lcp.

Can you help me understand?

qnga commented

No, it has nothing to do with LCP.
You need to provide the Streamer with a specific implementation of the ContentProtection interface. In that implementation, you'll build a custom Fetcher which will be able to decrypt your data bytes.
You can look at the LCP implementation as a reference example:
https://github.com/readium/kotlin-toolkit/blob/main/readium/lcp/src/main/java/org/readium/r2/lcp/LcpContentProtection.kt
https://github.com/readium/kotlin-toolkit/blob/main/readium/lcp/src/main/java/org/readium/r2/lcp/LcpDecryptor.kt

Closing as there's nothing to do on architecture. Feel free to open discussions on the Kotlin or Swift repos if you have some questions related to the implementation.