1 /* cryptmodule.c - by Steve Majewski
12 static PyObject
*crypt_crypt(PyObject
*self
, PyObject
*args
)
15 extern char * crypt(const char *, const char *);
17 if (!PyArg_ParseTuple(args
, "ss:crypt", &word
, &salt
)) {
20 /* On some platforms (AtheOS) crypt returns NULL for an invalid
21 salt. Return None in that case. XXX Maybe raise an exception? */
22 return Py_BuildValue("s", crypt(word
, salt
));
26 PyDoc_STRVAR(crypt_crypt__doc__
,
27 "crypt(word, salt) -> string\n\
28 word will usually be a user's password. salt is a 2-character string\n\
29 which will be used to select one of 4096 variations of DES. The characters\n\
30 in salt must be either \".\", \"/\", or an alphanumeric character. Returns\n\
31 the hashed password as a string, which will be composed of characters from\n\
32 the same alphabet as the salt.");
35 static PyMethodDef crypt_methods
[] = {
36 {"crypt", crypt_crypt
, METH_VARARGS
, crypt_crypt__doc__
},
37 {NULL
, NULL
} /* sentinel */
43 Py_InitModule("crypt", crypt_methods
);