···6262 eprint!("{e}");
6363 return ExitCode::FAILURE;
6464 }
6565+ if let Some(key) = config.secrets.plc_rotation_key.as_deref()
6666+ && let Err(reason) = tranquil_pds::plc::validate_rotation_did_key(key)
6767+ {
6868+ eprintln!("secrets.plc_rotation_key (PLC_ROTATION_KEY) {reason}");
6969+ return ExitCode::FAILURE;
7070+ }
6571 if !*ignore_secrets
6672 && let Some((cert, key)) = config.server.tls.material()
6773 && let Err(e) = tls::load_certified_key(cert, key)
···87938894 if let Err(e) = config.validate(false) {
8995 error!("{e}");
9696+ return ExitCode::FAILURE;
9797+ }
9898+9999+ if let Some(key) = config.secrets.plc_rotation_key.as_deref()
100100+ && let Err(reason) = tranquil_pds::plc::validate_rotation_did_key(key)
101101+ {
102102+ error!("secrets.plc_rotation_key (PLC_ROTATION_KEY) {reason}");
90103 return ExitCode::FAILURE;
91104 }
92105
+5-3
example.toml
···44# Can also be specified via environment variable `PDS_HOSTNAME`.
55#
66# Required! This value must be specified.
77-#hostname = "pds.example.com"
77+#hostname =
8899# Address to bind the HTTP server to.
1010#
···2424# Defaults to the PDS hostname when not set.
2525#
2626# Can also be specified via environment variable `PDS_USER_HANDLE_DOMAINS`.
2727-#user_handle_domains = ["example.com"]
2727+#user_handle_domains =
28282929# Enable PDS-hosted did:web identities. Hosting did:web requires a
3030# long-term commitment to serve DID documents; opt-in only.
···200200# Can also be specified via environment variable `MASTER_KEY`.
201201#master_key =
202202203203-# PLC rotation key (DID key). If not set, user-level keys are used.
203203+# Optional operator-held PLC recovery key, as a public `did:key`. The PDS
204204+# continues to sign PLC operations with the per-account signing key, which
205205+# always remains in `rotationKeys`.
204206#
205207# Can also be specified via environment variable `PLC_ROTATION_KEY`.
206208#plc_rotation_key =