Skip to content

[graphql-alt] Add SignatureScheme union with simple signature types [1/n]#25657

Merged
tpham-mysten merged 3 commits intomainfrom
tpham-graphql-signature-scheme-simple
Mar 4, 2026
Merged

[graphql-alt] Add SignatureScheme union with simple signature types [1/n]#25657
tpham-mysten merged 3 commits intomainfrom
tpham-graphql-signature-scheme-simple

Conversation

@tpham-mysten
Copy link
Copy Markdown
Contributor

@tpham-mysten tpham-mysten commented Mar 1, 2026

Description

  • Convert user_signature.rs into a user_signature/ module directory to support upcoming submodules for complex signature types
  • Add a SignatureScheme GraphQL union type with Ed25519Signature, Secp256k1Signature, and Secp256r1Signature variants, each exposing parsed signature and publicKey fields

Test plan

How did you test the new or updated feature?

  • Unit test

Stack

Release notes

Check each box that your changes affect. If none of the boxes relate to your changes, release notes aren't required.

For each box you select, include information after the relevant heading that describes the impact of your changes that a user might notice and any actions they must take to implement updates.

  • Protocol:
  • Nodes (Validators and Full nodes):
  • gRPC:
  • JSON-RPC:
  • GraphQL: Introduce a new union SignatureScheme for UserSignature
  • CLI:
  • Rust SDK:
  • Indexing Framework:

@vercel
Copy link
Copy Markdown

vercel bot commented Mar 1, 2026

The latest updates on your projects. Learn more about Vercel for GitHub.

Project Deployment Actions Updated (UTC)
sui-docs Ready Ready Preview, Comment Mar 4, 2026 3:20am
2 Skipped Deployments
Project Deployment Actions Updated (UTC)
multisig-toolkit Ignored Ignored Preview Mar 4, 2026 3:20am
sui-kiosk Ignored Ignored Preview Mar 4, 2026 3:20am

Request Review

@tpham-mysten tpham-mysten temporarily deployed to sui-typescript-aws-kms-test-env March 1, 2026 03:49 — with GitHub Actions Inactive
@tpham-mysten tpham-mysten changed the title [graphql-alt] Add SignatureScheme union with simple signature types [graphql-alt] Add SignatureScheme union with simple signature types [1/n] Mar 1, 2026
@tpham-mysten tpham-mysten force-pushed the tpham-graphql-signature-scheme-simple branch from 848e370 to cf1ff0a Compare March 1, 2026 08:44
@tpham-mysten tpham-mysten temporarily deployed to sui-typescript-aws-kms-test-env March 1, 2026 08:44 — with GitHub Actions Inactive
Copy link
Copy Markdown
Contributor

@amnn amnn left a comment

Choose a reason for hiding this comment

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

Some nits and hardening comments, but otherwise looks good, thanks @tpham-mysten

@tpham-mysten tpham-mysten temporarily deployed to sui-typescript-aws-kms-test-env March 4, 2026 02:53 — with GitHub Actions Inactive
Copy link
Copy Markdown
Contributor Author

@tpham-mysten tpham-mysten left a comment

Choose a reason for hiding this comment

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

Thanks for the review! I have resolved all comments

…25658)

## Description 
- Add `MultisigSignature` variant to the `SignatureScheme` GraphQL union
- Introduce `MultisigMemberSignature` (flat struct with
`MultisigMemberSignatureScheme` enum), `MultisigCommittee`,
`MultisigMember`, and `MultisigMemberPublicKey` (union) types
- `MultisigMemberPublicKey` uses a union with `ZkLoginPublicIdentifier`
(exposing `iss` + `addressSeed`) since it's structurally different from
other key types
- `MultiSigLegacy` is converted to `MultiSig` via `TryFrom` to reuse a
single code path
- ZkLogin public identifier conversion follows the same approach as gRPC
(`rpc_proto_conversions.rs:1620`) — going through `sui_sdk_types`

## Test plan 

How did you test the new or updated feature?

- Unit test

---

## Stack
- #25657 
- #25658 <-
- #25659 

## Release notes

Check each box that your changes affect. If none of the boxes relate to
your changes, release notes aren't required.

For each box you select, include information after the relevant heading
that describes the impact of your changes that a user might notice and
any actions they must take to implement updates.

- [ ] Protocol: 
- [ ] Nodes (Validators and Full nodes): 
- [ ] gRPC:
- [ ] JSON-RPC: 
- [ ] GraphQL: 
- [ ] CLI: 
- [ ] Rust SDK:
- [ ] Indexing Framework:
@tpham-mysten tpham-mysten temporarily deployed to sui-typescript-aws-kms-test-env March 4, 2026 03:19 — with GitHub Actions Inactive
@tpham-mysten tpham-mysten merged commit 8bdfbd2 into main Mar 4, 2026
58 of 59 checks passed
@tpham-mysten tpham-mysten deleted the tpham-graphql-signature-scheme-simple branch March 4, 2026 03:52
tpham-mysten added a commit that referenced this pull request Mar 4, 2026
…25659)

## Description 

- Add `ZkLoginSignature` variant exposing `maxEpoch` and the inner
`userSignature`
- Add `PasskeySignature` variant exposing `authenticatorData`,
`clientDataJson`, and the inner `userSignature`

## Test plan 

How did you test the new or updated feature?

- Unit test

---

## Stack
- #25657 
- #25658 
- #25659 <-

## Release notes

Check each box that your changes affect. If none of the boxes relate to
your changes, release notes aren't required.

For each box you select, include information after the relevant heading
that describes the impact of your changes that a user might notice and
any actions they must take to implement updates.

- [ ] Protocol: 
- [ ] Nodes (Validators and Full nodes): 
- [ ] gRPC:
- [ ] JSON-RPC: 
- [ ] GraphQL: 
- [ ] CLI: 
- [ ] Rust SDK:
- [ ] Indexing Framework:
jessiemongeon1 pushed a commit to jessiemongeon1/sui that referenced this pull request Mar 5, 2026
…1/n] (MystenLabs#25657)

## Description 

- Convert `user_signature.rs` into a `user_signature/` module directory
to support upcoming submodules for complex signature types
- Add a `SignatureScheme` GraphQL union type with `Ed25519Signature`,
`Secp256k1Signature`, and `Secp256r1Signature` variants, each exposing
parsed `signature` and `publicKey` fields

## Test plan 

How did you test the new or updated feature?

- Unit test

---

## Stack
- MystenLabs#25657 <-
- MystenLabs#25658
- MystenLabs#25659 

## Release notes

Check each box that your changes affect. If none of the boxes relate to
your changes, release notes aren't required.

For each box you select, include information after the relevant heading
that describes the impact of your changes that a user might notice and
any actions they must take to implement updates.

- [ ] Protocol: 
- [ ] Nodes (Validators and Full nodes): 
- [ ] gRPC:
- [ ] JSON-RPC: 
- [x] GraphQL: Introduce a new union `SignatureScheme` for
`UserSignature`
- [ ] CLI: 
- [ ] Rust SDK:
- [ ] Indexing Framework:
jessiemongeon1 pushed a commit to jessiemongeon1/sui that referenced this pull request Mar 5, 2026
…ystenLabs#25659)

## Description 

- Add `ZkLoginSignature` variant exposing `maxEpoch` and the inner
`userSignature`
- Add `PasskeySignature` variant exposing `authenticatorData`,
`clientDataJson`, and the inner `userSignature`

## Test plan 

How did you test the new or updated feature?

- Unit test

---

## Stack
- MystenLabs#25657 
- MystenLabs#25658 
- MystenLabs#25659 <-

## Release notes

Check each box that your changes affect. If none of the boxes relate to
your changes, release notes aren't required.

For each box you select, include information after the relevant heading
that describes the impact of your changes that a user might notice and
any actions they must take to implement updates.

- [ ] Protocol: 
- [ ] Nodes (Validators and Full nodes): 
- [ ] gRPC:
- [ ] JSON-RPC: 
- [ ] GraphQL: 
- [ ] CLI: 
- [ ] Rust SDK:
- [ ] Indexing Framework:
tpham-mysten added a commit that referenced this pull request Mar 6, 2026
#25696)

## Description 

- Add `inputs`, `publicIdentifier`, and `jwkId` fields to
`ZkLoginSignature` to match the gRPC interface

## Test plan 

How did you test the new or updated feature?
`cargo check -p sui-indexer-alt-graphql`

---

## Stack
- #25657 
- #25658 
- #25659
- #25696 <-

## Release notes

Check each box that your changes affect. If none of the boxes relate to
your changes, release notes aren't required.

For each box you select, include information after the relevant heading
that describes the impact of your changes that a user might notice and
any actions they must take to implement updates.

- [ ] Protocol: 
- [ ] Nodes (Validators and Full nodes): 
- [ ] gRPC:
- [ ] JSON-RPC: 
- [ ] GraphQL: 
- [ ] CLI: 
- [ ] Rust SDK:
- [ ] Indexing Framework:
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.

2 participants