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§
Sourcefn encrypt(
&self,
builder: &mut GadgetBuilder<F>,
key: &Expression<F>,
input: &Expression<F>,
) -> Expression<F>
fn encrypt( &self, builder: &mut GadgetBuilder<F>, key: &Expression<F>, input: &Expression<F>, ) -> Expression<F>
Encrypt the given input using the given key.
Sourcefn decrypt(
&self,
builder: &mut GadgetBuilder<F>,
key: &Expression<F>,
output: &Expression<F>,
) -> Expression<F>
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§
Sourcefn encrypt_evaluate(&self, key: &Element<F>, input: &Element<F>) -> Element<F>
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.
Sourcefn decrypt_evaluate(&self, key: &Element<F>, output: &Element<F>) -> Element<F>
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".