Exemplo n.º 1
0
static PyObject *authGSSClientStep(PyObject *self, PyObject *args)
{
    gss_client_state *state;
    PyObject *pystate;
    char *challenge = NULL;
    int result = 0;

    if (! PyArg_ParseTuple(args, "Os", &pystate, &challenge)) {
        return NULL;
    }

    if (! PyCObject_Check(pystate)) {
        PyErr_SetString(PyExc_TypeError, "Expected a context object");
        return NULL;
    }

    state = (gss_client_state *)PyCObject_AsVoidPtr(pystate);

    if (state == NULL) {
        return NULL;
    }

    result = authenticate_gss_client_step(state, challenge);

    if (result == AUTH_GSS_ERROR) {
        return NULL;
    }

    return Py_BuildValue("i", result);
}
Exemplo n.º 2
0
static PyObject *authGSSClientStep(PyObject *self, PyObject *args, PyObject* keywds) {
    gss_client_state *state;
    PyObject *pystate;
    char *challenge = NULL;
    PyObject *pychan_bindings = NULL;
    struct gss_channel_bindings_struct *channel_bindings;
    static char *kwlist[] = {"state", "challenge", "channel_bindings", NULL};
    int result = 0;

    if (! PyArg_ParseTupleAndKeywords(args, keywds, "Os|O", kwlist, &pystate, &challenge, &pychan_bindings)) {
        return NULL;
    }

    if (!PyCheck(pystate)) {
        PyErr_SetString(PyExc_TypeError, "Expected a context object");
        return NULL;
    }

    state = PyGet(pystate, gss_client_state);
    if (state == NULL) {
        return NULL;
    }

    if (pychan_bindings == NULL) {
        channel_bindings = GSS_C_NO_CHANNEL_BINDINGS;
    } else {
        if (!PyCheck(pychan_bindings)) {
            PyErr_SetString(PyExc_TypeError, "Expected a gss_channel_bindings_struct object");
            return NULL;
        }
        channel_bindings = PyGet(pychan_bindings, struct gss_channel_bindings_struct);
    }

    result = authenticate_gss_client_step(state, challenge, channel_bindings);
    if (result == AUTH_GSS_ERROR) {
        return NULL;
    }

    return Py_BuildValue("i", result);
}