more TODO-changes for sharing-ability

This commit is contained in:
Dominik Moritz Roth 2020-06-19 19:06:14 +02:00
parent f5ec35fb29
commit 05a3f42e4d

16
next.py
View File

@ -9,11 +9,15 @@
# TODO: inode_id -> actuall Inode lookup table # TODO: inode_id -> actuall Inode lookup table
# TODO: Add chareable folders: # TODO: Add chareable folders:
# TODO: No more 'tokens' -> write-key for address-gen and read-key for encryption # TODO: No more 'tokens' -> write-key for address-gen and read-key for encryption
# TODO: Change iota receive adress to next adress (encrypted with read-key) # TODO: Change iota receive address to last adress (encrypted using read-key + hashed)
# -> relation of different transactions as part of the file/dir-structore stays hidden;
# but someone with the read-key of a directory/file is able to traverse the associated blockchain one by one
# TODO: Add share-functionality: # TODO: Add share-functionality:
# 1. publish read-key of the directory # 1. publish read-key of the directory
# 2. publish public adress of current milestone-block # 2. publish public adress of current milestone-block
# Problem: No updateable milestone-index... -> Create share-genesis? # Problem: No updateable milestone-index... -> Create share-genesis?
# Problem: When sharing a single file, updates are not received... -> new file-blobs reverence old one via rec-address
# TODO: ? Switch to salsa20 stream-cipher -> no padding required -> 2187 as blocksize instead of 2176 -> .5% more
from iota import Iota, ProposedTransaction, Address, TryteString, Tag from iota import Iota, ProposedTransaction, Address, TryteString, Tag
from iota.crypto.addresses import AddressGenerator from iota.crypto.addresses import AddressGenerator
@ -27,11 +31,9 @@ import math
from pprint import pprint from pprint import pprint
import hashlib import hashlib
import sys import sys
import random
import time import time
import msgpack import msgpack
import copy
import gzip import gzip
import secrets import secrets
@ -50,7 +52,10 @@ except ImportError:
else: else:
faulthandler.enable() faulthandler.enable()
CHUNKSIZE = 2187 # For RAW:
#CHUNKSIZE = 2187
# For AES:
CHUNKSIZE = 2176
SYNCWRITES = True SYNCWRITES = True
def log(txt): def log(txt):
@ -257,6 +262,7 @@ class TangleBlob():
if bundles: if bundles:
sendEmOff(bundles, self.iotaApi) sendEmOff(bundles, self.iotaApi)
class TangleFileTreeElement(TangleBlob): class TangleFileTreeElement(TangleBlob):
def __init__(self, name: str, lastMilestoneIndex: int, parent, iotaApi: Iota) -> None: def __init__(self, name: str, lastMilestoneIndex: int, parent, iotaApi: Iota) -> None:
if isinstance(parent, bytes): if isinstance(parent, bytes):
@ -444,6 +450,8 @@ class TangleFile():
self.hash = hashlib.sha256(newData).digest() self.hash = hashlib.sha256(newData).digest()
self.writeKey = hashlib.sha3_384(b'f' + self.parent.writeKey + self.hash).digest() self.writeKey = hashlib.sha3_384(b'f' + self.parent.writeKey + self.hash).digest()
self.readKey = hashlib.sha3_384(b'f' + self.parent.readKey + self.hash).digest() self.readKey = hashlib.sha3_384(b'f' + self.parent.readKey + self.hash).digest()
# Maybe this way the gc will remove it quicker?
del self.blob
self.blob = TangleBlob(self.writeKey, self.readKey, self.iotaApi) self.blob = TangleBlob(self.writeKey, self.readKey, self.iotaApi)
self.blob.append(newData) self.blob.append(newData)
self.size = self.blob.getSize() self.size = self.blob.getSize()