static PyObject* authGSSClientInit(PyObject* self, PyObject* args, PyObject* keywds) { const char *service = NULL; const char *principal = NULL; gss_client_state *state; PyObject *pystate; gss_server_state *delegatestate = NULL; PyObject *pydelegatestate; static char *kwlist[] = {"service", "principal", "gssflags", "delegated", NULL}; long int gss_flags = GSS_C_MUTUAL_FLAG | GSS_C_SEQUENCE_FLAG; int result = 0; if (!PyArg_ParseTupleAndKeywords(args, keywds, "s|slO", kwlist, &service, &principal, &gss_flags, &pydelegatestate)) return NULL; state = (gss_client_state *) malloc(sizeof(gss_client_state)); pystate = PyCObject_FromVoidPtr(state, NULL); if (PyCObject_Check(pydelegatestate)) delegatestate = PyCObject_AsVoidPtr(pydelegatestate); result = authenticate_gss_client_init(service, principal, gss_flags, delegatestate, state); if (result == AUTH_GSS_ERROR) return NULL; return Py_BuildValue("(iO)", result, pystate); }
static PyObject* authGSSClientInit(PyObject* self, PyObject* args, PyObject* keywds) { const char *service = NULL; const char *principal = NULL; gss_client_state *state; PyObject *pystate; gss_OID mech_oid = GSS_C_NO_OID; PyObject *pymech_oid = NULL; static char *kwlist[] = {"service", "principal", "gssflags", "mech_oid", NULL}; long int gss_flags = GSS_C_MUTUAL_FLAG | GSS_C_SEQUENCE_FLAG; int result = 0; if (!PyArg_ParseTupleAndKeywords(args, keywds, "s|zlO", kwlist, &service, &principal, &gss_flags, &pymech_oid)) { return NULL; } if (pymech_oid != NULL) { if (!PyCheck(pymech_oid)) { PyErr_SetString(PyExc_TypeError, "Invalid type for mech_oid"); return NULL; } mech_oid = PyGet(pymech_oid, gss_OID_desc); if (mech_oid == NULL) { PyErr_SetString(PyExc_TypeError, "Invalid value for mech_oid"); return NULL; } } state = (gss_client_state *) malloc(sizeof(gss_client_state)); pystate = PyNew(state, &destruct_client); result = authenticate_gss_client_init(service, principal, gss_flags, mech_oid, state); if (result == AUTH_GSS_ERROR) { return NULL; } return Py_BuildValue("(iN)", result, pystate); }