fixed self issue
parent
6b9d4f8fc6
commit
1e32446f2a
|
@ -24,7 +24,13 @@ All traffic is over Tor/I2P, connecting only to Tor onion and I2P hidden service
|
||||||
|
|
||||||
Onionr nodes use HTTP (over Tor/I2P) to exchange keys, metadata, and blocks. Blocks are identified by their sha3_256 hash. Nodes sync a table of blocks hashes and attempt to download blocks they do not yet have from random peers.
|
Onionr nodes use HTTP (over Tor/I2P) to exchange keys, metadata, and blocks. Blocks are identified by their sha3_256 hash. Nodes sync a table of blocks hashes and attempt to download blocks they do not yet have from random peers.
|
||||||
|
|
||||||
Blocks may be encrypted using Curve25519.
|
Blocks may be encrypted using Curve25519 or Salsa20.
|
||||||
|
|
||||||
|
Blocks have IDs in the following format:
|
||||||
|
|
||||||
|
-Optional hash of public key of publisher (base64)-optional signature (non-optional if publisher is specified) (Base64)-block type-block hash(sha3-256)
|
||||||
|
|
||||||
|
pubkeyHash-signature-type-hash
|
||||||
|
|
||||||
## Connections
|
## Connections
|
||||||
|
|
||||||
|
|
|
@ -161,6 +161,17 @@ class API:
|
||||||
time.sleep(self._privateDelayTime - elapsed)
|
time.sleep(self._privateDelayTime - elapsed)
|
||||||
|
|
||||||
return resp
|
return resp
|
||||||
|
|
||||||
|
@app.route('/')
|
||||||
|
def banner():
|
||||||
|
self.mimeType = 'text/html'
|
||||||
|
self.validateHost('public')
|
||||||
|
try:
|
||||||
|
with open('static-data/index.html', 'r') as html:
|
||||||
|
resp = Response(html.read())
|
||||||
|
except FileNotFoundError:
|
||||||
|
resp = Response("")
|
||||||
|
return resp
|
||||||
|
|
||||||
@app.route('/public/')
|
@app.route('/public/')
|
||||||
def public_handler():
|
def public_handler():
|
||||||
|
|
|
@ -174,8 +174,10 @@ class OnionrCrypto:
|
||||||
public_key = private_key.verify_key.encode(encoder=nacl.encoding.Base32Encoder())
|
public_key = private_key.verify_key.encode(encoder=nacl.encoding.Base32Encoder())
|
||||||
return (public_key.decode(), private_key.encode(encoder=nacl.encoding.Base32Encoder()).decode())
|
return (public_key.decode(), private_key.encode(encoder=nacl.encoding.Base32Encoder()).decode())
|
||||||
|
|
||||||
def pubKeyHashID(self, pubkey=self.pubKey):
|
def pubKeyHashID(self, pubkey=''):
|
||||||
'''Accept a ed25519 public key, return a truncated result of X many sha3_256 hash rounds'''
|
'''Accept a ed25519 public key, return a truncated result of X many sha3_256 hash rounds'''
|
||||||
|
if pubkey == '':
|
||||||
|
pubkey = self.pubKey
|
||||||
prev = ''
|
prev = ''
|
||||||
pubkey = pubkey.encode()
|
pubkey = pubkey.encode()
|
||||||
for i in range(self.HASH_ID_ROUNDS):
|
for i in range(self.HASH_ID_ROUNDS):
|
||||||
|
|
Loading…
Reference in New Issue