Beispiel #1
0
    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
Beispiel #2
0
    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
Beispiel #3
0
 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)
Beispiel #4
0
def import_name(inp, oid):
    inp = to_str(inp)
    name = Name()
    inp_buf = gss_ctypes.gss_buffer_desc()
    inp_buf.length = len(inp)
    inp_buf.value = ctypes.cast(ctypes.c_char_p(inp), ctypes.c_void_p)
    gss_import_name(inp_buf, oid._handle, name._handle)
    return name
Beispiel #5
0
 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)
Beispiel #6
0
def import_name(inp, oid):
    inp = to_str(inp)
    name = Name()
    inp_buf = gss_ctypes.gss_buffer_desc()
    inp_buf.length = len(inp)
    inp_buf.value = ctypes.cast(ctypes.c_char_p(inp), ctypes.c_void_p)
    gss_import_name(inp_buf, oid._handle, name._handle)
    return name
Beispiel #7
0
def _display_status(status_value, status_type):
    ret = []
    status_string = gss_ctypes.gss_buffer_desc()
    message_context = gss_ctypes.OM_uint32()
    for _ in xrange(8):
        gss_display_status(status_value, status_type,
                           None, message_context, status_string)
        try:
            ret.append(status_string.as_str())
        finally:
            gss_release_buffer(status_string)
        if message_context.value == 0:
            break
    return ret
Beispiel #8
0
def _display_status(status_value, status_type):
    ret = []
    status_string = gss_ctypes.gss_buffer_desc()
    message_context = gss_ctypes.OM_uint32()
    for _ in xrange(8):
        gss_display_status(status_value, status_type,
                           None, message_context, status_string)
        try:
            ret.append(status_string.as_str())
        finally:
            gss_release_buffer(status_string)
        if message_context.value == 0:
            break
    return ret
Beispiel #9
0
 def __del__(self):
     if hasattr(self, '_handle') and bool(self._handle):
         buf = gss_ctypes.gss_buffer_desc()
         gss_delete_sec_context(self._handle, buf)
         gss_release_buffer(buf)
Beispiel #10
0
 def __del__(self):
     if hasattr(self, '_handle') and bool(self._handle):
         buf = gss_ctypes.gss_buffer_desc()
         gss_delete_sec_context(self._handle, buf)
         gss_release_buffer(buf)