def _make_cred_gss(self, handle, service, gss_proc=RPCSEC_GSS_DATA, seq=0): data = gss_type.rpc_gss_cred_vers_1_t(gss_proc, seq, service, handle) cred = gss_type.rpc_gss_cred_t(RPCSEC_GSS_VERS_1, data) p = self.getpacker() p.reset() p.pack_rpc_gss_cred_t(cred) return p.get_buffer()
def unpack_rpc_gss_cred_t(self): data = types.rpc_gss_cred_t() data.vers = self.unpack_uint() if data.vers == const.RPCSEC_GSS_VERS_1: data.rpc_gss_cred_vers_1_t = self.unpack_rpc_gss_cred_vers_1_t() data.arm = data.rpc_gss_cred_vers_1_t else: raise XDRError, 'bad switch=%s' % data.vers return data
def make_cred(self, credinfo): log_gss.debug("Calling make_cred %r" % credinfo) # XXX Deal with a default credinfo==None? if credinfo.gss_proc in (RPCSEC_GSS_INIT, RPCSEC_GSS_CONTINUE_INIT): context = None seqid = 0 # Should be ignored by server else: context = self._get_context(credinfo.context) seqid = context.get_seqid() service = credinfo.service data = gss_type.rpc_gss_cred_vers_1_t(credinfo.gss_proc, seqid, credinfo.service, credinfo.context) # str cred = gss_type.rpc_gss_cred_t(RPCSEC_GSS_VERS_1, data) out = opaque_auth(RPCSEC_GSS, cred) out.opaque = False # HACK to tell system we haven't packed cred out.context = context # This needs to be Context() out.body.qop = credinfo.qop log_gss.debug("make_cred = %r" % out) return out