@@ -86,89 +86,93 @@ fn hashlib_new(
86
86
data : OptionalArg < PyBytesRef > ,
87
87
vm : & VirtualMachine ,
88
88
) -> PyResult < PyHasher > {
89
- let hasher = match name. as_str ( ) {
90
- "md5" => Ok ( PyHasher :: new ( " md5" , HashWrapper :: md5 ( ) ) ) ,
91
- "sha1" => Ok ( PyHasher :: new ( " sha1" , HashWrapper :: sha1 ( ) ) ) ,
92
- "sha224" => Ok ( PyHasher :: new ( " sha224" , HashWrapper :: sha224 ( ) ) ) ,
93
- "sha256" => Ok ( PyHasher :: new ( " sha256" , HashWrapper :: sha256 ( ) ) ) ,
94
- "sha384" => Ok ( PyHasher :: new ( " sha384" , HashWrapper :: sha384 ( ) ) ) ,
95
- "sha512" => Ok ( PyHasher :: new ( " sha512" , HashWrapper :: sha512 ( ) ) ) ,
96
- "sha3_224" => Ok ( PyHasher :: new ( " sha3_224" , HashWrapper :: sha3_224 ( ) ) ) ,
97
- "sha3_256" => Ok ( PyHasher :: new ( " sha3_256" , HashWrapper :: sha3_256 ( ) ) ) ,
98
- "sha3_384" => Ok ( PyHasher :: new ( " sha3_384" , HashWrapper :: sha3_384 ( ) ) ) ,
99
- "sha3_512" => Ok ( PyHasher :: new ( " sha3_512" , HashWrapper :: sha3_512 ( ) ) ) ,
100
- // TODO: "shake128" => Ok(PyHasher::new(" shake128", HashWrapper::shake128()) ),
101
- // TODO: "shake256" => Ok(PyHasher::new(" shake256", HashWrapper::shake256()) ),
102
- "blake2b" => Ok ( PyHasher :: new ( " blake2b" , HashWrapper :: blake2b ( ) ) ) ,
103
- "blake2s" => Ok ( PyHasher :: new ( " blake2s" , HashWrapper :: blake2s ( ) ) ) ,
89
+ match name. as_str ( ) {
90
+ "md5" => md5 ( data , vm ) ,
91
+ "sha1" => sha1 ( data , vm ) ,
92
+ "sha224" => sha224 ( data , vm ) ,
93
+ "sha256" => sha256 ( data , vm ) ,
94
+ "sha384" => sha384 ( data , vm ) ,
95
+ "sha512" => sha512 ( data , vm ) ,
96
+ "sha3_224" => sha3_224 ( data , vm ) ,
97
+ "sha3_256" => sha3_256 ( data , vm ) ,
98
+ "sha3_384" => sha3_384 ( data , vm ) ,
99
+ "sha3_512" => sha3_512 ( data , vm ) ,
100
+ // TODO: "shake128" => shake128(data, vm ),
101
+ // TODO: "shake256" => shake256(data, vm ),
102
+ "blake2b" => blake2b ( data , vm ) ,
103
+ "blake2s" => blake2s ( data , vm ) ,
104
104
other => Err ( vm. new_value_error ( format ! ( "Unknown hashing algorithm: {}" , other) ) ) ,
105
- } ?;
105
+ }
106
+ }
106
107
108
+ fn init (
109
+ hasher : PyHasher ,
110
+ data : OptionalArg < PyBytesRef > ,
111
+ vm : & VirtualMachine ,
112
+ ) -> PyResult < PyHasher > {
107
113
if let OptionalArg :: Present ( data) = data {
108
114
hasher. update ( data, vm) ?;
109
115
}
110
116
111
117
Ok ( hasher)
112
118
}
113
119
114
- fn md5 ( _vm : & VirtualMachine ) -> PyResult < PyHasher > {
115
- Ok ( PyHasher :: new ( "md5" , HashWrapper :: md5 ( ) ) )
120
+ fn md5 ( data : OptionalArg < PyBytesRef > , vm : & VirtualMachine ) -> PyResult < PyHasher > {
121
+ init ( PyHasher :: new ( "md5" , HashWrapper :: md5 ( ) ) , data , vm )
116
122
}
117
123
118
- fn sha1 ( _vm : & VirtualMachine ) -> PyResult < PyHasher > {
119
- Ok ( PyHasher :: new ( "sha1" , HashWrapper :: sha1 ( ) ) )
124
+ fn sha1 ( data : OptionalArg < PyBytesRef > , vm : & VirtualMachine ) -> PyResult < PyHasher > {
125
+ init ( PyHasher :: new ( "sha1" , HashWrapper :: sha1 ( ) ) , data , vm )
120
126
}
121
127
122
- fn sha224 ( _vm : & VirtualMachine ) -> PyResult < PyHasher > {
123
- Ok ( PyHasher :: new ( "sha224" , HashWrapper :: sha224 ( ) ) )
128
+ fn sha224 ( data : OptionalArg < PyBytesRef > , vm : & VirtualMachine ) -> PyResult < PyHasher > {
129
+ init ( PyHasher :: new ( "sha224" , HashWrapper :: sha224 ( ) ) , data , vm )
124
130
}
125
131
126
- fn sha256 ( _vm : & VirtualMachine ) -> PyResult < PyHasher > {
127
- Ok ( PyHasher :: new ( "sha256" , HashWrapper :: sha256 ( ) ) )
132
+ fn sha256 ( data : OptionalArg < PyBytesRef > , vm : & VirtualMachine ) -> PyResult < PyHasher > {
133
+ init ( PyHasher :: new ( "sha256" , HashWrapper :: sha256 ( ) ) , data , vm )
128
134
}
129
135
130
- fn sha384 ( _vm : & VirtualMachine ) -> PyResult < PyHasher > {
131
- Ok ( PyHasher :: new ( "sha384" , HashWrapper :: sha384 ( ) ) )
136
+ fn sha384 ( data : OptionalArg < PyBytesRef > , vm : & VirtualMachine ) -> PyResult < PyHasher > {
137
+ init ( PyHasher :: new ( "sha384" , HashWrapper :: sha384 ( ) ) , data , vm )
132
138
}
133
139
134
- fn sha512 ( _vm : & VirtualMachine ) -> PyResult < PyHasher > {
135
- Ok ( PyHasher :: new ( "sha512" , HashWrapper :: sha512 ( ) ) )
140
+ fn sha512 ( data : OptionalArg < PyBytesRef > , vm : & VirtualMachine ) -> PyResult < PyHasher > {
141
+ init ( PyHasher :: new ( "sha512" , HashWrapper :: sha512 ( ) ) , data , vm )
136
142
}
137
143
138
- fn sha3_224 ( _vm : & VirtualMachine ) -> PyResult < PyHasher > {
139
- Ok ( PyHasher :: new ( "sha3_224" , HashWrapper :: sha3_224 ( ) ) )
144
+ fn sha3_224 ( data : OptionalArg < PyBytesRef > , vm : & VirtualMachine ) -> PyResult < PyHasher > {
145
+ init ( PyHasher :: new ( "sha3_224" , HashWrapper :: sha3_224 ( ) ) , data , vm )
140
146
}
141
147
142
- fn sha3_256 ( _vm : & VirtualMachine ) -> PyResult < PyHasher > {
143
- Ok ( PyHasher :: new ( "sha3_256" , HashWrapper :: sha3_256 ( ) ) )
148
+ fn sha3_256 ( data : OptionalArg < PyBytesRef > , vm : & VirtualMachine ) -> PyResult < PyHasher > {
149
+ init ( PyHasher :: new ( "sha3_256" , HashWrapper :: sha3_256 ( ) ) , data , vm )
144
150
}
145
151
146
- fn sha3_384 ( _vm : & VirtualMachine ) -> PyResult < PyHasher > {
147
- Ok ( PyHasher :: new ( "sha3_384" , HashWrapper :: sha3_384 ( ) ) )
152
+ fn sha3_384 ( data : OptionalArg < PyBytesRef > , vm : & VirtualMachine ) -> PyResult < PyHasher > {
153
+ init ( PyHasher :: new ( "sha3_384" , HashWrapper :: sha3_384 ( ) ) , data , vm )
148
154
}
149
155
150
- fn sha3_512 ( _vm : & VirtualMachine ) -> PyResult < PyHasher > {
151
- Ok ( PyHasher :: new ( "sha3_512" , HashWrapper :: sha3_512 ( ) ) )
156
+ fn sha3_512 ( data : OptionalArg < PyBytesRef > , vm : & VirtualMachine ) -> PyResult < PyHasher > {
157
+ init ( PyHasher :: new ( "sha3_512" , HashWrapper :: sha3_512 ( ) ) , data , vm )
152
158
}
153
159
154
- fn shake128 ( vm : & VirtualMachine ) -> PyResult < PyHasher > {
160
+ fn shake128 ( _data : OptionalArg < PyBytesRef > , vm : & VirtualMachine ) -> PyResult < PyHasher > {
155
161
Err ( vm. new_not_implemented_error ( "shake256" . to_string ( ) ) )
156
- // Ok(PyHasher::new("shake128", HashWrapper::shake128()))
157
162
}
158
163
159
- fn shake256 ( vm : & VirtualMachine ) -> PyResult < PyHasher > {
164
+ fn shake256 ( _data : OptionalArg < PyBytesRef > , vm : & VirtualMachine ) -> PyResult < PyHasher > {
160
165
Err ( vm. new_not_implemented_error ( "shake256" . to_string ( ) ) )
161
- // TODO: Ok(PyHasher::new("shake256", HashWrapper::shake256()))
162
166
}
163
167
164
- fn blake2b ( _vm : & VirtualMachine ) -> PyResult < PyHasher > {
168
+ fn blake2b ( data : OptionalArg < PyBytesRef > , vm : & VirtualMachine ) -> PyResult < PyHasher > {
165
169
// TODO: handle parameters
166
- Ok ( PyHasher :: new ( "blake2b" , HashWrapper :: blake2b ( ) ) )
170
+ init ( PyHasher :: new ( "blake2b" , HashWrapper :: blake2b ( ) ) , data , vm )
167
171
}
168
172
169
- fn blake2s ( _vm : & VirtualMachine ) -> PyResult < PyHasher > {
173
+ fn blake2s ( data : OptionalArg < PyBytesRef > , vm : & VirtualMachine ) -> PyResult < PyHasher > {
170
174
// TODO: handle parameters
171
- Ok ( PyHasher :: new ( "blake2s" , HashWrapper :: blake2s ( ) ) )
175
+ init ( PyHasher :: new ( "blake2s" , HashWrapper :: blake2s ( ) ) , data , vm )
172
176
}
173
177
174
178
pub fn make_module ( vm : & VirtualMachine ) -> PyObjectRef {
0 commit comments