Follow-up to #337, which is explicit that the endpoint is not proof of possession.
GET /api/identity echoes the compressed public key derived from APP_IDENTITY. Governance CI compares it against the identity declared in the registry PR, which catches a registry entry pointing at an instance running a different key, or at nothing at all. It cannot catch impersonation: the value is already published in the registry, so a static file or a proxy to another operator's instance satisfies the check equally well.
Proving possession needs the instance to sign something the caller chooses. The Provider does not sign anything with APP_IDENTITY today — it only derives a public key from it — so this waits on the Provider gaining a signing path in general. When it does:
- accept a caller-supplied nonce, return a signature over a domain-prefixed payload (e.g.
igniter-identity-attestation:<nonce>), and let CI verify it with the existing verifySignature;
- keep the domain prefix so a public endpoint can never be used to sign arbitrary payloads;
- the current response shape does not have to change to add this.
Note that APP_IDENTITY is documented as a key that must hold no funds, which is what makes a signing endpoint acceptable in the first place.
Follow-up to #337, which is explicit that the endpoint is not proof of possession.
GET /api/identityechoes the compressed public key derived fromAPP_IDENTITY. Governance CI compares it against the identity declared in the registry PR, which catches a registry entry pointing at an instance running a different key, or at nothing at all. It cannot catch impersonation: the value is already published in the registry, so a static file or a proxy to another operator's instance satisfies the check equally well.Proving possession needs the instance to sign something the caller chooses. The Provider does not sign anything with
APP_IDENTITYtoday — it only derives a public key from it — so this waits on the Provider gaining a signing path in general. When it does:igniter-identity-attestation:<nonce>), and let CI verify it with the existingverifySignature;Note that
APP_IDENTITYis documented as a key that must hold no funds, which is what makes a signing endpoint acceptable in the first place.