From 62f88a11a703521b75fdc9ee4536cf61116347ec Mon Sep 17 00:00:00 2001 From: canewsin Date: Sun, 26 Dec 2021 23:30:36 +0530 Subject: [PATCH 1/4] Add More Plugins to Repo --- plugins | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/plugins b/plugins index 5c22d549..b59467e6 160000 --- a/plugins +++ b/plugins @@ -1 +1 @@ -Subproject commit 5c22d54984363d425d9f7b6aabbf1a871e7e60a1 +Subproject commit b59467e64ecd5176678a7a618781341938d4107f From f2e1c2ad81b7febf69e4b916d6aaa3e177eced90 Mon Sep 17 00:00:00 2001 From: Zola Gonano Date: Sun, 26 Dec 2021 18:54:13 +0000 Subject: [PATCH 2/4] Clean up tor v3 patch (#115) https://github.com/ZeroNetX/ZeroNet/pull/115 --- src/Crypt/{CryptRsa.py => CryptTor.py} | 40 ++++++++++++++----- src/Test/TestTor.py | 12 +++--- src/Tor/TorManager.py | 8 ++-- src/{Crypt/CryptEd25519.py => lib/Ed25519.py} | 0 4 files changed, 41 insertions(+), 19 deletions(-) rename src/Crypt/{CryptRsa.py => CryptTor.py} (70%) rename src/{Crypt/CryptEd25519.py => lib/Ed25519.py} (100%) diff --git a/src/Crypt/CryptRsa.py b/src/Crypt/CryptTor.py similarity index 70% rename from src/Crypt/CryptRsa.py rename to src/Crypt/CryptTor.py index 02df8f41..78ba6fc2 100644 --- a/src/Crypt/CryptRsa.py +++ b/src/Crypt/CryptTor.py @@ -4,14 +4,17 @@ import hashlib def sign(data, privatekey): import rsa from rsa import pkcs1 - from Crypt import CryptEd25519 - ## v3 = 88 + from lib import Ed25519 + + ## Onion Service V3 if len(privatekey) == 88: prv_key = base64.b64decode(privatekey) - pub_key = CryptEd25519.publickey_unsafe(prv_key) - sign = CryptEd25519.signature_unsafe(data, prv_key, pub_key) + pub_key = Ed25519.publickey_unsafe(prv_key) + sign = Ed25519.signature_unsafe(data, prv_key, pub_key) + return sign + ## Onion Service V2 if "BEGIN RSA PRIVATE KEY" not in privatekey: privatekey = "-----BEGIN RSA PRIVATE KEY-----\n%s\n-----END RSA PRIVATE KEY-----" % privatekey @@ -22,44 +25,61 @@ def sign(data, privatekey): def verify(data, publickey, sign): import rsa from rsa import pkcs1 - from Crypt import CryptEd25519 + from lib import Ed25519 + ## Onion Service V3 if len(publickey) == 32: + try: - valid = CryptEd25519.checkvalid(sign, data, publickey) + valid = Ed25519.checkvalid(sign, data, publickey) valid = 'SHA-256' + except Exception as err: print(err) valid = False + return valid + ## Onion Service V2 pub = rsa.PublicKey.load_pkcs1(publickey, format="DER") + try: valid = rsa.pkcs1.verify(data, sign, pub) + except pkcs1.VerificationError: valid = False + return valid def privatekeyToPublickey(privatekey): - from Crypt import CryptEd25519 import rsa from rsa import pkcs1 + from lib import Ed25519 + ## Onion Service V3 if len(privatekey) == 88: prv_key = base64.b64decode(privatekey) - pub_key = CryptEd25519.publickey_unsafe(prv_key) + pub_key = Ed25519.publickey_unsafe(prv_key) + return pub_key + ## Onion Service V2 if "BEGIN RSA PRIVATE KEY" not in privatekey: privatekey = "-----BEGIN RSA PRIVATE KEY-----\n%s\n-----END RSA PRIVATE KEY-----" % privatekey priv = rsa.PrivateKey.load_pkcs1(privatekey) pub = rsa.PublicKey(priv.n, priv.e) + return pub.save_pkcs1("DER") def publickeyToOnion(publickey): - from Crypt import CryptEd25519 + from lib import Ed25519 + + ## Onion Service V3 if len(publickey) == 32: - addr = CryptEd25519.publickey_to_onionaddress(publickey)[:-6] + addr = Ed25519.publickey_to_onionaddress(publickey)[:-6] + return addr + + ## Onion Service V2 return base64.b32encode(hashlib.sha1(publickey).digest()[:10]).lower().decode("ascii") diff --git a/src/Test/TestTor.py b/src/Test/TestTor.py index 0252d73a..e6b82c1a 100644 --- a/src/Test/TestTor.py +++ b/src/Test/TestTor.py @@ -4,7 +4,7 @@ import pytest import mock from File import FileServer -from Crypt import CryptRsa +from Crypt import CryptTor from Config import config @pytest.mark.usefixtures("resetSettings") @@ -34,17 +34,17 @@ class TestTor: address = tor_manager.addOnion() # Sign - sign = CryptRsa.sign(b"hello", tor_manager.getPrivatekey(address)) + sign = CryptTor.sign(b"hello", tor_manager.getPrivatekey(address)) assert len(sign) == 128 # Verify - publickey = CryptRsa.privatekeyToPublickey(tor_manager.getPrivatekey(address)) + publickey = CryptTor.privatekeyToPublickey(tor_manager.getPrivatekey(address)) assert len(publickey) == 140 - assert CryptRsa.verify(b"hello", publickey, sign) - assert not CryptRsa.verify(b"not hello", publickey, sign) + assert CryptTor.verify(b"hello", publickey, sign) + assert not CryptTor.verify(b"not hello", publickey, sign) # Pub to address - assert CryptRsa.publickeyToOnion(publickey) == address + assert CryptTor.publickeyToOnion(publickey) == address # Delete tor_manager.delOnion(address) diff --git a/src/Tor/TorManager.py b/src/Tor/TorManager.py index c0b99759..865d8fbf 100644 --- a/src/Tor/TorManager.py +++ b/src/Tor/TorManager.py @@ -12,8 +12,10 @@ import atexit import gevent from Config import config -from Crypt import CryptEd25519 -from Crypt import CryptRsa + +from lib import Ed25519 +from Crypt import CryptTor + from Site import SiteManager import socks from gevent.lock import RLock @@ -272,7 +274,7 @@ class TorManager(object): return self.privatekeys[address] def getPublickey(self, address): - return CryptRsa.privatekeyToPublickey(self.privatekeys[address]) + return CryptTor.privatekeyToPublickey(self.privatekeys[address]) def getOnion(self, site_address): if not self.enabled: diff --git a/src/Crypt/CryptEd25519.py b/src/lib/Ed25519.py similarity index 100% rename from src/Crypt/CryptEd25519.py rename to src/lib/Ed25519.py From 912688dbbd7c35a8c7a9973c1432ee11c4b4021d Mon Sep 17 00:00:00 2001 From: canewsin Date: Thu, 6 Jan 2022 12:28:53 +0530 Subject: [PATCH 3/4] Update ZeroNet Plugins --- plugins | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/plugins b/plugins index b59467e6..e57b95c7 160000 --- a/plugins +++ b/plugins @@ -1 +1 @@ -Subproject commit b59467e64ecd5176678a7a618781341938d4107f +Subproject commit e57b95c737865c53ffb114f91baa9992b0a993d2 From f2324b8eb469e9b7096e336f80989522a3ded6a9 Mon Sep 17 00:00:00 2001 From: canewsin Date: Thu, 6 Jan 2022 12:32:43 +0530 Subject: [PATCH 4/4] Fetch Latest ZeroNet-plugins Repo --- plugins | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/plugins b/plugins index e57b95c7..7bb1715c 160000 --- a/plugins +++ b/plugins @@ -1 +1 @@ -Subproject commit e57b95c737865c53ffb114f91baa9992b0a993d2 +Subproject commit 7bb1715ce030352ff46ddd43ad58b7ab90ef978b