Skip to content

Add Ed25519-to-X25519 WASM functions for session key vault access#26

Merged
skgbafa merged 1 commit intomainfrom
feat/vault-session-key-encryption
Mar 3, 2026
Merged

Add Ed25519-to-X25519 WASM functions for session key vault access#26
skgbafa merged 1 commit intomainfrom
feat/vault-session-key-encryption

Conversation

@skgbafa
Copy link
Contributor

@skgbafa skgbafa commented Mar 3, 2026

Summary

  • Adds vault_ed25519_seed_to_x25519() — converts Ed25519 seed to X25519 key pair via SHA-512 (standard conversion)
  • Adds vault_ed25519_pub_to_x25519() — converts Ed25519 public key to X25519 via Edwards→Montgomery birational map
  • Adds curve25519-dalek dependency for the public key point conversion

These enable session keys (Ed25519, embedded in share tokens) to derive X25519 keys for vault grant operations, removing the requirement for wallet signatures when accessing shared encrypted content.

Test plan

  • cargo check --target wasm32-unknown-unknown passes
  • cargo test in tinycloud-sdk-wasm passes
  • Verify Ed25519→X25519 conversion produces correct keys (round-trip: generate Ed25519, convert to X25519, verify ECDH works)
  • Verify vault_ed25519_pub_to_x25519 correctly maps known Ed25519 public keys to their X25519 equivalents

Adds two new WASM-exported functions that enable Ed25519 session keys
to participate in vault encryption without requiring a wallet signature:

- vault_ed25519_seed_to_x25519: Converts Ed25519 seed to X25519 key pair
  via SHA-512 derivation (standard Ed25519→X25519 conversion)
- vault_ed25519_pub_to_x25519: Converts Ed25519 public key to X25519
  public key via Edwards→Montgomery birational map

This allows share link recipients (who only have a session key) to
derive the X25519 keys needed for vault grant decryption, removing the
requirement for a wallet signature to access shared encrypted content.
@skgbafa skgbafa force-pushed the feat/vault-session-key-encryption branch from c756f2e to 5e73a4d Compare March 3, 2026 09:38
@skgbafa skgbafa merged commit b4dc4f8 into main Mar 3, 2026
13 checks passed
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.

1 participant