aboutsummaryrefslogtreecommitdiff
path: root/stdlib/source/program/aedifex
diff options
context:
space:
mode:
authorEduardo Julian2020-08-18 23:44:12 -0400
committerEduardo Julian2020-08-18 23:44:12 -0400
commitd77ce19bf01a009cf5255e0a5d8201d8cc2f2178 (patch)
treec38b8a2962a4eb6e980078b0ac21627b0acad28c /stdlib/source/program/aedifex
parentc9e452617dc14dfe9955dc556640bc07f319224a (diff)
Calculate SHA-1 and MD5 hashes.
Diffstat (limited to 'stdlib/source/program/aedifex')
-rw-r--r--stdlib/source/program/aedifex/dependency.lux4
-rw-r--r--stdlib/source/program/aedifex/hash.lux27
2 files changed, 30 insertions, 1 deletions
diff --git a/stdlib/source/program/aedifex/dependency.lux b/stdlib/source/program/aedifex/dependency.lux
index 13e30028b..473d5498e 100644
--- a/stdlib/source/program/aedifex/dependency.lux
+++ b/stdlib/source/program/aedifex/dependency.lux
@@ -1,5 +1,7 @@
(.module:
- [lux (#- Type)])
+ [lux (#- Type)]
+ ["." // #_
+ ["#." hash]])
## https://maven.apache.org/ref/3.6.3/maven-core/artifact-handlers.html
(type: #export Type
diff --git a/stdlib/source/program/aedifex/hash.lux b/stdlib/source/program/aedifex/hash.lux
new file mode 100644
index 000000000..bd4396006
--- /dev/null
+++ b/stdlib/source/program/aedifex/hash.lux
@@ -0,0 +1,27 @@
+(.module:
+ [lux #*
+ ["." host (#+ import:)]
+ [data
+ ["." binary (#+ Binary)]]])
+
+## TODO: Replace with pure-Lux implementations of these algorithms
+## https://en.wikipedia.org/wiki/SHA-1#SHA-1_pseudocode
+## https://en.wikipedia.org/wiki/MD5#Algorithm
+(import: #long java/lang/String)
+
+(import: #long java/security/MessageDigest
+ (#static getInstance [java/lang/String] java/security/MessageDigest)
+ (digest [[byte]] [byte]))
+
+(type: #export Hash
+ Binary)
+
+(template [<name> <algorithm>]
+ [(def: #export (<name> value)
+ (-> Binary Hash)
+ (|> (java/security/MessageDigest::getInstance [<algorithm>])
+ (java/security/MessageDigest::digest [value])))]
+
+ [sha1 "SHA-1"]
+ [md5 "MD5"]
+ )