annotate Modules/md5module.c @ 25135:0f0016632be4 legacy-trunk

_formatparam(), set_param(): RFC 2231 encoding support by Oleg Broytmann in SF patch #600096. Specifically, the former function now encodes the triplets, while the latter adds optional charset and language arguments.
author Barry Warsaw <barry@python.org>
date Fri, 06 Sep 2002 03:55:04 +0000
parents f66b3a3509c7
children 86bf840c2a1c
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
1746
1940892d2fe3 Merge alpha100 branch back to main trunk
Guido van Rossum <guido@python.org>
parents: 1418
diff changeset
1
1132
6461dac9a9f2 * mymalloc.h: always allocate one extra byte, since some malloc's
Guido van Rossum <guido@python.org>
parents:
diff changeset
2 /* MD5 module */
6461dac9a9f2 * mymalloc.h: always allocate one extra byte, since some malloc's
Guido van Rossum <guido@python.org>
parents:
diff changeset
3
1746
1940892d2fe3 Merge alpha100 branch back to main trunk
Guido van Rossum <guido@python.org>
parents: 1418
diff changeset
4 /* This module provides an interface to the RSA Data Security,
1940892d2fe3 Merge alpha100 branch back to main trunk
Guido van Rossum <guido@python.org>
parents: 1418
diff changeset
5 Inc. MD5 Message-Digest Algorithm, described in RFC 1321.
1940892d2fe3 Merge alpha100 branch back to main trunk
Guido van Rossum <guido@python.org>
parents: 1418
diff changeset
6 It requires the files md5c.c and md5.h (which are slightly changed
1940892d2fe3 Merge alpha100 branch back to main trunk
Guido van Rossum <guido@python.org>
parents: 1418
diff changeset
7 from the versions in the RFC to avoid the "global.h" file.) */
1940892d2fe3 Merge alpha100 branch back to main trunk
Guido van Rossum <guido@python.org>
parents: 1418
diff changeset
8
1132
6461dac9a9f2 * mymalloc.h: always allocate one extra byte, since some malloc's
Guido van Rossum <guido@python.org>
parents:
diff changeset
9
6461dac9a9f2 * mymalloc.h: always allocate one extra byte, since some malloc's
Guido van Rossum <guido@python.org>
parents:
diff changeset
10 /* MD5 objects */
6461dac9a9f2 * mymalloc.h: always allocate one extra byte, since some malloc's
Guido van Rossum <guido@python.org>
parents:
diff changeset
11
4635
49745ddb4f69 Renamed
Barry Warsaw <barry@python.org>
parents: 4503
diff changeset
12 #include "Python.h"
1132
6461dac9a9f2 * mymalloc.h: always allocate one extra byte, since some malloc's
Guido van Rossum <guido@python.org>
parents:
diff changeset
13 #include "md5.h"
1746
1940892d2fe3 Merge alpha100 branch back to main trunk
Guido van Rossum <guido@python.org>
parents: 1418
diff changeset
14
1132
6461dac9a9f2 * mymalloc.h: always allocate one extra byte, since some malloc's
Guido van Rossum <guido@python.org>
parents:
diff changeset
15 typedef struct {
4635
49745ddb4f69 Renamed
Barry Warsaw <barry@python.org>
parents: 4503
diff changeset
16 PyObject_HEAD
1132
6461dac9a9f2 * mymalloc.h: always allocate one extra byte, since some malloc's
Guido van Rossum <guido@python.org>
parents:
diff changeset
17 MD5_CTX md5; /* the context holder */
6461dac9a9f2 * mymalloc.h: always allocate one extra byte, since some malloc's
Guido van Rossum <guido@python.org>
parents:
diff changeset
18 } md5object;
6461dac9a9f2 * mymalloc.h: always allocate one extra byte, since some malloc's
Guido van Rossum <guido@python.org>
parents:
diff changeset
19
24280
1598a1e473e2 staticforward bites the dust.
Jeremy Hylton <jeremy@alum.mit.edu>
parents: 23832
diff changeset
20 static PyTypeObject MD5type;
1132
6461dac9a9f2 * mymalloc.h: always allocate one extra byte, since some malloc's
Guido van Rossum <guido@python.org>
parents:
diff changeset
21
6461dac9a9f2 * mymalloc.h: always allocate one extra byte, since some malloc's
Guido van Rossum <guido@python.org>
parents:
diff changeset
22 #define is_md5object(v) ((v)->ob_type == &MD5type)
6461dac9a9f2 * mymalloc.h: always allocate one extra byte, since some malloc's
Guido van Rossum <guido@python.org>
parents:
diff changeset
23
6461dac9a9f2 * mymalloc.h: always allocate one extra byte, since some malloc's
Guido van Rossum <guido@python.org>
parents:
diff changeset
24 static md5object *
13651
8a063423e0b7 Bunch of minor ANSIfications: 'void initfunc()' -> 'void initfunc(void)',
Thomas Wouters <thomas@python.org>
parents: 13620
diff changeset
25 newmd5object(void)
1132
6461dac9a9f2 * mymalloc.h: always allocate one extra byte, since some malloc's
Guido van Rossum <guido@python.org>
parents:
diff changeset
26 {
6461dac9a9f2 * mymalloc.h: always allocate one extra byte, since some malloc's
Guido van Rossum <guido@python.org>
parents:
diff changeset
27 md5object *md5p;
6461dac9a9f2 * mymalloc.h: always allocate one extra byte, since some malloc's
Guido van Rossum <guido@python.org>
parents:
diff changeset
28
12576
1c7c2dd1beb1 Vladimir Marangozov's long-awaited malloc restructuring.
Guido van Rossum <guido@python.org>
parents: 11882
diff changeset
29 md5p = PyObject_New(md5object, &MD5type);
1132
6461dac9a9f2 * mymalloc.h: always allocate one extra byte, since some malloc's
Guido van Rossum <guido@python.org>
parents:
diff changeset
30 if (md5p == NULL)
6461dac9a9f2 * mymalloc.h: always allocate one extra byte, since some malloc's
Guido van Rossum <guido@python.org>
parents:
diff changeset
31 return NULL;
6461dac9a9f2 * mymalloc.h: always allocate one extra byte, since some malloc's
Guido van Rossum <guido@python.org>
parents:
diff changeset
32
6461dac9a9f2 * mymalloc.h: always allocate one extra byte, since some malloc's
Guido van Rossum <guido@python.org>
parents:
diff changeset
33 MD5Init(&md5p->md5); /* actual initialisation */
6461dac9a9f2 * mymalloc.h: always allocate one extra byte, since some malloc's
Guido van Rossum <guido@python.org>
parents:
diff changeset
34 return md5p;
1746
1940892d2fe3 Merge alpha100 branch back to main trunk
Guido van Rossum <guido@python.org>
parents: 1418
diff changeset
35 }
1132
6461dac9a9f2 * mymalloc.h: always allocate one extra byte, since some malloc's
Guido van Rossum <guido@python.org>
parents:
diff changeset
36
6461dac9a9f2 * mymalloc.h: always allocate one extra byte, since some malloc's
Guido van Rossum <guido@python.org>
parents:
diff changeset
37
6461dac9a9f2 * mymalloc.h: always allocate one extra byte, since some malloc's
Guido van Rossum <guido@python.org>
parents:
diff changeset
38 /* MD5 methods */
6461dac9a9f2 * mymalloc.h: always allocate one extra byte, since some malloc's
Guido van Rossum <guido@python.org>
parents:
diff changeset
39
6461dac9a9f2 * mymalloc.h: always allocate one extra byte, since some malloc's
Guido van Rossum <guido@python.org>
parents:
diff changeset
40 static void
13503
6484098f40fc ANSI-fying
Peter Schneider-Kamp <nowonder@nowonder.de>
parents: 13256
diff changeset
41 md5_dealloc(md5object *md5p)
1132
6461dac9a9f2 * mymalloc.h: always allocate one extra byte, since some malloc's
Guido van Rossum <guido@python.org>
parents:
diff changeset
42 {
12576
1c7c2dd1beb1 Vladimir Marangozov's long-awaited malloc restructuring.
Guido van Rossum <guido@python.org>
parents: 11882
diff changeset
43 PyObject_Del(md5p);
1746
1940892d2fe3 Merge alpha100 branch back to main trunk
Guido van Rossum <guido@python.org>
parents: 1418
diff changeset
44 }
1132
6461dac9a9f2 * mymalloc.h: always allocate one extra byte, since some malloc's
Guido van Rossum <guido@python.org>
parents:
diff changeset
45
6461dac9a9f2 * mymalloc.h: always allocate one extra byte, since some malloc's
Guido van Rossum <guido@python.org>
parents:
diff changeset
46
1746
1940892d2fe3 Merge alpha100 branch back to main trunk
Guido van Rossum <guido@python.org>
parents: 1418
diff changeset
47 /* MD5 methods-as-attributes */
1940892d2fe3 Merge alpha100 branch back to main trunk
Guido van Rossum <guido@python.org>
parents: 1418
diff changeset
48
4635
49745ddb4f69 Renamed
Barry Warsaw <barry@python.org>
parents: 4503
diff changeset
49 static PyObject *
13503
6484098f40fc ANSI-fying
Peter Schneider-Kamp <nowonder@nowonder.de>
parents: 13256
diff changeset
50 md5_update(md5object *self, PyObject *args)
1746
1940892d2fe3 Merge alpha100 branch back to main trunk
Guido van Rossum <guido@python.org>
parents: 1418
diff changeset
51 {
1940892d2fe3 Merge alpha100 branch back to main trunk
Guido van Rossum <guido@python.org>
parents: 1418
diff changeset
52 unsigned char *cp;
1940892d2fe3 Merge alpha100 branch back to main trunk
Guido van Rossum <guido@python.org>
parents: 1418
diff changeset
53 int len;
1940892d2fe3 Merge alpha100 branch back to main trunk
Guido van Rossum <guido@python.org>
parents: 1418
diff changeset
54
22709
3aa4bf7ac31e Remove METH_OLDARGS:
Neal Norwitz <nnorwitz@gmail.com>
parents: 22561
diff changeset
55 if (!PyArg_ParseTuple(args, "s#:update", &cp, &len))
1746
1940892d2fe3 Merge alpha100 branch back to main trunk
Guido van Rossum <guido@python.org>
parents: 1418
diff changeset
56 return NULL;
1940892d2fe3 Merge alpha100 branch back to main trunk
Guido van Rossum <guido@python.org>
parents: 1418
diff changeset
57
1940892d2fe3 Merge alpha100 branch back to main trunk
Guido van Rossum <guido@python.org>
parents: 1418
diff changeset
58 MD5Update(&self->md5, cp, len);
1940892d2fe3 Merge alpha100 branch back to main trunk
Guido van Rossum <guido@python.org>
parents: 1418
diff changeset
59
4635
49745ddb4f69 Renamed
Barry Warsaw <barry@python.org>
parents: 4503
diff changeset
60 Py_INCREF(Py_None);
49745ddb4f69 Renamed
Barry Warsaw <barry@python.org>
parents: 4503
diff changeset
61 return Py_None;
1746
1940892d2fe3 Merge alpha100 branch back to main trunk
Guido van Rossum <guido@python.org>
parents: 1418
diff changeset
62 }
1940892d2fe3 Merge alpha100 branch back to main trunk
Guido van Rossum <guido@python.org>
parents: 1418
diff changeset
63
23832
ed1ba37a46b7 Patch #568124: Add doc string macros.
Martin v. Löwis <martin@v.loewis.de>
parents: 22709
diff changeset
64 PyDoc_STRVAR(update_doc,
9363
f351c64c82ed Doc strings by Chris Petrilli.
Guido van Rossum <guido@python.org>
parents: 4635
diff changeset
65 "update (arg)\n\
f351c64c82ed Doc strings by Chris Petrilli.
Guido van Rossum <guido@python.org>
parents: 4635
diff changeset
66 \n\
f351c64c82ed Doc strings by Chris Petrilli.
Guido van Rossum <guido@python.org>
parents: 4635
diff changeset
67 Update the md5 object with the string arg. Repeated calls are\n\
f351c64c82ed Doc strings by Chris Petrilli.
Guido van Rossum <guido@python.org>
parents: 4635
diff changeset
68 equivalent to a single call with the concatenation of all the\n\
23832
ed1ba37a46b7 Patch #568124: Add doc string macros.
Martin v. Löwis <martin@v.loewis.de>
parents: 22709
diff changeset
69 arguments.");
9363
f351c64c82ed Doc strings by Chris Petrilli.
Guido van Rossum <guido@python.org>
parents: 4635
diff changeset
70
f351c64c82ed Doc strings by Chris Petrilli.
Guido van Rossum <guido@python.org>
parents: 4635
diff changeset
71
4635
49745ddb4f69 Renamed
Barry Warsaw <barry@python.org>
parents: 4503
diff changeset
72 static PyObject *
22561
043ad7adc896 Remove many uses of PyArg_NoArgs macro, change METH_OLDARGS to METH_NOARGS.
Neal Norwitz <nnorwitz@gmail.com>
parents: 21313
diff changeset
73 md5_digest(md5object *self)
1746
1940892d2fe3 Merge alpha100 branch back to main trunk
Guido van Rossum <guido@python.org>
parents: 1418
diff changeset
74 {
13979
63de7f00b5bc md5_hexdigest(): After a brief conversation with TP, added hexdigest()
Barry Warsaw <barry@python.org>
parents: 13820
diff changeset
75 MD5_CTX mdContext;
1746
1940892d2fe3 Merge alpha100 branch back to main trunk
Guido van Rossum <guido@python.org>
parents: 1418
diff changeset
76 unsigned char aDigest[16];
1940892d2fe3 Merge alpha100 branch back to main trunk
Guido van Rossum <guido@python.org>
parents: 1418
diff changeset
77
1940892d2fe3 Merge alpha100 branch back to main trunk
Guido van Rossum <guido@python.org>
parents: 1418
diff changeset
78 /* make a temporary copy, and perform the final */
1940892d2fe3 Merge alpha100 branch back to main trunk
Guido van Rossum <guido@python.org>
parents: 1418
diff changeset
79 mdContext = self->md5;
1940892d2fe3 Merge alpha100 branch back to main trunk
Guido van Rossum <guido@python.org>
parents: 1418
diff changeset
80 MD5Final(aDigest, &mdContext);
1940892d2fe3 Merge alpha100 branch back to main trunk
Guido van Rossum <guido@python.org>
parents: 1418
diff changeset
81
4635
49745ddb4f69 Renamed
Barry Warsaw <barry@python.org>
parents: 4503
diff changeset
82 return PyString_FromStringAndSize((char *)aDigest, 16);
1746
1940892d2fe3 Merge alpha100 branch back to main trunk
Guido van Rossum <guido@python.org>
parents: 1418
diff changeset
83 }
1940892d2fe3 Merge alpha100 branch back to main trunk
Guido van Rossum <guido@python.org>
parents: 1418
diff changeset
84
23832
ed1ba37a46b7 Patch #568124: Add doc string macros.
Martin v. Löwis <martin@v.loewis.de>
parents: 22709
diff changeset
85 PyDoc_STRVAR(digest_doc,
9363
f351c64c82ed Doc strings by Chris Petrilli.
Guido van Rossum <guido@python.org>
parents: 4635
diff changeset
86 "digest() -> string\n\
f351c64c82ed Doc strings by Chris Petrilli.
Guido van Rossum <guido@python.org>
parents: 4635
diff changeset
87 \n\
f351c64c82ed Doc strings by Chris Petrilli.
Guido van Rossum <guido@python.org>
parents: 4635
diff changeset
88 Return the digest of the strings passed to the update() method so\n\
f351c64c82ed Doc strings by Chris Petrilli.
Guido van Rossum <guido@python.org>
parents: 4635
diff changeset
89 far. This is an 16-byte string which may contain non-ASCII characters,\n\
23832
ed1ba37a46b7 Patch #568124: Add doc string macros.
Martin v. Löwis <martin@v.loewis.de>
parents: 22709
diff changeset
90 including null bytes.");
9363
f351c64c82ed Doc strings by Chris Petrilli.
Guido van Rossum <guido@python.org>
parents: 4635
diff changeset
91
f351c64c82ed Doc strings by Chris Petrilli.
Guido van Rossum <guido@python.org>
parents: 4635
diff changeset
92
4635
49745ddb4f69 Renamed
Barry Warsaw <barry@python.org>
parents: 4503
diff changeset
93 static PyObject *
22561
043ad7adc896 Remove many uses of PyArg_NoArgs macro, change METH_OLDARGS to METH_NOARGS.
Neal Norwitz <nnorwitz@gmail.com>
parents: 21313
diff changeset
94 md5_hexdigest(md5object *self)
13979
63de7f00b5bc md5_hexdigest(): After a brief conversation with TP, added hexdigest()
Barry Warsaw <barry@python.org>
parents: 13820
diff changeset
95 {
63de7f00b5bc md5_hexdigest(): After a brief conversation with TP, added hexdigest()
Barry Warsaw <barry@python.org>
parents: 13820
diff changeset
96 MD5_CTX mdContext;
63de7f00b5bc md5_hexdigest(): After a brief conversation with TP, added hexdigest()
Barry Warsaw <barry@python.org>
parents: 13820
diff changeset
97 unsigned char digest[16];
63de7f00b5bc md5_hexdigest(): After a brief conversation with TP, added hexdigest()
Barry Warsaw <barry@python.org>
parents: 13820
diff changeset
98 unsigned char hexdigest[32];
63de7f00b5bc md5_hexdigest(): After a brief conversation with TP, added hexdigest()
Barry Warsaw <barry@python.org>
parents: 13820
diff changeset
99 int i, j;
63de7f00b5bc md5_hexdigest(): After a brief conversation with TP, added hexdigest()
Barry Warsaw <barry@python.org>
parents: 13820
diff changeset
100
63de7f00b5bc md5_hexdigest(): After a brief conversation with TP, added hexdigest()
Barry Warsaw <barry@python.org>
parents: 13820
diff changeset
101 /* make a temporary copy, and perform the final */
63de7f00b5bc md5_hexdigest(): After a brief conversation with TP, added hexdigest()
Barry Warsaw <barry@python.org>
parents: 13820
diff changeset
102 mdContext = self->md5;
63de7f00b5bc md5_hexdigest(): After a brief conversation with TP, added hexdigest()
Barry Warsaw <barry@python.org>
parents: 13820
diff changeset
103 MD5Final(digest, &mdContext);
63de7f00b5bc md5_hexdigest(): After a brief conversation with TP, added hexdigest()
Barry Warsaw <barry@python.org>
parents: 13820
diff changeset
104
63de7f00b5bc md5_hexdigest(): After a brief conversation with TP, added hexdigest()
Barry Warsaw <barry@python.org>
parents: 13820
diff changeset
105 /* Make hex version of the digest */
63de7f00b5bc md5_hexdigest(): After a brief conversation with TP, added hexdigest()
Barry Warsaw <barry@python.org>
parents: 13820
diff changeset
106 for(i=j=0; i<16; i++) {
63de7f00b5bc md5_hexdigest(): After a brief conversation with TP, added hexdigest()
Barry Warsaw <barry@python.org>
parents: 13820
diff changeset
107 char c;
63de7f00b5bc md5_hexdigest(): After a brief conversation with TP, added hexdigest()
Barry Warsaw <barry@python.org>
parents: 13820
diff changeset
108 c = (digest[i] >> 4) & 0xf;
63de7f00b5bc md5_hexdigest(): After a brief conversation with TP, added hexdigest()
Barry Warsaw <barry@python.org>
parents: 13820
diff changeset
109 c = (c>9) ? c+'a'-10 : c + '0';
63de7f00b5bc md5_hexdigest(): After a brief conversation with TP, added hexdigest()
Barry Warsaw <barry@python.org>
parents: 13820
diff changeset
110 hexdigest[j++] = c;
63de7f00b5bc md5_hexdigest(): After a brief conversation with TP, added hexdigest()
Barry Warsaw <barry@python.org>
parents: 13820
diff changeset
111 c = (digest[i] & 0xf);
63de7f00b5bc md5_hexdigest(): After a brief conversation with TP, added hexdigest()
Barry Warsaw <barry@python.org>
parents: 13820
diff changeset
112 c = (c>9) ? c+'a'-10 : c + '0';
63de7f00b5bc md5_hexdigest(): After a brief conversation with TP, added hexdigest()
Barry Warsaw <barry@python.org>
parents: 13820
diff changeset
113 hexdigest[j++] = c;
63de7f00b5bc md5_hexdigest(): After a brief conversation with TP, added hexdigest()
Barry Warsaw <barry@python.org>
parents: 13820
diff changeset
114 }
63de7f00b5bc md5_hexdigest(): After a brief conversation with TP, added hexdigest()
Barry Warsaw <barry@python.org>
parents: 13820
diff changeset
115 return PyString_FromStringAndSize((char*)hexdigest, 32);
63de7f00b5bc md5_hexdigest(): After a brief conversation with TP, added hexdigest()
Barry Warsaw <barry@python.org>
parents: 13820
diff changeset
116 }
63de7f00b5bc md5_hexdigest(): After a brief conversation with TP, added hexdigest()
Barry Warsaw <barry@python.org>
parents: 13820
diff changeset
117
63de7f00b5bc md5_hexdigest(): After a brief conversation with TP, added hexdigest()
Barry Warsaw <barry@python.org>
parents: 13820
diff changeset
118
23832
ed1ba37a46b7 Patch #568124: Add doc string macros.
Martin v. Löwis <martin@v.loewis.de>
parents: 22709
diff changeset
119 PyDoc_STRVAR(hexdigest_doc,
13979
63de7f00b5bc md5_hexdigest(): After a brief conversation with TP, added hexdigest()
Barry Warsaw <barry@python.org>
parents: 13820
diff changeset
120 "hexdigest() -> string\n\
63de7f00b5bc md5_hexdigest(): After a brief conversation with TP, added hexdigest()
Barry Warsaw <barry@python.org>
parents: 13820
diff changeset
121 \n\
23832
ed1ba37a46b7 Patch #568124: Add doc string macros.
Martin v. Löwis <martin@v.loewis.de>
parents: 22709
diff changeset
122 Like digest(), but returns the digest as a string of hexadecimal digits.");
13979
63de7f00b5bc md5_hexdigest(): After a brief conversation with TP, added hexdigest()
Barry Warsaw <barry@python.org>
parents: 13820
diff changeset
123
63de7f00b5bc md5_hexdigest(): After a brief conversation with TP, added hexdigest()
Barry Warsaw <barry@python.org>
parents: 13820
diff changeset
124
63de7f00b5bc md5_hexdigest(): After a brief conversation with TP, added hexdigest()
Barry Warsaw <barry@python.org>
parents: 13820
diff changeset
125 static PyObject *
22561
043ad7adc896 Remove many uses of PyArg_NoArgs macro, change METH_OLDARGS to METH_NOARGS.
Neal Norwitz <nnorwitz@gmail.com>
parents: 21313
diff changeset
126 md5_copy(md5object *self)
1746
1940892d2fe3 Merge alpha100 branch back to main trunk
Guido van Rossum <guido@python.org>
parents: 1418
diff changeset
127 {
1940892d2fe3 Merge alpha100 branch back to main trunk
Guido van Rossum <guido@python.org>
parents: 1418
diff changeset
128 md5object *md5p;
1940892d2fe3 Merge alpha100 branch back to main trunk
Guido van Rossum <guido@python.org>
parents: 1418
diff changeset
129
1940892d2fe3 Merge alpha100 branch back to main trunk
Guido van Rossum <guido@python.org>
parents: 1418
diff changeset
130 if ((md5p = newmd5object()) == NULL)
1940892d2fe3 Merge alpha100 branch back to main trunk
Guido van Rossum <guido@python.org>
parents: 1418
diff changeset
131 return NULL;
1940892d2fe3 Merge alpha100 branch back to main trunk
Guido van Rossum <guido@python.org>
parents: 1418
diff changeset
132
1940892d2fe3 Merge alpha100 branch back to main trunk
Guido van Rossum <guido@python.org>
parents: 1418
diff changeset
133 md5p->md5 = self->md5;
1940892d2fe3 Merge alpha100 branch back to main trunk
Guido van Rossum <guido@python.org>
parents: 1418
diff changeset
134
4635
49745ddb4f69 Renamed
Barry Warsaw <barry@python.org>
parents: 4503
diff changeset
135 return (PyObject *)md5p;
1746
1940892d2fe3 Merge alpha100 branch back to main trunk
Guido van Rossum <guido@python.org>
parents: 1418
diff changeset
136 }
1940892d2fe3 Merge alpha100 branch back to main trunk
Guido van Rossum <guido@python.org>
parents: 1418
diff changeset
137
23832
ed1ba37a46b7 Patch #568124: Add doc string macros.
Martin v. Löwis <martin@v.loewis.de>
parents: 22709
diff changeset
138 PyDoc_STRVAR(copy_doc,
9363
f351c64c82ed Doc strings by Chris Petrilli.
Guido van Rossum <guido@python.org>
parents: 4635
diff changeset
139 "copy() -> md5 object\n\
f351c64c82ed Doc strings by Chris Petrilli.
Guido van Rossum <guido@python.org>
parents: 4635
diff changeset
140 \n\
23832
ed1ba37a46b7 Patch #568124: Add doc string macros.
Martin v. Löwis <martin@v.loewis.de>
parents: 22709
diff changeset
141 Return a copy (``clone'') of the md5 object.");
9363
f351c64c82ed Doc strings by Chris Petrilli.
Guido van Rossum <guido@python.org>
parents: 4635
diff changeset
142
f351c64c82ed Doc strings by Chris Petrilli.
Guido van Rossum <guido@python.org>
parents: 4635
diff changeset
143
4635
49745ddb4f69 Renamed
Barry Warsaw <barry@python.org>
parents: 4503
diff changeset
144 static PyMethodDef md5_methods[] = {
22709
3aa4bf7ac31e Remove METH_OLDARGS:
Neal Norwitz <nnorwitz@gmail.com>
parents: 22561
diff changeset
145 {"update", (PyCFunction)md5_update, METH_VARARGS, update_doc},
22561
043ad7adc896 Remove many uses of PyArg_NoArgs macro, change METH_OLDARGS to METH_NOARGS.
Neal Norwitz <nnorwitz@gmail.com>
parents: 21313
diff changeset
146 {"digest", (PyCFunction)md5_digest, METH_NOARGS, digest_doc},
043ad7adc896 Remove many uses of PyArg_NoArgs macro, change METH_OLDARGS to METH_NOARGS.
Neal Norwitz <nnorwitz@gmail.com>
parents: 21313
diff changeset
147 {"hexdigest", (PyCFunction)md5_hexdigest, METH_NOARGS, hexdigest_doc},
043ad7adc896 Remove many uses of PyArg_NoArgs macro, change METH_OLDARGS to METH_NOARGS.
Neal Norwitz <nnorwitz@gmail.com>
parents: 21313
diff changeset
148 {"copy", (PyCFunction)md5_copy, METH_NOARGS, copy_doc},
13979
63de7f00b5bc md5_hexdigest(): After a brief conversation with TP, added hexdigest()
Barry Warsaw <barry@python.org>
parents: 13820
diff changeset
149 {NULL, NULL} /* sentinel */
1746
1940892d2fe3 Merge alpha100 branch back to main trunk
Guido van Rossum <guido@python.org>
parents: 1418
diff changeset
150 };
1940892d2fe3 Merge alpha100 branch back to main trunk
Guido van Rossum <guido@python.org>
parents: 1418
diff changeset
151
4635
49745ddb4f69 Renamed
Barry Warsaw <barry@python.org>
parents: 4503
diff changeset
152 static PyObject *
13503
6484098f40fc ANSI-fying
Peter Schneider-Kamp <nowonder@nowonder.de>
parents: 13256
diff changeset
153 md5_getattr(md5object *self, char *name)
1746
1940892d2fe3 Merge alpha100 branch back to main trunk
Guido van Rossum <guido@python.org>
parents: 1418
diff changeset
154 {
20843
8d14f534a5c2 [Patch #476612] Add attributes from PEP247 to the md5 and sha modules
Andrew M. Kuchling <amk@amk.ca>
parents: 14375
diff changeset
155 if (strcmp(name, "digest_size") == 0) {
8d14f534a5c2 [Patch #476612] Add attributes from PEP247 to the md5 and sha modules
Andrew M. Kuchling <amk@amk.ca>
parents: 14375
diff changeset
156 return PyInt_FromLong(16);
8d14f534a5c2 [Patch #476612] Add attributes from PEP247 to the md5 and sha modules
Andrew M. Kuchling <amk@amk.ca>
parents: 14375
diff changeset
157 }
8d14f534a5c2 [Patch #476612] Add attributes from PEP247 to the md5 and sha modules
Andrew M. Kuchling <amk@amk.ca>
parents: 14375
diff changeset
158
4635
49745ddb4f69 Renamed
Barry Warsaw <barry@python.org>
parents: 4503
diff changeset
159 return Py_FindMethod(md5_methods, (PyObject *)self, name);
1746
1940892d2fe3 Merge alpha100 branch back to main trunk
Guido van Rossum <guido@python.org>
parents: 1418
diff changeset
160 }
1940892d2fe3 Merge alpha100 branch back to main trunk
Guido van Rossum <guido@python.org>
parents: 1418
diff changeset
161
23832
ed1ba37a46b7 Patch #568124: Add doc string macros.
Martin v. Löwis <martin@v.loewis.de>
parents: 22709
diff changeset
162 PyDoc_STRVAR(module_doc,
9363
f351c64c82ed Doc strings by Chris Petrilli.
Guido van Rossum <guido@python.org>
parents: 4635
diff changeset
163 "This module implements the interface to RSA's MD5 message digest\n\
f351c64c82ed Doc strings by Chris Petrilli.
Guido van Rossum <guido@python.org>
parents: 4635
diff changeset
164 algorithm (see also Internet RFC 1321). Its use is quite\n\
f351c64c82ed Doc strings by Chris Petrilli.
Guido van Rossum <guido@python.org>
parents: 4635
diff changeset
165 straightforward: use the new() to create an md5 object. You can now\n\
f351c64c82ed Doc strings by Chris Petrilli.
Guido van Rossum <guido@python.org>
parents: 4635
diff changeset
166 feed this object with arbitrary strings using the update() method, and\n\
f351c64c82ed Doc strings by Chris Petrilli.
Guido van Rossum <guido@python.org>
parents: 4635
diff changeset
167 at any point you can ask it for the digest (a strong kind of 128-bit\n\
13620
5b727ab37092 Spelling fixes supplied by Rob W. W. Hooft. All these are fixes in either
Thomas Wouters <thomas@python.org>
parents: 13503
diff changeset
168 checksum, a.k.a. ``fingerprint'') of the concatenation of the strings\n\
9363
f351c64c82ed Doc strings by Chris Petrilli.
Guido van Rossum <guido@python.org>
parents: 4635
diff changeset
169 fed to it so far using the digest() method.\n\
f351c64c82ed Doc strings by Chris Petrilli.
Guido van Rossum <guido@python.org>
parents: 4635
diff changeset
170 \n\
f351c64c82ed Doc strings by Chris Petrilli.
Guido van Rossum <guido@python.org>
parents: 4635
diff changeset
171 Functions:\n\
f351c64c82ed Doc strings by Chris Petrilli.
Guido van Rossum <guido@python.org>
parents: 4635
diff changeset
172 \n\
f351c64c82ed Doc strings by Chris Petrilli.
Guido van Rossum <guido@python.org>
parents: 4635
diff changeset
173 new([arg]) -- return a new md5 object, initialized with arg if provided\n\
f351c64c82ed Doc strings by Chris Petrilli.
Guido van Rossum <guido@python.org>
parents: 4635
diff changeset
174 md5([arg]) -- DEPRECATED, same as new, but for compatibility\n\
f351c64c82ed Doc strings by Chris Petrilli.
Guido van Rossum <guido@python.org>
parents: 4635
diff changeset
175 \n\
f351c64c82ed Doc strings by Chris Petrilli.
Guido van Rossum <guido@python.org>
parents: 4635
diff changeset
176 Special Objects:\n\
f351c64c82ed Doc strings by Chris Petrilli.
Guido van Rossum <guido@python.org>
parents: 4635
diff changeset
177 \n\
23832
ed1ba37a46b7 Patch #568124: Add doc string macros.
Martin v. Löwis <martin@v.loewis.de>
parents: 22709
diff changeset
178 MD5Type -- type object for md5 objects");
9363
f351c64c82ed Doc strings by Chris Petrilli.
Guido van Rossum <guido@python.org>
parents: 4635
diff changeset
179
23832
ed1ba37a46b7 Patch #568124: Add doc string macros.
Martin v. Löwis <martin@v.loewis.de>
parents: 22709
diff changeset
180 PyDoc_STRVAR(md5type_doc,
9363
f351c64c82ed Doc strings by Chris Petrilli.
Guido van Rossum <guido@python.org>
parents: 4635
diff changeset
181 "An md5 represents the object used to calculate the MD5 checksum of a\n\
f351c64c82ed Doc strings by Chris Petrilli.
Guido van Rossum <guido@python.org>
parents: 4635
diff changeset
182 string of information.\n\
f351c64c82ed Doc strings by Chris Petrilli.
Guido van Rossum <guido@python.org>
parents: 4635
diff changeset
183 \n\
f351c64c82ed Doc strings by Chris Petrilli.
Guido van Rossum <guido@python.org>
parents: 4635
diff changeset
184 Methods:\n\
f351c64c82ed Doc strings by Chris Petrilli.
Guido van Rossum <guido@python.org>
parents: 4635
diff changeset
185 \n\
f351c64c82ed Doc strings by Chris Petrilli.
Guido van Rossum <guido@python.org>
parents: 4635
diff changeset
186 update() -- updates the current digest with an additional string\n\
f351c64c82ed Doc strings by Chris Petrilli.
Guido van Rossum <guido@python.org>
parents: 4635
diff changeset
187 digest() -- return the current digest value\n\
23832
ed1ba37a46b7 Patch #568124: Add doc string macros.
Martin v. Löwis <martin@v.loewis.de>
parents: 22709
diff changeset
188 copy() -- return a copy of the current md5 object");
9363
f351c64c82ed Doc strings by Chris Petrilli.
Guido van Rossum <guido@python.org>
parents: 4635
diff changeset
189
24283
c0a67a1cab09 Removed more stray instances of statichere, but left _sre.c alone.
Tim Peters <tim.peters@gmail.com>
parents: 24280
diff changeset
190 static PyTypeObject MD5type = {
11711
6546ea06e157 Patch from Paul Sokolovsky <Paul.Sokolovsky@technologist.com>:
Fred Drake <fdrake@acm.org>
parents: 9588
diff changeset
191 PyObject_HEAD_INIT(NULL)
4635
49745ddb4f69 Renamed
Barry Warsaw <barry@python.org>
parents: 4503
diff changeset
192 0, /*ob_size*/
21313
91dd223829c6 Patch supplied by Burton Radons for his own SF bug #487390: Modifying
Guido van Rossum <guido@python.org>
parents: 20850
diff changeset
193 "md5.md5", /*tp_name*/
4635
49745ddb4f69 Renamed
Barry Warsaw <barry@python.org>
parents: 4503
diff changeset
194 sizeof(md5object), /*tp_size*/
49745ddb4f69 Renamed
Barry Warsaw <barry@python.org>
parents: 4503
diff changeset
195 0, /*tp_itemsize*/
1746
1940892d2fe3 Merge alpha100 branch back to main trunk
Guido van Rossum <guido@python.org>
parents: 1418
diff changeset
196 /* methods */
4635
49745ddb4f69 Renamed
Barry Warsaw <barry@python.org>
parents: 4503
diff changeset
197 (destructor)md5_dealloc, /*tp_dealloc*/
49745ddb4f69 Renamed
Barry Warsaw <barry@python.org>
parents: 4503
diff changeset
198 0, /*tp_print*/
1746
1940892d2fe3 Merge alpha100 branch back to main trunk
Guido van Rossum <guido@python.org>
parents: 1418
diff changeset
199 (getattrfunc)md5_getattr, /*tp_getattr*/
4635
49745ddb4f69 Renamed
Barry Warsaw <barry@python.org>
parents: 4503
diff changeset
200 0, /*tp_setattr*/
49745ddb4f69 Renamed
Barry Warsaw <barry@python.org>
parents: 4503
diff changeset
201 0, /*tp_compare*/
49745ddb4f69 Renamed
Barry Warsaw <barry@python.org>
parents: 4503
diff changeset
202 0, /*tp_repr*/
49745ddb4f69 Renamed
Barry Warsaw <barry@python.org>
parents: 4503
diff changeset
203 0, /*tp_as_number*/
9363
f351c64c82ed Doc strings by Chris Petrilli.
Guido van Rossum <guido@python.org>
parents: 4635
diff changeset
204 0, /*tp_as_sequence*/
f351c64c82ed Doc strings by Chris Petrilli.
Guido van Rossum <guido@python.org>
parents: 4635
diff changeset
205 0, /*tp_as_mapping*/
f351c64c82ed Doc strings by Chris Petrilli.
Guido van Rossum <guido@python.org>
parents: 4635
diff changeset
206 0, /*tp_hash*/
f351c64c82ed Doc strings by Chris Petrilli.
Guido van Rossum <guido@python.org>
parents: 4635
diff changeset
207 0, /*tp_call*/
f351c64c82ed Doc strings by Chris Petrilli.
Guido van Rossum <guido@python.org>
parents: 4635
diff changeset
208 0, /*tp_str*/
f351c64c82ed Doc strings by Chris Petrilli.
Guido van Rossum <guido@python.org>
parents: 4635
diff changeset
209 0, /*tp_getattro*/
f351c64c82ed Doc strings by Chris Petrilli.
Guido van Rossum <guido@python.org>
parents: 4635
diff changeset
210 0, /*tp_setattro*/
f351c64c82ed Doc strings by Chris Petrilli.
Guido van Rossum <guido@python.org>
parents: 4635
diff changeset
211 0, /*tp_as_buffer*/
f351c64c82ed Doc strings by Chris Petrilli.
Guido van Rossum <guido@python.org>
parents: 4635
diff changeset
212 0, /*tp_xxx4*/
f351c64c82ed Doc strings by Chris Petrilli.
Guido van Rossum <guido@python.org>
parents: 4635
diff changeset
213 md5type_doc, /*tp_doc*/
1746
1940892d2fe3 Merge alpha100 branch back to main trunk
Guido van Rossum <guido@python.org>
parents: 1418
diff changeset
214 };
1940892d2fe3 Merge alpha100 branch back to main trunk
Guido van Rossum <guido@python.org>
parents: 1418
diff changeset
215
1940892d2fe3 Merge alpha100 branch back to main trunk
Guido van Rossum <guido@python.org>
parents: 1418
diff changeset
216
1940892d2fe3 Merge alpha100 branch back to main trunk
Guido van Rossum <guido@python.org>
parents: 1418
diff changeset
217 /* MD5 functions */
1132
6461dac9a9f2 * mymalloc.h: always allocate one extra byte, since some malloc's
Guido van Rossum <guido@python.org>
parents:
diff changeset
218
4635
49745ddb4f69 Renamed
Barry Warsaw <barry@python.org>
parents: 4503
diff changeset
219 static PyObject *
13503
6484098f40fc ANSI-fying
Peter Schneider-Kamp <nowonder@nowonder.de>
parents: 13256
diff changeset
220 MD5_new(PyObject *self, PyObject *args)
1132
6461dac9a9f2 * mymalloc.h: always allocate one extra byte, since some malloc's
Guido van Rossum <guido@python.org>
parents:
diff changeset
221 {
6461dac9a9f2 * mymalloc.h: always allocate one extra byte, since some malloc's
Guido van Rossum <guido@python.org>
parents:
diff changeset
222 md5object *md5p;
1746
1940892d2fe3 Merge alpha100 branch back to main trunk
Guido van Rossum <guido@python.org>
parents: 1418
diff changeset
223 unsigned char *cp = NULL;
2860
6ae9b377e522 use newgetargs
Guido van Rossum <guido@python.org>
parents: 2506
diff changeset
224 int len = 0;
1132
6461dac9a9f2 * mymalloc.h: always allocate one extra byte, since some malloc's
Guido van Rossum <guido@python.org>
parents:
diff changeset
225
11882
dc65c5f6ad7c Massive patch by Skip Montanaro to add ":name" to as many
Guido van Rossum <guido@python.org>
parents: 11711
diff changeset
226 if (!PyArg_ParseTuple(args, "|s#:new", &cp, &len))
2860
6ae9b377e522 use newgetargs
Guido van Rossum <guido@python.org>
parents: 2506
diff changeset
227 return NULL;
1132
6461dac9a9f2 * mymalloc.h: always allocate one extra byte, since some malloc's
Guido van Rossum <guido@python.org>
parents:
diff changeset
228
6461dac9a9f2 * mymalloc.h: always allocate one extra byte, since some malloc's
Guido van Rossum <guido@python.org>
parents:
diff changeset
229 if ((md5p = newmd5object()) == NULL)
6461dac9a9f2 * mymalloc.h: always allocate one extra byte, since some malloc's
Guido van Rossum <guido@python.org>
parents:
diff changeset
230 return NULL;
6461dac9a9f2 * mymalloc.h: always allocate one extra byte, since some malloc's
Guido van Rossum <guido@python.org>
parents:
diff changeset
231
6461dac9a9f2 * mymalloc.h: always allocate one extra byte, since some malloc's
Guido van Rossum <guido@python.org>
parents:
diff changeset
232 if (cp)
6461dac9a9f2 * mymalloc.h: always allocate one extra byte, since some malloc's
Guido van Rossum <guido@python.org>
parents:
diff changeset
233 MD5Update(&md5p->md5, cp, len);
6461dac9a9f2 * mymalloc.h: always allocate one extra byte, since some malloc's
Guido van Rossum <guido@python.org>
parents:
diff changeset
234
4635
49745ddb4f69 Renamed
Barry Warsaw <barry@python.org>
parents: 4503
diff changeset
235 return (PyObject *)md5p;
1746
1940892d2fe3 Merge alpha100 branch back to main trunk
Guido van Rossum <guido@python.org>
parents: 1418
diff changeset
236 }
1132
6461dac9a9f2 * mymalloc.h: always allocate one extra byte, since some malloc's
Guido van Rossum <guido@python.org>
parents:
diff changeset
237
23832
ed1ba37a46b7 Patch #568124: Add doc string macros.
Martin v. Löwis <martin@v.loewis.de>
parents: 22709
diff changeset
238 PyDoc_STRVAR(new_doc,
9363
f351c64c82ed Doc strings by Chris Petrilli.
Guido van Rossum <guido@python.org>
parents: 4635
diff changeset
239 "new([arg]) -> md5 object\n\
f351c64c82ed Doc strings by Chris Petrilli.
Guido van Rossum <guido@python.org>
parents: 4635
diff changeset
240 \n\
f351c64c82ed Doc strings by Chris Petrilli.
Guido van Rossum <guido@python.org>
parents: 4635
diff changeset
241 Return a new md5 object. If arg is present, the method call update(arg)\n\
23832
ed1ba37a46b7 Patch #568124: Add doc string macros.
Martin v. Löwis <martin@v.loewis.de>
parents: 22709
diff changeset
242 is made.");
9363
f351c64c82ed Doc strings by Chris Petrilli.
Guido van Rossum <guido@python.org>
parents: 4635
diff changeset
243
1132
6461dac9a9f2 * mymalloc.h: always allocate one extra byte, since some malloc's
Guido van Rossum <guido@python.org>
parents:
diff changeset
244
6461dac9a9f2 * mymalloc.h: always allocate one extra byte, since some malloc's
Guido van Rossum <guido@python.org>
parents:
diff changeset
245 /* List of functions exported by this module */
6461dac9a9f2 * mymalloc.h: always allocate one extra byte, since some malloc's
Guido van Rossum <guido@python.org>
parents:
diff changeset
246
4635
49745ddb4f69 Renamed
Barry Warsaw <barry@python.org>
parents: 4503
diff changeset
247 static PyMethodDef md5_functions[] = {
13817
3c0f75a2198f Use METH_VARARGS instead of numeric constant 1 in method def. tables
Andrew M. Kuchling <amk@amk.ca>
parents: 13651
diff changeset
248 {"new", (PyCFunction)MD5_new, METH_VARARGS, new_doc},
3c0f75a2198f Use METH_VARARGS instead of numeric constant 1 in method def. tables
Andrew M. Kuchling <amk@amk.ca>
parents: 13651
diff changeset
249 {"md5", (PyCFunction)MD5_new, METH_VARARGS, new_doc}, /* Backward compatibility */
2860
6ae9b377e522 use newgetargs
Guido van Rossum <guido@python.org>
parents: 2506
diff changeset
250 {NULL, NULL} /* Sentinel */
1132
6461dac9a9f2 * mymalloc.h: always allocate one extra byte, since some malloc's
Guido van Rossum <guido@python.org>
parents:
diff changeset
251 };
6461dac9a9f2 * mymalloc.h: always allocate one extra byte, since some malloc's
Guido van Rossum <guido@python.org>
parents:
diff changeset
252
6461dac9a9f2 * mymalloc.h: always allocate one extra byte, since some malloc's
Guido van Rossum <guido@python.org>
parents:
diff changeset
253
6461dac9a9f2 * mymalloc.h: always allocate one extra byte, since some malloc's
Guido van Rossum <guido@python.org>
parents:
diff changeset
254 /* Initialize this module. */
6461dac9a9f2 * mymalloc.h: always allocate one extra byte, since some malloc's
Guido van Rossum <guido@python.org>
parents:
diff changeset
255
24471
f66b3a3509c7 Excise DL_EXPORT/DL_IMPORT from Modules/*. Required adding a prototype
Mark Hammond <mhammond@skippinet.com.au>
parents: 24283
diff changeset
256 PyMODINIT_FUNC
13651
8a063423e0b7 Bunch of minor ANSIfications: 'void initfunc()' -> 'void initfunc(void)',
Thomas Wouters <thomas@python.org>
parents: 13620
diff changeset
257 initmd5(void)
1132
6461dac9a9f2 * mymalloc.h: always allocate one extra byte, since some malloc's
Guido van Rossum <guido@python.org>
parents:
diff changeset
258 {
20850
2962f01924c9 Simplify initmd5() to use PyModule_AddIntConstant().
Fred Drake <fdrake@acm.org>
parents: 20843
diff changeset
259 PyObject *m, *d;
11711
6546ea06e157 Patch from Paul Sokolovsky <Paul.Sokolovsky@technologist.com>:
Fred Drake <fdrake@acm.org>
parents: 9588
diff changeset
260
6546ea06e157 Patch from Paul Sokolovsky <Paul.Sokolovsky@technologist.com>:
Fred Drake <fdrake@acm.org>
parents: 9588
diff changeset
261 MD5type.ob_type = &PyType_Type;
9363
f351c64c82ed Doc strings by Chris Petrilli.
Guido van Rossum <guido@python.org>
parents: 4635
diff changeset
262 m = Py_InitModule3("md5", md5_functions, module_doc);
f351c64c82ed Doc strings by Chris Petrilli.
Guido van Rossum <guido@python.org>
parents: 4635
diff changeset
263 d = PyModule_GetDict(m);
f351c64c82ed Doc strings by Chris Petrilli.
Guido van Rossum <guido@python.org>
parents: 4635
diff changeset
264 PyDict_SetItemString(d, "MD5Type", (PyObject *)&MD5type);
20850
2962f01924c9 Simplify initmd5() to use PyModule_AddIntConstant().
Fred Drake <fdrake@acm.org>
parents: 20843
diff changeset
265 PyModule_AddIntConstant(m, "digest_size", 16);
9363
f351c64c82ed Doc strings by Chris Petrilli.
Guido van Rossum <guido@python.org>
parents: 4635
diff changeset
266 /* No need to check the error here, the caller will do that */
1746
1940892d2fe3 Merge alpha100 branch back to main trunk
Guido van Rossum <guido@python.org>
parents: 1418
diff changeset
267 }