From db5b8976bd0afcd1819fc939f88bac55cd9d0a04 Mon Sep 17 00:00:00 2001 From: Eunchong Yu Date: Sat, 14 Dec 2019 16:45:51 +0900 Subject: [PATCH] Extract procedure that fills hasher with data --- vm/src/stdlib/hashlib.rs | 100 ++++++++------------------------------- 1 file changed, 20 insertions(+), 80 deletions(-) diff --git a/vm/src/stdlib/hashlib.rs b/vm/src/stdlib/hashlib.rs index 9cf3d892c2..87eba4a600 100644 --- a/vm/src/stdlib/hashlib.rs +++ b/vm/src/stdlib/hashlib.rs @@ -105,9 +105,11 @@ fn hashlib_new( } } -fn md5(data: OptionalArg, vm: &VirtualMachine) -> PyResult { - let hasher = PyHasher::new("md5", HashWrapper::md5()); - +fn init( + hasher: PyHasher, + data: OptionalArg, + vm: &VirtualMachine, +) -> PyResult { if let OptionalArg::Present(data) = data { hasher.update(data, vm)?; } @@ -115,94 +117,44 @@ fn md5(data: OptionalArg, vm: &VirtualMachine) -> PyResult Ok(hasher) } +fn md5(data: OptionalArg, vm: &VirtualMachine) -> PyResult { + init(PyHasher::new("md5", HashWrapper::md5()), data, vm) +} + fn sha1(data: OptionalArg, vm: &VirtualMachine) -> PyResult { - let hasher = PyHasher::new("sha1", HashWrapper::sha1()); - - if let OptionalArg::Present(data) = data { - hasher.update(data, vm)?; - } - - Ok(hasher) + init(PyHasher::new("sha1", HashWrapper::sha1()), data, vm) } fn sha224(data: OptionalArg, vm: &VirtualMachine) -> PyResult { - let hasher = PyHasher::new("sha224", HashWrapper::sha224()); - - if let OptionalArg::Present(data) = data { - hasher.update(data, vm)?; - } - - Ok(hasher) + init(PyHasher::new("sha224", HashWrapper::sha224()), data, vm) } fn sha256(data: OptionalArg, vm: &VirtualMachine) -> PyResult { - let hasher = PyHasher::new("sha256", HashWrapper::sha256()); - - if let OptionalArg::Present(data) = data { - hasher.update(data, vm)?; - } - - Ok(hasher) + init(PyHasher::new("sha256", HashWrapper::sha256()), data, vm) } fn sha384(data: OptionalArg, vm: &VirtualMachine) -> PyResult { - let hasher = PyHasher::new("sha384", HashWrapper::sha384()); - - if let OptionalArg::Present(data) = data { - hasher.update(data, vm)?; - } - - Ok(hasher) + init(PyHasher::new("sha384", HashWrapper::sha384()), data, vm) } fn sha512(data: OptionalArg, vm: &VirtualMachine) -> PyResult { - let hasher = PyHasher::new("sha512", HashWrapper::sha512()); - - if let OptionalArg::Present(data) = data { - hasher.update(data, vm)?; - } - - Ok(hasher) + init(PyHasher::new("sha512", HashWrapper::sha512()), data, vm) } fn sha3_224(data: OptionalArg, vm: &VirtualMachine) -> PyResult { - let hasher = PyHasher::new("sha3_224", HashWrapper::sha3_224()); - - if let OptionalArg::Present(data) = data { - hasher.update(data, vm)?; - } - - Ok(hasher) + init(PyHasher::new("sha3_224", HashWrapper::sha3_224()), data, vm) } fn sha3_256(data: OptionalArg, vm: &VirtualMachine) -> PyResult { - let hasher = PyHasher::new("sha3_256", HashWrapper::sha3_256()); - - if let OptionalArg::Present(data) = data { - hasher.update(data, vm)?; - } - - Ok(hasher) + init(PyHasher::new("sha3_256", HashWrapper::sha3_256()), data, vm) } fn sha3_384(data: OptionalArg, vm: &VirtualMachine) -> PyResult { - let hasher = PyHasher::new("sha3_384", HashWrapper::sha3_384()); - - if let OptionalArg::Present(data) = data { - hasher.update(data, vm)?; - } - - Ok(hasher) + init(PyHasher::new("sha3_384", HashWrapper::sha3_384()), data, vm) } fn sha3_512(data: OptionalArg, vm: &VirtualMachine) -> PyResult { - let hasher = PyHasher::new("sha3_512", HashWrapper::sha3_512()); - - if let OptionalArg::Present(data) = data { - hasher.update(data, vm)?; - } - - Ok(hasher) + init(PyHasher::new("sha3_512", HashWrapper::sha3_512()), data, vm) } fn shake128(_data: OptionalArg, vm: &VirtualMachine) -> PyResult { @@ -215,24 +167,12 @@ fn shake256(_data: OptionalArg, vm: &VirtualMachine) -> PyResult, vm: &VirtualMachine) -> PyResult { // TODO: handle parameters - let hasher = PyHasher::new("blake2b", HashWrapper::blake2b()); - - if let OptionalArg::Present(data) = data { - hasher.update(data, vm)?; - } - - Ok(hasher) + init(PyHasher::new("blake2b", HashWrapper::blake2b()), data, vm) } fn blake2s(data: OptionalArg, vm: &VirtualMachine) -> PyResult { // TODO: handle parameters - let hasher = PyHasher::new("blake2s", HashWrapper::blake2s()); - - if let OptionalArg::Present(data) = data { - hasher.update(data, vm)?; - } - - Ok(hasher) + init(PyHasher::new("blake2s", HashWrapper::blake2s()), data, vm) } pub fn make_module(vm: &VirtualMachine) -> PyObjectRef {