def test_9(self): """test_9 AES-GCM: Failed encryption and decryption by changing a header byte""" # Generate 16 byte key key = os.urandom(mpin.PAS) # Generate 12 byte IV iv = os.urandom(mpin.IVL) # Generate a 32 byte random header header = os.urandom(32) # Plaintext input plaintext1 = "A test message" ciphertext, tag1 = mpin.aes_gcm_encrypt(key, iv, header, plaintext1) new = list(header) new[0] = "a" header_bad = ''.join(new) plaintext2, tag2 = mpin.aes_gcm_decrypt(key, iv, header_bad, ciphertext) self.assertNotEqual(tag1, tag2) self.assertEqual(plaintext1, plaintext2)
def test_7(self): """test_7 AES-GCM: Successful encryption and decryption""" # Generate 16 byte key key = os.urandom(mpin.PAS) # Generate 12 byte IV iv = os.urandom(mpin.IVL) # Generate a 32 byte random header header = os.urandom(32) # Plaintext input plaintext1 = "A test message" ciphertext, tag1 = mpin.aes_gcm_encrypt(key, iv, header, plaintext1) plaintext2, tag2 = mpin.aes_gcm_decrypt(key, iv, header, ciphertext) self.assertEqual(tag1, tag2) self.assertEqual(plaintext1, plaintext2)
nIter) rtn, server_aes_key = mpin.server_key(HASH_TYPE_MPIN, Z, server_secret, w, HM, HID, u, ut) if rtn != 0: print "ERROR: Generating server_aes_key %s" % rtn print "Server AES Key: %s" % server_aes_key.encode("hex") if MPIN_FULL: plaintext = "A test message" print "message to encrypt: ", plaintext header_hex = "1554a69ecbf04e507eb6985a234613246206c85f8af73e61ab6e2382a26f457d" header = header_hex.decode("hex") iv_hex = "2b213af6b0edf6972bf996fb" iv = iv_hex.decode("hex") time_func( 'ciphertext, tag = mpin.aes_gcm_encrypt(client_aes_key, iv, header, plaintext)', nIter) ciphertext, tag = mpin.aes_gcm_encrypt(client_aes_key, iv, header, plaintext) print "ciphertext ", ciphertext.encode("hex") print "tag1 ", tag.encode("hex") time_func( 'plaintext2, tag2 = mpin.aes_gcm_decrypt(server_aes_key, iv, header, ciphertext)', nIter) plaintext2, tag2 = mpin.aes_gcm_decrypt(server_aes_key, iv, header, ciphertext) print "decrypted message: ", plaintext2 print "tag2 ", tag2.encode("hex")