diff --git a/.github/workflows/build-pr.yml b/.github/workflows/build-pr.yml new file mode 100644 index 0000000..ffada80 --- /dev/null +++ b/.github/workflows/build-pr.yml @@ -0,0 +1,30 @@ +name: Build Pull Request + +on: + pull_request: + branches: + - master + +jobs: + build: + runs-on: ubuntu-latest + container: + image: ghcr.io/dash-industry-forum/dashif-specs:latest + credentials: + username: ${{ github.actor }} + password: ${{ secrets.github_token }} + + steps: + - uses: actions/checkout@v4 + - name: Build + env: + # Reset OPTS to empty to make sure we are not using + # interactive mode in CI + OPTS: + run: make -f /tools/Makefile spec SRC=Guidelines-Security.bs.md NAME=Guidelines-Security + + - name: Archive + uses: actions/upload-artifact@v4 + with: + name: dist + path: dist/ diff --git a/.github/workflows/publish.yml b/.github/workflows/publish.yml new file mode 100644 index 0000000..f026418 --- /dev/null +++ b/.github/workflows/publish.yml @@ -0,0 +1,56 @@ +name: Publish + +on: + push: + branches: + - master + +# Sets permissions of the GITHUB_TOKEN to allow deployment to GitHub Pages +permissions: + contents: read + packages: read + pages: write + id-token: write + +jobs: + build: + runs-on: ubuntu-latest + container: + image: ghcr.io/dash-industry-forum/dashif-specs:latest + credentials: + username: ${{ github.actor }} + password: ${{ secrets.github_token }} + + steps: + - uses: actions/checkout@v4 + - name: Build + env: + # Reset OPTS to empty to make sure we are not using + # interactive mode in CI + OPTS: + run: make -f /tools/Makefile spec SRC=Guidelines-Security.bs.md NAME=Guidelines-Security + + - name: Archive + uses: actions/upload-artifact@v4 + with: + name: dist + path: dist/ + + package: + runs-on: ubuntu-latest + needs: build + steps: + - uses: actions/download-artifact@v4 + with: + name: dist + path: dist + - uses: actions/upload-pages-artifact@v3 + with: + path: dist + + publish: + runs-on: ubuntu-latest + needs: package + steps: + - name: Deploy to GitHub Pages + uses: actions/deploy-pages@v4 diff --git a/.gitignore b/.gitignore index cd0df9c..2975b7d 100644 --- a/.gitignore +++ b/.gitignore @@ -1 +1,2 @@ -Output \ No newline at end of file +Output +dist/ diff --git a/10-General.inc.md b/10-General.inc.md index 6a3900e..4089300 100644 --- a/10-General.inc.md +++ b/10-General.inc.md @@ -3,7 +3,7 @@ DASH-IF provides guidelines for using multiple [=DRM systems=] to access a DASH presentation by adding encryption signaling and [=DRM system configuration=] to DASH content encrypted in conformance to Common Encryption [[!CENC]]. In addition to content authoring guidelines, DASH-IF specifies interoperable workflows for DASH client interactions with [=DRM systems=], platform APIs and external services involved in content protection interactions. @@ -28,7 +28,7 @@ A license is a data structure in a [=DRM system=] specific format tha Different software architectural components are involved in playback of encrypted content. The exact nature depends on the specific implementation. A high-level reference architecture is described here. @@ -220,7 +220,7 @@ Note: This optimization might require support from platform APIs and/or [=DRM sy While it is common that `default_KID` identifies the actual [=content key=] used for encryption, a [=DRM system=] MAY make use of other keys in addition to the one signalled by the `default_KID` value but this SHALL be transparent to the client with only the `default_KID` being used in interactions between the DASH client and the [=DRM system=]. See [[#CPS-KeyHierarchy]]. diff --git a/40-LicenseRequestModel.inc.md b/40-LicenseRequestModel.inc.md index 2628754..1743460 100644 --- a/40-LicenseRequestModel.inc.md +++ b/40-LicenseRequestModel.inc.md @@ -53,7 +53,7 @@ The above data sets are serialized and digitally signed to arrive at the final f [=Authorization tokens=] are issued by an authorization service, which is part of a solution's business logic. The authorization service has access to the project-specific context that it needs to make its decisions (e.g. the active session, user identification and database of purchases/entitlements). A single authorization service can be used to issue [=authorization tokens=] for multiple license servers, simplifying architecture in solutions where multiple license server vendors are used. @@ -68,7 +68,7 @@ To obtain an [=authorization token=], a DASH client needs to know the URL of the If no authorization service URL is provided by the MPD nor made available at runtime, a DASH client SHALL NOT attach an [=authorization token=] to a license request. Absence of this URL implies that authorization operations are performed in a manner transparent to the DASH client (see [[#CPS-lr-model-deployment]]). @@ -197,7 +197,7 @@ Authorization services and license servers SHOULD indicate an inability to satis 1. Signals a suitable status code (4xx or 5xx). 1. Has a `Content-Type` of `application/problem+json`. -1. Contains a HTTP response body conforming to [[!rfc7807]]. +1. Contains a HTTP response body conforming to [[!rfc7807 obsolete]].
Revision: 5.0 Title: DASH-IF implementation guidelines: content protection and security Status: LS-COMMIT Shortname: dash-security -URL: https://dashif-documents.azurewebsites.net/Guidelines-Security/master/Guidelines-Security.html +URL: https://dashif.org/Guidelines-Security/ +Group: dashif Issue Tracking: GitHub https://github.com/Dash-Industry-Forum/Guidelines-Security/issues -Repository: https://github.com/Dash-Industry-Forum/Guidelines-Security GitHub -Editor: DASH Industry Forum -Default Highlight: text - -Line Numbers: off -Markup Shorthands: markdown yes -Boilerplate: copyright off, abstract off -Abstract: None- -
-#include "References.json" ++path: 01-Intro.inc.md- -- ++path: 10-General.inc.md- -- ++path: 40-LicenseRequestModel.inc.md +++path: 60-ClientWorkflows.inc.md +++path: 80-Misc.inc.mddiff --git a/References.json b/biblio.json similarity index 100% rename from References.json rename to biblio.json diff --git a/build.bat b/build.bat new file mode 100644 index 0000000..8154bab --- /dev/null +++ b/build.bat @@ -0,0 +1,22 @@ +@echo off +set IMG=dashif/specs-builder:latest + +rem Check if OPTS is defined, if not, set default value +if "%OPTS%"=="" ( + set OPTS=-ti +) + +rem Collect command-line arguments +set TARGETS=%* + +rem If no arguments are provided, use "spec" +if "%TARGETS%"=="" ( + set TARGETS=spec +) + +rem Add parameters to TARGETS +set TARGETS=%TARGETS% SRC=Guidelines-Security.bs.md NAME=Guidelines-Security + +echo Running with targets: '%TARGETS%' +docker run --rm %OPTS% -v "%cd%:/data" -p 8000:8000 %IMG% %TARGETS% + diff --git a/build.sh b/build.sh new file mode 100755 index 0000000..74c5a7c --- /dev/null +++ b/build.sh @@ -0,0 +1,29 @@ +#!/bin/bash + +# Here is the command that can be used to debug or develop with the +# local resources. +# +# docker run --rm -ti -v `pwd`:/data -v `pwd`/build-tools/tools:/tools -v `pwd`/data/boilerplate/dashif:/usr/local/lib/python3.12/dist-packages/bikeshed/spec-data/boilerplate/dashif dashif-specs:latest +# + +# Run the docker container and pass all the arguments +IMG=dashif/specs-builder:latest + +# Allow to overwrite additional options from the outside. +# We use tty and interactive by default since this makes it easier +# to deal with watch mode and Ctrl-C etc but we can not use this +# for instance in CI mode +if [ -z ${OPTS+x} ]; then + OPTS=-ti +fi + +TARGETS="${@}" +if [ -z "${TARGETS}" ]; then + TARGETS="spec" +fi +# Add parameters +TARGETS="${TARGETS} SRC=Guidelines-Security.bs.md NAME=Guidelines-Security" + +echo "Run with targets: '${TARGETS}'" +docker run --rm ${OPTS} -v `pwd`:/data -p 8000:8000 \ + ${IMG} ${TARGETS} diff --git a/setup.bat b/setup.bat new file mode 100644 index 0000000..6e61ec6 --- /dev/null +++ b/setup.bat @@ -0,0 +1,2 @@ +@echo off +docker pull dashif/specs-builder:latest \ No newline at end of file diff --git a/setup.sh b/setup.sh new file mode 100755 index 0000000..ab0bfc7 --- /dev/null +++ b/setup.sh @@ -0,0 +1,5 @@ +#!/bin/bash + +# Pull the latest build image +IMG=dashif/specs-builder:latest +docker pull ${IMG}