summaryrefslogtreecommitdiff
path: root/cli/checksum.rs
diff options
context:
space:
mode:
Diffstat (limited to 'cli/checksum.rs')
-rw-r--r--cli/checksum.rs20
1 files changed, 20 insertions, 0 deletions
diff --git a/cli/checksum.rs b/cli/checksum.rs
new file mode 100644
index 000000000..f92fd62cf
--- /dev/null
+++ b/cli/checksum.rs
@@ -0,0 +1,20 @@
+use ring;
+use std::fmt::Write;
+
+pub fn gen(v: Vec<&[u8]>) -> String {
+ let mut ctx = ring::digest::Context::new(&ring::digest::SHA256);
+ for src in v.iter() {
+ ctx.update(src);
+ }
+ let digest = ctx.finish();
+ let mut out = String::new();
+ // TODO There must be a better way to do this...
+ for byte in digest.as_ref() {
+ write!(&mut out, "{:02x}", byte).unwrap();
+ }
+ out
+}
+
+pub fn gen2(s: &str) -> String {
+ gen(vec![s.as_bytes()])
+}