diff --git a/.github/workflows/deploy.yml b/.github/workflows/deploy.yml index 5743524..320792a 100644 --- a/.github/workflows/deploy.yml +++ b/.github/workflows/deploy.yml @@ -32,6 +32,24 @@ jobs: - name: Build Sphinx run: sphinx-build -b html docs/source _site + - name: Install LaTeX for PDF + run: | + sudo apt-get update + sudo apt-get install -y --no-install-recommends \ + latexmk texlive-latex-recommended texlive-latex-extra \ + texlive-fonts-recommended tex-gyre + + - name: Build PDF (pdflatex) + run: | + sphinx-build -M latexpdf docs/source docs/_build + cp docs/_build/latex/cryptnox-docs.pdf _site/cryptnox-docs.pdf + + - name: Upload PDF artifact (for PR review) + uses: actions/upload-artifact@v4 + with: + name: cryptnox-docs-pdf + path: docs/_build/latex/cryptnox-docs.pdf + - name: Add CNAME for custom domain run: echo "docs.cryptnox.com" > _site/CNAME diff --git a/docs/source/_static/cryptnox-logo-dark.png b/docs/source/_static/cryptnox-logo-dark.png new file mode 100644 index 0000000..7ccc9df Binary files /dev/null and b/docs/source/_static/cryptnox-logo-dark.png differ diff --git a/docs/source/_static/icon-cli.png b/docs/source/_static/icon-cli.png new file mode 100644 index 0000000..94192c8 Binary files /dev/null and b/docs/source/_static/icon-cli.png differ diff --git a/docs/source/_static/icon-hw.png b/docs/source/_static/icon-hw.png new file mode 100644 index 0000000..19732f8 Binary files /dev/null and b/docs/source/_static/icon-hw.png differ diff --git a/docs/source/_static/icon-sdk.png b/docs/source/_static/icon-sdk.png new file mode 100644 index 0000000..2d4b387 Binary files /dev/null and b/docs/source/_static/icon-sdk.png differ diff --git a/docs/source/conf.py b/docs/source/conf.py index e4a4d17..58bf472 100644 --- a/docs/source/conf.py +++ b/docs/source/conf.py @@ -56,3 +56,18 @@ html_show_sourcelink = False html_copy_source = False html_show_sphinx = False + +# -- Options for PDF (LaTeX) output ------------------------------------------ +# Built by CI with pdflatex, same as Yubico's tech manual. Output: cryptnox-docs.pdf + +latex_engine = 'pdflatex' +latex_logo = '_static/cryptnox-logo-dark.png' # white logo is invisible on white PDF title page +latex_documents = [ + ('index', 'cryptnox-docs.tex', 'Cryptnox Product Documentation', author, 'manual'), +] +latex_elements = { + 'papersize': 'a4paper', + 'pointsize': '11pt', + 'figure_align': 'H', + 'extraclassoptions': 'oneside,openany', # no blank filler pages (web PDF, not double-sided print) +} diff --git a/docs/source/index.rst b/docs/source/index.rst index 56423ab..dc9779e 100644 --- a/docs/source/index.rst +++ b/docs/source/index.rst @@ -2,6 +2,10 @@ Cryptnox Product Documentation ================================ +.. only:: html + + 📄 `Download the full documentation as PDF `__ + Cryptnox Hardware Wallet ========================= @@ -15,6 +19,11 @@ Cryptnox Hardware Wallet +.. only:: latex + + .. image:: _static/icon-hw.png + :height: 40px + *Cryptnox Hardware Wallet* is a JavaCard Open Platform 3 smartcard with an EAL6+ Common Criteria certified secure element. It provides hardware-secured private key storage and transaction signing for cryptocurrency applications over NFC and contact (T=1) interfaces. @@ -37,6 +46,11 @@ Cryptnox CLI +.. only:: latex + + .. image:: _static/icon-cli.png + :height: 40px + *Cryptnox CLI* brings full smartcard control to the terminal, handling card initialization, secure channel setup, PIN management, seed generation, key derivation, and transaction signing through a single command interface. @@ -59,6 +73,11 @@ Cryptnox SDK for Python +.. only:: latex + + .. image:: _static/icon-sdk.png + :height: 40px + *Cryptnox SDK for Python* brings Cryptnox smartcard support to the Python ecosystem, surfacing secure channel, APDU exchange, key derivation, and signing through a clean Python API. It integrates directly into desktop wallets, backend services, and automation workflows, adding hardware-secured @@ -82,6 +101,11 @@ Cryptnox SDK for ESP32 +.. only:: latex + + .. image:: _static/icon-sdk.png + :height: 40px + *Cryptnox SDK for ESP32* brings Cryptnox smartcard support to the ESP-IDF ecosystem, wrapping secure channel, APDU exchange, key derivation, and signing into a ready-to-use component for the ESP32's Wi-Fi/Bluetooth SoCs. Connected firmware gains hardware-secured key storage without ever handling the @@ -105,6 +129,11 @@ Cryptnox SDK for Arduino +.. only:: latex + + .. image:: _static/icon-sdk.png + :height: 40px + *Cryptnox SDK for Arduino* packages Cryptnox smartcard support as an Arduino library, exposing secure channel, APDU exchange, key derivation, and signing through a sketch-friendly API. Installable directly through the Arduino IDE and Library Manager, it adds hardware-secured keys to any board in @@ -128,6 +157,11 @@ Cryptnox SDK for C++ +.. only:: latex + + .. image:: _static/icon-sdk.png + :height: 40px + *Cryptnox SDK for C++* is the portable core at the heart of Cryptnox's embedded SDKs, implementing secure channel, APDU exchange, key derivation, and signing in platform-neutral C++. It ships no transport driver, crypto backend, or logging output, so porting Cryptnox support to a new native