Skip to main content

BlockCipher

Trait BlockCipher 

Source
pub trait BlockCipher<F: Field> {
    // Required methods
    fn encrypt(
        &self,
        builder: &mut GadgetBuilder<F>,
        key: &Expression<F>,
        input: &Expression<F>,
    ) -> Expression<F>;
    fn decrypt(
        &self,
        builder: &mut GadgetBuilder<F>,
        key: &Expression<F>,
        output: &Expression<F>,
    ) -> Expression<F>;

    // Provided methods
    fn encrypt_evaluate(
        &self,
        key: &Element<F>,
        input: &Element<F>,
    ) -> Element<F> { ... }
    fn decrypt_evaluate(
        &self,
        key: &Element<F>,
        output: &Element<F>,
    ) -> Element<F> { ... }
}
Expand description

A symmetric-key block cipher.

Required Methods§

Source

fn encrypt( &self, builder: &mut GadgetBuilder<F>, key: &Expression<F>, input: &Expression<F>, ) -> Expression<F>

Encrypt the given input using the given key.

Source

fn decrypt( &self, builder: &mut GadgetBuilder<F>, key: &Expression<F>, output: &Expression<F>, ) -> Expression<F>

Decrypt the given output using the given key.

Provided Methods§

Source

fn encrypt_evaluate(&self, key: &Element<F>, input: &Element<F>) -> Element<F>

Like encrypt, but actually evaluates the encryption function rather than just adding it to a GadgetBuilder.

Source

fn decrypt_evaluate(&self, key: &Element<F>, output: &Element<F>) -> Element<F>

Like decrypt, but actually evaluates the decryption function rather than just adding it to a GadgetBuilder.

Dyn Compatibility§

This trait is dyn compatible.

In older versions of Rust, dyn compatibility was called "object safety".

Implementors§