Beispiel #1
0
    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)
Beispiel #2
0
    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)
Beispiel #3
0
                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")