History

add hg and python

cinap_lenrek committed 15 years ago

Commit 4bb9e221 parent 987265c3706 files · +1228772 −-233Browse files

Showing the changes to sys/src/cmd/python/Modules/cryptmodule.c (1 of 3706 files). Show all

Unified · Split

sys/src/cmd/python/Modules/cryptmodule.c+49−0
@@ -0,0 +1,49 @@
1+/* cryptmodule.c - by Steve Majewski
2+ */
3+
4+#include "Python.h"
5+
6+#include <sys/types.h>
7+
8+#ifdef __VMS
9+#include <openssl/des.h>
10+#endif
11+
12+/* Module crypt */
13+
14+
15+static PyObject *crypt_crypt(PyObject *self, PyObject *args)
16+{
17+ char *word, *salt;
18+#ifndef __VMS
19+ extern char * crypt(const char *, const char *);
20+#endif
21+
22+ if (!PyArg_ParseTuple(args, "ss:crypt", &word, &salt)) {
23+ return NULL;
24+ }
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));
28+
29+}
30+
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.");
38+
39+
40+static PyMethodDef crypt_methods[] = {
41+ {"crypt", crypt_crypt, METH_VARARGS, crypt_crypt__doc__},
42+ {NULL, NULL} /* sentinel */
43+};
44+
45+PyMODINIT_FUNC
46+initcrypt(void)
47+{
48+ Py_InitModule("crypt", crypt_methods);
49+}