secure-messaging/build/latex/secure-messaging.tex
George Lambert 43cbf51d3e
Some checks are pending
ci / python (push) Waiting to run
ci / go (push) Waiting to run
S17/S18: send success and failure routes; Sphinx HTML/PDF
Python router + Go sm-leaf reject missing to, empty ct, plaintext body.
Summary logs never include ciphertext. MODULE.md.
2026-09-15 23:10:15 -04:00

170 lines
No EOL
5.1 KiB
TeX

%% 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}}. See system\sphinxhyphen{}git\sphinxhyphen{}sync \sphinxcode{\sphinxupquote{docs/VARIABLES.md}}.
\renewcommand{\indexname}{Index}
\printindex
\end{document}