progress in removing core
parent
e1676ef168
commit
e351710189
|
@ -9,6 +9,7 @@ private_API_host_file = home + 'private-host.txt'
|
||||||
bootstrap_file_location = 'static-data/bootstrap-nodes.txt'
|
bootstrap_file_location = 'static-data/bootstrap-nodes.txt'
|
||||||
data_nonce_file = home + 'block-nonces.dat'
|
data_nonce_file = home + 'block-nonces.dat'
|
||||||
forward_keys_file = home + 'forward-keys.db'
|
forward_keys_file = home + 'forward-keys.db'
|
||||||
|
cached_storage = home + 'cachedstorage.dat'
|
||||||
|
|
||||||
tor_hs_address_file = home + 'hs/hostname'
|
tor_hs_address_file = home + 'hs/hostname'
|
||||||
|
|
||||||
|
|
|
@ -31,7 +31,6 @@ PLUGIN_VERSION = '0.0.1'
|
||||||
class OnionrCLIUI:
|
class OnionrCLIUI:
|
||||||
def __init__(self, apiInst):
|
def __init__(self, apiInst):
|
||||||
self.api = apiInst
|
self.api = apiInst
|
||||||
self.myCore = apiInst.get_core()
|
|
||||||
self.shutdown = False
|
self.shutdown = False
|
||||||
self.running = 'undetermined'
|
self.running = 'undetermined'
|
||||||
enabled = onionrplugins.get_enabled_plugins()
|
enabled = onionrplugins.get_enabled_plugins()
|
||||||
|
@ -49,7 +48,7 @@ class OnionrCLIUI:
|
||||||
|
|
||||||
def isRunning(self):
|
def isRunning(self):
|
||||||
while not self.shutdown:
|
while not self.shutdown:
|
||||||
if localcommand.local_command(self.myCore, 'ping', maxWait=5) == 'pong!':
|
if localcommand.local_command('ping', maxWait=5) == 'pong!':
|
||||||
self.running = 'Yes'
|
self.running = 'Yes'
|
||||||
else:
|
else:
|
||||||
self.running = 'No'
|
self.running = 'No'
|
||||||
|
|
|
@ -21,8 +21,9 @@
|
||||||
# Imports some useful libraries
|
# Imports some useful libraries
|
||||||
import logger, config, threading, time, datetime, sys, json
|
import logger, config, threading, time, datetime, sys, json
|
||||||
from onionrblockapi import Block
|
from onionrblockapi import Block
|
||||||
from onionrutils import stringvalidators
|
from onionrutils import stringvalidators, bytesconverter
|
||||||
import onionrexceptions, onionrusers
|
from onionrcrypto import encryption, getourkeypair
|
||||||
|
import onionrexceptions, onionrusers, signing
|
||||||
import locale
|
import locale
|
||||||
locale.setlocale(locale.LC_ALL, '')
|
locale.setlocale(locale.LC_ALL, '')
|
||||||
plugin_name = 'encrypt'
|
plugin_name = 'encrypt'
|
||||||
|
@ -63,22 +64,24 @@ class PlainEncryption:
|
||||||
sys.exit(1)
|
sys.exit(1)
|
||||||
# Build Message to encrypt
|
# Build Message to encrypt
|
||||||
data = {}
|
data = {}
|
||||||
myPub = self.api.get_core()._crypto.pubKey
|
keypair = getourkeypair.get_our_keypair()
|
||||||
|
myPub = keypair[0]
|
||||||
if sign:
|
if sign:
|
||||||
data['sig'] = self.api.get_core()._crypto.edSign(plaintext, key=self.api.get_core()._crypto.privKey, encodeResult=True)
|
data['sig'] = signing.ed_sign(plaintext, key=keypair[1], encodeResult=True)
|
||||||
data['sig'] = self.api.get_core()._utils.bytesToStr(data['sig'])
|
data['sig'] = bytesconverter.bytes_to_str(data['sig'])
|
||||||
data['signer'] = myPub
|
data['signer'] = myPub
|
||||||
data['data'] = plaintext
|
data['data'] = plaintext
|
||||||
data = json.dumps(data)
|
data = json.dumps(data)
|
||||||
plaintext = data
|
plaintext = data
|
||||||
encrypted = self.api.get_core()._crypto.pubKeyEncrypt(plaintext, pubkey, encodedData=True)
|
encrypted = encryption.pub_key_encrypt(plaintext, pubkey, encodedData=True)
|
||||||
encrypted = self.api.get_core()._utils.bytesToStr(encrypted)
|
encrypted = bytesconverter.bytes_to_str(encrypted)
|
||||||
logger.info('Encrypted Message: \n\nONIONR ENCRYPTED DATA %s END ENCRYPTED DATA' % (encrypted,), terminal=True)
|
logger.info('Encrypted Message: \n\nONIONR ENCRYPTED DATA %s END ENCRYPTED DATA' % (encrypted,), terminal=True)
|
||||||
|
|
||||||
def decrypt(self):
|
def decrypt(self):
|
||||||
plaintext = ""
|
plaintext = ""
|
||||||
data = ""
|
data = ""
|
||||||
logger.info("Please enter your message (ctrl-d or -q to stop):", terminal=True)
|
logger.info("Please enter your message (ctrl-d or -q to stop):", terminal=True)
|
||||||
|
keypair = getourkeypair.get_our_keypair()
|
||||||
try:
|
try:
|
||||||
for line in sys.stdin:
|
for line in sys.stdin:
|
||||||
if line == '-q\n':
|
if line == '-q\n':
|
||||||
|
@ -89,8 +92,8 @@ class PlainEncryption:
|
||||||
if len(data) <= 1:
|
if len(data) <= 1:
|
||||||
return
|
return
|
||||||
encrypted = data.replace('ONIONR ENCRYPTED DATA ', '').replace('END ENCRYPTED DATA', '')
|
encrypted = data.replace('ONIONR ENCRYPTED DATA ', '').replace('END ENCRYPTED DATA', '')
|
||||||
myPub = self.api.get_core()._crypto.pubKey
|
myPub = keypair[0]
|
||||||
decrypted = self.api.get_core()._crypto.pubKeyDecrypt(encrypted, privkey=self.api.get_core()._crypto.privKey, encodedData=True)
|
decrypted = encryption.pub_key_decrypt(encrypted, privkey=keypair[1], encodedData=True)
|
||||||
if decrypted == False:
|
if decrypted == False:
|
||||||
logger.error("Decryption failed", terminal=True)
|
logger.error("Decryption failed", terminal=True)
|
||||||
else:
|
else:
|
||||||
|
@ -98,7 +101,7 @@ class PlainEncryption:
|
||||||
logger.info('Decrypted Message: \n\n%s' % data['data'], terminal=True)
|
logger.info('Decrypted Message: \n\n%s' % data['data'], terminal=True)
|
||||||
try:
|
try:
|
||||||
logger.info("Signing public key: %s" % (data['signer'],), terminal=True)
|
logger.info("Signing public key: %s" % (data['signer'],), terminal=True)
|
||||||
assert self.api.get_core()._crypto.edVerify(data['data'], data['signer'], data['sig']) != False
|
assert signing.ed_verify(data['data'], data['signer'], data['sig']) != False
|
||||||
except (AssertionError, KeyError) as e:
|
except (AssertionError, KeyError) as e:
|
||||||
logger.warn("WARNING: THIS MESSAGE HAS A MISSING OR INVALID SIGNATURE", terminal=True)
|
logger.warn("WARNING: THIS MESSAGE HAS A MISSING OR INVALID SIGNATURE", terminal=True)
|
||||||
else:
|
else:
|
||||||
|
|
|
@ -19,11 +19,10 @@
|
||||||
'''
|
'''
|
||||||
import json
|
import json
|
||||||
from flask import Response, request, redirect, Blueprint, send_from_directory
|
from flask import Response, request, redirect, Blueprint, send_from_directory
|
||||||
import core
|
import deadsimplekv as simplekv
|
||||||
|
import filepaths
|
||||||
core_inst = core.Core()
|
|
||||||
flask_blueprint = Blueprint('esoteric_control', __name__)
|
flask_blueprint = Blueprint('esoteric_control', __name__)
|
||||||
|
key_store = simplekv.DeadSimpleKV(filepaths.cachedstorage, refresh_seconds=5)
|
||||||
@flask_blueprint.route('/esoteric/ping')
|
@flask_blueprint.route('/esoteric/ping')
|
||||||
def ping():
|
def ping():
|
||||||
return 'pong!'
|
return 'pong!'
|
||||||
|
@ -31,18 +30,18 @@ def ping():
|
||||||
@flask_blueprint.route('/esoteric/send/<peer>', methods=['POST'])
|
@flask_blueprint.route('/esoteric/send/<peer>', methods=['POST'])
|
||||||
def send_message(peer):
|
def send_message(peer):
|
||||||
data = request.get_json(force=True)
|
data = request.get_json(force=True)
|
||||||
core_inst.keyStore.refresh()
|
key_store.refresh()
|
||||||
existing = core_inst.keyStore.get('s' + peer)
|
existing = key_store.get('s' + peer)
|
||||||
if existing is None:
|
if existing is None:
|
||||||
existing = []
|
existing = []
|
||||||
existing.append(data)
|
existing.append(data)
|
||||||
core_inst.keyStore.put('s' + peer, existing)
|
key_store.put('s' + peer, existing)
|
||||||
core_inst.keyStore.flush()
|
key_store.flush()
|
||||||
return Response('success')
|
return Response('success')
|
||||||
|
|
||||||
@flask_blueprint.route('/esoteric/gets/<peer>')
|
@flask_blueprint.route('/esoteric/gets/<peer>')
|
||||||
def get_sent(peer):
|
def get_sent(peer):
|
||||||
sent = core_inst.keyStore.get('s' + peer)
|
sent = key_store.get('s' + peer)
|
||||||
if sent is None:
|
if sent is None:
|
||||||
sent = []
|
sent = []
|
||||||
return Response(json.dumps(sent))
|
return Response(json.dumps(sent))
|
||||||
|
@ -50,22 +49,22 @@ def get_sent(peer):
|
||||||
@flask_blueprint.route('/esoteric/addrec/<peer>', methods=['POST'])
|
@flask_blueprint.route('/esoteric/addrec/<peer>', methods=['POST'])
|
||||||
def add_rec(peer):
|
def add_rec(peer):
|
||||||
data = request.get_json(force=True)
|
data = request.get_json(force=True)
|
||||||
core_inst.keyStore.refresh()
|
key_store.refresh()
|
||||||
existing = core_inst.keyStore.get('r' + peer)
|
existing = key_store.get('r' + peer)
|
||||||
if existing is None:
|
if existing is None:
|
||||||
existing = []
|
existing = []
|
||||||
existing.append(data)
|
existing.append(data)
|
||||||
core_inst.keyStore.put('r' + peer, existing)
|
key_store.put('r' + peer, existing)
|
||||||
core_inst.keyStore.flush()
|
key_store.flush()
|
||||||
return Response('success')
|
return Response('success')
|
||||||
|
|
||||||
@flask_blueprint.route('/esoteric/getrec/<peer>')
|
@flask_blueprint.route('/esoteric/getrec/<peer>')
|
||||||
def get_messages(peer):
|
def get_messages(peer):
|
||||||
core_inst.keyStore.refresh()
|
key_store.refresh()
|
||||||
existing = core_inst.keyStore.get('r' + peer)
|
existing = key_store.get('r' + peer)
|
||||||
if existing is None:
|
if existing is None:
|
||||||
existing = []
|
existing = []
|
||||||
else:
|
else:
|
||||||
existing = list(existing)
|
existing = list(existing)
|
||||||
core_inst.keyStore.delete('r' + peer)
|
key_store.delete('r' + peer)
|
||||||
return Response(json.dumps(existing))
|
return Response(json.dumps(existing))
|
Loading…
Reference in New Issue