# Licensed to the Apache Software Foundation (ASF) under one
# or more contributor license agreements.  See the NOTICE file
# distributed with this work for additional information
# regarding copyright ownership.  The ASF licenses this file
# to you under the Apache License, Version 2.0 (the
# "License"); you may not use this file except in compliance
# with the License.  You may obtain a copy of the License at
#
#   http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing,
# software distributed under the License is distributed on an
# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
# KIND, either express or implied.  See the License for the
# specific language governing permissions and limitations
# under the License.

# Teaclave Runtime Config
#
# Note that this config is loaded at running time. We don't have to trust the
# content though. Maliciously crafted config from this file will not break data
# confidentiality/integrity.

[api_endpoints]
authentication = { listen_address = "0.0.0.0:7776" }
frontend       = { listen_address = "0.0.0.0:7777" }

[internal_endpoints]
authentication = { listen_address = "0.0.0.0:17776", advertised_address = "https://teaclave-authentication-service:17776" }
management     = { listen_address = "0.0.0.0:17777", advertised_address = "https://teaclave-management-service:17777" }
storage        = { listen_address = "0.0.0.0:17778", advertised_address = "https://teaclave-storage-service:17778" }
access_control = { listen_address = "0.0.0.0:17779", advertised_address = "https://teaclave-access-control-service:17779" }
execution      = { listen_address = "0.0.0.0:17770", advertised_address = "https://teaclave-execution-service:17770" }
scheduler      = { listen_address = "0.0.0.0:17780", advertised_address = "https://teaclave-scheduler-service:17780" }

[audit]
enclave_info = { path = "enclave_info.toml" }
auditor_signatures = [
    { path = "auditors/godzilla/godzilla.sign.sha256" },
    { path = "auditors/optimus_prime/optimus_prime.sign.sha256" },
    { path = "auditors/albus_dumbledore/albus_dumbledore.sign.sha256" },
]

[attestation]
algorithm = "sgx_epid"
url = "https://api.trustedservices.intel.com:443"
key = "00000000000000000000000000000000"
spid = "00000000000000000000000000000000"

[mount]
fusion_base_dir = "/tmp/fusion_data"
