# 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.

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

[internal_endpoints]
access_control = { listen_address = "0.0.0.0:7779", advertised_address = "localhost:7779" }
authentication = { listen_address = "0.0.0.0:17776", advertised_address = "localhost:17776" }
management = { listen_address = "0.0.0.0:17777", advertised_address = "localhost:17777" }
storage = { listen_address = "0.0.0.0:17778", advertised_address = "localhost:17778", inbound_services = ["frontend", "management"] }
execution = { listen_address = "0.0.0.0:17989", advertised_address = "localhost:17989" }
scheduler = { listen_address = "0.0.0.0:17780", advertised_address = "localhost:17780" }

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

[attestation]
algorithm = "sgx_epid"
url = "api.trustedservices.intel.com:443"
key  = "ias_key_AAAABBBBCCCCDDDDEEEEFFFF"
spid = "ias_spid_AAAABBBBCCCCDDDDEEEEFFF"
