-
Notifications
You must be signed in to change notification settings - Fork 48
Vendor supplied Widevine CDM
Dag Wieers edited this page Oct 22, 2020
·
8 revisions
Status: draft
As some vendors want to supply their own Widevine CDM with their system, it is important to have support for this in InputStream Helper as well as other add-ons that want to implement this.
The below design is the result of a thought-process on the Add-ons internal Slack channel with a lot of stakeholders. An earlier discussion is found in issue #229.
- The vendor supplies a libwidevinecdm-vendor.so in the
DECRYPTERPATH
- InputStream Helper checks if this file exists, and if not already, links it as libwidevinecdm.so
- InputStream Helper will skip trying to update libwidevinecdm.so and provide no options related to this to the user
- InputStream Helper will indicate in the Information pane and in the settings that "Widevine CDM is supplied by the vendor"
- The vendor can move
DECRYPTERPATH
out of the Kodi home directory (special://home/cdm
) as long as it is writable - The vendor can make libwidevinecdm.so immutable (
chattr +i
) - The vendor can already supply its libwidevinecdm-vendor.so as libwidevinecdm.so so this setup works out-of-the-box by default
- Alternatively, moving the vendor-supplied libwidevinecdm.so to a read-only location would work
- But this requires a new location in Kodi or inputstream.adaptive to be used for this (needs upstream approval/work)
- Currently InputStream Helper cannot impose this on other add-ons (add-ons should be free to not require ISH)
- A read-only libwidevinecdm.so inside
DECRYPTERPATH
is not possible-
DECRYPTERPATH
needs to be writeable by inputstream.adaptive, so Kodi requires write access to this directory - As a result the Kodi user can remove this read-only library, so does not help
-
- Existing add-ons could replace libwidevinecdm.so that is why the vendor-supplied Widevine is named differently
- This does not protect libwidevinecdm.so fully, a user can still remove that file
- But it does protect us from incidental removal by other scripts/procedures, intentional or not
Feel free to add to or improve this Wiki space. Questions can be asked by opening an issue.