enum SecurityLevel
Security level for FHE operations
Source: lib.joule:15
enum SecurityLevelSecurity level for FHE operations
Source: lib.joule:15
fn bits(&self) -> usizeGet the security level in bits
Source: lib.joule:26
struct SecretKeyFHE secret key (NEVER share this) Used for decryption only
Source: lib.joule:41
fn zeroize(&mut self)Securely zeroize key on drop
Source: lib.joule:47
struct PublicKeyFHE public key (safe to share) Used for encryption only
Source: lib.joule:54
fn to_bytes(&self) -> Vec<u8>Serialize to bytes for transmission
Source: lib.joule:60
fn from_bytes(bytes: &[u8]) -> Result<Self, FheError>Deserialize from bytes
Source: lib.joule:65
struct ServerKeyFHE server key (for computation) Contains bootstrapping keys for homomorphic operations
Source: lib.joule:73
fn to_bytes(&self) -> Vec<u8>Serialize to bytes
Source: lib.joule:79
fn from_bytes(bytes: &[u8]) -> Result<Self, FheError>Deserialize from bytes
Source: lib.joule:84
fn size(&self) -> usizeGet the size in bytes (can be large, ~50MB for 128-bit security)
Source: lib.joule:90
struct KeySetComplete key set
Source: lib.joule:96
struct FheContextFHE Context for managing encryption operations
Source: lib.joule:107
fn new(security_level: SecurityLevel) -> SelfCreate a new FHE context with specified security level
Source: lib.joule:113
fn default() -> SelfCreate with 128-bit security (recommended default)
Source: lib.joule:118
fn generate_keys(&self) -> KeySetSource: lib.joule:125
fn security_level(&self) -> &SecurityLevelGet the security level
Source: lib.joule:135
struct EncryptedBoolEncrypted boolean value
Source: lib.joule:145
fn encrypt(value: bool, pk: &PublicKey) -> SelfSource: lib.joule:152
fn decrypt(&self, sk: &SecretKey) -> boolSource: lib.joule:159
fn not(&self, server_key: &ServerKey) -> SelfSource: lib.joule:165
fn and(&self, other: &EncryptedBool, server_key: &ServerKey) -> SelfSource: lib.joule:172
fn or(&self, other: &EncryptedBool, server_key: &ServerKey) -> SelfSource: lib.joule:179
fn xor(&self, other: &EncryptedBool, server_key: &ServerKey) -> SelfSource: lib.joule:186
fn nand(&self, other: &EncryptedBool, server_key: &ServerKey) -> SelfSource: lib.joule:193
fn nor(&self, other: &EncryptedBool, server_key: &ServerKey) -> SelfSource: lib.joule:200
fn mux(&self, a: &EncryptedBool, b: &EncryptedBool, server_key: &ServerKey) -> SelfSource: lib.joule:207
struct EncryptedU8Encrypted unsigned 8-bit integer
Source: lib.joule:214
fn encrypt(value: u8, pk: &PublicKey) -> SelfSource: lib.joule:220
fn decrypt(&self, sk: &SecretKey) -> u8Source: lib.joule:226
fn add(&self, other: &EncryptedU8, server_key: &ServerKey) -> SelfSource: lib.joule:231
fn sub(&self, other: &EncryptedU8, server_key: &ServerKey) -> SelfSource: lib.joule:237
fn mul(&self, other: &EncryptedU8, server_key: &ServerKey) -> SelfSource: lib.joule:243
fn add_scalar(&self, scalar: u8, server_key: &ServerKey) -> SelfSource: lib.joule:250
fn mul_scalar(&self, scalar: u8, server_key: &ServerKey) -> SelfSource: lib.joule:257
struct EncryptedU32Encrypted unsigned 32-bit integer
Source: lib.joule:264
fn encrypt(value: u32, pk: &PublicKey) -> SelfSource: lib.joule:270
fn decrypt(&self, sk: &SecretKey) -> u32Source: lib.joule:276
fn add(&self, other: &EncryptedU32, server_key: &ServerKey) -> SelfSource: lib.joule:281
fn sub(&self, other: &EncryptedU32, server_key: &ServerKey) -> SelfSource: lib.joule:287
fn mul(&self, other: &EncryptedU32, server_key: &ServerKey) -> SelfSource: lib.joule:293
fn add_scalar(&self, scalar: u32, server_key: &ServerKey) -> SelfSource: lib.joule:299
fn mul_scalar(&self, scalar: u32, server_key: &ServerKey) -> SelfSource: lib.joule:305
fn lt(&self, other: &EncryptedU32, server_key: &ServerKey) -> EncryptedBoolSource: lib.joule:312
fn eq(&self, other: &EncryptedU32, server_key: &ServerKey) -> EncryptedBoolSource: lib.joule:319
fn select(&self, other: &EncryptedU32, condition: &EncryptedBool, server_key: &ServerKey) -> SelfSource: lib.joule:326
fn bitand(&self, other: &EncryptedU32, server_key: &ServerKey) -> SelfSource: lib.joule:333
fn bitor(&self, other: &EncryptedU32, server_key: &ServerKey) -> SelfSource: lib.joule:340
fn bitxor(&self, other: &EncryptedU32, server_key: &ServerKey) -> SelfSource: lib.joule:347
fn shl(&self, amount: u32, server_key: &ServerKey) -> SelfSource: lib.joule:354
fn shr(&self, amount: u32, server_key: &ServerKey) -> SelfSource: lib.joule:361
struct EncryptedU64Encrypted unsigned 64-bit integer
Source: lib.joule:368
fn encrypt(value: u64, pk: &PublicKey) -> SelfSource: lib.joule:374
fn decrypt(&self, sk: &SecretKey) -> u64Source: lib.joule:380
fn add(&self, other: &EncryptedU64, server_key: &ServerKey) -> SelfSource: lib.joule:385
fn sub(&self, other: &EncryptedU64, server_key: &ServerKey) -> SelfSource: lib.joule:391
fn mul(&self, other: &EncryptedU64, server_key: &ServerKey) -> SelfSource: lib.joule:397
struct EncryptedI32Encrypted signed 32-bit integer
Source: lib.joule:404
fn encrypt(value: i32, pk: &PublicKey) -> SelfSource: lib.joule:410
fn decrypt(&self, sk: &SecretKey) -> i32Source: lib.joule:416
fn add(&self, other: &EncryptedI32, server_key: &ServerKey) -> SelfSource: lib.joule:421
fn sub(&self, other: &EncryptedI32, server_key: &ServerKey) -> SelfSource: lib.joule:427
fn mul(&self, other: &EncryptedI32, server_key: &ServerKey) -> SelfSource: lib.joule:433
fn neg(&self, server_key: &ServerKey) -> SelfSource: lib.joule:439
enum FheErrorErrors from FHE operations
Source: lib.joule:450
struct EncryptedArrayEncrypted array of u32 values
Source: lib.joule:466
fn encrypt(values: &[u32], pk: &PublicKey) -> SelfSource: lib.joule:473
fn decrypt(&self, sk: &SecretKey) -> Vec<u32>Source: lib.joule:482
fn len(&self) -> usizeGet length
Source: lib.joule:489
fn get(&self, index: usize) -> Option<&EncryptedU32>Get element at index
Source: lib.joule:494
fn sum(&self, server_key: &ServerKey) -> EncryptedU32Source: lib.joule:500
fn add(&self, other: &EncryptedArray, server_key: &ServerKey) -> EncryptedArraySource: lib.joule:510
fn dot(&self, other: &EncryptedArray, server_key: &ServerKey) -> EncryptedU32Source: lib.joule:521