%% Generated by Sphinx. \def\sphinxdocclass{report} \documentclass[letterpaper,10pt,english]{sphinxmanual} \ifdefined\pdfpxdimen \let\sphinxpxdimen\pdfpxdimen\else\newdimen\sphinxpxdimen \fi \sphinxpxdimen=.75bp\relax \ifdefined\pdfimageresolution \pdfimageresolution= \numexpr \dimexpr1in\relax/\sphinxpxdimen\relax \fi \newdimen\sphinxremdimen\sphinxremdimen = 10pt %% let collapsible pdf bookmarks panel have high depth per default \PassOptionsToPackage{bookmarksdepth=5}{hyperref} \PassOptionsToPackage{booktabs}{sphinx} \PassOptionsToPackage{colorrows}{sphinx} \PassOptionsToPackage{warn}{textcomp} \usepackage[utf8]{inputenc} \ifdefined\DeclareUnicodeCharacter % support both utf8 and utf8x syntaxes \ifdefined\DeclareUnicodeCharacterAsOptional \def\sphinxDUC#1{\DeclareUnicodeCharacter{"#1}} \else \let\sphinxDUC\DeclareUnicodeCharacter \fi \sphinxDUC{00A0}{\nobreakspace} \sphinxDUC{2500}{\sphinxunichar{2500}} \sphinxDUC{2502}{\sphinxunichar{2502}} \sphinxDUC{2514}{\sphinxunichar{2514}} \sphinxDUC{251C}{\sphinxunichar{251C}} \sphinxDUC{2572}{\textbackslash} \fi \usepackage{cmap} \usepackage[T1]{fontenc} \usepackage{amsmath,amssymb,amstext} \usepackage{babel} \usepackage{tgtermes} \usepackage{tgheros} \renewcommand{\ttdefault}{txtt} \usepackage[Bjarne]{fncychap} \usepackage{sphinx} \fvset{fontsize=auto} \usepackage{geometry} % Include hyperref last. \usepackage{hyperref} % Fix anchor placement for figures with captions. \usepackage{hypcap}% it must be loaded after hyperref. % Set up styles of URL: it should be placed after hyperref. \urlstyle{same} \usepackage{sphinxmessages} \title{Secure Messaging} \date{Sep 16, 2026} \release{} \author{Verae} \newcommand{\sphinxlogo}{\vbox{}} \renewcommand{\releasename}{} \makeindex \begin{document} \ifdefined\shorthandoff \ifnum\catcode`\=\string=\active\shorthandoff{=}\fi \ifnum\catcode`\"=\active\shorthandoff{"}\fi \fi \pagestyle{empty} \sphinxmaketitle \pagestyle{plain} \sphinxtableofcontents \pagestyle{normal} \phantomsection\label{\detokenize{index::doc}} \sphinxAtStartPar Passthrough NATS envelopes, Ed25519 signed configuration, DataCube admin\sphinxhyphen{}history, and Network Error Bundles. \sphinxAtStartPar This is \sphinxstylestrong{not} a HIPAA/SOC 2/ISO certificate. \begin{itemize} \item {} \sphinxAtStartPar Python spec: \sphinxcode{\sphinxupquote{python/secure\_messaging/}} \item {} \sphinxAtStartPar Go leaf: \sphinxcode{\sphinxupquote{go/cmd/sm\sphinxhyphen{}leaf}} (in\sphinxhyphen{}process NATS + optional hub) \item {} \sphinxAtStartPar Loopback health: \sphinxcode{\sphinxupquote{127.0.0.1:18783/health}} \item {} \sphinxAtStartPar Catalog: \sphinxurl{https://git.georgelambert.org/marchon/nats-service-endpoints} \item {} \sphinxAtStartPar Hub: \sphinxurl{https://git.georgelambert.org/marchon/system-git-sync} \end{itemize} \chapter{Who calls this module} \label{\detokenize{index:who-calls-this-module}} \sphinxAtStartPar \sphinxcode{\sphinxupquote{pfc\sphinxhyphen{}py\sphinxhyphen{}admin}} (sign config, append history) and systemd \sphinxcode{\sphinxupquote{pfc\sphinxhyphen{}sm\sphinxhyphen{}leaf}}. Tests send targeted good and bad messages on \sphinxcode{\sphinxupquote{verae.sm.send}}. \chapter{Messages} \label{\detokenize{index:messages}}\begin{itemize} \item {} \sphinxAtStartPar \sphinxstylestrong{From:} console / tests / connectors \item {} \sphinxAtStartPar \sphinxstylestrong{To:} mailbox dest in the clear; body ciphertext \item {} \sphinxAtStartPar \sphinxstylestrong{Success:} ack \sphinxcode{\sphinxupquote{accepted}} + \sphinxcode{\sphinxupquote{lookup\_id}} (sender cannot reopen \sphinxcode{\sphinxupquote{ct}}) \item {} \sphinxAtStartPar \sphinxstylestrong{Failure:} \sphinxcode{\sphinxupquote{SM\sphinxhyphen{}MISSING\sphinxhyphen{}TO}}, \sphinxcode{\sphinxupquote{SM\sphinxhyphen{}EMPTY\sphinxhyphen{}CT}}, \sphinxcode{\sphinxupquote{SM\sphinxhyphen{}BAD\sphinxhyphen{}ALG}}, \sphinxcode{\sphinxupquote{SM\sphinxhyphen{}PLAINTEXT\sphinxhyphen{}BODY}}, \sphinxcode{\sphinxupquote{SM\sphinxhyphen{}BAD\sphinxhyphen{}JSON}} \(\rightarrow\) \sphinxcode{\sphinxupquote{verae.sm.error}} + \sphinxcode{\sphinxupquote{verae.sm.dead}} + \sphinxcode{\sphinxupquote{verae.sm.log.summary}} \item {} \sphinxAtStartPar \sphinxstylestrong{Filter:} no plaintext \sphinxcode{\sphinxupquote{body}} field; summary must not contain \sphinxcode{\sphinxupquote{ct}} \item {} \sphinxAtStartPar \sphinxstylestrong{Timeout:} 5s NATS; 15s NPE sidecar \end{itemize} \chapter{Errors} \label{\detokenize{index:errors}} \sphinxAtStartPar Network Error Bundle: \sphinxcode{\sphinxupquote{ct\_sender}} (sender\sphinxhyphen{}only status) and \sphinxcode{\sphinxupquote{ct\_system}} (ops bounce, no mail body). \sphinxcode{\sphinxupquote{logging.mode=summary}}. \sphinxAtStartPar Variables: \sphinxcode{\sphinxupquote{crypto.mode}}, \sphinxcode{\sphinxupquote{routing.mode=passthrough}}, \sphinxcode{\sphinxupquote{SM\_LEAF\_HUB}}, \sphinxcode{\sphinxupquote{SM\_HTTP}}. In the system PDF see the Variables chapter (\sphinxcode{\sphinxupquote{peergos\sphinxhyphen{}for\sphinxhyphen{}compliance.pdf}}, same folder). Companion system PDF: \href{peergos-for-compliance.pdf}{peergos-for-compliance.pdf}. Catalog: \href{nats-service-endpoints.pdf}{nats-service-endpoints.pdf}. \renewcommand{\indexname}{Index} \printindex \end{document}