From 67b8311400f0caebd19ba5ebb7c08942051da7b8 Mon Sep 17 00:00:00 2001 From: Hatter Jiang Date: Sun, 2 Aug 2020 00:54:15 +0800 Subject: [PATCH] feat: add util::digest_sha256 --- Cargo.lock | 67 +++++++++++++++++++++++++++++++++++++++++++++++++++++ Cargo.toml | 2 ++ src/main.rs | 1 + src/util.rs | 12 ++++++++++ 4 files changed, 82 insertions(+) create mode 100644 src/util.rs diff --git a/Cargo.lock b/Cargo.lock index 6367876..dad271f 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -53,6 +53,15 @@ version = "1.2.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "cf1de2fe8c75bc145a2f577add951f8134889b4795d47466a54a5c846d691693" +[[package]] +name = "block-buffer" +version = "0.9.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4152116fd6e9dadb291ae18fc1ec3575ed6d84c29642d97890f4b4a3417297e4" +dependencies = [ + "generic-array", +] + [[package]] name = "bumpalo" version = "3.4.0" @@ -108,6 +117,21 @@ version = "0.7.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "b3a71ab494c0b5b860bdc8407ae08978052417070c2ced38573a9157ad75b8ac" +[[package]] +name = "cpuid-bool" +version = "0.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8aebca1129a03dc6dc2b127edd729435bbc4a37e1d5f4d7513165089ceb02634" + +[[package]] +name = "digest" +version = "0.9.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d3dd60d1080a57a05ab032377049e0591415d2b31afd7028356dbf3cc6dcb066" +dependencies = [ + "generic-array", +] + [[package]] name = "dtoa" version = "0.4.6" @@ -224,6 +248,16 @@ dependencies = [ "slab", ] +[[package]] +name = "generic-array" +version = "0.14.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "60fb4bb6bba52f78a471264d9a3b7d026cc0af47b22cd2cffbc0b787ca003e63" +dependencies = [ + "typenum", + "version_check", +] + [[package]] name = "getrandom" version = "0.1.14" @@ -272,6 +306,12 @@ dependencies = [ "libc", ] +[[package]] +name = "hex" +version = "0.4.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "644f9158b2f133fd50f5fb3242878846d9eb792e445c893805ff0e3824006e35" + [[package]] name = "http" version = "0.2.1" @@ -564,6 +604,12 @@ version = "1.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "0b631f7e854af39a1739f401cf34a8a013dfe09eac4fa4dba91e9768bd28168d" +[[package]] +name = "opaque-debug" +version = "0.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "624a8340c38c1b80fd549087862da4ba43e08858af025b236e509b6649fc13d5" + [[package]] name = "openssl" version = "0.10.30" @@ -796,12 +842,14 @@ name = "rust-script-tool" version = "0.1.0" dependencies = [ "clap", + "hex", "lazy_static", "log", "pretty_env_logger", "reqwest", "serde", "serde_json", + "sha2", "tokio", ] @@ -887,6 +935,19 @@ dependencies = [ "url", ] +[[package]] +name = "sha2" +version = "0.9.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2933378ddfeda7ea26f48c555bdad8bb446bf8a3d17832dc83e380d444cfb8c1" +dependencies = [ + "block-buffer", + "cfg-if", + "cpuid-bool", + "digest", + "opaque-debug", +] + [[package]] name = "signal-hook-registry" version = "1.2.0" @@ -1080,6 +1141,12 @@ version = "0.2.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "59547bce71d9c38b83d9c0e92b6066c4253371f15005def0c30d9657f50c7642" +[[package]] +name = "typenum" +version = "1.12.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "373c8a200f9e67a0c95e62a4f52fbf80c23b4381c05a17845531982fa99e6b33" + [[package]] name = "unicase" version = "2.6.0" diff --git a/Cargo.toml b/Cargo.toml index 9a89e7b..debf287 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -15,3 +15,5 @@ reqwest = { version = "0.10", features = ["blocking", "json"] } serde = { version = "1.0", features = ["derive"] } serde_json = "1.0" lazy_static = "1.4.0" +hex = "0.4.2" +sha2 = "0.9.1" diff --git a/src/main.rs b/src/main.rs index 36dd9de..5ba7263 100644 --- a/src/main.rs +++ b/src/main.rs @@ -8,6 +8,7 @@ mod cmd_default; mod cmd_new; mod git; mod script; +mod util; use cmd::{ Command, CommandError }; use cmd_default::CommandDefault; diff --git a/src/util.rs b/src/util.rs new file mode 100644 index 0000000..e36975c --- /dev/null +++ b/src/util.rs @@ -0,0 +1,12 @@ +use sha2::{ Digest, Sha256 }; + +pub fn digest_sha256(bs: &[u8]) -> Vec { + let mut sha256 = Sha256::new(); + sha256.update(bs); + sha256.finalize().to_vec() +} + +#[test] +fn test_digest_sha256() { + assert_eq!(hex::decode("b94d27b9934d3e08a52e52d7da7dabfac484efe37a5380ee9088f7ace2efcde9").unwrap(), digest_sha256(b"hello world")); +}