Encrypts data using ECIES with secp256k1.
Recipient's public key (65 bytes uncompressed or 33 bytes compressed).
Obtain via vana.server.getIdentity(userAddress).public_key.
Data to encrypt.
Encrypted data structure compatible with eccrypto format.
Decrypts ECIES encrypted data.
Recipient's private key (32 bytes).
Encrypted data structure from encrypt() or legacy eccrypto.
Decrypted message as Uint8Array.
Normalizes a public key to uncompressed format (65 bytes with 0x04 prefix).
Public key in compressed or uncompressed format
Normalized uncompressed public key (65 bytes with 0x04 prefix)
Strict policy: Only accepts properly formatted compressed (33 bytes) or uncompressed (65 bytes) public keys. Does not accept 64-byte raw coordinates to ensure data integrity and prevent masking of malformed inputs.
// Compressed key (33 bytes)
const compressed = new Uint8Array(33);
compressed[0] = 0x02;
const uncompressed = provider.normalizeToUncompressed(compressed);
console.log(uncompressed.length); // 65
console.log(uncompressed[0]); // 0x04
// Already uncompressed (65 bytes)
const already = provider.normalizeToUncompressed(uncompressedKey);
console.log(already === uncompressedKey); // true (returns same reference)
// Raw coordinates rejected (64 bytes)
const raw = new Uint8Array(64);
provider.normalizeToUncompressed(raw); // Throws error
Provides ECIES encryption and decryption operations.
Remarks
Platform-specific implementations handle the underlying cryptographic primitives while maintaining consistent data format across environments.