Sfoglia il codice sorgente

Added hash function (for passwords etc.)

Yentl Van Tendeloo 8 anni fa
parent
commit
9aff83495a

BIN
bootstrap/bootstrap.m.gz


+ 1 - 0
bootstrap/bootstrap.py

@@ -106,6 +106,7 @@ def bootstrap():
                     "deserialize": ["Element", "String"],
                     "log": ["String", "String"],
                     "time": ["Float"],
+                    "hash": ["String", "String"],
                 }
 
     jit_primitives = {

+ 1 - 0
bootstrap/primitives.alc

@@ -81,6 +81,7 @@ Boolean function is_physical_string(a: Element) = ?primitives/is_physical_string
 Boolean function is_physical_boolean(a: Element) = ?primitives/is_physical_boolean
 Boolean function is_physical_action(a: Element) = ?primitives/is_physical_action
 Float function time() = ?primitives/time
+String function hash(a : String) = ?primitives/hash
 
 Element function exec(first_instr : Element):
 	// This does very ugly things, so beware!

+ 1 - 0
interface/HUTN/includes/primitives.alh

@@ -91,6 +91,7 @@ Boolean function is_physical_action(a : Element)
 Boolean function is_physical_boolean(a : Element)
 Boolean function has_value(a : Element)
 Float function time()
+String function hash(a : String)
 
 Element function exec(a : Element)
 Element function resolve(var_name : String)

+ 6 - 0
kernel/modelverse_kernel/primitives.py

@@ -566,3 +566,9 @@ def time(**remainder):
     import time
     a, = yield [("CNV", [time.time()])]
     raise PrimitiveFinished(a)
+
+def hash(a, **remainder):
+    a_value, = yield [("RV", [a])]
+    import hashlib
+    b = hashlib.sha512(a_value).hexdigest()
+    raise PrimitiveFinished(b)