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