Skip to content

Commit db5b897

Browse files
committed
Extract procedure that fills hasher with data
1 parent 61befa4 commit db5b897

File tree

1 file changed

+20
-80
lines changed

1 file changed

+20
-80
lines changed

vm/src/stdlib/hashlib.rs

Lines changed: 20 additions & 80 deletions
Original file line numberDiff line numberDiff line change
@@ -105,104 +105,56 @@ fn hashlib_new(
105105
}
106106
}
107107

108-
fn md5(data: OptionalArg<PyBytesRef>, vm: &VirtualMachine) -> PyResult<PyHasher> {
109-
let hasher = PyHasher::new("md5", HashWrapper::md5());
110-
108+
fn init(
109+
hasher: PyHasher,
110+
data: OptionalArg<PyBytesRef>,
111+
vm: &VirtualMachine,
112+
) -> PyResult<PyHasher> {
111113
if let OptionalArg::Present(data) = data {
112114
hasher.update(data, vm)?;
113115
}
114116

115117
Ok(hasher)
116118
}
117119

118-
fn sha1(data: OptionalArg<PyBytesRef>, vm: &VirtualMachine) -> PyResult<PyHasher> {
119-
let hasher = PyHasher::new("sha1", HashWrapper::sha1());
120-
121-
if let OptionalArg::Present(data) = data {
122-
hasher.update(data, vm)?;
123-
}
120+
fn md5(data: OptionalArg<PyBytesRef>, vm: &VirtualMachine) -> PyResult<PyHasher> {
121+
init(PyHasher::new("md5", HashWrapper::md5()), data, vm)
122+
}
124123

125-
Ok(hasher)
124+
fn sha1(data: OptionalArg<PyBytesRef>, vm: &VirtualMachine) -> PyResult<PyHasher> {
125+
init(PyHasher::new("sha1", HashWrapper::sha1()), data, vm)
126126
}
127127

128128
fn sha224(data: OptionalArg<PyBytesRef>, vm: &VirtualMachine) -> PyResult<PyHasher> {
129-
let hasher = PyHasher::new("sha224", HashWrapper::sha224());
130-
131-
if let OptionalArg::Present(data) = data {
132-
hasher.update(data, vm)?;
133-
}
134-
135-
Ok(hasher)
129+
init(PyHasher::new("sha224", HashWrapper::sha224()), data, vm)
136130
}
137131

138132
fn sha256(data: OptionalArg<PyBytesRef>, vm: &VirtualMachine) -> PyResult<PyHasher> {
139-
let hasher = PyHasher::new("sha256", HashWrapper::sha256());
140-
141-
if let OptionalArg::Present(data) = data {
142-
hasher.update(data, vm)?;
143-
}
144-
145-
Ok(hasher)
133+
init(PyHasher::new("sha256", HashWrapper::sha256()), data, vm)
146134
}
147135

148136
fn sha384(data: OptionalArg<PyBytesRef>, vm: &VirtualMachine) -> PyResult<PyHasher> {
149-
let hasher = PyHasher::new("sha384", HashWrapper::sha384());
150-
151-
if let OptionalArg::Present(data) = data {
152-
hasher.update(data, vm)?;
153-
}
154-
155-
Ok(hasher)
137+
init(PyHasher::new("sha384", HashWrapper::sha384()), data, vm)
156138
}
157139

158140
fn sha512(data: OptionalArg<PyBytesRef>, vm: &VirtualMachine) -> PyResult<PyHasher> {
159-
let hasher = PyHasher::new("sha512", HashWrapper::sha512());
160-
161-
if let OptionalArg::Present(data) = data {
162-
hasher.update(data, vm)?;
163-
}
164-
165-
Ok(hasher)
141+
init(PyHasher::new("sha512", HashWrapper::sha512()), data, vm)
166142
}
167143

168144
fn sha3_224(data: OptionalArg<PyBytesRef>, vm: &VirtualMachine) -> PyResult<PyHasher> {
169-
let hasher = PyHasher::new("sha3_224", HashWrapper::sha3_224());
170-
171-
if let OptionalArg::Present(data) = data {
172-
hasher.update(data, vm)?;
173-
}
174-
175-
Ok(hasher)
145+
init(PyHasher::new("sha3_224", HashWrapper::sha3_224()), data, vm)
176146
}
177147

178148
fn sha3_256(data: OptionalArg<PyBytesRef>, vm: &VirtualMachine) -> PyResult<PyHasher> {
179-
let hasher = PyHasher::new("sha3_256", HashWrapper::sha3_256());
180-
181-
if let OptionalArg::Present(data) = data {
182-
hasher.update(data, vm)?;
183-
}
184-
185-
Ok(hasher)
149+
init(PyHasher::new("sha3_256", HashWrapper::sha3_256()), data, vm)
186150
}
187151

188152
fn sha3_384(data: OptionalArg<PyBytesRef>, vm: &VirtualMachine) -> PyResult<PyHasher> {
189-
let hasher = PyHasher::new("sha3_384", HashWrapper::sha3_384());
190-
191-
if let OptionalArg::Present(data) = data {
192-
hasher.update(data, vm)?;
193-
}
194-
195-
Ok(hasher)
153+
init(PyHasher::new("sha3_384", HashWrapper::sha3_384()), data, vm)
196154
}
197155

198156
fn sha3_512(data: OptionalArg<PyBytesRef>, vm: &VirtualMachine) -> PyResult<PyHasher> {
199-
let hasher = PyHasher::new("sha3_512", HashWrapper::sha3_512());
200-
201-
if let OptionalArg::Present(data) = data {
202-
hasher.update(data, vm)?;
203-
}
204-
205-
Ok(hasher)
157+
init(PyHasher::new("sha3_512", HashWrapper::sha3_512()), data, vm)
206158
}
207159

208160
fn shake128(_data: OptionalArg<PyBytesRef>, vm: &VirtualMachine) -> PyResult<PyHasher> {
@@ -215,24 +167,12 @@ fn shake256(_data: OptionalArg<PyBytesRef>, vm: &VirtualMachine) -> PyResult<PyH
215167

216168
fn blake2b(data: OptionalArg<PyBytesRef>, vm: &VirtualMachine) -> PyResult<PyHasher> {
217169
// TODO: handle parameters
218-
let hasher = PyHasher::new("blake2b", HashWrapper::blake2b());
219-
220-
if let OptionalArg::Present(data) = data {
221-
hasher.update(data, vm)?;
222-
}
223-
224-
Ok(hasher)
170+
init(PyHasher::new("blake2b", HashWrapper::blake2b()), data, vm)
225171
}
226172

227173
fn blake2s(data: OptionalArg<PyBytesRef>, vm: &VirtualMachine) -> PyResult<PyHasher> {
228174
// TODO: handle parameters
229-
let hasher = PyHasher::new("blake2s", HashWrapper::blake2s());
230-
231-
if let OptionalArg::Present(data) = data {
232-
hasher.update(data, vm)?;
233-
}
234-
235-
Ok(hasher)
175+
init(PyHasher::new("blake2s", HashWrapper::blake2s()), data, vm)
236176
}
237177

238178
pub fn make_module(vm: &VirtualMachine) -> PyObjectRef {

0 commit comments

Comments
 (0)