def filetotrans(filename): # Verified working f = open(filename, "r") incount = int(block.readword(f.readline())) # reading incount from the file outcount = int(block.readword(f.readline())) # reading outcount from the file T = transaction(incount, outcount) # create a new transaction object T.inlist = [inputtrans() for i in range(T.incount)] # creating array inlist[] T.sign = block.readword(f.readline()) T.hash = block.readword(f.readline()) for i in range(T.incount): T.inlist[i].hash = block.readword( f.readline() ) # reading hash, n, sign and pub values from file ans storing it in inlist[i] T.inlist[i].n = int(block.readword(f.readline())) T.inlist[i].sign = block.readword(f.readline()) T.inlist[i].pub = block.readword(f.readline()) T.outlist = [outputtrans() for i in range(T.outcount)] # creating array outlist[] for i in range(T.outcount): T.outlist[i].value = int( block.readword(f.readline()) ) # reading value and addr values from file ans storing it in outlist[i] T.outlist[i].addr = block.readword(f.readline()) f.close() return T
def signtrans(node, filename): # Verified working f = open(filename, "r") incount = int(block.readword(f.readline())) # reading incount from the file outcount = int(block.readword(f.readline())) # reading outcount from the file sign = block.readword(f.readline()) T = transaction(incount, outcount) # create a new transaction object T.hash = block.readword(f.readline()) hashstr = str(T.incount) + str(T.outcount) transstr = str(T.incount) + str(T.outcount) T.inlist = [inputtrans() for i in range(T.incount)] # creating array inlist[] for i in range(T.incount): T.inlist[i].hash = block.readword( f.readline() ) # reading hash, n, sign and pub values from file ans storing it in inlist[i] T.inlist[i].n = int(block.readword(f.readline())) T.inlist[i].sign = block.readword(f.readline()) T.inlist[i].pub = block.readword(f.readline()) # append each attribute of inlist[i] and sign it hashinstr = str(T.inlist[i].n) + str(T.inlist[i].pub) hashstr = hashstr + hashinstr # T.inlist[i].hash = gethash(hashinstr) #Commented out bcos validation was failing inliststr = str(T.inlist[i].hash) + str(T.inlist[i].n) + str(T.inlist[i].pub) T.inlist[i].sign = node.privatekey.sign(inliststr) # print T.inlist[i].sign transstr = transstr + str(T.inlist[i].hash) + str(T.inlist[i].n) + str(T.inlist[i].pub) + str(T.inlist[i].sign) T.outlist = [outputtrans() for i in range(T.outcount)] # creating array outlist[] for i in range(T.outcount): T.outlist[i].value = int( block.readword(f.readline()) ) # reading value and addr values from file ans storing it in outlist[i] T.outlist[i].addr = block.readword(f.readline()) transstr = transstr + str(T.outlist[i].value) + str(T.outlist[i].addr) hashstr = hashstr + str(T.outlist[i].value) + str(T.outlist[i].addr) # T.hash = gethash(hashstr) commented because of the difficulty in finding hash of the input transaction transstr = transstr + str(T.hash) T.sign = node.privatekey.sign(transstr) # print T.sign f.close transtofile(T, "signedtrans5.txt")