From 458120dd40db6b4df55a4e96b650e16798ef06a0 Mon Sep 17 00:00:00 2001 From: cinap_lenrek Date: Tue, 3 May 2011 11:25:13 +0000 Subject: add hg and python --- sys/src/cmd/python/Modules/cryptmodule.c | 49 ++++++++++++++++++++++++++++++++ 1 file changed, 49 insertions(+) create mode 100644 sys/src/cmd/python/Modules/cryptmodule.c (limited to 'sys/src/cmd/python/Modules/cryptmodule.c') diff --git a/sys/src/cmd/python/Modules/cryptmodule.c b/sys/src/cmd/python/Modules/cryptmodule.c new file mode 100644 index 000000000..6377f8430 --- /dev/null +++ b/sys/src/cmd/python/Modules/cryptmodule.c @@ -0,0 +1,49 @@ +/* cryptmodule.c - by Steve Majewski + */ + +#include "Python.h" + +#include + +#ifdef __VMS +#include +#endif + +/* Module crypt */ + + +static PyObject *crypt_crypt(PyObject *self, PyObject *args) +{ + char *word, *salt; +#ifndef __VMS + extern char * crypt(const char *, const char *); +#endif + + if (!PyArg_ParseTuple(args, "ss:crypt", &word, &salt)) { + return NULL; + } + /* On some platforms (AtheOS) crypt returns NULL for an invalid + salt. Return None in that case. XXX Maybe raise an exception? */ + return Py_BuildValue("s", crypt(word, salt)); + +} + +PyDoc_STRVAR(crypt_crypt__doc__, +"crypt(word, salt) -> string\n\ +word will usually be a user's password. salt is a 2-character string\n\ +which will be used to select one of 4096 variations of DES. The characters\n\ +in salt must be either \".\", \"/\", or an alphanumeric character. Returns\n\ +the hashed password as a string, which will be composed of characters from\n\ +the same alphabet as the salt."); + + +static PyMethodDef crypt_methods[] = { + {"crypt", crypt_crypt, METH_VARARGS, crypt_crypt__doc__}, + {NULL, NULL} /* sentinel */ +}; + +PyMODINIT_FUNC +initcrypt(void) +{ + Py_InitModule("crypt", crypt_methods); +} -- cgit v1.2.3