pub fn keygen(&self) -> (SK, PK) {
        let sk = SK(BigInt::sample_below(
            &(&self.stilde * BigInt::from(2).pow(40)),
        ));
        let pk = self.pk_for_sk(&sk);
        (sk, pk)
    }
/// randomly sample a scalar (secret key) and compute its corresponding group element (public key) by multiplying g_q
randomly sample a scalar (secret key) and compute its corresponding group element (public key) by multiplying g_q
randomly sample a scalar ( secret key ) and compute its corresponding group element ( public key ) by multiplying g_q
pub fn keygen(&self) -> (SK, PK) {
        let sk = SK(BigInt::sample_below(
            &(&self.stilde * BigInt::from(2).pow(40)),
        ));
        let pk = self.pk_for_sk(&sk);
        (sk, pk)
    }
pub fn keygen ( & self ) -> ( SK , PK ) { let sk = SK ( BigInt :: sample_below ( & ( & self . stilde * BigInt :: from ( 2 ) . pow ( 40 ) ) , ) ) ; let pk = self . pk_for_sk ( & sk ) ; ( sk , pk ) }
randomly sample a scalar (secret key) and compute its corresponding group element (public key) by multiplying g_q
randomly sample a scalar ( secret key ) and compute its corresponding group element ( public key ) by multiplying g_q
&self
&self