###########################################################
# Copyright 2019 Virtru Corporation
#
# SPDX - License Identifier: BSD-3-Clause-Clear
#
# Source files for core library
# This file is included in the CMakeLists.txt file.
# This is separated here so that this list can also be used
# in the virtru-tdf-cpp build process.
###########################################################
set (TDF_CPP_SDK_SOURCE_FILES_BASE
        ${TDF_CPP_SDK_SOURCE_DIR}/include/crypto/rsa_key_pair.h
        ${TDF_CPP_SDK_SOURCE_DIR}/src/crypto/rsa_key_pair.cpp
        ${TDF_CPP_SDK_SOURCE_DIR}/src/crypto/crypto_utils.cpp
        ${TDF_CPP_SDK_SOURCE_DIR}/include/crypto/crypto_utils.h
        ${TDF_CPP_SDK_SOURCE_DIR}/src/network/http_client_service.cpp
        ${TDF_CPP_SDK_SOURCE_DIR}/include/network/http_client_service.h
        ${TDF_CPP_SDK_SOURCE_DIR}/include/tdf_exception.h
        ${TDF_CPP_SDK_SOURCE_DIR}/src/tdf.cpp
        ${TDF_CPP_SDK_SOURCE_DIR}/include/tdf.h
        ${TDF_CPP_SDK_SOURCE_DIR}/src/tdf_impl.h
        ${TDF_CPP_SDK_SOURCE_DIR}/src/tdf_impl.cpp
        ${TDF_CPP_SDK_SOURCE_DIR}/src/policy_object.cpp
        ${TDF_CPP_SDK_SOURCE_DIR}/include/policy_object.h
        ${TDF_CPP_SDK_SOURCE_DIR}/src/network/network_util.cpp
        ${TDF_CPP_SDK_SOURCE_DIR}/include/network/network_util.h
        ${TDF_CPP_SDK_SOURCE_DIR}/src/attribute_object.cpp
        ${TDF_CPP_SDK_SOURCE_DIR}/include/attribute_object.h
        ${TDF_CPP_SDK_SOURCE_DIR}/src/attribute_objects_cache.cpp
        ${TDF_CPP_SDK_SOURCE_DIR}/src/attribute_objects_cache.h
        ${TDF_CPP_SDK_SOURCE_DIR}/src/logger.cpp
        ${TDF_CPP_SDK_SOURCE_DIR}/include/logger.h
        ${TDF_CPP_SDK_SOURCE_DIR}/include/tdf_logging_interface.h
        ${TDF_CPP_SDK_SOURCE_DIR}/src/key_access_object.cpp
        ${TDF_CPP_SDK_SOURCE_DIR}/include/key_access_object.h
        ${TDF_CPP_SDK_SOURCE_DIR}/src/entity_object.cpp
        ${TDF_CPP_SDK_SOURCE_DIR}/include/entity_object.h
        ${TDF_CPP_SDK_SOURCE_DIR}/src/tdfbuilder.cpp
        ${TDF_CPP_SDK_SOURCE_DIR}/include/tdfbuilder.h
        ${TDF_CPP_SDK_SOURCE_DIR}/include/tdf_constants.h
        ${TDF_CPP_SDK_SOURCE_DIR}/src/tdfbuilder_impl.h
        ${TDF_CPP_SDK_SOURCE_DIR}/src/encryption_strategy.h
        ${TDF_CPP_SDK_SOURCE_DIR}/include/crypto/bytes.h
        ${TDF_CPP_SDK_SOURCE_DIR}/src/key_access.cpp
        ${TDF_CPP_SDK_SOURCE_DIR}/src/key_access.h
        ${TDF_CPP_SDK_SOURCE_DIR}/src/splitkey_encryption.cpp
        ${TDF_CPP_SDK_SOURCE_DIR}/src/splitkey_encryption.h
        ${TDF_CPP_SDK_SOURCE_DIR}/src/crypto/asym_encryption.cpp
        ${TDF_CPP_SDK_SOURCE_DIR}/include/crypto/asym_encryption.h
        ${TDF_CPP_SDK_SOURCE_DIR}/include/crypto/openssl_deleters.h
        ${TDF_CPP_SDK_SOURCE_DIR}/src/crypto/asym_decryption.cpp
        ${TDF_CPP_SDK_SOURCE_DIR}/include/crypto/asym_decryption.h
        ${TDF_CPP_SDK_SOURCE_DIR}/src/crypto/gcm_encryption.cpp
        ${TDF_CPP_SDK_SOURCE_DIR}/include/crypto/gcm_encryption.h
        ${TDF_CPP_SDK_SOURCE_DIR}/src/crypto/gcm_decryption.cpp
        ${TDF_CPP_SDK_SOURCE_DIR}/include/crypto/gcm_decryption.h
        ${TDF_CPP_SDK_SOURCE_DIR}/include/sdk_constants.h
        ${TDF_CPP_SDK_SOURCE_DIR}/src/libxml2_deleters.h
        ${TDF_CPP_SDK_SOURCE_DIR}/include/network_interface.h
        ${TDF_CPP_SDK_SOURCE_DIR}/src/zipmanager/zip_headers.h
        ${TDF_CPP_SDK_SOURCE_DIR}/src/tdf_archive_reader.cpp
        ${TDF_CPP_SDK_SOURCE_DIR}/src/tdf_archive_reader.h
        ${TDF_CPP_SDK_SOURCE_DIR}/src/tdf_archive_writer.cpp
        ${TDF_CPP_SDK_SOURCE_DIR}/src/tdf_archive_writer.h
        ${TDF_CPP_SDK_SOURCE_DIR}/src/utils.h
        ${TDF_CPP_SDK_SOURCE_DIR}/src/utils.cpp
        ${TDF_CPP_SDK_SOURCE_DIR}/include/tdf_client_base.h
        ${TDF_CPP_SDK_SOURCE_DIR}/src/tdf_client_base.cpp
        ${TDF_CPP_SDK_SOURCE_DIR}/include/tdf_client.h
        ${TDF_CPP_SDK_SOURCE_DIR}/src/tdf_client.cpp
        ${TDF_CPP_SDK_SOURCE_DIR}/include/oidc_credentials.h
        ${TDF_CPP_SDK_SOURCE_DIR}/src/oidc_credentials.cpp
        ${TDF_CPP_SDK_SOURCE_DIR}/src/oidc_service.h
        ${TDF_CPP_SDK_SOURCE_DIR}/src/oidc_service.cpp
        ${TDF_CPP_SDK_SOURCE_DIR}/src/network/http_service_provider.h
        ${TDF_CPP_SDK_SOURCE_DIR}/src/network/http_service_provider.cpp
        ${TDF_CPP_SDK_SOURCE_DIR}/src/tdf_xml_writer.cpp
        ${TDF_CPP_SDK_SOURCE_DIR}/src/tdf_xml_writer.h
        ${TDF_CPP_SDK_SOURCE_DIR}/src/tdf_xml_reader.cpp
        ${TDF_CPP_SDK_SOURCE_DIR}/src/tdf_xml_reader.h
        ${TDF_CPP_SDK_SOURCE_DIR}/src/tdf_xml_validator.cpp
        ${TDF_CPP_SDK_SOURCE_DIR}/src/tdf_xml_validator.h
        ${TDF_CPP_SDK_SOURCE_DIR}/include/file_io_provider.h
        ${TDF_CPP_SDK_SOURCE_DIR}/src/file_io_provider.cpp
        ${TDF_CPP_SDK_SOURCE_DIR}/src/s3_io_provider.cpp
        ${TDF_CPP_SDK_SOURCE_DIR}/src/stream_io_provider.cpp
        ${TDF_CPP_SDK_SOURCE_DIR}/include/stream_io_provider.h
        ${TDF_CPP_SDK_SOURCE_DIR}/include/tdf_assertion.h
        ${TDF_CPP_SDK_SOURCE_DIR}/include/tdf_storage_type.h
        ${TDF_CPP_SDK_SOURCE_DIR}/src/tdf_storage_type.cpp
        ${TDF_CPP_SDK_SOURCE_DIR}/src/tdf_html_writer.cpp
        ${TDF_CPP_SDK_SOURCE_DIR}/src/tdf_html_writer.h
        ${TDF_CPP_SDK_SOURCE_DIR}/src/oidc_configuration.cpp
        ${TDF_CPP_SDK_SOURCE_DIR}/src/oidc_configuration.h
        ${TDF_CPP_SDK_SOURCE_DIR}/include/tdf_reader.h
        ${TDF_CPP_SDK_SOURCE_DIR}/include/tdf_writer.h
        ${TDF_CPP_SDK_SOURCE_DIR}/include/manifest_data_model.h
        ${TDF_CPP_SDK_SOURCE_DIR}/src/manifest_data_model.cpp
    )

set (TDF_CPP_SDK_SOURCE_FILES_NANOTDF
        ${TDF_CPP_SDK_SOURCE_DIR}/src/crypto/ec_key_pair.h
        ${TDF_CPP_SDK_SOURCE_DIR}/src/crypto/ec_key_pair.cpp
        ${TDF_CPP_SDK_SOURCE_DIR}/include/nanotdf_builder.h
        ${TDF_CPP_SDK_SOURCE_DIR}/include/nanotdf.h
        ${TDF_CPP_SDK_SOURCE_DIR}/src/nanotdf.cpp
        ${TDF_CPP_SDK_SOURCE_DIR}/include/nanotdf_client.h
        ${TDF_CPP_SDK_SOURCE_DIR}/src/nanotdf_client.cpp
        ${TDF_CPP_SDK_SOURCE_DIR}/src/nanotdf_builder.cpp
        ${TDF_CPP_SDK_SOURCE_DIR}/src/nanotdf_builder_impl.h
        ${TDF_CPP_SDK_SOURCE_DIR}/src/nanotdf_impl.h
        ${TDF_CPP_SDK_SOURCE_DIR}/src/nanotdf_impl.cpp
        ${TDF_CPP_SDK_SOURCE_DIR}/src/nanotdf/header.h
        ${TDF_CPP_SDK_SOURCE_DIR}/src/nanotdf/header.cpp
        ${TDF_CPP_SDK_SOURCE_DIR}/src/nanotdf/resource_locator.h
        ${TDF_CPP_SDK_SOURCE_DIR}/src/nanotdf/resource_locator.cpp
        ${TDF_CPP_SDK_SOURCE_DIR}/src/nanotdf/ecc_mode.h
        ${TDF_CPP_SDK_SOURCE_DIR}/src/nanotdf/ecc_mode.cpp
        ${TDF_CPP_SDK_SOURCE_DIR}/src/nanotdf/symmetric_and_payload_config.h
        ${TDF_CPP_SDK_SOURCE_DIR}/src/nanotdf/symmetric_and_payload_config.cpp
        ${TDF_CPP_SDK_SOURCE_DIR}/src/nanotdf/policy_info.h
        ${TDF_CPP_SDK_SOURCE_DIR}/src/nanotdf/policy_info.cpp
        ${TDF_CPP_SDK_SOURCE_DIR}/include/nanotdf_dataset_client.h
        ${TDF_CPP_SDK_SOURCE_DIR}/src/nanotdf_dataset_client.cpp
    )

set (TDF_CPP_SDK_SOURCE_FILES_C_WRAPPER
        ${TDF_CPP_SDK_SOURCE_DIR}/include/tdf_constants_c.h
        ${TDF_CPP_SDK_SOURCE_DIR}/include/tdf_client_c.h
        ${TDF_CPP_SDK_SOURCE_DIR}/src/tdf_client_c.cpp
    )

set (TDF_CPP_SDK_SOURCE_FILES
        ${TDF_CPP_SDK_SOURCE_FILES_BASE}
        ${TDF_CPP_SDK_SOURCE_FILES_NANOTDF}
        ${TDF_CPP_SDK_SOURCE_FILES_C_WRAPPER}
    )
