mirror of
https://github.com/zooai/kms.git
synced 2026-10-30 14:49:52 +00:00
2.1 KiB
2.1 KiB
kms — AI Assistant Context
Zoo runs the sovereign image ghcr.io/zooai/kms:<ver> (thin pin over luxfi/kms + Zoo
branding). Live: do-sfo3-zoo-k8s ns zoo-kms, statefulset kms (1 node), PVC
data-kms-0 on do-block-storage-retain.
2026-07-15 — KMS↔MPC wire fix (v1.12.3) PROVEN; live upgrade STAGED
zooai/kms:1.12.3(pinluxfi/kms:1.12.3, wire-fix commit7105376) is BUILT. The fix realigns the KMS↔MPC ZAP signing wire to the mpcd contract:SignRequest{vault_id, wallet_id,payload}, snake_caseKeygenResult, andZapClient.call()surfaces a daemon{"error":…}frame as a REAL error — killing the false-green empty-signature path.- End-to-end wire fix PROVEN against the fixed zoo ring via an ephemeral no-master-key
KMS v1.12.3 pod (
mpc ready=true peers=4/4):POST /v1/kms/keys/generatecreated a genuine degree-2 wallet (713f5c2d…, pub0360ac6b…) on the ring;POST /v1/kms/keys/{id}/sign key_type=blsreturned a real ECDSA sig (R,S) that VERIFIES against the wallet pubkey. (SignResponse.signatureconcat field is empty while R/S are populated — informational follow-up: mpcd KMS-ZAP should populate the concatenated signature.) Corona/ed25519 over the KMS-ZAP keygen is still single-curve (secp256k1 only) — a known follow-up. - LIVE zoo-kms upgrade to 1.12.3 is STAGED, NOT rolled. Current zoo-kms is
1.11.8, secrets-only (MPC_VAULT_IDempty,ZAP_PORT=0) with a legacyKMS_MASTER_KEY_B64REK, so it does NOT MPC-sign → NOT exposed to the false-green bug. Blocker: v1.12.3's/v1/sdkplane fires a MANDATORY consensus authorizer (buildConsensusAuthorizer, "refuses to boot fail-open") whenever a REK/master key is loaded — independent ofZAP_PORT. So a live upgrade that keeps the master key MUST also setKMS_CONSENSUS_VALIDATORS+KMS_CONSENSUS_ OPERATORS(orKMS_CONSENSUS_FILE), else crashloop. Enabling MPC-backing itself only needsMPC_VAULT_ID=zoo+MPC_ADDR=mpc-node-{0..4}.mpc-node-headless.zoo-mpc.svc:9653(no authority needed) — the wire fix is braided with the authorizer in one release; that coupling is what blocks the live roll.