private function _generateJ0(string $IV, GHASH $ghash): string
    {
        // if len(IV) = 96
        if (12 == strlen($IV)) {
            return $IV . "\0\0\0\1";
        }
        $data = self::_pad128($IV) . self::ZB_64 . self::_uint64(
            strlen($IV) << 3);
        return $ghash($data);
    }