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_vers_1_t(self): data = types.rpc_gss_cred_vers_1_t() data.gss_proc = self.unpack_rpc_gss_proc_t() data.seq_num = self.unpack_uint() data.service = self.unpack_rpc_gss_service_t() data.handle = self.unpack_opaque() 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