Esempio n. 1
0
def decrypt_data(encryption_key, data, iv=None):
    """
    Function to decrypt the outData in the result
    Parameters:
        - encryption_key is the key used to decrypt the encrypted data of the
          response.
        - iv is an initialization vector if required by the data encryption
          algorithm.
          The default is all zeros.
        - data is the parameter data in outData part of workorder request as
          per TCF API 6.1.7 Work Order Data Formats.
    Returns decrypted data as a string
    """
    if not data:
        logger.debug("Outdata is empty, nothing to decrypt")
        return data
    data_byte = crypto.base64_to_byte_array(data)
    logger.debug("encryption_key: %s", encryption_key)
    if iv is not None:
        decrypt_result = crypto.SKENC_DecryptMessage(encryption_key, iv,
                                                     data_byte)
    else:
        decrypt_result = crypto.SKENC_DecryptMessage(encryption_key, data_byte)
    result = crypto.byte_array_to_string(decrypt_result)
    logger.info("Decryption result at client - %s", result)
    return result
Esempio n. 2
0
    def evaluate(self) :
        serialized_byte_array = crypto.string_to_byte_array(self.work_order)
        encrypted_request = crypto.byte_array_to_base64(serialized_byte_array)

        try :
            encoded_encrypted_response = self.enclave_service.send_to_sgx_worker(encrypted_request)
            assert encoded_encrypted_response
        except :
            logger.exception('workorder request invocation failed')
            raise

        try :
            decrypted_response = crypto.base64_to_byte_array(encoded_encrypted_response)
            response_string = crypto.byte_array_to_string(decrypted_response)
            response_parsed = json.loads(response_string[0:-1])
        except :
            logger.exception('workorder response is invalid')
            raise

        return response_parsed