lit_node_core/models/
blinders.rs1use lit_rust_crypto::{
2 blsful::inner_types::*, decaf377, ed448_goldilocks, elliptic_curve::subtle::Choice, jubjub,
3 k256, p256, p384, pallas, vsss_rs::curve25519,
4};
5
6use serde::{Deserialize, Serialize};
7
8#[derive(Clone, Copy, Debug, Default, Serialize, Deserialize)]
10pub struct Blinders {
11 pub bls_blinder: Option<Scalar>,
12 pub k256_blinder: Option<k256::Scalar>,
13 pub p256_blinder: Option<p256::Scalar>,
14 pub p384_blinder: Option<p384::Scalar>,
15 pub ed25519_blinder: Option<curve25519::WrappedScalar>,
16 pub ristretto25519_blinder: Option<curve25519::WrappedScalar>,
17 pub ed448_blinder: Option<ed448_goldilocks::Scalar>,
18 pub jubjub_blinder: Option<jubjub::Scalar>,
19 pub decaf377_blinder: Option<decaf377::Fr>,
20 pub bls12381g1_blinder: Option<Scalar>,
21 pub pallas_blinder: Option<pallas::Scalar>,
22}
23
24impl Blinders {
25 pub fn are_blinders_set(&self) -> bool {
26 self.bls_blinder.is_some()
27 || self.k256_blinder.is_some()
28 || self.p256_blinder.is_some()
29 || self.p384_blinder.is_some()
30 || self.ed25519_blinder.is_some()
31 || self.ristretto25519_blinder.is_some()
32 || self.ed448_blinder.is_some()
33 || self.jubjub_blinder.is_some()
34 || self.decaf377_blinder.is_some()
35 || self.bls12381g1_blinder.is_some()
36 || self.pallas_blinder.is_some()
37 }
38
39 pub fn any_blinders_invalid(&self) -> bool {
40 let mut any = Choice::from(0u8);
41 if let Some(bls_blinder) = &self.bls_blinder {
42 any |= bls_blinder.is_zero();
43 }
44 if let Some(k256_blinder) = &self.k256_blinder {
45 any |= k256_blinder.is_zero();
46 }
47 if let Some(p256_blinder) = &self.p256_blinder {
48 any |= p256_blinder.is_zero();
49 }
50 if let Some(p384_blinder) = &self.p384_blinder {
51 any |= p384_blinder.is_zero();
52 }
53 if let Some(ed25519_blinder) = &self.ed25519_blinder {
54 any |= ed25519_blinder.is_zero();
55 }
56 if let Some(ristretto25519_blinder) = &self.ristretto25519_blinder {
57 any |= ristretto25519_blinder.is_zero();
58 }
59 if let Some(jubjub_blinder) = &self.jubjub_blinder {
60 any |= jubjub_blinder.is_zero();
61 }
62 if let Some(decaf377_blinder) = &self.decaf377_blinder {
63 any |= decaf377_blinder.is_zero();
64 }
65 if let Some(bls12381g1_blinder) = &self.bls12381g1_blinder {
66 any |= bls12381g1_blinder.is_zero();
67 }
68 if let Some(pallas_blinder) = &self.pallas_blinder {
69 any |= pallas_blinder.is_zero();
70 }
71
72 bool::from(any)
73 }
74}