pub fn from_compressed_unchecked(bytes: &[u8; 288]) -> CtOption<Self> {
        let compression_flag_set = Choice::from((bytes[0] >> 7) & 1);
        let sort_flag_set = Choice::from((bytes[0] >> 6) & 1);

        let xc1 = {
            let mut tmp = [0; 288];
            tmp.copy_from_slice(&bytes[0..288]);

            // Mask away the flag bits
            tmp[0] &= 0b0011_1111;

            Fp6::from_bytes_unchecked(&tmp)
        };

        xc1.and_then(|c1| {
            // c_0^2 = 1 + v * c_1^2
            let xc0 = (Fp6::one() + c1.square().mul_by_nonresidue()).sqrt();

            xc0.and_then(|c0| {
                let p = Fp12 {
                    c0: Fp6::conditional_select(
                        &c0,
                        &-c0,
                        c0.lexicographically_largest() ^ sort_flag_set,
                    ),
                    c1,
                };

                CtOption::new(Gt(p), compression_flag_set)
            })
        })
    }
/// Attempts to deserialize a compressed element, not checking if the
/// element is in the correct pairing group.
/// **This is dangerous to call unless you trust the bytes you are reading; otherwise,
/// API invariants may be broken.** Please consider using `from_uncompressed()` instead.
Attempts to deserialize a compressed element, not checking if the
element is in the correct pairing group.
This is dangerous to call unless you trust the bytes you are reading; otherwise,
API invariants may be broken.** Please consider using `from_uncompressed()` instead.
Attempts to deserialize a compressed element not checking if the element is in the correct pairing group . This is dangerous to call unless you trust the bytes you are reading ; otherwise API invariants may be broken . ** Please consider using ` from_uncompressed () ` instead .
pub fn from_compressed_unchecked(bytes: &[u8; 288]) -> CtOption<Self> {
        let compression_flag_set = Choice::from((bytes[0] >> 7) & 1);
        let sort_flag_set = Choice::from((bytes[0] >> 6) & 1);
        let xc1 = {
            let mut tmp = [0; 288];
            tmp.copy_from_slice(&bytes[0..288]);
            // Mask away the flag bits
            tmp[0] &= 0b0011_1111;
            Fp6::from_bytes_unchecked(&tmp)
        };
        xc1.and_then(|c1| {
            // c_0^2 = 1 + v * c_1^2
            let xc0 = (Fp6::one() + c1.square().mul_by_nonresidue()).sqrt();
            xc0.and_then(|c0| {
                let p = Fp12 {
                    c0: Fp6::conditional_select(
                        &c0,
                        &-c0,
                        c0.lexicographically_largest() ^ sort_flag_set,
                    ),
                    c1,
                };
                CtOption::new(Gt(p), compression_flag_set)
            })
        })
    }
pub fn from_compressed_unchecked ( bytes : & [ u8 ; 288 ] ) -> CtOption < Self > { let compression_flag_set = Choice :: from ( ( bytes [ 0 ] >> 7 ) & 1 ) ; let sort_flag_set = Choice :: from ( ( bytes [ 0 ] >> 6 ) & 1 ) ; let xc1 = { let mut tmp = [ 0 ; 288 ] ; tmp . copy_from_slice ( & bytes [ 0 .. 288 ] ) ; // Mask away the flag bits tmp [ 0 ] &= 0b0011_1111 ; Fp6 :: from_bytes_unchecked ( & tmp ) } ; xc1 . and_then ( | c1 | { // c_0^2 = 1 + v * c_1^2 let xc0 = ( Fp6 :: one ( ) + c1 . square ( ) . mul_by_nonresidue ( ) ) . sqrt ( ) ; xc0 . and_then ( | c0 | { let p = Fp12 { c0 : Fp6 :: conditional_select ( & c0 , & - c0 , c0 . lexicographically_largest ( ) ^ sort_flag_set , ) , c1 , } ; CtOption :: new ( Gt ( p ) , compression_flag_set ) } ) } ) }
Attempts to deserialize a compressed element, not checking if the
element is in the correct pairing group.
Attempts to deserialize a compressed element not checking if the element is in the correct pairing group .
bytes
&[u8; 288]