예제 #1
0
파일: gss.py 프로젝트: EvilMcJerkface/ok
    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
예제 #2
0
파일: gss.py 프로젝트: tlyu/roost-python
    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
예제 #3
0
파일: gss.py 프로젝트: EvilMcJerkface/ok
 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)
예제 #4
0
파일: gss.py 프로젝트: tlyu/roost-python
 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)