pub trait Crypto:
Send
+ Sync
+ Debug {
Show 17 methods
// Provided methods
fn sha256(&self, input: &[u8]) -> [u8; 32] { ... }
fn ripemd160(&self, input: &[u8]) -> [u8; 32] { ... }
fn bn254_g1_add(
&self,
p1: &[u8],
p2: &[u8],
) -> Result<[u8; 64], PrecompileError> { ... }
fn bn254_g1_mul(
&self,
point: &[u8],
scalar: &[u8],
) -> Result<[u8; 64], PrecompileError> { ... }
fn bn254_pairing_check(
&self,
pairs: &[(&[u8], &[u8])],
) -> Result<bool, PrecompileError> { ... }
fn secp256k1_ecrecover(
&self,
sig: &[u8; 64],
recid: u8,
msg: &[u8; 32],
) -> Result<[u8; 32], PrecompileError> { ... }
fn modexp(
&self,
base: &[u8],
exp: &[u8],
modulus: &[u8],
) -> Result<Vec<u8>, PrecompileError> { ... }
fn blake2_compress(
&self,
rounds: u32,
h: &mut [u64; 8],
m: [u64; 16],
t: [u64; 2],
f: bool,
) { ... }
fn secp256r1_verify_signature(
&self,
msg: &[u8; 32],
sig: &[u8; 64],
pk: &[u8; 64],
) -> bool { ... }
fn verify_kzg_proof(
&self,
z: &[u8; 32],
y: &[u8; 32],
commitment: &[u8; 48],
proof: &[u8; 48],
) -> Result<(), PrecompileError> { ... }
fn bls12_381_g1_add(
&self,
a: G1Point,
b: G1Point,
) -> Result<[u8; 96], PrecompileError> { ... }
fn bls12_381_g1_msm(
&self,
pairs: &mut dyn Iterator<Item = Result<G1PointScalar, PrecompileError>>,
) -> Result<[u8; 96], PrecompileError> { ... }
fn bls12_381_g2_add(
&self,
a: G2Point,
b: G2Point,
) -> Result<[u8; 192], PrecompileError> { ... }
fn bls12_381_g2_msm(
&self,
pairs: &mut dyn Iterator<Item = Result<G2PointScalar, PrecompileError>>,
) -> Result<[u8; 192], PrecompileError> { ... }
fn bls12_381_pairing_check(
&self,
pairs: &[(G1Point, G2Point)],
) -> Result<bool, PrecompileError> { ... }
fn bls12_381_fp_to_g1(
&self,
fp: &[u8; 48],
) -> Result<[u8; 96], PrecompileError> { ... }
fn bls12_381_fp2_to_g2(
&self,
fp2: ([u8; 48], [u8; 48]),
) -> Result<[u8; 192], PrecompileError> { ... }
}
Expand description
Crypto operations trait for precompiles.
Provided Methods§
Sourcefn bn254_g1_add(
&self,
p1: &[u8],
p2: &[u8],
) -> Result<[u8; 64], PrecompileError>
fn bn254_g1_add( &self, p1: &[u8], p2: &[u8], ) -> Result<[u8; 64], PrecompileError>
BN254 elliptic curve addition.
Sourcefn bn254_g1_mul(
&self,
point: &[u8],
scalar: &[u8],
) -> Result<[u8; 64], PrecompileError>
fn bn254_g1_mul( &self, point: &[u8], scalar: &[u8], ) -> Result<[u8; 64], PrecompileError>
BN254 elliptic curve scalar multiplication.
Sourcefn bn254_pairing_check(
&self,
pairs: &[(&[u8], &[u8])],
) -> Result<bool, PrecompileError>
fn bn254_pairing_check( &self, pairs: &[(&[u8], &[u8])], ) -> Result<bool, PrecompileError>
BN254 pairing check.
Sourcefn secp256k1_ecrecover(
&self,
sig: &[u8; 64],
recid: u8,
msg: &[u8; 32],
) -> Result<[u8; 32], PrecompileError>
fn secp256k1_ecrecover( &self, sig: &[u8; 64], recid: u8, msg: &[u8; 32], ) -> Result<[u8; 32], PrecompileError>
secp256k1 ECDSA signature recovery.
Sourcefn modexp(
&self,
base: &[u8],
exp: &[u8],
modulus: &[u8],
) -> Result<Vec<u8>, PrecompileError>
fn modexp( &self, base: &[u8], exp: &[u8], modulus: &[u8], ) -> Result<Vec<u8>, PrecompileError>
Modular exponentiation.
Sourcefn blake2_compress(
&self,
rounds: u32,
h: &mut [u64; 8],
m: [u64; 16],
t: [u64; 2],
f: bool,
)
fn blake2_compress( &self, rounds: u32, h: &mut [u64; 8], m: [u64; 16], t: [u64; 2], f: bool, )
Blake2 compression function.
Sourcefn secp256r1_verify_signature(
&self,
msg: &[u8; 32],
sig: &[u8; 64],
pk: &[u8; 64],
) -> bool
fn secp256r1_verify_signature( &self, msg: &[u8; 32], sig: &[u8; 64], pk: &[u8; 64], ) -> bool
secp256r1 (P-256) signature verification.
Sourcefn verify_kzg_proof(
&self,
z: &[u8; 32],
y: &[u8; 32],
commitment: &[u8; 48],
proof: &[u8; 48],
) -> Result<(), PrecompileError>
fn verify_kzg_proof( &self, z: &[u8; 32], y: &[u8; 32], commitment: &[u8; 48], proof: &[u8; 48], ) -> Result<(), PrecompileError>
KZG point evaluation.
Sourcefn bls12_381_g1_add(
&self,
a: G1Point,
b: G1Point,
) -> Result<[u8; 96], PrecompileError>
fn bls12_381_g1_add( &self, a: G1Point, b: G1Point, ) -> Result<[u8; 96], PrecompileError>
BLS12-381 G1 addition (returns 96-byte unpadded G1 point)
Sourcefn bls12_381_g1_msm(
&self,
pairs: &mut dyn Iterator<Item = Result<G1PointScalar, PrecompileError>>,
) -> Result<[u8; 96], PrecompileError>
fn bls12_381_g1_msm( &self, pairs: &mut dyn Iterator<Item = Result<G1PointScalar, PrecompileError>>, ) -> Result<[u8; 96], PrecompileError>
BLS12-381 G1 multi-scalar multiplication (returns 96-byte unpadded G1 point)
Sourcefn bls12_381_g2_add(
&self,
a: G2Point,
b: G2Point,
) -> Result<[u8; 192], PrecompileError>
fn bls12_381_g2_add( &self, a: G2Point, b: G2Point, ) -> Result<[u8; 192], PrecompileError>
BLS12-381 G2 addition (returns 192-byte unpadded G2 point)
Sourcefn bls12_381_g2_msm(
&self,
pairs: &mut dyn Iterator<Item = Result<G2PointScalar, PrecompileError>>,
) -> Result<[u8; 192], PrecompileError>
fn bls12_381_g2_msm( &self, pairs: &mut dyn Iterator<Item = Result<G2PointScalar, PrecompileError>>, ) -> Result<[u8; 192], PrecompileError>
BLS12-381 G2 multi-scalar multiplication (returns 192-byte unpadded G2 point)
Sourcefn bls12_381_pairing_check(
&self,
pairs: &[(G1Point, G2Point)],
) -> Result<bool, PrecompileError>
fn bls12_381_pairing_check( &self, pairs: &[(G1Point, G2Point)], ) -> Result<bool, PrecompileError>
BLS12-381 pairing check.
Sourcefn bls12_381_fp_to_g1(&self, fp: &[u8; 48]) -> Result<[u8; 96], PrecompileError>
fn bls12_381_fp_to_g1(&self, fp: &[u8; 48]) -> Result<[u8; 96], PrecompileError>
BLS12-381 map field element to G1.
Sourcefn bls12_381_fp2_to_g2(
&self,
fp2: ([u8; 48], [u8; 48]),
) -> Result<[u8; 192], PrecompileError>
fn bls12_381_fp2_to_g2( &self, fp2: ([u8; 48], [u8; 48]), ) -> Result<[u8; 192], PrecompileError>
BLS12-381 map field element to G2.