def init_sec_context(self, token=None): if token is not None: token = to_str(token) token_buf = gss_ctypes.gss_buffer_desc() token_buf.length = len(token) token_buf.value = ctypes.cast(ctypes.c_char_p(token), ctypes.c_void_p) else: token_buf = None output_buf = gss_ctypes.gss_buffer_desc() actual_mech = gss_ctypes.gss_OID() actual_flags = gss_ctypes.OM_uint32() ret = gss_init_sec_context( self._cred._handle if self._cred else None, self._handle, self._target._handle, self._mechanism._handle if self._mechanism else None, self._flags, self._time_req, None, token_buf, # Output params actual_mech, output_buf, actual_flags, None) output_token = output_buf.as_str() gss_release_buffer(output_buf) self._actual_flags = actual_flags.value self._mechanism = OID(actual_mech.contents) if (ret & gss_ctypes.GSS_S_CONTINUE_NEEDED) == 0: self._is_established = True return output_token
def display(self): buf = gss_ctypes.gss_buffer_desc() oid = gss_ctypes.gss_OID() gss_display_name(self._handle, buf, oid) try: return (buf.as_str(), OID(oid.contents)) finally: gss_release_buffer(buf)