Deployed 7f91a1d3 with MkDocs version: 1.6.1

This commit is contained in:
2026-11-13 01:03:41 +00:00
parent 21911bd28f
commit 4496eab53b
6 changed files with 55 additions and 70 deletions
+1
View File
@@ -2396,6 +2396,7 @@
</div>
<h2 id="how-lookups-and-caching-work">How lookups and caching work<a class="headerlink" href="#how-lookups-and-caching-work" title="Permanent link">&para;</a></h2>
<p>When unshackle needs a content key during a download it asks your vaults <strong>in the order they appear in your config</strong>. It returns the first non-null key it finds and stops searching. If a vault raises a permission error or is unreachable, unshackle skips it and continues the search with the next one.</p>
<p>A track needs no licence when a vault holds the content key of the KID that encrypts it. The DRM header of the track can name more KIDs, for example those of other tracks. Before the decrypt, unshackle reads the downloaded file, and licenses each of those KIDs that the file uses and no vault holds. When unshackle cannot read which KIDs the file uses, it licenses all of them.</p>
<p>When unshackle recovers new keys from a license, it pushes them to <strong>all</strong> configured vaults, so every vault gradually converges on the same set of keys. Two rules apply to pushing:</p>
<ul>
<li>unshackle skips keys that already exist in a vault (it never overwrites or deletes existing data).</li>
+9 -27
View File
@@ -4304,13 +4304,7 @@ challenge there directly instead.</p>
<div class="doc doc-contents ">
<p>Decrypt a Track with ClearKey DRM (standard CENC).
Args:
path: Path to the encrypted file to decrypt
Raises:
EnvironmentError if the required decryption executable could not be found.
ValueError if unshackle has not yet downloaded the track.
SubprocessError if the decryption process returned a non-zero exit code.</p>
<p>Decrypt the file at <code>path</code> in place with this track's ClearKey (standard CENC) content keys.</p>
</div>
@@ -4350,7 +4344,7 @@ Raises:
<div class="doc doc-contents ">
<p>Decrypt using mp4decrypt</p>
<p>Decrypt with mp4decrypt.</p>
</div>
@@ -4370,7 +4364,7 @@ Raises:
<div class="doc doc-contents ">
<p>Decrypt with shaka-packager</p>
<p>Decrypt with shaka-packager.</p>
</div>
@@ -5510,13 +5504,7 @@ or from an exception message that carries it, so this method covers any service.
<div class="doc doc-contents ">
<p>Decrypt a Track with PlayReady DRM.
Args:
path: Path to the encrypted file to decrypt
Raises:
EnvironmentError if the required decryption executable could not be found.
ValueError if unshackle has not yet downloaded the track.
SubprocessError if the decryption process returned a non-zero exit code.</p>
<p>Decrypt the file at <code>path</code> in place with this track's PlayReady content keys.</p>
</div>
@@ -5578,7 +5566,7 @@ track exactly. A PSSH can name the KIDs of other renditions too.</p>
<div class="doc doc-contents ">
<p>Decrypt using mp4decrypt</p>
<p>Decrypt with mp4decrypt.</p>
</div>
@@ -5598,7 +5586,7 @@ track exactly. A PSSH can name the KIDs of other renditions too.</p>
<div class="doc doc-contents ">
<p>Decrypt with shaka-packager (original method)</p>
<p>Decrypt with shaka-packager.</p>
</div>
@@ -6097,13 +6085,7 @@ the challenge and the session ID.</p>
<div class="doc doc-contents ">
<p>Decrypt a Track with Widevine DRM.
Args:
path: Path to the encrypted file to decrypt
Raises:
EnvironmentError if the required decryption executable could not be found.
ValueError if unshackle has not yet downloaded the track.
SubprocessError if the decryption process returned a non-zero exit code.</p>
<p>Decrypt the file at <code>path</code> in place with this track's Widevine content keys.</p>
</div>
@@ -6165,7 +6147,7 @@ track exactly. A PSSH can name the KIDs of other renditions too.</p>
<div class="doc doc-contents ">
<p>Decrypt using mp4decrypt</p>
<p>Decrypt with mp4decrypt.</p>
</div>
@@ -6185,7 +6167,7 @@ track exactly. A PSSH can name the KIDs of other renditions too.</p>
<div class="doc doc-contents ">
<p>Decrypt with shaka-packager (original method)</p>
<p>Decrypt with shaka-packager.</p>
</div>
+6 -4
View File
@@ -2400,16 +2400,18 @@ the remote client's <code>-q</code> when the remote session starts:</p>
error. The server checks the values the job runs with, after it applies the service defaults
and the <code>serve:</code> download defaults.</li>
</ul>
<p>The limit protects the server's device, not the content keys. For a Widevine track, a server vault
still supplies a content key at every height. A PlayReady track never reads the vault, so above
the limit it always goes to the client's device. A licence for a lower track can carry the
<p>The limit protects the server's device, not the content keys. A server vault still supplies a
content key at every height: for a Widevine track, the key of the track's own KID or of every KID in
its header; for a PlayReady track, only the key of the track's own KID. A PlayReady track whose
own KID the server does not know always goes to the client's device above the limit. A licence for a lower track can carry the
content key of a higher track when the service shares one content key between them. With server
accounts enabled, a client that reports a stronger device than it holds makes the server's
account request those manifests; the licence server still refuses its challenge.</p>
<p><code>server_vault</code> lets a remote session that the client's own device licenses take content keys
from the server vault. Set it to <code>true</code> for every service, or to a list of service tags. It is
<code>false</code> unless the entry sets it, and <code>server_cdm</code> for a service implies it. The server looks up
every KID of the track in its vault and makes no live licence. A track that the vault does not
the track's own KID in its vault, or every KID of the track when it does not know that KID, and
makes no live licence. A track that the vault does not
hold goes back to the client's device. When the service runs the remote session on the server's
own device (a service option, such as a server-identity flag), the client's own vaults, and the
server vault with this grant, are the only source, and a missing content key stops the download.</p>
File diff suppressed because one or more lines are too long
+38 -38
View File
@@ -2,154 +2,154 @@
<urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9">
<url>
<loc>https://docs.unshackle.dev/</loc>
<lastmod>2026-11-12</lastmod>
<lastmod>2026-11-13</lastmod>
</url>
<url>
<loc>https://docs.unshackle.dev/dev/creating-a-service/</loc>
<lastmod>2026-11-12</lastmod>
<lastmod>2026-11-13</lastmod>
</url>
<url>
<loc>https://docs.unshackle.dev/dev/service-architecture/</loc>
<lastmod>2026-11-12</lastmod>
<lastmod>2026-11-13</lastmod>
</url>
<url>
<loc>https://docs.unshackle.dev/dev/rest-api/</loc>
<lastmod>2026-11-12</lastmod>
<lastmod>2026-11-13</lastmod>
</url>
<url>
<loc>https://docs.unshackle.dev/dev/rest-api/authentication/</loc>
<lastmod>2026-11-12</lastmod>
<lastmod>2026-11-13</lastmod>
</url>
<url>
<loc>https://docs.unshackle.dev/dev/rest-api/dashboard/</loc>
<lastmod>2026-11-12</lastmod>
<lastmod>2026-11-13</lastmod>
</url>
<url>
<loc>https://docs.unshackle.dev/dev/rest-api/endpoints/</loc>
<lastmod>2026-11-12</lastmod>
<lastmod>2026-11-13</lastmod>
</url>
<url>
<loc>https://docs.unshackle.dev/dev/rest-api/errors/</loc>
<lastmod>2026-11-12</lastmod>
<lastmod>2026-11-13</lastmod>
</url>
<url>
<loc>https://docs.unshackle.dev/dev/rest-api/job-lifecycle/</loc>
<lastmod>2026-11-12</lastmod>
<lastmod>2026-11-13</lastmod>
</url>
<url>
<loc>https://docs.unshackle.dev/dev/rest-api/quickstart/</loc>
<lastmod>2026-11-12</lastmod>
<lastmod>2026-11-13</lastmod>
</url>
<url>
<loc>https://docs.unshackle.dev/dev/rest-api/remote-sessions/</loc>
<lastmod>2026-11-12</lastmod>
<lastmod>2026-11-13</lastmod>
</url>
<url>
<loc>https://docs.unshackle.dev/getting-started/configuration-file/</loc>
<lastmod>2026-11-12</lastmod>
<lastmod>2026-11-13</lastmod>
</url>
<url>
<loc>https://docs.unshackle.dev/getting-started/installation/</loc>
<lastmod>2026-11-12</lastmod>
<lastmod>2026-11-13</lastmod>
</url>
<url>
<loc>https://docs.unshackle.dev/getting-started/quickstart/</loc>
<lastmod>2026-11-12</lastmod>
<lastmod>2026-11-13</lastmod>
</url>
<url>
<loc>https://docs.unshackle.dev/guide/cli-reference/</loc>
<lastmod>2026-11-12</lastmod>
<lastmod>2026-11-13</lastmod>
</url>
<url>
<loc>https://docs.unshackle.dev/guide/downloading/</loc>
<lastmod>2026-11-12</lastmod>
<lastmod>2026-11-13</lastmod>
</url>
<url>
<loc>https://docs.unshackle.dev/guide/drm-and-cdm/</loc>
<lastmod>2026-11-12</lastmod>
<lastmod>2026-11-13</lastmod>
</url>
<url>
<loc>https://docs.unshackle.dev/guide/output-and-naming/</loc>
<lastmod>2026-11-12</lastmod>
<lastmod>2026-11-13</lastmod>
</url>
<url>
<loc>https://docs.unshackle.dev/guide/proxies-and-vpn/</loc>
<lastmod>2026-11-12</lastmod>
<lastmod>2026-11-13</lastmod>
</url>
<url>
<loc>https://docs.unshackle.dev/guide/subtitles/</loc>
<lastmod>2026-11-12</lastmod>
<lastmod>2026-11-13</lastmod>
</url>
<url>
<loc>https://docs.unshackle.dev/guide/troubleshooting/</loc>
<lastmod>2026-11-12</lastmod>
<lastmod>2026-11-13</lastmod>
</url>
<url>
<loc>https://docs.unshackle.dev/guide/vaults/</loc>
<lastmod>2026-11-12</lastmod>
<lastmod>2026-11-13</lastmod>
</url>
<url>
<loc>https://docs.unshackle.dev/reference/api/config/</loc>
<lastmod>2026-11-12</lastmod>
<lastmod>2026-11-13</lastmod>
</url>
<url>
<loc>https://docs.unshackle.dev/reference/api/drm/</loc>
<lastmod>2026-11-12</lastmod>
<lastmod>2026-11-13</lastmod>
</url>
<url>
<loc>https://docs.unshackle.dev/reference/api/service/</loc>
<lastmod>2026-11-12</lastmod>
<lastmod>2026-11-13</lastmod>
</url>
<url>
<loc>https://docs.unshackle.dev/reference/api/titles/</loc>
<lastmod>2026-11-12</lastmod>
<lastmod>2026-11-13</lastmod>
</url>
<url>
<loc>https://docs.unshackle.dev/reference/api/tracks/</loc>
<lastmod>2026-11-12</lastmod>
<lastmod>2026-11-13</lastmod>
</url>
<url>
<loc>https://docs.unshackle.dev/reference/configuration/</loc>
<lastmod>2026-11-12</lastmod>
<lastmod>2026-11-13</lastmod>
</url>
<url>
<loc>https://docs.unshackle.dev/reference/configuration/directories/</loc>
<lastmod>2026-11-12</lastmod>
<lastmod>2026-11-13</lastmod>
</url>
<url>
<loc>https://docs.unshackle.dev/reference/configuration/download/</loc>
<lastmod>2026-11-12</lastmod>
<lastmod>2026-11-13</lastmod>
</url>
<url>
<loc>https://docs.unshackle.dev/reference/configuration/drm/</loc>
<lastmod>2026-11-12</lastmod>
<lastmod>2026-11-13</lastmod>
</url>
<url>
<loc>https://docs.unshackle.dev/reference/configuration/example/</loc>
<lastmod>2026-11-12</lastmod>
<lastmod>2026-11-13</lastmod>
</url>
<url>
<loc>https://docs.unshackle.dev/reference/configuration/misc/</loc>
<lastmod>2026-11-12</lastmod>
<lastmod>2026-11-13</lastmod>
</url>
<url>
<loc>https://docs.unshackle.dev/reference/configuration/network/</loc>
<lastmod>2026-11-12</lastmod>
<lastmod>2026-11-13</lastmod>
</url>
<url>
<loc>https://docs.unshackle.dev/reference/configuration/output/</loc>
<lastmod>2026-11-12</lastmod>
<lastmod>2026-11-13</lastmod>
</url>
<url>
<loc>https://docs.unshackle.dev/reference/configuration/post-scripts/</loc>
<lastmod>2026-11-12</lastmod>
<lastmod>2026-11-13</lastmod>
</url>
<url>
<loc>https://docs.unshackle.dev/reference/configuration/services/</loc>
<lastmod>2026-11-12</lastmod>
<lastmod>2026-11-13</lastmod>
</url>
<url>
<loc>https://docs.unshackle.dev/reference/configuration/vaults/</loc>
<lastmod>2026-11-12</lastmod>
<lastmod>2026-11-13</lastmod>
</url>
</urlset>
BIN
View File
Binary file not shown.