Skip to main content
User-side X25519 encryption for local recovery.
use privora_sdk_client::prelude::*;

let user_crypto = UserCrypto::from_keypair(&keypair)?;

Constructor

from_keypair

pub fn from_keypair(keypair: &Keypair) -> Result<Self>
Create from Solana keypair.

from_x25519

pub fn from_x25519(secret: X25519SecretKey, ed25519_public: Ed25519PublicKey) -> Self
Create from raw keys.

Methods

x25519_public_key

pub fn x25519_public_key(&self) -> &X25519PublicKey

public_key_bytes

pub fn public_key_bytes(&self) -> [u8; 32]

add_recovery

pub fn add_recovery<T>(
    &self,
    encrypted: ClientEncrypted<T>,
    plaintext: &[u8],
) -> Result<ClientEncrypted<T>>
Add user recovery to encrypted value.

decrypt_recovery

pub fn decrypt_recovery(&self, recovery: &UserRecoveryData) -> Result<Vec<u8>>
Decrypt from recovery data.

decrypt_from_mpc

pub fn decrypt_from_mpc(
    &self,
    ciphertext: &[u8],
    nonce: &[u8; 24],
    ephemeral_pubkey: &[u8; 32],
) -> Result<Vec<u8>>
Decrypt MPC result.

encrypt_for_self

pub fn encrypt_for_self(&self, data: &[u8]) -> Result<(Vec<u8>, [u8; 24])>

decrypt_from_self

pub fn decrypt_from_self(&self, ciphertext: &[u8], nonce: &[u8; 24]) -> Result<Vec<u8>>

UserRecoveryData

pub struct UserRecoveryData {
    pub ciphertext: Vec<u8>,
    pub nonce: [u8; 24],
}