Skip to content

Commit 4f15e0e

Browse files
rayketchamclaude
andcommitted
docs: accuracy sweep — v0.6.0 feature cards, endpoints, demo CLI
docs/index.html: - Feature card: drop 'enveloped data' claim (v0.6.0 removed it). - REST API grid: replace three phantom public endpoints (/api/v1/timestamp, /api/v1/certs, /api/v1/audit) with the actual shipped surface (sign, sign-detached, sign-batch, verify, verify-detached, status, health, certificate, report-issue + the /admin/* subset). TSA timestamping called out as a separate 'pki-sign tsa serve' binding. - Architecture blurb: 34 -> 28 source files after v0.6.0 trim. - Nav: add 'Live Casts' link to demo.html + CTA button under the terminal-demo section so users can reach the cast page. docs/demo.html: - Install steps: replace non-existent 'pki-sign import' and 'pki-sign pe --cert' with the real flow (export PKI_SIGN_PFX_PASSWORD + pki-sign sign --pfx). - ML-DSA claims: label as experimental (pq-experimental feature flag) instead of front-page promise. Co-Authored-By: Claude <noreply@anthropic.com>
1 parent 8e7966a commit 4f15e0e

2 files changed

Lines changed: 55 additions & 17 deletions

File tree

docs/demo.html

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@
44
<meta charset="UTF-8">
55
<meta name="viewport" content="width=device-width, initial-scale=1.0">
66
<title>PKI Signing Service — Live Demos</title>
7-
<meta name="description" content="Interactive demos: Authenticode signing, tamper detection, post-quantum ML-DSA, and more. Watch code signing in action.">
7+
<meta name="description" content="Interactive demos: Authenticode signing, tamper detection, experimental post-quantum ML-DSA, and more. Watch code signing in action.">
88
<link rel="preconnect" href="https://fonts.googleapis.com">
99
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
1010
<link href="https://fonts.googleapis.com/css2?family=Inter:wght@400;500;600;700;800;900&family=JetBrains+Mono:wght@400;500;600;700&display=swap" rel="stylesheet">
@@ -1145,7 +1145,7 @@ <h2 class="section-title" id="suite-heading">Built to Work Together</h2>
11451145
<span class="suite-card-badge suite-card-badge-here">You Are Here</span>
11461146
</div>
11471147
<div class="suite-card-name">PKI Signing Service</div>
1148-
<p class="suite-card-desc">Authenticode, PKCS#7, RFC 3161 timestamping, post-quantum ML-DSA. Code signing made fast, correct, and &#8212; against all odds &#8212; fun.</p>
1148+
<p class="suite-card-desc">Authenticode, PKCS#7, RFC 3161 timestamping, and experimental post-quantum ML-DSA behind the <code>pq-experimental</code> feature flag. Code signing made fast, correct, and &#8212; against all odds &#8212; fun.</p>
11491149
<div class="suite-card-arrow" aria-hidden="true">
11501150
View docs <span>&#8594;</span>
11511151
</div>
@@ -1192,15 +1192,15 @@ <h2 class="section-title" id="install-heading">Up and Running in 60 Seconds</h2>
11921192
<div class="install-step">
11931193
<div class="install-step-num" aria-hidden="true">2</div>
11941194
<div class="install-step-content">
1195-
<div class="install-step-label">Import your PFX certificate</div>
1196-
<div class="code-block">pki-sign import --pfx my-cert.pfx --label my-cert<button class="copy-btn" aria-label="Copy import command" data-copy="pki-sign import --pfx my-cert.pfx --label my-cert">Copy</button></div>
1195+
<div class="install-step-label">Point the PFX password at an env var</div>
1196+
<div class="code-block">export PKI_SIGN_PFX_PASSWORD=&#x27;your-pfx-password&#x27;<button class="copy-btn" aria-label="Copy env command" data-copy="export PKI_SIGN_PFX_PASSWORD='your-pfx-password'">Copy</button></div>
11971197
</div>
11981198
</div>
11991199
<div class="install-step">
12001200
<div class="install-step-num" aria-hidden="true">3</div>
12011201
<div class="install-step-content">
12021202
<div class="install-step-label">Sign your first binary</div>
1203-
<div class="code-block">pki-sign pe --cert my-cert --timestamp --file my-app.exe<button class="copy-btn" aria-label="Copy sign command" data-copy="pki-sign pe --cert my-cert --timestamp --file my-app.exe">Copy</button></div>
1203+
<div class="code-block">pki-sign sign --pfx my-cert.pfx my-app.exe -o my-app-signed.exe<button class="copy-btn" aria-label="Copy sign command" data-copy="pki-sign sign --pfx my-cert.pfx my-app.exe -o my-app-signed.exe">Copy</button></div>
12041204
</div>
12051205
</div>
12061206
</div>
@@ -1236,7 +1236,7 @@ <h2 class="section-title" id="install-heading">Up and Running in 60 Seconds</h2>
12361236
{ id: 'intern', cast: 'demos/the-intern.cast', title: "The Intern", desc: "Kevin's first day. What could go wrong?" },
12371237
{ id: 'heist', cast: 'demos/the-heist.cast', title: "The Heist", desc: "Somebody tampered with the binary. Big mistake." },
12381238
{ id: 'speed-run', cast: 'demos/speed-run.cast', title: "Speed Run", desc: "5 file types. 5 seconds. World record attempt." },
1239-
{ id: 'quantum', cast: 'demos/quantum-panic.cast', title: "Quantum Panic", desc: "RSA is dead. Long live ML-DSA." },
1239+
{ id: 'quantum', cast: 'demos/quantum-panic.cast', title: "Quantum Panic", desc: "RSA is dead. Long live ML-DSA (experimental: pq-experimental feature flag)." },
12401240
{ id: 'auditor', cast: 'demos/the-auditor.cast', title: "The Auditor", desc: "Karen from Compliance has entered the chat." },
12411241
{ id: 'api', cast: 'demos/the-api.cast', title: "REST in Peace", desc: "Where unsigned code goes to die." }
12421242
];

docs/index.html

Lines changed: 49 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -844,6 +844,7 @@
844844
<ul class="nav-links">
845845
<li><a href="#features">Features</a></li>
846846
<li><a href="#demo">Demo</a></li>
847+
<li><a href="demo.html">Live Casts</a></li>
847848
<li><a href="#architecture">Architecture</a></li>
848849
<li><a href="#api">API</a></li>
849850
<li><a href="https://github.com/rayketcham-lab/PKI-Signing-Service" class="nav-cta">GitHub</a></li>
@@ -926,7 +927,7 @@ <h3>Authenticode Signing</h3>
926927
<svg width="22" height="22" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><rect x="3" y="11" width="18" height="11" rx="2" ry="2"/><path d="M7 11V7a5 5 0 0 1 10 0v4"/></svg>
927928
</div>
928929
<h3>PKCS#7 / CMS</h3>
929-
<p>Detached and embedded PKCS#7 signatures with full ASN.1 builder. S/MIME, signed data, enveloped data, and ESS support.</p>
930+
<p>Detached and embedded PKCS#7 signatures with full ASN.1 builder. SignedData, DigestedData, and ESS signed-attribute support.</p>
930931
</div>
931932

932933
<div class="feature-card fade-up">
@@ -1006,6 +1007,12 @@ <h2 class="section-title fade-up">Sign in seconds</h2>
10061007
<span class="info">&#9656; Audit log: /var/log/pki-sign/audit.json</span>
10071008
</div>
10081009
</div>
1010+
<div style="text-align:center;margin-top:32px">
1011+
<a href="demo.html" class="btn btn-secondary" style="display:inline-flex;align-items:center;gap:10px">
1012+
<svg width="18" height="18" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><polygon points="5 3 19 12 5 21 5 3"/></svg>
1013+
Watch the live demos
1014+
</a>
1015+
</div>
10091016
</div>
10101017
</section>
10111018

@@ -1016,7 +1023,7 @@ <h2 class="section-title fade-up">Sign in seconds</h2>
10161023
<div class="container">
10171024
<span class="section-label fade-up">Under the Hood</span>
10181025
<h2 class="section-title fade-up">Clean architecture</h2>
1019-
<p class="section-desc fade-up">34 source files, modular design. Every component is isolated, testable, and auditable.</p>
1026+
<p class="section-desc fade-up">28 source files, modular design. Every component is isolated, testable, and auditable.</p>
10201027

10211028
<div class="arch-block fade-up">
10221029
<div class="arch-header">crates/pki-sign/src/</div>
@@ -1063,34 +1070,65 @@ <h2 class="section-title fade-up">REST API</h2>
10631070
<div class="api-card fade-up">
10641071
<span class="api-method api-method-post">POST</span>
10651072
<div class="api-route">/api/v1/sign</div>
1066-
<div class="api-desc">Sign a binary. Accepts PE, CAB, MSI, or raw payload. Returns signed artifact or detached signature.</div>
1073+
<div class="api-desc">Embedded Authenticode sign. Accepts PE/CAB/MSI/PowerShell upload, returns the signed artifact.</div>
1074+
</div>
1075+
<div class="api-card fade-up">
1076+
<span class="api-method api-method-post">POST</span>
1077+
<div class="api-route">/api/v1/sign-detached</div>
1078+
<div class="api-desc">Arbitrary-file detached CMS SignedData. Wrap any payload for transport + later verification.</div>
1079+
</div>
1080+
<div class="api-card fade-up">
1081+
<span class="api-method api-method-post">POST</span>
1082+
<div class="api-route">/api/v1/sign-batch</div>
1083+
<div class="api-desc">Batch sign multiple files in one ZIP upload. Returns a ZIP of signed artifacts + a CSV summary.</div>
10671084
</div>
10681085
<div class="api-card fade-up">
10691086
<span class="api-method api-method-post">POST</span>
10701087
<div class="api-route">/api/v1/verify</div>
1071-
<div class="api-desc">Verify a signed binary. Returns signature details, certificate chain, and timestamp status.</div>
1088+
<div class="api-desc">Verify an embedded-signed binary. Returns signature details, certificate chain, and timestamp status.</div>
10721089
</div>
10731090
<div class="api-card fade-up">
10741091
<span class="api-method api-method-post">POST</span>
1075-
<div class="api-route">/api/v1/timestamp</div>
1076-
<div class="api-desc">RFC 3161 timestamp endpoint. Submit a timestamp request, receive a signed timestamp token.</div>
1092+
<div class="api-route">/api/v1/verify-detached</div>
1093+
<div class="api-desc">Verify a detached CMS SignedData envelope against an original payload.</div>
10771094
</div>
10781095
<div class="api-card fade-up">
10791096
<span class="api-method api-method-get">GET</span>
10801097
<div class="api-route">/api/v1/health</div>
1081-
<div class="api-desc">Health check and service status. Returns uptime, loaded certificates, and signing statistics.</div>
1098+
<div class="api-desc">Liveness check. Returns <code>200 OK</code> when the service is up.</div>
1099+
</div>
1100+
<div class="api-card fade-up">
1101+
<span class="api-method api-method-get">GET</span>
1102+
<div class="api-route">/api/v1/status</div>
1103+
<div class="api-desc">Service status. Uptime, loaded certificates, signing statistics.</div>
1104+
</div>
1105+
<div class="api-card fade-up">
1106+
<span class="api-method api-method-get">GET</span>
1107+
<div class="api-route">/api/v1/certificate</div>
1108+
<div class="api-desc">Public certificate info for the active signer (subject, issuer, SKI, expiry).</div>
1109+
</div>
1110+
<div class="api-card fade-up">
1111+
<span class="api-method api-method-post">POST</span>
1112+
<div class="api-route">/api/v1/report-issue</div>
1113+
<div class="api-desc">Open a GitHub issue from the web UI (admin-authenticated, via configured GH token).</div>
10821114
</div>
10831115
<div class="api-card fade-up">
10841116
<span class="api-method api-method-get">GET</span>
1085-
<div class="api-route">/api/v1/certs</div>
1086-
<div class="api-desc">List available signing certificates. Shows subject, issuer, algorithm, and expiration.</div>
1117+
<div class="api-route">/admin/certs</div>
1118+
<div class="api-desc">Admin: list available signing certificates. Shows subject, issuer, algorithm, expiration.</div>
10871119
</div>
10881120
<div class="api-card fade-up">
10891121
<span class="api-method api-method-get">GET</span>
1090-
<div class="api-route">/api/v1/audit</div>
1091-
<div class="api-desc">Query audit log. Filter by user, action, time range. Returns structured JSON events.</div>
1122+
<div class="api-route">/admin/audit</div>
1123+
<div class="api-desc">Admin: query audit log. Filter by user, action, time range. Returns structured JSON events.</div>
1124+
</div>
1125+
<div class="api-card fade-up">
1126+
<span class="api-method api-method-post">POST</span>
1127+
<div class="api-route">/admin/reload</div>
1128+
<div class="api-desc">Admin: hot-reload config + trust store without a restart.</div>
10921129
</div>
10931130
</div>
1131+
<p class="section-desc fade-up" style="margin-top:24px;font-size:13px;opacity:0.7">RFC 3161 timestamping is exposed as a separate binding via <code style="color:var(--accent-cyan);font-family:var(--font-mono)">pki-sign tsa serve</code> (DER over HTTP). See the TSA section for details.</p>
10941132
</div>
10951133
</section>
10961134

0 commit comments

Comments
 (0)