コード例 #1
0
ファイル: security.py プロジェクト: kofemann/pynfs
 def pack_cred(py_cred):
     p = GSSPacker()
     p.pack_rpc_gss_cred_t(py_cred)
     return p.get_buffer()
コード例 #2
0
ファイル: security.py プロジェクト: liuying1001/newpynfs
                major = gssapi.GSS_S_COMPLETE
            else:
                major = gssapi.GSS_S_CONTINUE_NEEDED
            res = rpc_gss_init_res(
                handle,
                major,
                0,  # XXX can't see minor
                WINDOWSIZE,
                token)
        # Prepare response
        p = GSSPacker()
        p.pack_rpc_gss_init_res(res)
        # NOTE this is an annoying case for make_reply_verf.
        # It is the only time that you need msg_data to feed into it.
        verf = self.make_reply_verf(cred, major)
        raise rpclib.RPCSuccessfulReply(verf, p.get_buffer())

    def make_reply_verf(self, cred, stat):
        log_gss.debug("CALL:make_reply_verf(%r, %i)" % (cred, stat))
        cred = cred.body
        if stat:
            # Return trivial verf on error
            # NOTE this relies on GSS_S_COMPLETE == rpc.SUCCESS == 0
            return rpclib.NULL_CRED
        elif cred.gss_proc in (RPCSEC_GSS_INIT, RPCSEC_GSS_CONTINUE_INIT):
            # init requires getMIC(seq_window)
            i = WINDOWSIZE
        else:
            # Else return getMIC(cred.seq_num)
            i = cred.seq_num
        p = Packer()
コード例 #3
0
ファイル: security.py プロジェクト: wzugang/pynfs
 def pack_cred(py_cred):
     p = GSSPacker()
     p.pack_rpc_gss_cred_t(py_cred)
     return p.get_buffer()
コード例 #4
0
ファイル: security.py プロジェクト: ajaynair/pynfs-1
                cred.body.rpc_gss_cred_vers_1_t.handle = handle
            else:
                handle = cred.body.handle
            if context.open:
                major = gssapi.GSS_S_COMPLETE
            else:
                major = gssapi.GSS_S_CONTINUE_NEEDED
            res = rpc_gss_init_res(handle, major, 0, # XXX can't see minor
                                   WINDOWSIZE, token)
        # Prepare response
        p = GSSPacker()
        p.pack_rpc_gss_init_res(res)
        # NOTE this is an annoying case for make_reply_verf.
        # It is the only time that you need msg_data to feed into it.
        verf = self.make_reply_verf(cred, major)
        raise rpclib.RPCSuccessfulReply(verf, p.get_buffer())

    def make_reply_verf(self, cred, stat):
        log_gss.debug("CALL:make_reply_verf(%r, %i)" % (cred, stat))
        cred = cred.body
        if stat:
            # Return trivial verf on error
            # NOTE this relies on GSS_S_COMPLETE == rpc.SUCCESS == 0
            return rpclib.NULL_CRED
        elif cred.gss_proc in (RPCSEC_GSS_INIT, RPCSEC_GSS_CONTINUE_INIT):
            # init requires getMIC(seq_window)
            i = WINDOWSIZE
        else:
            # Else return getMIC(cred.seq_num)
            i = cred.seq_num
        p = Packer()