pub fn encrypt(group: &CLGroup, public_key: &PK, m: &FE) -> (Ciphertext, SK) {
    unsafe { pari_init(10000000, 2) };
    let (r, R) = group.keygen();
    let exp_f = BinaryQF::expo_f(&FE::q(), &group.delta_q, &m.to_big_int());
    let h_exp_r = public_key.0.exp(&r.0);

    (
        Ciphertext {
            c1: R.0,
            c2: h_exp_r.compose(&exp_f).reduce(),
        },
        r,
    )
}
/// CL encrypts the message under the public key.
///
/// Returns the secret randomness used.
CL encrypts the message under the public key.
Returns the secret randomness used.
CL encrypts the message under the public key . Returns the secret randomness used .
pub fn encrypt(group: &CLGroup, public_key: &PK, m: &FE) -> (Ciphertext, SK) {
    unsafe { pari_init(10000000, 2) };
    let (r, R) = group.keygen();
    let exp_f = BinaryQF::expo_f(&FE::q(), &group.delta_q, &m.to_big_int());
    let h_exp_r = public_key.0.exp(&r.0);
    (
        Ciphertext {
            c1: R.0,
            c2: h_exp_r.compose(&exp_f).reduce(),
        },
        r,
    )
}
pub fn encrypt ( group : & CLGroup , public_key : & PK , m : & FE ) -> ( Ciphertext , SK ) { unsafe { pari_init ( 10000000 , 2 ) } ; let ( r , R ) = group . keygen ( ) ; let exp_f = BinaryQF :: expo_f ( & FE :: q ( ) , & group . delta_q , & m . to_big_int ( ) ) ; let h_exp_r = public_key . 0 . exp ( & r . 0 ) ; ( Ciphertext { c1 : R . 0 , c2 : h_exp_r . compose ( & exp_f ) . reduce ( ) , } , r , ) }
CL encrypts the message under the public key.
CL encrypts the message under the public key .
group
&CLGroup
public_key
&PK
m
&FE
group
&CLGroup
public_key
&PK
m
&FE