@@ -17,15 +17,14 @@ import (
1717
1818/* Implements the HMAC algorithm as described by RFC 2104. */
1919
20- const hashlib_new_doc = `new(name, data=b'') - returns a new hash object implementing the
21- given hash function; initializing the hash
22- using the given binary data.`
20+ const hashlib_new_doc = `new(name, data=b'') - Return a new hashing object using the named algorithm;
21+ optionally initialized with data (which must be bytes).`
2322
2423func hashlib_new (self py.Object , args py.Tuple , kwargs py.StringDict ) (py.Object , error ) {
2524 var on py.Object
26- var os py.Object
25+ var os py.Object = py . Bytes ( nil )
2726
28- kwlist := []string {"name" , "string " }
27+ kwlist := []string {"name" , "data " }
2928
3029 err := py .ParseTupleAndKeywords (args , kwargs , "s|y:new" , kwlist , & on , & os )
3130 if err != nil {
@@ -37,12 +36,9 @@ func hashlib_new(self py.Object, args py.Tuple, kwargs py.StringDict) (py.Object
3736 return nil , err
3837 }
3938
40- var data py.Bytes
41- if os != nil {
42- data , err = py .BytesFromObject (os )
43- if err != nil {
44- return nil , err
45- }
39+ data , err := py .BytesFromObject (os )
40+ if err != nil {
41+ return nil , err
4642 }
4743
4844 var hasher hash.Hash
@@ -72,85 +68,23 @@ func hashlib_md5(self py.Object, args py.Tuple) (py.Object, error) {
7268}
7369
7470func hashlib_sha1 (self py.Object , args py.Tuple ) (py.Object , error ) {
75- var d py.Object
76- err := py .UnpackTuple (args , nil , "sha1" , 0 , 1 , & d )
77- if err != nil {
78- return nil , err
79- }
80-
81- var data py.Bytes
82- if d != nil {
83- switch d .Type () {
84- case py .BytesType :
85- data , err = py .BytesFromObject (d )
86- case py .StringType :
87- data = []byte (string (d .(py.String )))
88- }
89- }
90-
91- if err != nil {
92- return nil , err
93- }
94-
95- hasher := sha1 .New ()
96- _ , err = hasher .Write (data )
97- return py .NewHash ("sha1" , hasher ), err
71+ return hashlib_new (self , append ([]py.Object {py .String ("sha1" )}, args ... ), nil )
9872}
9973
10074func hashlib_sha224 (self py.Object , args py.Tuple ) (py.Object , error ) {
101- var d py.Object
102- err := py .UnpackTuple (args , nil , "sha224" , 0 , 1 , & d )
103- if err != nil {
104- return nil , err
105- }
106-
107- var data py.Bytes
108- if d != nil {
109- switch d .Type () {
110- case py .BytesType :
111- data , err = py .BytesFromObject (d )
112- case py .StringType :
113- data = []byte (string (d .(py.String )))
114- }
115- }
116-
117- if err != nil {
118- return nil , err
119- }
120-
121- hasher := sha256 .New224 ()
122- _ , err = hasher .Write (data )
123- return py .NewHash ("sha224" , hasher ), err
75+ return hashlib_new (self , append ([]py.Object {py .String ("sha224" )}, args ... ), nil )
12476}
12577
126- func hashlib_sha256 (self py.Object , arg py.Object ) (py.Object , error ) {
127- data , err := py .BytesFromObject (arg )
128- if err != nil {
129- return nil , err
130- }
131- hasher := sha256 .New ()
132- _ , err = hasher .Write (data )
133- return py .NewHash ("sha256" , hasher ), err
78+ func hashlib_sha256 (self py.Object , args py.Tuple ) (py.Object , error ) {
79+ return hashlib_new (self , append ([]py.Object {py .String ("sha256" )}, args ... ), nil )
13480}
13581
136- func hashlib_sha384 (self py.Object , arg py.Object ) (py.Object , error ) {
137- data , err := py .BytesFromObject (arg )
138- if err != nil {
139- return nil , err
140- }
141- hasher := sha512 .New384 ()
142- _ , err = hasher .Write (data )
143- return py .NewHash ("sha384" , hasher ), err
82+ func hashlib_sha384 (self py.Object , args py.Tuple ) (py.Object , error ) {
83+ return hashlib_new (self , append ([]py.Object {py .String ("sha384" )}, args ... ), nil )
14484}
14585
146- func hashlib_sha512 (self py.Object , arg py.Object ) (py.Object , error ) {
147- data , err := py .BytesFromObject (arg )
148- if err != nil {
149- return nil , err
150- }
151- hasher := sha512 .New ()
152- _ , err = hasher .Write (data )
153- return py .NewHash ("sha512" , hasher ), err
86+ func hashlib_sha512 (self py.Object , args py.Tuple ) (py.Object , error ) {
87+ return hashlib_new (self , append ([]py.Object {py .String ("sha512" )}, args ... ), nil )
15488}
15589
15690const hashlib_doc = `hashlib module - A common interface to many hash functions.
0 commit comments