docs: correct licence scheme to ECDSA P-384 with SHA-256
hyperboloide/lk signs with ECDSA P-384 and SHA-256, not ed25519, and encodes keys as base32 rather than hex. Probed in task 1 of the licensing-core plan. Design is unaffected — only the prose was wrong.
This commit is contained in:
@@ -849,7 +849,7 @@ Expected: no output.
|
||||
- [ ] **Step 6: Rate-limit the licence endpoint**
|
||||
|
||||
There is no oracle here worth protecting — the blob is signed public data — but an
|
||||
unbounded verify endpoint is an unbounded CPU endpoint, and ed25519 verification
|
||||
unbounded verify endpoint is an unbounded CPU endpoint, and signature verification
|
||||
is not free.
|
||||
|
||||
Add to `server/internal/api/licence.go`:
|
||||
|
||||
@@ -2,11 +2,11 @@
|
||||
|
||||
> **For agentic workers:** REQUIRED SUB-SKILL: Use superpowers:subagent-driven-development (recommended) or superpowers:executing-plans to implement this plan task-by-task. Steps use checkbox (`- [ ]`) syntax for tracking.
|
||||
|
||||
**Goal:** Add `shared/license`, the ed25519-signed licence payload with offline verification, plus `lkctl` to issue licences by hand.
|
||||
**Goal:** Add `shared/license`, the signed licence payload with offline verification, plus `lkctl` to issue licences by hand.
|
||||
|
||||
**Architecture:** A new package inside the existing `shared` module, so the control plane (verifier) and the future admin service (signer) read one struct definition. Signing is excluded from the server binary by a build tag; the trusted public keys are compiled in as a slice. No network calls anywhere — verification checks a signature, an expiry, a deployment mode and an instance ID, and asks nobody's permission.
|
||||
|
||||
**Tech Stack:** Go 1.26, `github.com/hyperboloide/lk` (ed25519 + base32), the existing `shared` module.
|
||||
**Tech Stack:** Go 1.26, `github.com/hyperboloide/lk` (ECDSA P-384 + SHA-256, base32), the existing `shared` module.
|
||||
|
||||
**No automated tests.** Verification is by compiler, a probe command, and `lkctl` round trips at the command line. Every task ends with observable output.
|
||||
|
||||
@@ -168,7 +168,7 @@ Create `shared/license/license.go`:
|
||||
// Package license defines the Vantage licence payload and its offline
|
||||
// verification.
|
||||
//
|
||||
// A licence is an ed25519-signed blob. The server checks a signature, an
|
||||
// A licence is a signed blob (ECDSA P-384 with SHA-256). The server checks a signature, an
|
||||
// expiry, a deployment mode and an instance ID, and asks nobody's permission.
|
||||
// That buys air-gapped self-hosting and means no instance depends on the
|
||||
// licensing service being reachable.
|
||||
|
||||
Reference in New Issue
Block a user