{
  "rain_version": 2,
  "alg": "ML-DSA-65+Ed25519",
  "canonicalization": "deep key-sorted compact JSON; signature covers canonical(body||hmk||chain)",
  "keys": [
    {
      "key_id": "catalyst-prov-2026-07",
      "ml_dsa_65": {
        "public_key_hex": "aefae0d12f720b742347aae19abd058f5cbb511e85ff631b19b4f517a6ffd030a9e48aeddae08ce114e694ab114cc824a7d9ab1f16531e8633b31ac2c33aec1be8d5cf154f19263b1db1253e305837054a8674770bd05526f181411200777fc214ca1f95878399e6ad6a54c6c0f259c4392b1cfdf14b1da5c0373103dfbd77d06cb01dbf6d363d846a1296d70556f64367b04a12726a57ff5a35e641cfa137ad22b6a8e28469d84b1b4318a6261f475a88706ce6e0f783d8e4c424d24945a0fab3d78debb16a22bd7694dc93cdbcf686787c698f239ca76a2178ae530a37723f22047c6b1793a74c16bdb600ce60545b699fb05ae5191cb5e98910cb466dd9fc12c55732d4f3c43ca33c7a5188de0b99ca60a195f8d07c09584a95ce33b9b3c0ef2afd5f8de6bb6faf5ad221370e6c470f4abc17ea09593019f3d0e7cdca7ffedd335626e0a3c1b53a4771d887771d37e903a92a34e6fbacbe77955b97cd2f15373fe81ec783773edee8c02819b25870f0ecf5150c437eab0c67791b17f7896017d563fcbea32401c39fc68ba13ef44f886cf601cc46a0cf25754aabcaebc3543062434898ed3205546240cf352507b83d16a73eac0b760ca1755d6dc04d1232c3fb2bffb9ef02336b90502ca5728f4163b134255214ed5ff387b1796288ac0bea4894e099453138e07bd65606f7d5f751a274c8d55fde9ba193d990f5bf4b9a794c06f0c16a7256027238b06fd92c0092367dd22a0101906d0ade4dd6fcb13cdf3f890385f69595987e0e3ba368c8cf1d5abe426a128c766ca2e56e5837d7249a4d27108da5012d6ff9ab3b565b81c3fbcd4439ea2d61c48e91b17d9a0dfab4402f9b55936448105f5fe2a88e8129b636d32d0bf096e1dbf1e786194ec77edc2a99a617d3ede11933711d890dd600429cf1171b2727e59e47138f43d2b14a1d8965623cd0ecd65b21315c7cce47021696ddebc15b1fade3078fc5e38b272945c65c0d0bd7811314ab14788a680965a5e6d95d3a66c06f945b1067d82778fee87c5f05384e0ca52c7c732453d2df2dd793e058bfcf370ef815855783363ddb9d45b01a48aba3913f3292d2256faa1f669c710523b4bf6aeba93d0dcac1a864bb54a8ba2a0ee90bbf01de9581904b5b5e161b201697dd79fafb81e02eec5d0917cd000e0fc74258f7bd07136b63de984784823b85fcc227dc2d14dac52db231e24f3d5e8d8df000dc51e578ff7cc50b271b6bba08ef33cd23bcbd93878f9bd09325e918210bbba88b83aea7966337488fe3556efeb2afc797570acede5de2a22f05b16b956127199db84aa9d7c26de7b9894e40455012956e7a5b34edd218197f05210e13a2ee52742d67870c2601d59279807426d7ecbefa2da3ac1f55954c800623c1347f78e2d896d9f07c9ac954dd16570424577ec9128a8a7a7362eb236b226fb48198d97d87433acbb1fc404c705fff160453f28d822da3d7caeaeb52b5deb9b8dbabf12a2966b439c73b99987891720c3866405272943c146776c4278898c2f15a781382d796a38d54c5d984ec46096c3287382276b376c8a61dc32bcdd201716da0ffe878419c6a40afe75628aef6f67e75a136fb065eb90d773521afd07792d4e474860cb30cef138c6cd34a317bd33256e7a8fb4c1d6fac2a546b4df50b287b2cef76b5136da69879d96cd1bdff3e49ed85ac2d2d06bc8493d46fbca0b1fa2464c5d44a43da81e8f1dfb89a1e36caf24dd0092f7e9e83b37013ce0e6c9a52c31593c36d6cf22b4510d1257c0cf4594ee81c530ddea8be9b76dd759e3bfed5cc034d2845af902f2fb71567c33e5f30cabab3af994f2a97772aa2e04d1b6be6274e9046f576de97d483fab1681e33fab902019d0a02e6f7a1f4de7528e5511e6323cb90bba480deee51ad61dcaf6120e8ad8eee06e6a4f52cbf3346008d45802720a7c095587301ee9211d0aa05194dc67eb04a241eaa85add6d8d05581cc9f7aea1d7c30a7ed355cde515f56fb0509543e3c9fbfcf3e7451ef41c5445f996951e45cd86b8c009712869c5ee6380edc4a4b895a040d0fb6c9ab7665657257c0279dab9c248a5d5703190437a2fc56c38dcc03f8cd264e6dba69869eb7ee5420b7887eaa70ba517f91110ad25486b2056b9a264b4b5d264a60f255e80919f811b892d9ec6c4666218dd312ab46597bbfb10c5d435ee6fce6950673778968321770a70bca3be68897b79766bf82de70bb0f01a7b965cbc91100bcf4a55df4980259e5cf7fb8c2b00d9c94b6f6e94c30a92b5f4157481bbef752423b4698596ee0802fec500337b4e4f518f2fe969caaa859f00fcfe1b6a8e4ee9848664cd03e92875f816543f7b8f70cb34ebde9141ed91385036532cb009d6a7f4bc6b1d97ca51e9fb053aeaf8a497a34d4a64565c569a84af150ab4d74d6de0e847d98c60f2a31e24b175838bb2c49440c6d8030ac8fae85493ec72a61fa8fa358fdb3a56446c83bd512206248211b13bbfe4010b59ad26ded8071d8f9ce82ecec25ad692fd36cebc765c9bcbd51f88216266eb4733c1d9874045c198e7922c108c8a3d1a53c4beb180a98a5d0b0f7aef37b6101644b5e0b51a1ed2c5f2e6632a6b7fe026d956c106cf7f16c04ab8d104ae2149c6e34311b5621f2c13466337c651bbc300aa82091eed0823a3dd5d5a60f358df604de93a70167388bc513244f709d6e23785dadf7fc1f161ff546bad84521badbdaf3be86a97c30b7b9550a13dffd4a",
        "standard": "NIST FIPS 204 (ML-DSA-65)",
        "bytes": 1952
      },
      "ed25519": {
        "public_key_hex": "3818c0decf4fdbba75e77ba65a7c7729d64f8cfd68abea86763742c06461d544",
        "bytes": 32
      },
      "created": "2026-07-31"
    }
  ],
  "endpoints": {
    "verify": "POST /rain/verify (public, no auth)",
    "head": "GET /rain/head",
    "record": "GET /rain/rec/{id}",
    "list": "GET /rain/list"
  }
}