~malept/ubuntu/lucid/python2.6/dev-dependency-fix

« back to all changes in this revision

Viewing changes to Modules/cryptmodule.c

  • Committer: Bazaar Package Importer
  • Author(s): Matthias Klose
  • Date: 2009-02-13 12:51:00 UTC
  • Revision ID: james.westby@ubuntu.com-20090213125100-uufgcb9yeqzujpqw
Tags: upstream-2.6.1
ImportĀ upstreamĀ versionĀ 2.6.1

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
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
}