pub trait BlackBoxFunctionSolver {
    // Required methods
    fn schnorr_verify(
        &self,
        public_key_x: &FieldElement,
        public_key_y: &FieldElement,
        signature: &[u8; 64],
        message: &[u8]
    ) -> Result<bool, BlackBoxResolutionError>;
    fn pedersen_commitment(
        &self,
        inputs: &[FieldElement],
        domain_separator: u32
    ) -> Result<(FieldElement, FieldElement), BlackBoxResolutionError>;
    fn pedersen_hash(
        &self,
        inputs: &[FieldElement],
        domain_separator: u32
    ) -> Result<FieldElement, BlackBoxResolutionError>;
    fn fixed_base_scalar_mul(
        &self,
        low: &FieldElement,
        high: &FieldElement
    ) -> Result<(FieldElement, FieldElement), BlackBoxResolutionError>;
    fn ec_add(
        &self,
        input1_x: &FieldElement,
        input1_y: &FieldElement,
        input2_x: &FieldElement,
        input2_y: &FieldElement
    ) -> Result<(FieldElement, FieldElement), BlackBoxResolutionError>;
    fn poseidon2_permutation(
        &self,
        _inputs: &[FieldElement],
        _len: u32
    ) -> Result<Vec<FieldElement>, BlackBoxResolutionError>;
}
Expand description

This component will generate outputs for Blackbox function calls where the underlying acir::BlackBoxFunc doesn’t have a canonical Rust implementation.

Returns an BlackBoxResolutionError if the backend does not support the given acir::BlackBoxFunc.

Required Methods§

Implementors§