Example #1
0
 def assert_roundtrip(data):
     """
     Verify that the original data is retrieved after encrypting and
     decrypting, and again when also using base64 encoding/decoding.
     """
     assert aes_decrypt(aes_encrypt(data, AES_KEY_BYTES), AES_KEY_BYTES) == data
     assert decode_and_decrypt(encrypt_and_encode(data, AES_KEY_BYTES), AES_KEY_BYTES) == data
Example #2
0
    def download_photo_id_image(self):
        """
        Download the associated id image from storage
        """
        if not settings.VERIFY_STUDENT["SOFTWARE_SECURE"].get(
                "RSA_PRIVATE_KEY", None):
            return None

        path = self._get_path("photo_id")
        byte_img_data = self._get_image_from_storage(path)

        try:
            # decode rsa encrypted aes key from base64
            rsa_encrypted_aes_key = base64.urlsafe_b64decode(
                self.photo_id_key.encode('utf-8'))

            # decrypt aes key using rsa private key
            rsa_private_key_str = settings.VERIFY_STUDENT["SOFTWARE_SECURE"][
                "RSA_PRIVATE_KEY"]
            decrypted_aes_key = rsa_decrypt(rsa_encrypted_aes_key,
                                            rsa_private_key_str)
            img_bytes = decode_and_decrypt(byte_img_data, decrypted_aes_key)
            return img_bytes
        except Exception as e:  # pylint: disable=broad-except
            log.exception(
                'Failed to decrypt photo id image due to an exception: %s', e)
            return None
Example #3
0
    def download_face_image(self):
        """
        Download the associated face image from storage
        """
        if not settings.VERIFY_STUDENT["SOFTWARE_SECURE"].get(
                "RSA_PRIVATE_KEY", None):
            return None
        path = self._get_path("face")
        byte_img_data = self._get_image_from_storage(path)

        aes_key_str = settings.VERIFY_STUDENT["SOFTWARE_SECURE"][
            "FACE_IMAGE_AES_KEY"]

        try:
            if six.PY3:
                aes_key = codecs.decode(aes_key_str, "hex")
            else:
                aes_key = aes_key_str.decode("hex")

            img_bytes = decode_and_decrypt(byte_img_data, aes_key)
            return img_bytes
        except Exception as e:  # pylint: disable=broad-except
            log.exception(
                u'Failed to decrypt face image due to an exception: %s', e)
            return None
 def assert_roundtrip(data):
     """
     Verify that the original data is retrieved after encrypting and
     decrypting, and again when also using base64 encoding/decoding.
     """
     assert aes_decrypt(aes_encrypt(data, AES_KEY_BYTES), AES_KEY_BYTES) == data
     assert decode_and_decrypt(encrypt_and_encode(data, AES_KEY_BYTES), AES_KEY_BYTES) == data
 def assert_roundtrip(text):
     assert_equals(text, aes_decrypt(aes_encrypt(text, key), key))
     assert_equals(
         text,
         decode_and_decrypt(
             encrypt_and_encode(text, key),
             key
         )
     )
Example #6
0
 def get_image(self, file_name, aes_key):
     """
     decrypt image
     """
     resp = requests.get(self._storage.url(file_name, 5))
     image = decode_and_decrypt(resp.content, aes_key)
     return mark_safe(
         u'<img src="data:image/png;base64,{data}" width="500px" />'.format(
             data=base64.b64encode(image)))
Example #7
0
 def assert_roundtrip(text):
     assert_equals(text, aes_decrypt(aes_encrypt(text, key), key))
     assert_equals(text,
                   decode_and_decrypt(encrypt_and_encode(text, key), key))