Skip to content

feat: distinguish Ed25519 and Smart Wallet authorization types#296

Open
Okorie2000-code wants to merge 1 commit into
Toolbox-Lab:mainfrom
Okorie2000-code:feat/issue-271-ed25519-smart-wallet-signatures
Open

feat: distinguish Ed25519 and Smart Wallet authorization types#296
Okorie2000-code wants to merge 1 commit into
Toolbox-Lab:mainfrom
Okorie2000-code:feat/issue-271-ed25519-smart-wallet-signatures

Conversation

@Okorie2000-code

Copy link
Copy Markdown
Contributor

Summary

  • Detect Ed25519 and Smart Wallet authorization types by inspecting the strkey prefix of the authorizing address (G... = Ed25519, C... = Smart Wallet).
  • Add SignatureKind enum (Ed25519 / SmartWallet / Unknown) and AuthSignatureInfo struct to auth_signature.rs.
  • Add decode_auth_entry_signature_info() function that returns structured type information.
  • Add signature_kind() method to AddressCredential in auth.rs.
  • Add render_auth_credential() to renderers.rs:
    • Ed25519: displays label, public key, and decoded signature hex.
    • Smart Wallet: displays label and contract ID.
    • SourceAccount: displays brief note.
  • Export SignatureKind and AuthSignatureInfo from prism_core root and decode module.
  • Fix pre-existing duplicate pub mod decode_context; in decode/mod.rs.
  • Preserve all existing behavior — no breaking changes.

Tests Added

  • signature_kind_from_g_address_is_ed25519
  • signature_kind_from_c_address_is_smart_wallet
  • signature_kind_from_unknown_prefix_is_unknown
  • signature_kind_from_empty_address_is_unknown
  • auth_signature_info_ed25519_from_account_address
  • auth_signature_info_smart_wallet_from_contract_address
  • contract_id_extracted_for_smart_wallet
  • decode_auth_entry_signature_info_invalid_payload
  • decode_auth_entry_signature_info_source_account_returns_none
  • existing_decode_auth_entry_signatures_unchanged
  • address_credential_ed25519_kind_from_account_address
  • address_credential_smart_wallet_kind_from_contract_address

Validation

cargo fmt --all -- --check
cargo check
cargo test

All checks pass.

Closes #271

- Add SignatureKind enum (Ed25519 / SmartWallet / Unknown) to auth_signature.rs
- Add AuthSignatureInfo struct that combines kind, address, and decoded signatures
- Add decode_auth_entry_signature_info() function returning AuthSignatureInfo
- Add signature_kind() method to AddressCredential in auth.rs
- Add render_auth_credential() renderer in renderers.rs for human-readable output
  - Ed25519: shows 'Ed25519' label, public key, and signature hex
  - Smart Wallet: shows 'Smart Wallet' label and contract ID
- Export SignatureKind and AuthSignatureInfo from prism_core and decode module
- Fix pre-existing duplicate pub mod decode_context; declaration in mod.rs
- Add focused tests: SignatureKind detection, Ed25519/SmartWallet from XDR,
  contract ID extraction, invalid payload, source account, existing behavior

Closes Toolbox-Lab#271
@codeZe-us

Copy link
Copy Markdown
Contributor

@Okorie2000-code fix merge conflicts

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.

Distinguish Between Ed25519 and Smart Wallet Signatures

2 participants