def verifyPGResponse(context): response = receive_data(context['server']) data, aes_key_encryption = pickle.loads(response) aes_key = rsa.decrypt(aes_key_encryption, context['PrivK']) data, sig = aes_ecb_decrypt(data, aes_key) verify = rsa.verify(data, sig, context['PubKPG']) print("Decrypted response:", pickle.loads(data))
def receiveTransactionInfo(context): response = receive_data(context['connections'][0]) data = pickle.loads(response) print(data) aes_key = rsa.decrypt(data[1], context['PrivK']) context['PM'] = aes_ecb_decrypt(data[0], aes_key) print(context['PM']) hash_to_check = rsa.verify(pickle.dumps( context['OI']), context['PM'][1], context['PubKC'])
def sendResponseFromPG(context): response = receive_data(context['connections'][1]) data, aes_key_encryption = pickle.loads(response) aes_key = rsa.decrypt(aes_key_encryption, context['PrivK']) response = aes_ecb_decrypt(data, aes_key) aes_key = os.urandom(16) data = aes_ecb_encrypt(pickle.dumps(response), aes_key) aes_key_encryption = rsa.encrypt(aes_key, context['PubKC']) context['connections'][0].send(pickle.dumps([data, aes_key_encryption]))
def receiveCustomerPublicKey(context): response = receive_data(context['connections'][0]) print('Public key received') # response = context['connections'][0].recv(1000) data = pickle.loads(response) aes_key = rsa.decrypt(data[0], context['PrivK']) PubKC = aes_ecb_decrypt(data[1], aes_key) # store customer's public key context['PubKC'] = PubKC
def getTransactionSid(context): response = receive_data(context['server']) [aes_key_encryption, sid] = pickle.loads(response) aes_key = rsa.decrypt(aes_key_encryption, context['PrivK']) message_block = aes_ecb_decrypt(sid, aes_key) sid, digital_sig = message_block[0], message_block[1] print('Verifying RSA:', rsa.verify(sid, digital_sig, context['PubKM'])) # store sid context['PI']['sid'] = sid context['OI']['sid'] = sid
def receiveTransaction(context): response = receive_data(context['server']) data = pickle.loads(response) print(data) aes_key_encryption = data[1] aes_key = rsa.decrypt(aes_key_encryption, context['PrivK']) data = aes_ecb_decrypt(data[0], aes_key) context['PM'], context['PubKC'], merchant_sig = data context['PM'] = pickle.loads(context['PM']) context['Kcpg'] = rsa.decrypt(context['PM'][0], context['PrivK']) PM = aes_ecb_decrypt(context['PM'][1], context['Kcpg']) OI = pickle.dumps([PM[0]['Amount'], context['PubKC'], PM[0]['sid']]) verify = rsa.verify(OI, merchant_sig, context['PubKM']) verify = rsa.verify(pickle.dumps(PM[0]), PM[1], context['PubKC']) context['response'] = checksum(verify) context['PM'] = PM[0]