Esempio n. 1
0
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))
Esempio n. 2
0
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'])
Esempio n. 3
0
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]))
Esempio n. 4
0
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
Esempio n. 5
0
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
Esempio n. 6
0
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]