C=USSchemas →

C=US Trust Registry

Anyone can ask C=US whether an agent is authorized, right now, to take an action on a resource, using the ToIP Trust Registry Query Protocol v2.0. The answer comes from the live directory by the same code the agent gateway uses to allow or refuse an agent's requests, so the two cannot disagree. Each answer is signed with the gateway's key and checked in this browser. Nothing a query sends can change a C=US decision.

Organization listing and internal agent records

The public agents and grants on this page belong to the author’s Maple Syrup worked example. They do not define what every organization must publish. In the intended distributed DIT, an entry such as o=Some Company,c=US identifies an organizational boundary and can refer to the organization’s own directory service. Internal agent records and grants remain under that organization’s administration, with access control lists governing disclosure. Listing an organization does not make all of its agents public or place their private keys in C=US custody. See the worked example and production architecture.

Calling it yourself

curl -s https://cequs.com/trust-registry/authorization -H 'Content-Type: application/json' \
  -d '{"entity_id":"wimse://cequs.com/agents/qc-maple-quality-001",
       "authority_id":"https://cequs.com/trust-registry",
       "action":"maple.lot.grade.propose","resource":"lot:qc:2026:017"}'

The answer carries the TRQP fields (authorized, time_requested, time_evaluated, message) plus a c_us block naming the agent's directory entry, the grant that covers it, and validUntil (five minutes). The proof is an Ed25519 signature over the rest of the answer as canonical JSON, under the key published at /agent-gateway/status. POST /trust-registry/recognition answers whether C=US recognizes another authority; today that is only the chained c=CA directory (https://cequs.com/trust-registry/c=CA, action directory.chain, resource c=CA). Errors are RFC 7807 problem objects.

Limits

Answers are for the present only: the directory keeps no history, so time_evaluated is always now. "Authorized" means an agent presenting its bound, unexpired certificate would be allowed; it does not prove that whoever holds the identifier holds the key. The registry is open, so it shows which demonstration agents hold which grants; a real deployment might require callers to identify themselves. At most 120 queries a minute are answered.

At production scale. LDAP is an access protocol. In the prototype, OpenLDAP is used to build the MVP only; in production, LDAP is how clients reach a distributed X.500 directory. The limit of 120 queries a minute is a setting for this one small demonstration server, not a property of X.500. Measured on 2026-10-10, a query here takes about 265 ms end to end, and about 170 ms of that is the demonstration gateway opening a fresh directory and database connection for each lookup; the directory searches themselves take well under a millisecond. Production X.500 servers holding the whole directory in memory on multicore hardware answer tens of thousands of queries a second; Isode cites that for its M-Vault directory, about 600,000 to 1,800,000 a minute. Since each answer here takes three or four searches, one such server could support several thousand authorization decisions a second, and read replicas behind a load balancer add more. The intended root holds naming and references to state and organization directory services; each organization administers its own agents, disclosure controls and authorization workload. At that scale the limit is not speed but how quickly a stop reaches every replica and every service that relies on these answers, each of which is valid for five minutes (the kill switch). See the critique response.