diff --git a/cryptoshim.py b/cryptoshim.py
new file mode 100644
index 00000000..a87f0420
--- /dev/null
+++ b/cryptoshim.py
@@ -0,0 +1,16 @@
+'''
+ Onionr - P2P Microblogging Platform & Social network. Run with 'help' for usage.
+ This program is free software: you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation, either version 3 of the License, or
+ (at your option) any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program. If not, see .
+'''
+
diff --git a/timedHmac.py b/timedHmac.py
new file mode 100644
index 00000000..a046062d
--- /dev/null
+++ b/timedHmac.py
@@ -0,0 +1,39 @@
+'''
+ Onionr - P2P Microblogging Platform & Social network. Run with 'help' for usage.
+ This program is free software: you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation, either version 3 of the License, or
+ (at your option) any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+ You should have received a copy of the GNU General Public License
+ along with this program. If not, see .
+'''
+import hmac, base64, time, math
+class TimedHMAC:
+ def __init__(self, base64Key, data, hashAlgo):
+ '''
+ base64Key = base64 encoded key
+ data = data to hash
+ expire = time expiry in epoch
+ hashAlgo = string in hashlib.algorithms_available
+
+ Maximum of 10 seconds grace period
+ '''
+ self.data = data
+ self.expire = math.floor(time.time())
+ self.hashAlgo = hashAlgo
+ self.b64Key = base64Key
+ generatedHMAC = hmac.HMAC(base64.b64decode(base64Key).decode(), digestmod=self.hashAlgo)
+ generatedHMAC.update(data + expire)
+ self.HMACResult = generatedHMAC.hexdigest()
+ return
+
+ def check(self, data):
+ testHash = hmac.HMAC(base64.b64decode(base64Key).decode(), digestmod=self.hashAlgo)
+ testHash.update(data + math.floor(time.time()))
+ testHash = testHash.hexdigest()
+ if hmac.compare_digest(testHash, self.HMACResult)
\ No newline at end of file