pub unsafe extern "C" fn gcm_crypt_and_tag(
    ctx: *mut gcm_context,
    mode: c_int,
    length: size_t,
    iv: *const c_uchar,
    iv_len: size_t,
    add: *const c_uchar,
    add_len: size_t,
    input: *const c_uchar,
    output: *mut c_uchar,
    tag_len: size_t,
    tag: *mut c_uchar
) -> c_int