/* -*-c-*-
*
- * $Id$
- *
* Reading and writing passphrases
*
* (c) 2005 Straylight/Edgeware
*/
-/*----- Licensing notice --------------------------------------------------*
+/*----- Licensing notice --------------------------------------------------*
*
* This file is part of the Python interface to Catacomb.
*
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation; either version 2 of the License, or
* (at your option) any later version.
- *
+ *
* Catacomb/Python is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
- *
+ *
* You should have received a copy of the GNU General Public License
* along with Catacomb/Python; if not, write to the Free Software Foundation,
* Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
static PyObject *pixie_pynew(PyTypeObject *ty, PyObject *arg, PyObject *kw)
{
pixie_pyobj *rc = 0;
- char *kwlist[] = { "socket", 0 };
+ static const char *const kwlist[] = { "socket", 0 };
char *sock = 0;
int fd;
- if (!PyArg_ParseTupleAndKeywords(arg, kw, "|s:new", kwlist, &sock))
+ if (!PyArg_ParseTupleAndKeywords(arg, kw, "|s:new", KWLIST, &sock))
goto end;
if ((fd = pixie_open(sock)) < 0)
OSERR(sock);
static void pixie_pydealloc(PyObject *me)
{
close(PIXIE_FD(me));
- FREEOBJ(me);
+ FREEOBJ(me);
}
static PyObject *pixmeth_read(PyObject *me, PyObject *arg, PyObject *kw)
{
unsigned mode = PMODE_READ;
char *tag;
- char *kwlist[] = { "tag", "mode", 0 };
+ static const char *const kwlist[] = { "tag", "mode", 0 };
PyObject *rc = 0;
int r;
char buf[1024];
- if (!PyArg_ParseTupleAndKeywords(arg, kw, "s|O&:read", kwlist,
+ if (!PyArg_ParseTupleAndKeywords(arg, kw, "s|O&:read", KWLIST,
&tag, convuint, &mode))
goto end;
r = pixie_read(PIXIE_FD(me), tag, mode, buf, sizeof(buf));
else if (r > 0)
RETURN_NONE;
else
- rc = PyString_FromString(buf);
+ rc = BIN_FROMSTR(buf);
end:
return (rc);
}
char *tag;
char *phrase;
- if (!PyArg_ParseTuple(arg, "ss:set", &tag, &phrase))
+ if (!PyArg_ParseTuple(arg, "s"Y":set", &tag, &phrase))
return (0);
pixie_set(PIXIE_FD(me), tag, phrase);
RETURN_ME;
RETURN_ME;
}
-static PyMethodDef pixie_pymethods[] = {
+static const PyMethodDef pixie_pymethods[] = {
#define METHNAME(name) pixmeth_##name
KWMETH(read, "P.read(TAG, [mode = PMODE_READ]) -> STRING")
METH (set, "P.set(TAG, PHRASE)")
{ 0 }
};
-static PyTypeObject pixie_pytype_skel = {
- PyObject_HEAD_INIT(0) 0, /* Header */
- "catacomb.Pixie", /* @tp_name@ */
+static const PyTypeObject pixie_pytype_skel = {
+ PyVarObject_HEAD_INIT(0, 0) /* Header */
+ "Pixie", /* @tp_name@ */
sizeof(pixie_pyobj), /* @tp_basicsize@ */
0, /* @tp_itemsize@ */
Py_TPFLAGS_BASETYPE,
/* @tp_doc@ */
-"Passphrase pixie connection.",
+ "Pixie([socket = ?]): passphrase pixie connection.",
0, /* @tp_traverse@ */
0, /* @tp_clear@ */
0, /* @tp_weaklistoffset@ */
0, /* @tp_iter@ */
0, /* @tp_iternext@ */
- pixie_pymethods, /* @tp_methods@ */
+ PYMETHODS(pixie), /* @tp_methods@ */
0, /* @tp_members@ */
0, /* @tp_getset@ */
0, /* @tp_base@ */
/*----- Main code ---------------------------------------------------------*/
+static const struct nameval consts[] = {
+ CONST(PMODE_READ), CONST(PMODE_VERIFY),
+ { 0 }
+};
+
static PyObject *meth_ppread(PyObject *me, PyObject *arg, PyObject *kw)
{
char *tag;
unsigned f = PMODE_READ;
PyObject *rc = 0;
- char *kwlist[] = { "tag", "mode", 0 };
+ static const char *const kwlist[] = { "tag", "mode", 0 };
char buf[1024];
- if (!PyArg_ParseTupleAndKeywords(arg, kw, "s|O&:ppread", kwlist,
+ if (!PyArg_ParseTupleAndKeywords(arg, kw, "s|O&:ppread", KWLIST,
&tag, convuint, &f))
goto end;
if (passphrase_read(tag, f, buf, sizeof(buf)))
SYSERR("passphrase read failed");
- rc = PyString_FromString(buf);
+ rc = BIN_FROMSTR(buf);
end:
return (rc);
}
goto end;
if (pixie_getpass(prompt, buf, sizeof(buf)))
OSERR(0);
- rc = PyString_FromString(buf);
+ rc = BIN_FROMSTR(buf);
end:
return (rc);
}
-static PyMethodDef methods[] = {
+static const PyMethodDef methods[] = {
#define METHNAME(name) meth_##name
- KWMETH(ppread, "ppread(TAG, [mode = PMODE_READ]) -> STRING")
- METH (ppcancel, "ppcancel(TAG)")
- METH (getpass, "getpass(PROMPT) -> STRING")
+ KWMETH(ppread, "ppread(TAG, [mode = PMODE_READ]) -> STRING")
+ METH (ppcancel, "ppcancel(TAG)")
+ METH (getpass, "getpass(PROMPT) -> STRING")
#undef METHNAME
{ 0 }
};
void passphrase_pyinsert(PyObject *mod)
{
INSERT("Pixie", pixie_pytype);
+ setconstants(mod, consts);
}
/*----- That's all, folks -------------------------------------------------*/