Skip to content

mtpublisher: Add skeleton that pushes dummy cosignatures#8793

Merged
beautifulentropy merged 2 commits into
mainfrom
mtpublisher-skeleton
Jun 12, 2026
Merged

mtpublisher: Add skeleton that pushes dummy cosignatures#8793
beautifulentropy merged 2 commits into
mainfrom
mtpublisher-skeleton

Conversation

@beautifulentropy

@beautifulentropy beautifulentropy commented Jun 9, 2026

Copy link
Copy Markdown
Member

Add boulder-mtpublisher, a daemon that polls the MTC metadata keyspace for the latest checkpoint lacking a mirror cosignature and write a dummy one against the configured log. Give the dummy cosignature the right shape (a 72-byte Ed25519 timestamped_signature per c2sp.org/tlog-cosignature: an 8-byte BE timestamp followed by a 64-byte signature) but leave the signature bytes zero.

Also make the mtcmeta_44947_4_1_0_44 schema available in Vitess. Rename sa/db/01-mtca.sql to 01-mtcmeta_44947_4_1_0_44.sql, which is uglier. However, the Vitess test-server builds each keyspace's schema by globbing sa/db/*<keyspace>.sql, so the filename has to end with the keyspace name or the schema is (silently) left empty.

Fixes #8762

@beautifulentropy beautifulentropy force-pushed the mtpublisher-skeleton branch 7 times, most recently from c789955 to 259dcd0 Compare June 10, 2026 17:00
@beautifulentropy beautifulentropy marked this pull request as ready for review June 10, 2026 17:01
@beautifulentropy beautifulentropy requested a review from a team as a code owner June 10, 2026 17:01
@github-actions

Copy link
Copy Markdown
Contributor

@beautifulentropy, this PR appears to contain configuration and/or SQL schema changes. Please ensure that a corresponding deployment ticket has been filed with the new values.

@letsencrypt letsencrypt deleted a comment from github-actions Bot Jun 10, 2026
@beautifulentropy beautifulentropy force-pushed the mtpublisher-skeleton branch 3 times, most recently from 42a132b to e45ef3b Compare June 10, 2026 17:52
@beautifulentropy

Copy link
Copy Markdown
Member Author

Apologies for the force push, wanted to clean up some comments.

@jsha jsha left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Looks great, thanks for working on this! A few requested changes below.

Comment thread mtpublisher/mtpublisher.go Outdated
Comment thread mtpublisher/mtpublisher.go Outdated
Comment thread mtpublisher/mtpublisher.go Outdated
Comment thread mtpublisher/mtpublisher.go Outdated
@beautifulentropy beautifulentropy requested a review from jsha June 11, 2026 18:51
Comment on lines +31 to +33
// MirrorID identifies the cosigner this publisher writes alongside each
// cosignature (e.g. "32473.9").
MirrorID string `validate:"required"`

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

hyper-nit: indicate that this is a placeholder value. totally optional if this will be replaced quickly.

Comment on lines +57 to +58
// dummyCosignature returns a dummy Ed25519 tlog-cosignature: a big-endian
// uint64 timestamp followed by the Ed25519 signature.

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Two comments:

  1. Why Ed25519? We don't use it anywhere else in boulder so far. Why not ECDSA, or totally random bytes?
  2. Comment says that its a timestamp followed by a signature, but the actual return value here always has zeroes for the signature bytes.

@beautifulentropy beautifulentropy Jun 12, 2026

Copy link
Copy Markdown
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

  1. https://github.com/C2SP/C2SP/blob/main/tlog-cosignature.md specifies two cosignature types: one based on Ed25519, and one based on ML-DSA-44. Totally random bytes would be the wrong shape.
  2. 0s seemed like the correct call, we don't want anyone/anything attempting to verify these. If they are 0s that becomes fairly obvious.

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

FWIW, when I added genmtpki.go I made the wrong choice (to use ECDSA), not realizing that tlog only specifies Ed25519 and ML-DSA-44. I can update that - either to Ed25519, or possibly straight to ML-DSA once #8787 is resolved.

@beautifulentropy beautifulentropy merged commit 0e4a75a into main Jun 12, 2026
19 checks passed
@beautifulentropy beautifulentropy deleted the mtpublisher-skeleton branch June 12, 2026 21:23
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Stand up skeleton MTC publisher

3 participants