pub fn new(h: &[u8; BLOCKSIZE]) -> Self {
        let mut h = *h;
        h.reverse();

        let h_polyval = mulx(&h);

        Self {
            h: U32x4(
                u32::from_le_bytes(h_polyval[..4].try_into().unwrap()),
                u32::from_le_bytes(h_polyval[4..8].try_into().unwrap()),
                u32::from_le_bytes(h_polyval[8..12].try_into().unwrap()),
                u32::from_le_bytes(h_polyval[12..].try_into().unwrap()),
            ),
            s: U32x4::default(),
        }
    }
/// Initialize GHASH with the given `H` field element
Initialize GHASH with the given `H` field element
Initialize GHASH with the given ` H ` field element
pub fn new(h: &[u8; BLOCKSIZE]) -> Self {
        let mut h = *h;
        h.reverse();
        let h_polyval = mulx(&h);
        Self {
            h: U32x4(
                u32::from_le_bytes(h_polyval[..4].try_into().unwrap()),
                u32::from_le_bytes(h_polyval[4..8].try_into().unwrap()),
                u32::from_le_bytes(h_polyval[8..12].try_into().unwrap()),
                u32::from_le_bytes(h_polyval[12..].try_into().unwrap()),
            ),
            s: U32x4::default(),
        }
    }
pub fn new ( h : & [ u8 ; BLOCKSIZE ] ) -> Self { let mut h = * h ; h . reverse ( ) ; let h_polyval = mulx ( & h ) ; Self { h : U32x4 ( u32 :: from_le_bytes ( h_polyval [ .. 4 ] . try_into ( ) . unwrap ( ) ) , u32 :: from_le_bytes ( h_polyval [ 4 .. 8 ] . try_into ( ) . unwrap ( ) ) , u32 :: from_le_bytes ( h_polyval [ 8 .. 12 ] . try_into ( ) . unwrap ( ) ) , u32 :: from_le_bytes ( h_polyval [ 12 .. ] . try_into ( ) . unwrap ( ) ) , ) , s : U32x4 :: default ( ) , } }
Initialize GHASH with the given `H` field element
Initialize GHASH with the given ` H ` field element
h
&[u8; BLOCKSIZE]
h
&[u8; BLOCKSIZE]