[PYTHON-CRYPTO] Erasing strings from memory?
Rich Salz
rsalz at DATAPOWER.COM
Sun Nov 10 19:08:58 CET 2002
The following module zero's out a python string.
hope it helps.
# --cut here--
#! /bin/sh
# To unshar, remove everything before the "cut here" line
# and feed the result to /bin/sh
sed -e 's/^X//' >zerostr.c <<'FUNKY_STUFF'
X/*
X**
X** To compile:
X gcc -DNDEBUG -g -O3 -Wall -Wstrict-prototypes -fPIC -I/usr/local/include/python2.2 -c zerostr.c
X gcc -shared zerostr.o -o zerostr.so
X** To use:
X a = '1234'
X import zerostr
X zerostr.zero(a)
X print a
X*/
X#include <Python.h>
X
Xstatic PyObject*
Xzerostr_zero(PyObject* self, PyObject* args)
X{
X PyObject* t;
X char* p;
X int i;
X
X if (!PyArg_ParseTuple(args, "O", &t))
X return NULL;
X if (!PyString_Check(t)) {
X Py_DECREF(t);
X PyErr_SetString(PyExc_TypeError, "Must be a string");
X return NULL;
X }
X i = PyString_GET_SIZE(t);
X p = PyString_AS_STRING(t);
X while (--i >= 0)
X *p++ = '\0';
X Py_DECREF(t);
X Py_INCREF(Py_None);
X return Py_None;
X}
X
Xstatic PyMethodDef zerostrMethods[] = {
X { "zero", zerostr_zero, METH_VARARGS,
X "Fill a string with NUL bytes."},
X { NULL, NULL, 0, NULL }
X};
X
X
Xvoid
Xinitzerostr(void)
X{
X (void)Py_InitModule("zerostr", zerostrMethods);
X}
FUNKY_STUFF
sed -e 's/^X//' >setup.py <<'FUNKY_STUFF'
X
Xfrom distutils.core import setup, Extension
X
Xzm = Extension('zerostr', sources = ['zerostr.c'])
X
Xsetup(name='ZeroStrPackage',
X version='1.0',
X description="Sample package zero'ing a string",
X ext_modules = [ zm ])
X
FUNKY_STUFF
More information about the python-crypto
mailing list