[Python-checkins] CVS: python/nondist/peps pep-0247.txt,1.4,1.5
A.M. Kuchling
akuchling@users.sourceforge.net
Thu, 20 Sep 2001 08:48:04 -0700
Update of /cvsroot/python/python/nondist/peps
In directory usw-pr-cvs1:/tmp/cvs-serv20442
Modified Files:
pep-0247.txt
Log Message:
Removed the reset() method
Renamed digestsize to digest_size
Swap order of key, string arguments to new()
Various minor rewrites
Index: pep-0247.txt
===================================================================
RCS file: /cvsroot/python/python/nondist/peps/pep-0247.txt,v
retrieving revision 1.4
retrieving revision 1.5
diff -C2 -d -r1.4 -r1.5
*** pep-0247.txt 2001/09/17 15:09:37 1.4
--- pep-0247.txt 2001/09/20 15:48:02 1.5
***************
*** 6,10 ****
Type: Informational
Created: 23-Mar-2001
! Post-History:
Abstract
--- 6,10 ----
Type: Informational
Created: 23-Mar-2001
! Post-History: 20-Sep-2001
Abstract
***************
*** 24,28 ****
Hash function modules define one function:
! new([string], [key])
Create a new hashing object and return it. You can now feed
--- 24,29 ----
Hash function modules define one function:
! new([string])
! new([key] , [string])
Create a new hashing object and return it. You can now feed
***************
*** 38,69 ****
Arbitrary additional keyword arguments can be added to this
function, but if they're not supplied, sensible default values
! should be used. For example, 'rounds' and 'digestsize' could
! be added for a hash function which supports a different output
! size and a different number of rounds.
Hash function modules define one variable:
! digestsize
An integer value; the size of the digest produced by the
hashing objects created by this module, measured in bytes.
You could also obtain this value by creating a sample object
! and accessing its 'digestsize' attribute, but it can be
convenient to have this value available from the module.
Hashes with a variable output size will set this variable to 0.
! The attributes of a hashing object are:
! digestsize
! An integer value; the size of the digest produced by the
hashing object, measured in bytes. If the hash has a variable
! output size, this output size must be chosen when the
! hashing object is created, and this attribute must contain the
selected size. Therefore 0 is *not* a legal value for this
attribute.
! The methods for hashing objects are always the following:
copy()
--- 39,72 ----
Arbitrary additional keyword arguments can be added to this
function, but if they're not supplied, sensible default values
! should be used. For example, 'rounds' and 'digest_size'
! keywords could be added for a hash function which supports a
! variable number of rounds and several different output sizes,
! and they should default to values believed to be secure.
Hash function modules define one variable:
! digest_size
An integer value; the size of the digest produced by the
hashing objects created by this module, measured in bytes.
You could also obtain this value by creating a sample object
! and accessing its 'digest_size' attribute, but it can be
convenient to have this value available from the module.
Hashes with a variable output size will set this variable to 0.
! Hashing objects require a single attribute:
! digest_size
! This attribute is identical to the module-level digest_size
! variable, measuring the size of the digest produced by the
hashing object, measured in bytes. If the hash has a variable
! output size, this output size must be chosen when the hashing
! object is created, and this attribute must contain the
selected size. Therefore 0 is *not* a legal value for this
attribute.
! Hashing objects require the following methods:
copy()
***************
*** 86,111 ****
method mustn't alter the object.
- reset()
-
- Reset this hashing object to its initial state, as if the
- object was created from new(key=<initially specified key>)
- (XXX what should this do for a keyed hash? A proposed
- semantic follows:). There is no way to supply a starting
- string as there is for the new() function, and there's no way
- to change the key specified for a keyed hash.
-
update(arg)
Update this hashing object with the string 'arg'.
! For convenience, hashing objects also have a digest_size
! attribute, measuring the size of the resulting digest in bytes.
! This is identical to the module-level digest_size variable.
!
Here's an example, using a module named 'MD5':
>>> from Crypto.Hash import MD5
>>> m = MD5.new()
! >>> m.digestsize
16
>>> m.update('abc')
--- 89,104 ----
method mustn't alter the object.
update(arg)
Update this hashing object with the string 'arg'.
! Hashing modules can define additional module-level functions or
! object methods and still be compliant with this specification.
!
Here's an example, using a module named 'MD5':
>>> from Crypto.Hash import MD5
>>> m = MD5.new()
! >>> m.digest_size
16
>>> m.update('abc')
***************
*** 114,119 ****
>>> m.hexdigest()
'900150983cd24fb0d6963f7d28e17f72'
- Or, more compactly:
-
>>> MD5.new('abc').digest()
'\x90\x01P\x98<\xd2O\xb0\xd6\x96?}(\xe1\x7fr'
--- 107,110 ----
***************
*** 122,133 ****
Changes
! 2001-09-17: Renamed clear() to reset; added digestsize attribute
to objects; added .hexdigest() method.
Acknowledgements
! Thanks to Andrew Archibald, Rich Salz, and the readers of the
! python-crypto list for their comments on this PEP.
--- 113,126 ----
Changes
! 2001-09-17: Renamed clear() to reset(); added digest_size attribute
to objects; added .hexdigest() method.
+ 2001-09-20: Removed reset() method completely.
Acknowledgements
! Thanks to Andrew Archibald, Rich Salz, Itamar Shtull-Trauring, and
! the readers of the python-crypto list for their comments on this
! PEP.