progress in removing core
This commit is contained in:
parent
348ec1081f
commit
e7c8c93dab
16 changed files with 68 additions and 229 deletions
|
@ -1 +1,3 @@
|
|||
from . import insert
|
||||
from . import insert
|
||||
|
||||
insert = insert.insert_block
|
|
@ -3,15 +3,18 @@ from onionrutils import bytesconverter, epoch
|
|||
import storagecounter, filepaths, onionrstorage
|
||||
import onionrevents as events
|
||||
from etc import powchoice, onionrvalues
|
||||
def insert_block(onionr_inst, data, header='txt', sign=False, encryptType='', symKey='', asymPeer='', meta = {}, expire=None, disableForward=False):
|
||||
import config, onionrcrypto as crypto, subprocesspow, onionrexceptions
|
||||
from onionrusers import onionrusers
|
||||
from onionrutils import localcommand, blockmetadata
|
||||
import coredb
|
||||
def insert_block(data, header='txt', sign=False, encryptType='', symKey='', asymPeer='', meta = {}, expire=None, disableForward=False):
|
||||
'''
|
||||
Inserts a block into the network
|
||||
encryptType must be specified to encrypt a block
|
||||
'''
|
||||
use_subprocess = powchoice.use_subprocess(onionr_inst.config)
|
||||
use_subprocess = powchoice.use_subprocess(config)
|
||||
requirements = onionrvalues.OnionrValues()
|
||||
storage_counter = storagecounter.StorageCounter()
|
||||
crypto = onionr_inst.crypto
|
||||
allocationReachedMessage = 'Cannot insert block, disk allocation reached.'
|
||||
if storage_counter.isFull():
|
||||
logger.error(allocationReachedMessage)
|
||||
|
@ -23,7 +26,7 @@ def insert_block(onionr_inst, data, header='txt', sign=False, encryptType='', sy
|
|||
|
||||
createTime = epoch.get_epoch()
|
||||
|
||||
dataNonce = bytesconverter.bytes_to_str(hashers.sha3_hash(data))
|
||||
dataNonce = bytesconverter.bytes_to_str(crypto.hashers.sha3_hash(data))
|
||||
try:
|
||||
with open(filepaths.data_nonce_file, 'r') as nonces:
|
||||
if dataNonce in nonces:
|
||||
|
@ -78,31 +81,23 @@ def insert_block(onionr_inst, data, header='txt', sign=False, encryptType='', sy
|
|||
jsonMeta = json.dumps(meta)
|
||||
plaintextMeta = jsonMeta
|
||||
if sign:
|
||||
signature = crypto.edSign(jsonMeta.encode() + data, key=crypto.privKey, encodeResult=True)
|
||||
signature = crypto.signing.ed_sign(jsonMeta.encode() + data, key=crypto.priv_key, encodeResult=True)
|
||||
signer = crypto.pubKey
|
||||
|
||||
if len(jsonMeta) > 1000:
|
||||
raise onionrexceptions.InvalidMetadata('meta in json encoded form must not exceed 1000 bytes')
|
||||
|
||||
user = onionrusers.OnionrUser(symKey)
|
||||
|
||||
# encrypt block metadata/sig/content
|
||||
if encryptType == 'sym':
|
||||
|
||||
if len(symKey) < requirements.passwordLength:
|
||||
raise onionrexceptions.SecurityError('Weak encryption key')
|
||||
jsonMeta = crypto.symmetricEncrypt(jsonMeta, key=symKey, returnEncoded=True).decode()
|
||||
data = crypto.symmetricEncrypt(data, key=symKey, returnEncoded=True).decode()
|
||||
signature = crypto.symmetricEncrypt(signature, key=symKey, returnEncoded=True).decode()
|
||||
signer = crypto.symmetricEncrypt(signer, key=symKey, returnEncoded=True).decode()
|
||||
raise NotImplementedError("not yet implemented")
|
||||
elif encryptType == 'asym':
|
||||
if stringvalidators.validate_pub_key(asymPeer):
|
||||
# Encrypt block data with forward secrecy key first, but not meta
|
||||
jsonMeta = json.dumps(meta)
|
||||
jsonMeta = crypto.pubKeyEncrypt(jsonMeta, asymPeer, encodedData=True).decode()
|
||||
data = crypto.pubKeyEncrypt(data, asymPeer, encodedData=True).decode()
|
||||
signature = crypto.pubKeyEncrypt(signature, asymPeer, encodedData=True).decode()
|
||||
signer = crypto.pubKeyEncrypt(signer, asymPeer, encodedData=True).decode()
|
||||
jsonMeta = crypto.encryption.pub_key_encrypt(jsonMeta, asymPeer, encodedData=True).decode()
|
||||
data = crypto.encryption.pub_key_encrypt(data, asymPeer, encodedData=True).decode()
|
||||
signature = crypto.pub_key_encrypt(signature, asymPeer, encodedData=True).decode()
|
||||
signer = crypto.pub_key_encrypt(signer, asymPeer, encodedData=True).decode()
|
||||
try:
|
||||
onionrusers.OnionrUser(asymPeer, saveUser=True)
|
||||
except ValueError:
|
||||
|
@ -141,8 +136,8 @@ def insert_block(onionr_inst, data, header='txt', sign=False, encryptType='', sy
|
|||
coredb.daemonqueue.daemon_queue_add('uploadBlock', retData)
|
||||
else:
|
||||
pass
|
||||
coredb.blockmetadb.add_to_block_DB(retData, selfInsert=True, dataSaved=True)
|
||||
coredb.blockmetadata.process_block_metadata(retData)
|
||||
coredb.blockmetadb.add.add_to_block_DB(retData, selfInsert=True, dataSaved=True)
|
||||
blockmetadata.process_block_metadata(retData)
|
||||
'''
|
||||
if retData != False:
|
||||
if plaintextPeer == onionrvalues.DENIABLE_PEER_ADDRESS:
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue