def UpdateSQPr(pr, sig=None): if sig is None: session['updatesqpr'] = pr return pr else: orig = SHA256.new(session['updatesqpr'].encode()) if pkcs.new(RSA.importKey(session['pubkey'])).verify(orig, bytes.fromhex(sig)): try: api = mc.getApi() txid = mc.publishItem(api, session['username'], 'updatesqlpr', session['updatesqpr'], sig) except: print("MultiChain Error") return "D" else: session.pop('updatesqpr', None) return "S"
def UpdatePk(uid, pubkey, sig=None): if sig is None: data = uid+','+pubkey+',updatepubkey' session['updatepk'] = data return data else: orig = SHA256.new(session['updatepk'].encode()) if pkcs.new(RSA.importKey(session['pubkey'])).verify(orig, bytes.fromhex(sig)): try: api = mc.getApi() txid = mc.publishItem(api, session['username'], 'updatepubkey', session['updatepk'], sig) except: print("MultiChain Error") return "D" else: session.pop('updatepk', None) return "S"
def ExecFunc(func, param, sig=None): if sig is None: data = func+'||'+param session['execfunc'] = data return data else: orig = SHA256.new(session['execfunc'].encode()) if pkcs.new(RSA.importKey(session['pubkey'])).verify(orig, bytes.fromhex(sig)): try: api = mc.getApi() txid = mc.publishItem(api, session['username'], session['execfunc'].split('||')[0], session['execfunc'], sig) except: print("MultiChain Error") return "D" else: session.pop('execfunc', None) return "S"
def InstrCourses(uid, courses, sig=None): if sig is None: data = uid+'||'+courses+'||instrcourses' session['instrc'] = data return data else: orig = SHA256.new(session['instrc'].encode()) if pkcs.new(RSA.importKey(session['pubkey'])).verify(orig, bytes.fromhex(sig)): try: api = mc.getApi() txid = mc.publishItem(api, session['username'], 'instrcourses', session['instrc'], sig) except: print("MultiChain Error") return "D" else: session.pop('instrc', None) return "S"
def Update(uid, course, newGrade, sig=None): data = uid + ',' + course + ',' + newGrade + ',gradeupdate' if sig is None: session['update'] = data return data else: orig = SHA256.new(session['update'].encode()) if pkcs.new(RSA.importKey(session['pubkey'])).verify( orig, bytes.fromhex(sig)): import mc try: api = mc.getApi() txid = mc.publishItem(api, session['username'], 'gradeupdate', session['update'], sig) except: print("MultiChain Error") return "D" else: session.pop('update', None) return "S" else: return "D"
def Insert(data, count, sig=None): if sig is None: v = [tuple(i.values()) for i in data] s = map(list, zip(*v)) dt = "||".join([",".join(i) for i in s]) + "||gradeinsert" session['insert'] = dt return dt else: orig = SHA256.new(session['insert'].encode()) if pkcs.new(RSA.importKey(session['pubkey'])).verify( orig, bytes.fromhex(sig)): import mc try: api = mc.getApi() txid = mc.publishItem(api, session['username'], 'gradeinsert', session['insert'], sig) except: print("MultiChain Error") return jsonify({'status': 'D'}) else: session.pop('insert', None) return jsonify({'status': 'S'}) else: return jsonify({'status': 'D'})
from Crypto.PublicKey import RSA from Crypto.Signature import PKCS1_v1_5 as pkcs from Crypto.Hash import SHA256 from collections import defaultdict import threading, os, secrets, time import select, socket, requests from anytree import Node, RenderTree, LevelOrderIter from itertools import product conn = psycopg2.connect(database="rraj", user="******", password="******", host="127.0.0.1", port="5432") cur = conn.cursor() api = mc.getApi() txRun = mc.streamInfo(api) stmt = "UPDATE txid SET tx=%s" POOL_TIME = 5 log = defaultdict(list) makeTree = 1 ######################################################################################## def pollAndExecute(): global makeTree, txRun, log # print(time.time(), x) tot = mc.streamInfo(api) if tot == txRun: