Skip to content

Feat/verified identities - #102

Merged
jhateley-godaddy merged 10 commits into
mainfrom
feat/verified-identities
Aug 18, 2026
Merged

Feat/verified identities#102
jhateley-godaddy merged 10 commits into
mainfrom
feat/verified-identities

Conversation

@jhateley-godaddy

Copy link
Copy Markdown
Collaborator

Related issue

Fixes #86

Summary

This branch adds Verified Identity support to the ANS Java SDK. A Verified Identity is a first-class object with its own lifecycle, separate from agent registration. The branch covers three areas: identity management, control-proof signing, and transparency-log reads.

Identity management (ans-sdk-registration)

The new IdentityClient gives access to the eight Registration Authority operations on the /v2/ans/identities surface: register, list, get details, rotate, verify control, revoke, link to agents, and unlink. An internal IdentityService does the HTTP work. An IdentityPaths helper builds the request paths.

Register and rotate return a 202 challenge round. The identity is not sealed until the caller completes the challenge and submits a control proof to verify-control. A link request carries at most 256 agents. The client offers both synchronous and asynchronous (CompletableFuture) call styles.

Control-proof signing (ans-sdk-crypto)

The new IdentityProofSigner signs the control-proof challenge as a compact JWS string, one per proven key. It supports the three algorithms the verifier implements: EdDSA (Ed25519), ES256 (ECDSA P-256), and RS256 (RSA 2048 or more). It reads the algorithm from the private key. It rejects key-agreement keys and curves with no verifier before it signs.

The served signing input becomes the JWS payload without change, because the RA checks payload equality before signature. This work adds a dependency on Nimbus JOSE 10.0.2.

Transparency-log reads (ans-sdk-transparency)

TransparencyClient gains identity reads: get identity badge, identity audit, identity receipt, identity linked agents, agent identities, and agent identity history. Each read has an async variant.

The agent badge now includes the joined verified identities. The badge caps its inline identity list at 25 entries. A caller pages the full set through the agent-identities read, which reports the total count. New models cover these responses: AgentIdentitiesResponse, IdentityLinkedAgentsResponse, and LinkedAgentView.

A new TlLeafUncommittedException maps the retryable 503 TL_LEAF_UNCOMMITTED condition. This condition means a leaf is committed but no signed checkpoint covers it yet. The exception carries the Retry-After delay and reports itself as retryable.

The branch also adds V2 schema handling for transparency-log events. It adds the V2 models EventV2, AttestationsV2, CertificateInfoV2, DnsRecordV2, ProducerV2, and TransparencyLogV2.

Testing

Unit tests added for all new code paths and coverage held > 90%.
E2E testing performed against locally running RA/TL.

AI assistance

Checklist

  • The PR title follows Conventional Commits — release notes are generated from it
  • Tests cover the change
  • The linked issue above uses a closing keyword
  • Every commit is signed off (git commit -s) certifying the DCO

Add IdentityProofSigner in ans-sdk-crypto. It builds compact JWS
control proofs that bind a verified identity to an agent key. Add the
nimbus-jose-jwt dependency and unit tests.

Signed-off-by: James Hateley <jhateley@godaddy.com>
Add IdentityService and IdentityClient in ans-sdk-registration for
Verified-Identity management, with IdentityPaths for the endpoint
paths. Add unit tests for the client, service, paths, and the
registration client error paths.

Signed-off-by: James Hateley <jhateley@godaddy.com>
Add transparency-log reads for verified identities (getAgentIdentities,
getAgentIdentityHistory, and linked-agent lookups) and the v2 event
schema models. Join verified identities onto agent badges and add
TlLeafUncommitted error handling. Add unit tests and model coverage.

Signed-off-by: James Hateley <jhateley@godaddy.com>
Comment thread ans-sdk-crypto/src/main/java/com/godaddy/ans/sdk/crypto/IdentityProofSigner.java Outdated
Comment thread gradle.properties Outdated
Signed-off-by: James Hateley <jhateley@godaddy.com>
Signed-off-by: James Hateley <jhateley@godaddy.com>
Signed-off-by: James Hateley <jhateley@godaddy.com>
Signed-off-by: James Hateley <jhateley@godaddy.com>
Signed-off-by: James Hateley <jhateley@godaddy.com>
Signed-off-by: James Hateley <jhateley@godaddy.com>
Signed-off-by: James Hateley <jhateley@godaddy.com>

@bchen-godaddy bchen-godaddy left a comment

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

LGTM

@jhateley-godaddy
jhateley-godaddy merged commit ef800c0 into main Aug 18, 2026
3 checks passed
@jhateley-godaddy
jhateley-godaddy deleted the feat/verified-identities branch August 18, 2026 06:36
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

feat: sync with ans Verified Identities (did:web + did:key)

2 participants