diff --git a/Cargo.lock b/Cargo.lock index bfed787..a0a3445 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -1137,7 +1137,7 @@ dependencies = [ "include_dir", "itertools", "lz4_flex", - "md5", + "md-5", "mlua", "num-traits", "once_cell", @@ -1207,10 +1207,14 @@ dependencies = [ ] [[package]] -name = "md5" -version = "0.7.0" +name = "md-5" +version = "0.10.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "490cc448043f947bae3cbee9c203358d62dbee0db12107a74be5c30ccfd09771" +checksum = "d89e7ee0cfbedfc4da3340218492196241d89eefb6dab27de5df917a6d2e78cf" +dependencies = [ + "cfg-if", + "digest", +] [[package]] name = "memchr" diff --git a/Cargo.toml b/Cargo.toml index 22d41a6..39addd9 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -100,7 +100,7 @@ toml = { version = "0.8", features = ["preserve_order"] } base64 = "0.21.4" hex = "0.4.3" -md5 = "0.7.0" +md-5 = "0.10.6" sha1 = "0.10.6" sha2 = "0.10.8" digest = { version = "0.10.7", default-features = true } diff --git a/src/lune/builtins/serde/crypto.rs b/src/lune/builtins/serde/crypto.rs index 0586251..83f0c17 100644 --- a/src/lune/builtins/serde/crypto.rs +++ b/src/lune/builtins/serde/crypto.rs @@ -1,10 +1,10 @@ use std::sync::Arc; +use std::sync::Mutex; use anyhow::Result; use base64::{engine::general_purpose as Base64, Engine as _}; use digest::Digest as _; use mlua::prelude::*; -use std::sync::Mutex; // TODO: Proper error handling, remove unwraps @@ -47,7 +47,8 @@ macro_rules! impl_hash_algo { impl_hash_algo! { Sha1 => sha1::Sha1, Sha256 => sha2::Sha256, - Sha512 => sha2::Sha512 + Sha512 => sha2::Sha512, + Md5 => md5::Md5 } #[derive(Clone)] @@ -138,6 +139,17 @@ impl Crypto { } } + pub fn md5(content: Option) -> Crypto { + let constructed = Self { + algo: Arc::new(Mutex::new(CryptoAlgo::Md5(Box::new(md5::Md5::new())))), + }; + + match content { + Some(inner) => constructed.update(inner.to_string()).clone(), + None => constructed, + } + } + pub fn update(&self, content: impl AsRef<[u8]>) -> &Crypto { (self.algo.lock().unwrap()).update(content); diff --git a/src/lune/builtins/serde/mod.rs b/src/lune/builtins/serde/mod.rs index 579f3f8..ab77d70 100644 --- a/src/lune/builtins/serde/mod.rs +++ b/src/lune/builtins/serde/mod.rs @@ -16,7 +16,7 @@ pub fn create(lua: &'static Lua) -> LuaResult { .with_function("decode", serde_decode)? .with_async_function("compress", serde_compress)? .with_async_function("decompress", serde_decompress)? - .with_table( + .with_value( "crypto", TableBuilder::new(lua)? .with_function("sha1", |_, content: Option| { @@ -28,6 +28,7 @@ pub fn create(lua: &'static Lua) -> LuaResult { .with_function("sha512", |_, content: Option| { Ok(Crypto::sha512(content)) })? + .with_function("md5", |_, content: Option| Ok(Crypto::md5(content)))? .build()?, )? .build_readonly()