- Dockerfile: multi-stage (golang:1.23-alpine3.21 → distroless/static:nonroot),
CGO off, trimpath, stripped, UID/GID 65532, read-only rootfs friendly.
- deploy/signing-service/: ServiceAccount, Deployment (2 replicas, probes,
tight SecurityContext), ClusterIP Service on :8081, NetworkPolicy
(ingress from agent-trust, DNS egress), example Secret, and README with
the full dev + prod secret convention.
- .forgejo/workflows/build-images.yml: builds image on push + PR,
pushes :<git-sha> + :main to harbor.basicstack.de on main pushes only.
Clone pattern matches validate.yml (sha256 repo, manual git clone).
- README updates: service README gains Deployment section; repo README
layout now mentions services/signing-service, services/transparency-log,
deploy/, and the new workflow.
Scope matches DEV-605. OpenBao, OPA and Pocket-ID JWKS stay stubs and move
in their own follow-up subtasks; the prod secret shape is documented so
those subtasks can plug in without reshaping the Deployment.
Co-Authored-By: Paperclip <noreply@paperclip.ing>
- services/signing-service/pkg/httpapi exposes NewTestHandler so sibling
modules can build the real signing-service in-process (same pattern
transparency-log already uses).
- services/admin-api/internal/attest/interop_signing_test.go drives the real
attest.HTTPSigner against the real signing-service handler and asserts the
end-to-end ADR-0005 round-trip: envelope shape, keyid, content_hash
self-consistency across canonicalisers, Ed25519 signature verification
with the server's public key, and canonical-payload byte equality.
Closes the "Interop-Test: admin-api attest.HTTPSigner-Client erfolgreich
gegen diesen Server" acceptance criterion from DEV-599.
Co-Authored-By: Paperclip <noreply@paperclip.ing>