diff --git a/.github/workflows/ci-ra.yml b/.github/workflows/ci-ra.yml new file mode 100644 index 00000000..2da51f1f --- /dev/null +++ b/.github/workflows/ci-ra.yml @@ -0,0 +1,219 @@ +name: CI RA-learning +on: [push, pull_request] + +jobs: + Lakers-Client: + if: ${{ !contains(github.event.head_commit.message, 'ci skip') }} + runs-on: ubuntu-latest + strategy: + fail-fast: true + steps: + - uses: actions/checkout@v6 + - uses: actions/setup-java@v5 + with: + java-version: "21" + distribution: "temurin" + - uses: ts-graphviz/setup-graphviz@v2 + - name: Install pydot + run: pip3 install pydot + + - name: Setup EDHOC-Fuzzer + run: ./scripts/setup_fuzzer.sh -l + + - name: Setup Lakers + run: + curl --proto '=https' --tlsv1.3 https://sh.rustup.rs -sSf | sh -s -- -y + source "${HOME}/.cargo/env" + rustup toolchain install nightly-2025-05-10-x86_64-unknown-linux-gnu + ./scripts/setup_sul.sh lakers + + - name: Test Lakers Client (RA) + run: | + java -jar edhoc-fuzzerRA.jar @experiments/args/lakers/client_ra -roundLimit 3 + ./scripts/diff_hyps.sh experiments/saved_results/clients/ra/lakers experiments/results/clients/ra/lakers 2 + + Lakers-Server: + if: ${{ !contains(github.event.head_commit.message, 'ci skip') }} + runs-on: ubuntu-latest + strategy: + fail-fast: true + steps: + - uses: actions/checkout@v6 + - uses: actions/setup-java@v5 + with: + java-version: "21" + distribution: "temurin" + - uses: ts-graphviz/setup-graphviz@v2 + - name: Install pydot + run: pip3 install pydot + + - name: Setup EDHOC-Fuzzer + run: ./scripts/setup_fuzzer.sh -l + + - name: Setup Lakers + run: + curl --proto '=https' --tlsv1.3 https://sh.rustup.rs -sSf | sh -s -- -y + source "${HOME}/.cargo/env" + rustup toolchain install nightly-2025-05-10-x86_64-unknown-linux-gnu + ./scripts/setup_sul.sh lakers + + - name: Test Lakers Server (RA) + run: | + java -jar edhoc-fuzzerRA.jar @experiments/args/lakers/server_ra -roundLimit 5 + ./scripts/diff_hyps.sh experiments/saved_results/servers/ra/lakers experiments/results/servers/ra/lakers 3 + + RISE-Client: + if: ${{ !contains(github.event.head_commit.message, 'ci skip') }} + runs-on: ubuntu-latest + strategy: + fail-fast: true + steps: + - uses: actions/checkout@v6 + - uses: actions/setup-java@v5 + with: + java-version: "21" + distribution: "temurin" + - uses: ts-graphviz/setup-graphviz@v2 + - name: Install pydot + run: pip3 install pydot + + - name: Setup EDHOC-Fuzzer + run: ./scripts/setup_fuzzer.sh -l + + - name: Setup RISE + run: ./scripts/setup_sul.sh rise + + - name: Test RISE Client (m4_app, RA) + run: | + java -jar edhoc-fuzzerRA.jar @experiments/args/rise/client_m4_app_ra -roundLimit 5 + ./scripts/diff_hyps.sh experiments/saved_results/clients/ra/rise_m4_app experiments/results/clients/ra/rise_m4_app 3 + + RISE-Server: + if: ${{ !contains(github.event.head_commit.message, 'ci skip') }} + runs-on: ubuntu-latest + strategy: + fail-fast: true + steps: + - uses: actions/checkout@v6 + - uses: actions/setup-java@v5 + with: + java-version: "21" + distribution: "temurin" + - uses: ts-graphviz/setup-graphviz@v2 + - name: Install pydot + run: pip3 install pydot + + - name: Setup EDHOC-Fuzzer + run: ./scripts/setup_fuzzer.sh -l + + - name: Setup RISE + run: ./scripts/setup_sul.sh rise + + - name: Test RISE Server (m4_app, RA) + run: | + java -jar edhoc-fuzzerRA.jar @experiments/args/rise/server_m4_app_ra -roundLimit 2 + ./scripts/diff_hyps.sh experiments/saved_results/servers/ra/rise_m4_app experiments/results/servers/ra/rise_m4_app 2 + + uOSCORE-uEDHOC-Client: + if: ${{ !contains(github.event.head_commit.message, 'ci skip') }} + runs-on: ubuntu-latest + strategy: + fail-fast: true + steps: + - uses: actions/checkout@v6 + - uses: actions/setup-java@v5 + with: + java-version: "21" + distribution: "temurin" + - uses: ts-graphviz/setup-graphviz@v2 + - name: Install pydot + run: pip3 install pydot + + - name: Setup EDHOC-Fuzzer + run: ./scripts/setup_fuzzer.sh -l + + - name: Setup uOSCORE-uEDHOC + run: ./scripts/setup_sul.sh uoscore-uedhoc + + - name: Test uOSCORE-uEDHOC Client (linux_edhoc_oscore, RA) + run: | + java -jar edhoc-fuzzerRA.jar @experiments/args/uoscore-uedhoc/client_linux_edhoc_oscore_ra -roundLimit 5 + ./scripts/diff_hyps.sh experiments/saved_results/clients/ra/uoscore-uedhoc_linux_edhoc_oscore experiments/results/clients/ra/uoscore-uedhoc_linux_edhoc_oscore 3 + + uOSCORE-uEDHOC-Server: + if: ${{ !contains(github.event.head_commit.message, 'ci skip') }} + runs-on: ubuntu-latest + strategy: + fail-fast: true + steps: + - uses: actions/checkout@v6 + - uses: actions/setup-java@v5 + with: + java-version: "21" + distribution: "temurin" + - uses: ts-graphviz/setup-graphviz@v2 + - name: Install pydot + run: pip3 install pydot + + - name: Setup EDHOC-Fuzzer + run: ./scripts/setup_fuzzer.sh -l + + - name: Setup uOSCORE-uEDHOC + run: ./scripts/setup_sul.sh uoscore-uedhoc + + - name: Test uOSCORE-uEDHOC Server (linux_edhoc_oscore, RA) + run: | + java -jar edhoc-fuzzerRA.jar @experiments/args/uoscore-uedhoc/server_linux_edhoc_oscore_ra -roundLimit 4 + ./scripts/diff_hyps.sh experiments/saved_results/servers/ra/uoscore-uedhoc_linux_edhoc_oscore experiments/results/servers/ra/uoscore-uedhoc_linux_edhoc_oscore 3 + + # SIFIS-HOME-Client: + # if: ${{ !contains(github.event.head_commit.message, 'ci skip') }} + # runs-on: ubuntu-latest + # strategy: + # fail-fast: true + # steps: + # - uses: actions/checkout@v4 + # - uses: actions/setup-java@v4 + # with: + # java-version: '17' + # distribution: 'temurin' + # - uses: ts-graphviz/setup-graphviz@v2 + # - name: Install pydot + # run: pip3 install pydot + + # - name: Setup EDHOC-Fuzzer + # run: ./scripts/setup_fuzzer.sh -l + + # - name: Setup SIFIS-HOME + # run: ./scripts/setup_sul.sh sifis-home + + # - name: Test SIFIS-HOME Client (phase_1, RA) + # run: | + # java -jar edhoc-fuzzerRA.jar @experiments/args/sifis-home/client_phase_1_ra + # ./scripts/diff_hyps.sh experiments/saved_results/clients/ra/sifis-home_phase_1 experiments/results/clients/ra/sifis-home_phase_1 3 + + # SIFIS-HOME-Server: + # if: ${{ !contains(github.event.head_commit.message, 'ci skip') }} + # runs-on: ubuntu-latest + # strategy: + # fail-fast: true + # steps: + # - uses: actions/checkout@v4 + # - uses: actions/setup-java@v4 + # with: + # java-version: '17' + # distribution: 'temurin' + # - uses: ts-graphviz/setup-graphviz@v2 + # - name: Install pydot + # run: pip3 install pydot + + # - name: Setup EDHOC-Fuzzer + # run: ./scripts/setup_fuzzer.sh -l + + # - name: Setup SIFIS-HOME + # run: ./scripts/setup_sul.sh sifis-home + + # - name: Test SIFIS-HOME Server (phase_1, RA) + # run: | + # java -jar edhoc-fuzzerRA.jar @experiments/args/sifis-home/server_phase_1_ra + # ./scripts/diff_hyps.sh experiments/saved_results/servers/ra/sifis-home_phase_1 experiments/results/servers/ra/sifis-home_phase_1 16 diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 81443aaf..14ba5c19 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -2,218 +2,218 @@ name: CI on: [push, pull_request] jobs: - Lakers-Client: - if: ${{ !contains(github.event.head_commit.message, 'ci skip') }} - runs-on: ubuntu-latest - strategy: - fail-fast: true - steps: - - uses: actions/checkout@v6 - - uses: actions/setup-java@v5 - with: - java-version: '21' - distribution: 'temurin' - - uses: ts-graphviz/setup-graphviz@v2 - - name: Install pydot - run: pip3 install pydot - - - name: Setup EDHOC-Fuzzer - run: ./scripts/setup_fuzzer.sh -l - - - name: Setup Lakers - run: | - curl --proto '=https' --tlsv1.3 https://sh.rustup.rs -sSf | sh -s -- -y - source "${HOME}/.cargo/env" - rustup toolchain install nightly-2025-05-10-x86_64-unknown-linux-gnu - ./scripts/setup_sul.sh lakers - - - name: Test Lakers Client - run: | - java -jar edhoc-fuzzer.jar @experiments/args/lakers/client -roundLimit 3 - ./scripts/diff_hyps.sh experiments/saved_results/clients/lakers experiments/results/clients/lakers 3 - - Lakers-Server: - if: ${{ !contains(github.event.head_commit.message, 'ci skip') }} - runs-on: ubuntu-latest - strategy: - fail-fast: true - steps: - - uses: actions/checkout@v6 - - uses: actions/setup-java@v5 - with: - java-version: '21' - distribution: 'temurin' - - uses: ts-graphviz/setup-graphviz@v2 - - name: Install pydot - run: pip3 install pydot - - - name: Setup EDHOC-Fuzzer - run: ./scripts/setup_fuzzer.sh -l - - - name: Setup Lakers - run: | - curl --proto '=https' --tlsv1.3 https://sh.rustup.rs -sSf | sh -s -- -y - source "${HOME}/.cargo/env" - rustup toolchain install nightly-2025-05-10-x86_64-unknown-linux-gnu - ./scripts/setup_sul.sh lakers - - - name: Test Lakers Server - run: | - java -jar edhoc-fuzzer.jar @experiments/args/lakers/server -roundLimit 2 - ./scripts/diff_hyps.sh experiments/saved_results/servers/lakers experiments/results/servers/lakers 2 - - RISE-Client: - if: ${{ !contains(github.event.head_commit.message, 'ci skip') }} - runs-on: ubuntu-latest - strategy: - fail-fast: true - steps: - - uses: actions/checkout@v6 - - uses: actions/setup-java@v5 - with: - java-version: '21' - distribution: 'temurin' - - uses: ts-graphviz/setup-graphviz@v2 - - name: Install pydot - run: pip3 install pydot - - - name: Setup EDHOC-Fuzzer - run: ./scripts/setup_fuzzer.sh -l - - - name: Setup RISE - run: ./scripts/setup_sul.sh rise - - - name: Test RISE Client (m4_app) - run: | - java -jar edhoc-fuzzer.jar @experiments/args/rise/client_m4_app -roundLimit 4 - ./scripts/diff_hyps.sh experiments/saved_results/clients/rise_m4_app experiments/results/clients/rise_m4_app 4 - - RISE-Server: - if: ${{ !contains(github.event.head_commit.message, 'ci skip') }} - runs-on: ubuntu-latest - strategy: - fail-fast: true - steps: - - uses: actions/checkout@v6 - - uses: actions/setup-java@v5 - with: - java-version: '21' - distribution: 'temurin' - - uses: ts-graphviz/setup-graphviz@v2 - - name: Install pydot - run: pip3 install pydot - - - name: Setup EDHOC-Fuzzer - run: ./scripts/setup_fuzzer.sh -l - - - name: Setup RISE - run: ./scripts/setup_sul.sh rise - - - name: Test RISE Server (m4_app) - run: | - java -jar edhoc-fuzzer.jar @experiments/args/rise/server_m4_app -roundLimit 5 - ./scripts/diff_hyps.sh experiments/saved_results/servers/rise_m4_app experiments/results/servers/rise_m4_app 5 - -# SIFIS-HOME-Client: -# if: ${{ !contains(github.event.head_commit.message, 'ci skip') }} -# runs-on: ubuntu-latest -# strategy: -# fail-fast: true -# steps: -# - uses: actions/checkout@v6 -# - uses: actions/setup-java@v5 -# with: -# java-version: '21' -# distribution: 'temurin' -# - uses: ts-graphviz/setup-graphviz@v2 -# - name: Install pydot -# run: pip3 install pydot -# -# - name: Setup EDHOC-Fuzzer -# run: ./scripts/setup_fuzzer.sh -l -# -# - name: Setup SIFIS-HOME -# run: ./scripts/setup_sul.sh sifis-home -# -# - name: Test SIFIS-HOME Client (phase_1) -# run: | -# java -jar edhoc-fuzzer.jar @experiments/args/sifis-home/client_phase_1 -roundLimit 4 -# ./scripts/diff_hyps.sh experiments/saved_results/clients/sifis-home_phase_1 experiments/results/clients/sifis-home_phase_1 4 -# -# SIFIS-HOME-Server: -# if: ${{ !contains(github.event.head_commit.message, 'ci skip') }} -# runs-on: ubuntu-latest -# strategy: -# fail-fast: true -# steps: -# - uses: actions/checkout@v6 -# - uses: actions/setup-java@v5 -# with: -# java-version: '21' -# distribution: 'temurin' -# - uses: ts-graphviz/setup-graphviz@v2 -# - name: Install pydot -# run: pip3 install pydot -# -# - name: Setup EDHOC-Fuzzer -# run: ./scripts/setup_fuzzer.sh -l -# -# - name: Setup SIFIS-HOME -# run: ./scripts/setup_sul.sh sifis-home -# -# - name: Test SIFIS-HOME Server (phase_1) -# run: | -# java -jar edhoc-fuzzer.jar @experiments/args/sifis-home/server_phase_1 -roundLimit 5 -# ./scripts/diff_hyps.sh experiments/saved_results/servers/sifis-home_phase_1 experiments/results/servers/sifis-home_phase_1 5 - - uOSCORE-uEDHOC-Client: - if: ${{ !contains(github.event.head_commit.message, 'ci skip') }} - runs-on: ubuntu-latest - strategy: - fail-fast: true - steps: - - uses: actions/checkout@v6 - - uses: actions/setup-java@v5 - with: - java-version: '21' - distribution: 'temurin' - - uses: ts-graphviz/setup-graphviz@v2 - - name: Install pydot - run: pip3 install pydot - - - name: Setup EDHOC-Fuzzer - run: ./scripts/setup_fuzzer.sh -l - - - name: Setup uOSCORE-uEDHOC - run: ./scripts/setup_sul.sh uoscore-uedhoc - - - name: Test uOSCORE-uEDHOC Client (linux_edhoc_oscore) - run: | - java -jar edhoc-fuzzer.jar @experiments/args/uoscore-uedhoc/client_linux_edhoc_oscore -roundLimit 3 - ./scripts/diff_hyps.sh experiments/saved_results/clients/uoscore-uedhoc_linux_edhoc_oscore experiments/results/clients/uoscore-uedhoc_linux_edhoc_oscore 3 - - uOSCORE-uEDHOC-Server: - if: ${{ !contains(github.event.head_commit.message, 'ci skip') }} - runs-on: ubuntu-latest - strategy: - fail-fast: true - steps: - - uses: actions/checkout@v6 - - uses: actions/setup-java@v5 - with: - java-version: '21' - distribution: 'temurin' - - uses: ts-graphviz/setup-graphviz@v2 - - name: Install pydot - run: pip3 install pydot - - - name: Setup EDHOC-Fuzzer - run: ./scripts/setup_fuzzer.sh -l - - - name: Setup uOSCORE-uEDHOC - run: ./scripts/setup_sul.sh uoscore-uedhoc - - - name: Test uOSCORE-uEDHOC Server (linux_edhoc_oscore) - run: | - java -jar edhoc-fuzzer.jar @experiments/args/uoscore-uedhoc/server_linux_edhoc_oscore -roundLimit 2 - ./scripts/diff_hyps.sh experiments/saved_results/servers/uoscore-uedhoc_linux_edhoc_oscore experiments/results/servers/uoscore-uedhoc_linux_edhoc_oscore 2 + Lakers-Client: + if: ${{ !contains(github.event.head_commit.message, 'ci skip') }} + runs-on: ubuntu-latest + strategy: + fail-fast: true + steps: + - uses: actions/checkout@v6 + - uses: actions/setup-java@v5 + with: + java-version: "21" + distribution: "temurin" + - uses: ts-graphviz/setup-graphviz@v2 + - name: Install pydot + run: pip3 install pydot + + - name: Setup EDHOC-Fuzzer + run: ./scripts/setup_fuzzer.sh -l + + - name: Setup Lakers + run: | + curl --proto '=https' --tlsv1.3 https://sh.rustup.rs -sSf | sh -s -- -y + source "${HOME}/.cargo/env" + rustup toolchain install nightly-2025-05-10-x86_64-unknown-linux-gnu + ./scripts/setup_sul.sh lakers + + - name: Test Lakers Client (Mealy) + run: | + java -jar edhoc-fuzzer.jar @experiments/args/lakers/client -roundLimit 3 + ./scripts/diff_hyps.sh experiments/saved_results/clients/mealy/lakers experiments/results/clients/mealy/lakers 3 + + Lakers-Server: + if: ${{ !contains(github.event.head_commit.message, 'ci skip') }} + runs-on: ubuntu-latest + strategy: + fail-fast: true + steps: + - uses: actions/checkout@v6 + - uses: actions/setup-java@v5 + with: + java-version: "21" + distribution: "temurin" + - uses: ts-graphviz/setup-graphviz@v2 + - name: Install pydot + run: pip3 install pydot + + - name: Setup EDHOC-Fuzzer + run: ./scripts/setup_fuzzer.sh -l + + - name: Setup Lakers + run: | + curl --proto '=https' --tlsv1.3 https://sh.rustup.rs -sSf | sh -s -- -y + source "${HOME}/.cargo/env" + rustup toolchain install nightly-2025-05-10-x86_64-unknown-linux-gnu + ./scripts/setup_sul.sh lakers + + - name: Test Lakers Server (Mealy) + run: | + java -jar edhoc-fuzzer.jar @experiments/args/lakers/server -roundLimit 3 + ./scripts/diff_hyps.sh experiments/saved_results/servers/mealy/lakers experiments/results/servers/mealy/lakers 2 + + RISE-Client: + if: ${{ !contains(github.event.head_commit.message, 'ci skip') }} + runs-on: ubuntu-latest + strategy: + fail-fast: true + steps: + - uses: actions/checkout@v6 + - uses: actions/setup-java@v5 + with: + java-version: "21" + distribution: "temurin" + - uses: ts-graphviz/setup-graphviz@v2 + - name: Install pydot + run: pip3 install pydot + + - name: Setup EDHOC-Fuzzer + run: ./scripts/setup_fuzzer.sh -l + + - name: Setup RISE + run: ./scripts/setup_sul.sh rise + + - name: Test RISE Client (m4_app, Mealy) + run: | + java -jar edhoc-fuzzer.jar @experiments/args/rise/client_m4_app -roundLimit 4 + ./scripts/diff_hyps.sh experiments/saved_results/clients/mealy/rise_m4_app experiments/results/clients/mealy/rise_m4_app 4 + + RISE-Server: + if: ${{ !contains(github.event.head_commit.message, 'ci skip') }} + runs-on: ubuntu-latest + strategy: + fail-fast: true + steps: + - uses: actions/checkout@v6 + - uses: actions/setup-java@v5 + with: + java-version: "21" + distribution: "temurin" + - uses: ts-graphviz/setup-graphviz@v2 + - name: Install pydot + run: pip3 install pydot + + - name: Setup EDHOC-Fuzzer + run: ./scripts/setup_fuzzer.sh -l + + - name: Setup RISE + run: ./scripts/setup_sul.sh rise + + - name: Test RISE Server (m4_app, Mealy) + run: | + java -jar edhoc-fuzzer.jar @experiments/args/rise/server_m4_app -roundLimit 5 + ./scripts/diff_hyps.sh experiments/saved_results/servers/mealy/rise_m4_app experiments/results/servers/mealy/rise_m4_app 5 + + # SIFIS-HOME-Client: + # if: ${{ !contains(github.event.head_commit.message, 'ci skip') }} + # runs-on: ubuntu-latest + # strategy: + # fail-fast: true + # steps: + # - uses: actions/checkout@v4 + # - uses: actions/setup-java@v4 + # with: + # java-version: '17' + # distribution: 'temurin' + # - uses: ts-graphviz/setup-graphviz@v2 + # - name: Install pydot + # run: pip3 install pydot + + # - name: Setup EDHOC-Fuzzer + # run: ./scripts/setup_fuzzer.sh -l + + # - name: Setup SIFIS-HOME + # run: ./scripts/setup_sul.sh sifis-home + + # - name: Test SIFIS-HOME Client (phase_1, Mealy) + # run: | + # java -jar edhoc-fuzzer.jar @experiments/args/sifis-home/client_phase_1 -roundLimit 4 + # ./scripts/diff_hyps.sh experiments/saved_results/clients/mealy/sifis-home_phase_1 experiments/results/clients/mealy/sifis-home_phase_1 4 + + # SIFIS-HOME-Server: + # if: ${{ !contains(github.event.head_commit.message, 'ci skip') }} + # runs-on: ubuntu-latest + # strategy: + # fail-fast: true + # steps: + # - uses: actions/checkout@v4 + # - uses: actions/setup-java@v4 + # with: + # java-version: '17' + # distribution: 'temurin' + # - uses: ts-graphviz/setup-graphviz@v2 + # - name: Install pydot + # run: pip3 install pydot + + # - name: Setup EDHOC-Fuzzer + # run: ./scripts/setup_fuzzer.sh -l + + # - name: Setup SIFIS-HOME + # run: ./scripts/setup_sul.sh sifis-home + + # - name: Test SIFIS-HOME Server (phase_1, Mealy) + # run: | + # java -jar edhoc-fuzzer.jar @experiments/args/sifis-home/server_phase_1 -roundLimit 5 + # ./scripts/diff_hyps.sh experiments/saved_results/servers/mealy/sifis-home_phase_1 experiments/results/servers/mealy/sifis-home_phase_1 5 + + uOSCORE-uEDHOC-Client: + if: ${{ !contains(github.event.head_commit.message, 'ci skip') }} + runs-on: ubuntu-latest + strategy: + fail-fast: true + steps: + - uses: actions/checkout@v6 + - uses: actions/setup-java@v5 + with: + java-version: "21" + distribution: "temurin" + - uses: ts-graphviz/setup-graphviz@v2 + - name: Install pydot + run: pip3 install pydot + + - name: Setup EDHOC-Fuzzer + run: ./scripts/setup_fuzzer.sh -l + + - name: Setup uOSCORE-uEDHOC + run: ./scripts/setup_sul.sh uoscore-uedhoc + + - name: Test uOSCORE-uEDHOC Client (linux_edhoc_oscore, Mealy) + run: | + java -jar edhoc-fuzzer.jar @experiments/args/uoscore-uedhoc/client_linux_edhoc_oscore -roundLimit + 3./scripts/diff_hyps.sh experiments/saved_results/clients/mealy/uoscore-uedhoc_linux_edhoc_oscore experiments/results/clients/mealy/uoscore-uedhoc_linux_edhoc_oscore 3 + + uOSCORE-uEDHOC-Server: + if: ${{ !contains(github.event.head_commit.message, 'ci skip') }} + runs-on: ubuntu-latest + strategy: + fail-fast: true + steps: + - uses: actions/checkout@v6 + - uses: actions/setup-java@v5 + with: + java-version: "21" + distribution: "temurin" + - uses: ts-graphviz/setup-graphviz@v2 + - name: Install pydot + run: pip3 install pydot + + - name: Setup EDHOC-Fuzzer + run: ./scripts/setup_fuzzer.sh -l + + - name: Setup uOSCORE-uEDHOC + run: ./scripts/setup_sul.sh uoscore-uedhoc + + - name: Test uOSCORE-uEDHOC Server (linux_edhoc_oscore, Mealy) + run: | + java -jar edhoc-fuzzer.jar @experiments/args/uoscore-uedhoc/server_linux_edhoc_oscore -roundLimit 2 + ./scripts/diff_hyps.sh experiments/saved_results/servers/mealy/uoscore-uedhoc_linux_edhoc_oscore experiments/results/servers/mealy/uoscore-uedhoc_linux_edhoc_oscore 2 diff --git a/experiments/args/lakers/client b/experiments/args/lakers/client index bffdd01c..57ad4cce 100644 --- a/experiments/args/lakers/client +++ b/experiments/args/lakers/client @@ -3,7 +3,7 @@ state-fuzzer-client ##### StateFuzzerConfig ##### -output -${results.learning.clients}/lakers +${results.learning.clients.mealy}/lakers ##### LearnerConfig ##### diff --git a/experiments/args/lakers/client_ra b/experiments/args/lakers/client_ra new file mode 100644 index 00000000..a4fe96f3 --- /dev/null +++ b/experiments/args/lakers/client_ra @@ -0,0 +1,71 @@ +state-fuzzer-client + + +##### StateFuzzerConfig ##### +-output +${results.learning.clients.ra}/lakers + + +##### LearnerConfig ##### +-learningAlgorithm +RaStar +-equivalenceAlgorithms +IO_RANDOM_WALK +-logQueries +-alphabet +./src/main/resources/alphabet_placeholder.xml +-maxDepthRA +10 +-probNewDataValue +0.5 +-seed +7 + + +##### EdhocMapperConfig ##### +-protocolVersion +v23 + +## Mapper Auth ## + +-mapCredType +CCS + +-mapIdCredType +KID + +## Sul Auth ## + +-sulCredType +CCS + +-sulIdCredType +KID + +# TestVector +-testVectorJson +${authentication.test_vectors}/test_vectors_lakers.json + +-testVectorJsonKey +test_vector_p256 + +-testVectorPeerKeyCurve +P256 + +-edhocRole +Responder + +##### SulConfig ##### +-responseWait +300 +-processDir +${models.clients}/lakers +-cmd +./coapclient +-startWait +50 + + +##### EdhocSulClientConfig ##### +-port +5683 diff --git a/experiments/args/lakers/server b/experiments/args/lakers/server index 0ae7e3f1..7c9389e4 100644 --- a/experiments/args/lakers/server +++ b/experiments/args/lakers/server @@ -3,7 +3,7 @@ state-fuzzer-server ##### StateFuzzerConfig ##### -output -${results.learning.servers}/lakers +${results.learning.servers.mealy}/lakers ##### LearnerConfig ##### diff --git a/experiments/args/lakers/server_ra b/experiments/args/lakers/server_ra new file mode 100644 index 00000000..66ed118e --- /dev/null +++ b/experiments/args/lakers/server_ra @@ -0,0 +1,72 @@ +state-fuzzer-server + + +##### StateFuzzerConfig ##### +-output +${results.learning.servers.ra}/lakers + + +##### LearnerConfig ##### +-learningAlgorithm +RaStar +-equivalenceAlgorithms +IO_RANDOM_WALK +-logQueries +-alphabet +./src/main/resources/alphabet_placeholder.xml +-maxDepthRA +4 +-probNewDataValue +0.5 +-seed +7 +-socketClosedAsTimeout + +##### EdhocMapperConfig ##### +-protocolVersion +v23 + +## Mapper Auth ## + +-mapCredType +CCS + +-mapIdCredType +KID + +## Sul Auth ## + +-sulCredType +CCS + +-sulIdCredType +KID + +# TestVector +-testVectorJson +${authentication.test_vectors}/test_vectors_lakers.json + +-testVectorJsonKey +test_vector_p256 + +-testVectorPeerKeyCurve +P256 + +-edhocRole +Initiator + + +##### SulConfig ##### +-responseWait +600 +-processDir +${models.servers}/lakers +-cmd +./coapserver +-startWait +500 + + +##### EdhocSulServerConfig ##### +-connect +localhost:5683 diff --git a/experiments/args/rise/client b/experiments/args/rise/client index ef83749c..548e0f63 100644 --- a/experiments/args/rise/client +++ b/experiments/args/rise/client @@ -3,7 +3,7 @@ state-fuzzer-client ##### StateFuzzerConfig ##### -output -${results.learning.clients}/rise +${results.learning.clients.mealy}/rise ##### LearnerConfig ##### diff --git a/experiments/args/rise/client_m4_app b/experiments/args/rise/client_m4_app index 0a1a61e3..8f888f3e 100644 --- a/experiments/args/rise/client_m4_app +++ b/experiments/args/rise/client_m4_app @@ -3,7 +3,7 @@ state-fuzzer-client ##### StateFuzzerConfig ##### -output -${results.learning.clients}/rise_m4_app +${results.learning.clients.mealy}/rise_m4_app ##### LearnerConfig ##### diff --git a/experiments/args/rise/client_m4_app_ra b/experiments/args/rise/client_m4_app_ra new file mode 100644 index 00000000..686625f2 --- /dev/null +++ b/experiments/args/rise/client_m4_app_ra @@ -0,0 +1,79 @@ +state-fuzzer-client + + +##### StateFuzzerConfig ##### +-output +${results.learning.clients.ra}/rise_m4_app + + +##### LearnerConfig ##### +-learningAlgorithm +RaStar +-equivalenceAlgorithms +IO_RANDOM_WALK +-logQueries +-alphabet +./src/main/resources/alphabet_placeholder.xml +-maxDepthRA +10 +-probNewDataValue +0.5 +-seed +7 +-socketClosedAsTimeout + + +##### EdhocMapperConfig ##### +-protocolVersion +v23 + +-combinedMessageVersion +v07 + +## Mapper Auth ## + +-mapCredType +X509 + +-mapIdCredType +X5T + +## Sul Auth ## + +-sulCredType +X509 + +-sulIdCredType +X5T + +# TestVector +-testVectorJson +${authentication.test_vectors}/test_vectors_rise.json + +-testVectorJsonKey +test_vector_ed25519 + +-testVectorPeerKeyCurve +Ed25519 + +-edhocRole +Responder + +-appCoapResource +helloWorld + + +##### SulConfig ##### +-responseWait +500 +-processDir +${models.clients}/rise +-cmd +java -cp cf-edhoc.jar org.eclipse.californium.edhoc.EdhocClient 5 +-startWait +100 + + +##### EdhocSulClientConfig ##### +-port +5683 diff --git a/experiments/args/rise/client_ra b/experiments/args/rise/client_ra new file mode 100644 index 00000000..c70cc165 --- /dev/null +++ b/experiments/args/rise/client_ra @@ -0,0 +1,78 @@ +state-fuzzer-client + + +##### StateFuzzerConfig ##### +-output +${results.learning.clients.ra}/rise + + +##### LearnerConfig ##### +-learningAlgorithm +RaStar +-equivalenceAlgorithms +IO_RANDOM_WALK +-logQueries +-alphabet +./src/main/resources/alphabet_placeholder.xml +-maxDepthRA +10 +-probNewDataValue +0.5 +-seed +7 + + +##### EdhocMapperConfig ##### +-protocolVersion +v23 + +-combinedMessageVersion +v07 + +## Mapper Auth ## + +-mapCredType +X509 + +-mapIdCredType +X5T + +## Sul Auth ## + +-sulCredType +X509 + +-sulIdCredType +X5T + +# TestVector +-testVectorJson +${authentication.test_vectors}/test_vectors_rise.json + +-testVectorJsonKey +test_vector_ed25519 + +-testVectorPeerKeyCurve +Ed25519 + +-edhocRole +Responder + +-appCoapResource +helloWorld + + +##### SulConfig ##### +-responseWait +400 +-processDir +${models.clients}/rise +-cmd +java -cp cf-edhoc.jar org.eclipse.californium.edhoc.EdhocClient +-startWait +50 + + +##### EdhocSulClientConfig ##### +-port +5683 diff --git a/experiments/args/rise/server b/experiments/args/rise/server index dc68e78c..cf127cc7 100644 --- a/experiments/args/rise/server +++ b/experiments/args/rise/server @@ -3,7 +3,7 @@ state-fuzzer-server ##### StateFuzzerConfig ##### -output -${results.learning.servers}/rise +${results.learning.servers.mealy}/rise ##### LearnerConfig ##### diff --git a/experiments/args/rise/server_m4_app b/experiments/args/rise/server_m4_app index 37479cdc..dae7bc94 100644 --- a/experiments/args/rise/server_m4_app +++ b/experiments/args/rise/server_m4_app @@ -3,7 +3,7 @@ state-fuzzer-server ##### StateFuzzerConfig ##### -output -${results.learning.servers}/rise_m4_app +${results.learning.servers.mealy}/rise_m4_app ##### LearnerConfig ##### diff --git a/experiments/args/rise/server_m4_app_ra b/experiments/args/rise/server_m4_app_ra new file mode 100644 index 00000000..b1fc4761 --- /dev/null +++ b/experiments/args/rise/server_m4_app_ra @@ -0,0 +1,81 @@ +state-fuzzer-server + + +##### StateFuzzerConfig ##### +-output +${results.learning.servers.ra}/rise_m4_app + + +##### LearnerConfig ##### +-learningAlgorithm +RaStar +-equivalenceAlgorithms +IO_RANDOM_WALK +-logQueries +-alphabet +./src/main/resources/alphabet_placeholder.xml +-maxDepthRA +10 +-probNewDataValue +0.5 +-seed +7 +-socketClosedAsTimeout +-memQueryRuns +3 +-timeLimit +PT5H30M + +##### EdhocMapperConfig ##### +-protocolVersion +v23 + +-combinedMessageVersion +v07 + +## Mapper Auth ## + +-mapCredType +X509 + +-mapIdCredType +X5T + +## Sul Auth ## + +-sulCredType +X509 + +-sulIdCredType +X5T + +# TestVector +-testVectorJson +${authentication.test_vectors}/test_vectors_rise.json + +-testVectorJsonKey +test_vector_ed25519 + +-testVectorPeerKeyCurve +Ed25519 + +-edhocRole +Initiator + +-appCoapResource +helloWorld + +##### SulConfig ##### +-responseWait +600 +-processDir +${models.servers}/rise +-cmd +java -cp cf-edhoc.jar org.eclipse.californium.edhoc.EdhocServer 5 +-startWait +400 + + +##### EdhocSulServerConfig ##### +-connect +localhost:5683 diff --git a/experiments/args/rise/server_ra b/experiments/args/rise/server_ra new file mode 100644 index 00000000..45911892 --- /dev/null +++ b/experiments/args/rise/server_ra @@ -0,0 +1,81 @@ +state-fuzzer-server + + +##### StateFuzzerConfig ##### +-output +${results.learning.servers.ra}/rise + + +##### LearnerConfig ##### +-learningAlgorithm +RaStar +-equivalenceAlgorithms +IO_RANDOM_WALK +-logQueries +-alphabet +./src/main/resources/alphabet_placeholder.xml +-maxDepthRA +10 +-maxRuns +10000 +-probNewDataValue +0.5 +-seed +7 +-socketClosedAsTimeout +-ceReruns +5 + +##### EdhocMapperConfig ##### +-protocolVersion +v23 + +-combinedMessageVersion +v07 + +## Mapper Auth ## + +-mapCredType +X509 + +-mapIdCredType +X5T + +## Sul Auth ## + +-sulCredType +X509 + +-sulIdCredType +X5T + +# TestVector +-testVectorJson +${authentication.test_vectors}/test_vectors_rise.json + +-testVectorJsonKey +test_vector_ed25519 + +-testVectorPeerKeyCurve +Ed25519 + +-edhocRole +Initiator + +-appCoapResource +helloWorld + +##### SulConfig ##### +-responseWait +500 +-processDir +${models.servers}/rise +-cmd +java -cp cf-edhoc.jar org.eclipse.californium.edhoc.EdhocServer +-startWait +300 + + +##### EdhocSulServerConfig ##### +-connect +localhost:5683 diff --git a/experiments/args/sifis-home/client_phase_1 b/experiments/args/sifis-home/client_phase_1 index d49dac5f..279f46aa 100644 --- a/experiments/args/sifis-home/client_phase_1 +++ b/experiments/args/sifis-home/client_phase_1 @@ -3,7 +3,7 @@ state-fuzzer-client ##### StateFuzzerConfig ##### -output -${results.learning.clients}/sifis-home_phase_1 +${results.learning.clients.mealy}/sifis-home_phase_1 ##### LearnerConfig ##### diff --git a/experiments/args/sifis-home/client_phase_1_ra b/experiments/args/sifis-home/client_phase_1_ra new file mode 100644 index 00000000..2331d0c4 --- /dev/null +++ b/experiments/args/sifis-home/client_phase_1_ra @@ -0,0 +1,80 @@ +state-fuzzer-client + + +##### StateFuzzerConfig ##### +-output +${results.learning.clients.ra}/sifis-home_phase_1 + + +##### LearnerConfig ##### +-learningAlgorithm +RaStar +-equivalenceAlgorithms +IO_RANDOM_WALK +-logQueries +-alphabet +./src/main/resources/alphabet_placeholder.xml +-maxDepthRA +10 +-probNewDataValue +0.5 +-seed +7 +-socketClosedAsTimeout + + + +##### EdhocMapperConfig ##### +-protocolVersion +v22 + +-combinedMessageVersion +v07 + +## Mapper Auth ## + +-mapCredType +X509 + +-mapIdCredType +X5T + +## Sul Auth ## + +-sulCredType +X509 + +-sulIdCredType +X5T + +# TestVector +-testVectorJson +${authentication.test_vectors}/test_vectors_sifis_home.json + +-testVectorJsonKey +test_vector_ed25519_phases_1_3 + +-testVectorPeerKeyCurve +Ed25519 + +-edhocRole +Responder + +-appCoapResource +light + + +##### SulConfig ##### +-responseWait +400 +-processDir +${models.clients}/sifis-home +-cmd +java -cp edhoc-applications.jar se.sics.edhocapps.Phase1Client -server coap://localhost:5683 1q +-startWait +100 + + +##### EdhocSulClientConfig ##### +-port +5683 diff --git a/experiments/args/sifis-home/client_phase_2 b/experiments/args/sifis-home/client_phase_2 index 63cc508d..3c2c7ea4 100644 --- a/experiments/args/sifis-home/client_phase_2 +++ b/experiments/args/sifis-home/client_phase_2 @@ -3,7 +3,7 @@ state-fuzzer-client ##### StateFuzzerConfig ##### -output -${results.learning.clients}/sifis-home_phase_2 +${results.learning.clients.mealy}/sifis-home_phase_2 ##### LearnerConfig ##### diff --git a/experiments/args/sifis-home/client_phase_2_ra b/experiments/args/sifis-home/client_phase_2_ra new file mode 100644 index 00000000..6a224cee --- /dev/null +++ b/experiments/args/sifis-home/client_phase_2_ra @@ -0,0 +1,79 @@ +state-fuzzer-client + + +##### StateFuzzerConfig ##### +-output +${results.learning.clients.ra.}/sifis-home_phase_2 + + +##### LearnerConfig ##### +-learningAlgorithm +RaStar +-equivalenceAlgorithms +IO_RANDOM_WALK +-logQueries +-alphabet +./src/main/resources/alphabet_placeholder.xml +-maxDepthRA +10 +-probNewDataValue +0.5 +-seed +7 + + + +##### EdhocMapperConfig ##### +-protocolVersion +v22 + +-combinedMessageVersion +v07 + +## Mapper Auth ## + +-mapCredType +X509 + +-mapIdCredType +X5T + +## Sul Auth ## + +-sulCredType +X509 + +-sulIdCredType +X5T + +# TestVector +-testVectorJson +${authentication.test_vectors}/test_vectors_sifis_home.json + +-testVectorJsonKey +test_vector_x25519_phases_2_4 + +-testVectorPeerKeyCurve +X25519 + +-edhocRole +Responder + +-appCoapResource +light + + +##### SulConfig ##### +-responseWait +400 +-processDir +${models.clients}/sifis-home +-cmd +java -cp edhoc-applications.jar se.sics.edhocapps.Phase2Client -server coap://localhost:5683 1q +-startWait +50 + + +##### EdhocSulClientConfig ##### +-port +5683 diff --git a/experiments/args/sifis-home/client_phase_3 b/experiments/args/sifis-home/client_phase_3 index fd198932..50724545 100644 --- a/experiments/args/sifis-home/client_phase_3 +++ b/experiments/args/sifis-home/client_phase_3 @@ -3,7 +3,7 @@ state-fuzzer-client ##### StateFuzzerConfig ##### -output -${results.learning.clients}/sifis-home_phase_3 +${results.learning.clients.mealy}/sifis-home_phase_3 ##### LearnerConfig ##### diff --git a/experiments/args/sifis-home/client_phase_3_ra b/experiments/args/sifis-home/client_phase_3_ra new file mode 100644 index 00000000..2509fc70 --- /dev/null +++ b/experiments/args/sifis-home/client_phase_3_ra @@ -0,0 +1,79 @@ +state-fuzzer-client + + +##### StateFuzzerConfig ##### +-output +${results.learning.clients.ra}/sifis-home_phase_3 + + +##### LearnerConfig ##### +-learningAlgorithm +RaStar +-equivalenceAlgorithms +IO_RANDOM_WALK +-logQueries +-alphabet +./src/main/resources/alphabet_placeholder.xml +-maxDepthRA +10 +-probNewDataValue +0.5 +-seed +7 + + + +##### EdhocMapperConfig ##### +-protocolVersion +v22 + +-combinedMessageVersion +v07 + +## Mapper Auth ## + +-mapCredType +X509 + +-mapIdCredType +X5T + +## Sul Auth ## + +-sulCredType +X509 + +-sulIdCredType +X5T + +# TestVector +-testVectorJson +${authentication.test_vectors}/test_vectors_sifis_home.json + +-testVectorJsonKey +test_vector_ed25519_phases_1_3 + +-testVectorPeerKeyCurve +Ed25519 + +-edhocRole +Responder + +-appCoapResource +light + + +##### SulConfig ##### +-responseWait +400 +-processDir +${models.clients}/sifis-home +-cmd +java -cp edhoc-applications.jar se.sics.edhocapps.Phase3Client -server coap://localhost:5683 1q +-startWait +50 + + +##### EdhocSulClientConfig ##### +-port +5683 diff --git a/experiments/args/sifis-home/client_phase_4 b/experiments/args/sifis-home/client_phase_4 index b313237b..4afabf5d 100644 --- a/experiments/args/sifis-home/client_phase_4 +++ b/experiments/args/sifis-home/client_phase_4 @@ -3,7 +3,7 @@ state-fuzzer-client ##### StateFuzzerConfig ##### -output -${results.learning.clients}/sifis-home_phase_4 +${results.learning.clients.mealy}/sifis-home_phase_4 ##### LearnerConfig ##### diff --git a/experiments/args/sifis-home/client_phase_4_ra b/experiments/args/sifis-home/client_phase_4_ra new file mode 100644 index 00000000..5d3b6a63 --- /dev/null +++ b/experiments/args/sifis-home/client_phase_4_ra @@ -0,0 +1,79 @@ +state-fuzzer-client + + +##### StateFuzzerConfig ##### +-output +${results.learning.clients.ra}/sifis-home_phase_4 + + +##### LearnerConfig ##### +-learningAlgorithm +RaStar +-equivalenceAlgorithms +IO_RANDOM_WALK +-logQueries +-alphabet +./src/main/resources/alphabet_placeholder.xml +-maxDepthRA +10 +-probNewDataValue +0.5 +-seed +7 + + + +##### EdhocMapperConfig ##### +-protocolVersion +v22 + +-combinedMessageVersion +v07 + +## Mapper Auth ## + +-mapCredType +X509 + +-mapIdCredType +X5T + +## Sul Auth ## + +-sulCredType +X509 + +-sulIdCredType +X5T + +# TestVector +-testVectorJson +${authentication.test_vectors}/test_vectors_sifis_home.json + +-testVectorJsonKey +test_vector_x25519_phases_2_4 + +-testVectorPeerKeyCurve +X25519 + +-edhocRole +Responder + +-appCoapResource +light + + +##### SulConfig ##### +-responseWait +400 +-processDir +${models.clients}/sifis-home +-cmd +java -cp edhoc-applications.jar se.sics.edhocapps.Phase4Client -server coap://localhost:5683 1q +-startWait +50 + + +##### EdhocSulClientConfig ##### +-port +5683 diff --git a/experiments/args/sifis-home/server_phase_1 b/experiments/args/sifis-home/server_phase_1 index 0af465bc..46a3b065 100644 --- a/experiments/args/sifis-home/server_phase_1 +++ b/experiments/args/sifis-home/server_phase_1 @@ -3,7 +3,7 @@ state-fuzzer-server ##### StateFuzzerConfig ##### -output -${results.learning.servers}/sifis-home_phase_1 +${results.learning.servers.mealy}/sifis-home_phase_1 ##### LearnerConfig ##### diff --git a/experiments/args/sifis-home/server_phase_1_ra b/experiments/args/sifis-home/server_phase_1_ra new file mode 100644 index 00000000..5734b41e --- /dev/null +++ b/experiments/args/sifis-home/server_phase_1_ra @@ -0,0 +1,84 @@ +state-fuzzer-server + + +##### StateFuzzerConfig ##### +-output +${results.learning.servers.ra}/sifis-home_phase_1 + + +##### LearnerConfig ##### +-learningAlgorithm +RaStar +-equivalenceAlgorithms +IO_RANDOM_WALK +-logQueries +-alphabet +./src/main/resources/alphabet_placeholder.xml +-maxDepthRA +4 +-probNewDataValue +0.5 +-seed +7 +-socketClosedAsTimeout + + +##### EdhocMapperConfig ##### +-protocolVersion +v22 + +-combinedMessageVersion +v07 + +## Mapper Auth ## + +-mapCredType +X509 + +-mapIdCredType +X5T + +## Sul Auth ## + +-sulCredType +X509 + +-sulIdCredType +X5T + +# TestVector +-testVectorJson +${authentication.test_vectors}/test_vectors_sifis_home.json + +-testVectorJsonKey +test_vector_ed25519_phases_1_3 + +-testVectorPeerKeyCurve +Ed25519 + +-edhocRole +Initiator + +-appCoapResource +light + +-appMessageCodeToCoapServer +POST + +-appMessagePayloadToCoapServer +1 + +##### SulConfig ##### +-responseWait +500 +-processDir +${models.servers}/sifis-home +-cmd +java -cp edhoc-applications.jar se.sics.edhocapps.Phase1Server +-startWait +400 + + +##### EdhocSulServerConfig ##### +-connect +localhost:5694 diff --git a/experiments/args/sifis-home/server_phase_2 b/experiments/args/sifis-home/server_phase_2 index 6041779e..70bdeece 100644 --- a/experiments/args/sifis-home/server_phase_2 +++ b/experiments/args/sifis-home/server_phase_2 @@ -3,7 +3,7 @@ state-fuzzer-server ##### StateFuzzerConfig ##### -output -${results.learning.servers}/sifis-home_phase_2 +${results.learning.servers.mealy}/sifis-home_phase_2 ##### LearnerConfig ##### diff --git a/experiments/args/sifis-home/server_phase_2_ra b/experiments/args/sifis-home/server_phase_2_ra new file mode 100644 index 00000000..6b12b90e --- /dev/null +++ b/experiments/args/sifis-home/server_phase_2_ra @@ -0,0 +1,83 @@ +state-fuzzer-server + + +##### StateFuzzerConfig ##### +-output +${results.learning.servers.ra}/sifis-home_phase_2 + + +##### LearnerConfig ##### +-learningAlgorithm +RaStar +-equivalenceAlgorithms +IO_RANDOM_WALK +-logQueries +-alphabet +./src/main/resources/alphabet_placeholder.xml +-maxDepthRA +10 +-probNewDataValue +0.5 +-seed +7 + + +##### EdhocMapperConfig ##### +-protocolVersion +v22 + +-combinedMessageVersion +v07 + +## Mapper Auth ## + +-mapCredType +X509 + +-mapIdCredType +X5T + +## Sul Auth ## + +-sulCredType +X509 + +-sulIdCredType +X5T + +# TestVector +-testVectorJson +${authentication.test_vectors}/test_vectors_sifis_home.json + +-testVectorJsonKey +test_vector_x25519_phases_2_4 + +-testVectorPeerKeyCurve +X25519 + +-edhocRole +Initiator + +-appCoapResource +light + +-appMessageCodeToCoapServer +POST + +-appMessagePayloadToCoapServer +1 + +##### SulConfig ##### +-responseWait +500 +-processDir +${models.servers}/sifis-home +-cmd +java -cp edhoc-applications.jar se.sics.edhocapps.Phase2Server +-startWait +400 + + +##### EdhocSulServerConfig ##### +-connect +localhost:5695 diff --git a/experiments/args/sifis-home/server_phase_3 b/experiments/args/sifis-home/server_phase_3 index 0188482d..b8d2c22b 100644 --- a/experiments/args/sifis-home/server_phase_3 +++ b/experiments/args/sifis-home/server_phase_3 @@ -3,7 +3,7 @@ state-fuzzer-server ##### StateFuzzerConfig ##### -output -${results.learning.servers}/sifis-home_phase_3 +${results.learning.servers.mealy}/sifis-home_phase_3 ##### LearnerConfig ##### diff --git a/experiments/args/sifis-home/server_phase_3_ra b/experiments/args/sifis-home/server_phase_3_ra new file mode 100644 index 00000000..7c5c268e --- /dev/null +++ b/experiments/args/sifis-home/server_phase_3_ra @@ -0,0 +1,82 @@ +state-fuzzer-server + + +##### StateFuzzerConfig ##### +-output +${results.learning.servers.ra}/sifis-home_phase_3 + + +##### LearnerConfig ##### +-learningAlgorithm +RaStar +-equivalenceAlgorithms +IO_RANDOM_WALK +-logQueries +-alphabet +./src/main/resources/alphabet_placeholder.xml +-maxDepthRA +10 +-probNewDataValue +0.5 +-seed +7 + +##### EdhocMapperConfig ##### +-protocolVersion +v22 + +-combinedMessageVersion +v07 + +## Mapper Auth ## + +-mapCredType +X509 + +-mapIdCredType +X5T + +## Sul Auth ## + +-sulCredType +X509 + +-sulIdCredType +X5T + +# TestVector +-testVectorJson +${authentication.test_vectors}/test_vectors_sifis_home.json + +-testVectorJsonKey +test_vector_ed25519_phases_1_3 + +-testVectorPeerKeyCurve +Ed25519 + +-edhocRole +Initiator + +-appCoapResource +light + +-appMessageCodeToCoapServer +POST + +-appMessagePayloadToCoapServer +1 + +##### SulConfig ##### +-responseWait +500 +-processDir +${models.servers}/sifis-home +-cmd +java -cp edhoc-applications.jar se.sics.edhocapps.Phase3Server +-startWait +400 + + +##### EdhocSulServerConfig ##### +-connect +localhost:5696 diff --git a/experiments/args/sifis-home/server_phase_4 b/experiments/args/sifis-home/server_phase_4 index 1a63e047..5d7e485c 100644 --- a/experiments/args/sifis-home/server_phase_4 +++ b/experiments/args/sifis-home/server_phase_4 @@ -3,7 +3,7 @@ state-fuzzer-server ##### StateFuzzerConfig ##### -output -${results.learning.servers}/sifis-home_phase_4 +${results.learning.servers.mealy}/sifis-home_phase_4 ##### LearnerConfig ##### diff --git a/experiments/args/sifis-home/server_phase_4_ra b/experiments/args/sifis-home/server_phase_4_ra new file mode 100644 index 00000000..3398dae9 --- /dev/null +++ b/experiments/args/sifis-home/server_phase_4_ra @@ -0,0 +1,81 @@ +state-fuzzer-server + + +##### StateFuzzerConfig ##### +-output +${results.learning.servers.ra}/sifis-home_phase_4 + + +##### LearnerConfig ##### +-learningAlgorithm +RaStar +-equivalenceAlgorithms +IO_RANDOM_WALK +-logQueries +-alphabet +./src/main/resources/alphabet_placeholder.xml +-maxDepthRA +10 +-probNewDataValue +0.5 +-seed +7 + +##### EdhocMapperConfig ##### +-protocolVersion +v22 + +-combinedMessageVersion +v07 + +## Mapper Auth ## + +-mapCredType +X509 + +-mapIdCredType +X5T + +## Sul Auth ## + +-sulCredType +X509 + +-sulIdCredType +X5T + +# TestVector +-testVectorJson +${authentication.test_vectors}/test_vectors_sifis_home.json + +-testVectorJsonKey +test_vector_x25519_phases_2_4 + +-testVectorPeerKeyCurve +X25519 + +-edhocRole +Initiator + +-appCoapResource +light + +-appMessageCodeToCoapServer +POST + +-appMessagePayloadToCoapServer +1 + +##### SulConfig ##### +-responseWait +500 +-processDir +${models.servers}/sifis-home +-cmd +java -cp edhoc-applications.jar se.sics.edhocapps.Phase4Server +-startWait +400 + +##### EdhocSulServerConfig ##### +-connect +localhost:5697 diff --git a/experiments/args/uoscore-uedhoc/client_linux_edhoc b/experiments/args/uoscore-uedhoc/client_linux_edhoc index 4c7045bd..b9138e41 100644 --- a/experiments/args/uoscore-uedhoc/client_linux_edhoc +++ b/experiments/args/uoscore-uedhoc/client_linux_edhoc @@ -2,7 +2,7 @@ state-fuzzer-client ##### StateFuzzerConfig ##### -output -${results.learning.clients}/uoscore-uedhoc_linux_edhoc +${results.learning.clients.mealy}/uoscore-uedhoc_linux_edhoc ##### LearnerConfig ##### diff --git a/experiments/args/uoscore-uedhoc/client_linux_edhoc_oscore b/experiments/args/uoscore-uedhoc/client_linux_edhoc_oscore index 206f8d4f..5d7e5e0e 100644 --- a/experiments/args/uoscore-uedhoc/client_linux_edhoc_oscore +++ b/experiments/args/uoscore-uedhoc/client_linux_edhoc_oscore @@ -2,7 +2,7 @@ state-fuzzer-client ##### StateFuzzerConfig ##### -output -${results.learning.clients}/uoscore-uedhoc_linux_edhoc_oscore +${results.learning.clients.mealy}/uoscore-uedhoc_linux_edhoc_oscore ##### LearnerConfig ##### diff --git a/experiments/args/uoscore-uedhoc/client_linux_edhoc_oscore_ra b/experiments/args/uoscore-uedhoc/client_linux_edhoc_oscore_ra new file mode 100644 index 00000000..ae82acab --- /dev/null +++ b/experiments/args/uoscore-uedhoc/client_linux_edhoc_oscore_ra @@ -0,0 +1,81 @@ +state-fuzzer-client + +##### StateFuzzerConfig ##### +-output +${results.learning.clients.ra}/uoscore-uedhoc_linux_edhoc_oscore + + +##### LearnerConfig ##### +-learningAlgorithm +RaStar +-equivalenceAlgorithms +IO_RANDOM_WALK +-logQueries +-alphabet +./src/main/resources/alphabet_placeholder.xml +-maxDepthRA +10 +-probNewDataValue +0.5 +-seed +7 + + +##### EdhocMapperConfig ##### +-protocolVersion +v16 +## Mapper Auth ## + +-mapCredType +X509 + +-mapIdCredType +X5T + +## Sul Auth ## + +-sulCredType +X509 + +-sulIdCredType +X5T + +# TestVector +-testVectorJson +${authentication.test_vectors}/test_vectors_v16_p256.json + +-testVectorJsonKey +test_vector_1 + +-testVectorPeerKeyCurve +P256 + +-edhocRole +Responder + +-appCoapResource +tv1 + +-disableCXCorrelation + +-forceOscoreSenderId +01 + +-forceOscoreRecipientId +[] + + +##### SulConfig ##### +-responseWait +500 +-processDir +${models.clients}/uoscore-uedhoc +-cmd +./linux-edhoc-oscore-initiator-client +-startWait +100 + + +##### EdhocSulClientConfig ##### +-port +5683 diff --git a/experiments/args/uoscore-uedhoc/client_linux_edhoc_ra b/experiments/args/uoscore-uedhoc/client_linux_edhoc_ra new file mode 100644 index 00000000..799bfba4 --- /dev/null +++ b/experiments/args/uoscore-uedhoc/client_linux_edhoc_ra @@ -0,0 +1,69 @@ +state-fuzzer-client + +##### StateFuzzerConfig ##### +-output +${results.learning.clients.ra}/uoscore-uedhoc_linux_edhoc + + +##### LearnerConfig ##### +-learningAlgorithm +TTT +-equivalenceAlgorithms +W_METHOD,WP_METHOD +-logQueries +-cacheTests +-skipNonDetTests + + +##### EdhocMapperConfig ##### +-protocolVersion +v16 +## Mapper Auth ## + +-mapCredType +X509 + +-mapIdCredType +X5T + +## Sul Auth ## + +-sulCredType +X509 + +-sulIdCredType +X5T + +# TestVector +-testVectorJson +${authentication.test_vectors}/test_vectors_v16_p256.json + +-testVectorJsonKey +test_vector_1 + +-testVectorPeerKeyCurve +P256 + +-edhocRole +Responder + +-appCoapResource +tv1 + +-disableCXCorrelation + + +##### SulConfig ##### +-responseWait +500 +-processDir +${models.clients}/uoscore-uedhoc +-cmd +./linux-edhoc-initiator +-startWait +50 + + +##### EdhocSulClientConfig ##### +-port +5683 diff --git a/experiments/args/uoscore-uedhoc/server_linux_edhoc b/experiments/args/uoscore-uedhoc/server_linux_edhoc index 596d0f90..4b7a61ab 100644 --- a/experiments/args/uoscore-uedhoc/server_linux_edhoc +++ b/experiments/args/uoscore-uedhoc/server_linux_edhoc @@ -3,7 +3,7 @@ state-fuzzer-server ##### StateFuzzerConfig ##### -output -${results.learning.servers}/uoscore-uedhoc_linux_edhoc +${results.learning.servers.mealy}/uoscore-uedhoc_linux_edhoc ##### LearnerConfig ##### diff --git a/experiments/args/uoscore-uedhoc/server_linux_edhoc_oscore b/experiments/args/uoscore-uedhoc/server_linux_edhoc_oscore index a114795c..458fe055 100644 --- a/experiments/args/uoscore-uedhoc/server_linux_edhoc_oscore +++ b/experiments/args/uoscore-uedhoc/server_linux_edhoc_oscore @@ -3,7 +3,7 @@ state-fuzzer-server ##### StateFuzzerConfig ##### -output -${results.learning.servers}/uoscore-uedhoc_linux_edhoc_oscore +${results.learning.servers.mealy}/uoscore-uedhoc_linux_edhoc_oscore ##### LearnerConfig ##### diff --git a/experiments/args/uoscore-uedhoc/server_linux_edhoc_oscore_ra b/experiments/args/uoscore-uedhoc/server_linux_edhoc_oscore_ra new file mode 100644 index 00000000..a6a29eec --- /dev/null +++ b/experiments/args/uoscore-uedhoc/server_linux_edhoc_oscore_ra @@ -0,0 +1,84 @@ +state-fuzzer-server + + +##### StateFuzzerConfig ##### +-output +${results.learning.servers.ra}/uoscore-uedhoc_linux_edhoc_oscore + + +##### LearnerConfig ##### +-learningAlgorithm +RaStar +-equivalenceAlgorithms +IO_RANDOM_WALK +-logQueries +-alphabet +./src/main/resources/alphabet_placeholder.xml +-maxDepthRA +10 +-probNewDataValue +0.5 +-seed +7 +-timeLimit +PT5H30M + + +##### EdhocMapperConfig ##### +-protocolVersion +v16 +## Mapper Auth ## + +-mapCredType +X509 + +-mapIdCredType +X5T + +## Sul Auth ## + +-sulCredType +X509 + +-sulIdCredType +X5T + +# TestVector +-testVectorJson +${authentication.test_vectors}/test_vectors_v16_p256.json + +-testVectorJsonKey +test_vector_1 + +-testVectorPeerKeyCurve +P256 + +-edhocRole +Initiator + +-appCoapResource +tv1 + +-disableCXCorrelation + +-forceOscoreSenderId +[] + +-forceOscoreRecipientId +01 + + +##### SulConfig ##### +-responseWait +3000 +-processDir +${models.servers}/uoscore-uedhoc +-cmd +./linux-edhoc-oscore-responder-server +-startWait +50 + + +##### EdhocSulServerConfig ##### +-connect +localhost:5683 diff --git a/experiments/args/uoscore-uedhoc/server_linux_edhoc_ra b/experiments/args/uoscore-uedhoc/server_linux_edhoc_ra new file mode 100644 index 00000000..56f444af --- /dev/null +++ b/experiments/args/uoscore-uedhoc/server_linux_edhoc_ra @@ -0,0 +1,76 @@ +state-fuzzer-server + + +##### StateFuzzerConfig ##### +-output +${results.learning.servers.ra}/uoscore-uedhoc_linux_edhoc + + +##### LearnerConfig ##### +-learningAlgorithm +RaStar +-equivalenceAlgorithms +IO_RANDOM_WALK +-logQueries +-alphabet +./src/main/resources/alphabet_placeholder.xml +-maxDepthRA +10 +-probNewDataValue +0.5 +-seed +7 + + +##### EdhocMapperConfig ##### +-protocolVersion +v16 +## Mapper Auth ## + +-mapCredType +X509 + +-mapIdCredType +X5T + +## Sul Auth ## + +-sulCredType +X509 + +-sulIdCredType +X5T + +# TestVector +-testVectorJson +${authentication.test_vectors}/test_vectors_v16_p256.json + +-testVectorJsonKey +test_vector_1 + +-testVectorPeerKeyCurve +P256 + +-edhocRole +Initiator + +-appCoapResource +tv1 + +-disableCXCorrelation + + +##### SulConfig ##### +-responseWait +500 +-processDir +${models.servers}/uoscore-uedhoc/ +-cmd +./linux-edhoc-responder +-startWait +50 + + +##### EdhocSulServerConfig ##### +-connect +localhost:5683 diff --git a/experiments/saved_results/clients/lakers/alphabet.xml b/experiments/saved_results/clients/mealy/lakers/alphabet.xml similarity index 100% rename from experiments/saved_results/clients/lakers/alphabet.xml rename to experiments/saved_results/clients/mealy/lakers/alphabet.xml diff --git a/experiments/saved_results/clients/lakers/hyp1.dot b/experiments/saved_results/clients/mealy/lakers/hyp1.dot similarity index 100% rename from experiments/saved_results/clients/lakers/hyp1.dot rename to experiments/saved_results/clients/mealy/lakers/hyp1.dot diff --git a/experiments/saved_results/clients/lakers/hyp2.dot b/experiments/saved_results/clients/mealy/lakers/hyp2.dot similarity index 100% rename from experiments/saved_results/clients/lakers/hyp2.dot rename to experiments/saved_results/clients/mealy/lakers/hyp2.dot diff --git a/experiments/saved_results/clients/lakers/hyp3.dot b/experiments/saved_results/clients/mealy/lakers/hyp3.dot similarity index 100% rename from experiments/saved_results/clients/lakers/hyp3.dot rename to experiments/saved_results/clients/mealy/lakers/hyp3.dot diff --git a/experiments/saved_results/clients/lakers/learnedModel.dot b/experiments/saved_results/clients/mealy/lakers/learnedModel.dot similarity index 100% rename from experiments/saved_results/clients/lakers/learnedModel.dot rename to experiments/saved_results/clients/mealy/lakers/learnedModel.dot diff --git a/experiments/saved_results/clients/lakers/learnedModel.pdf b/experiments/saved_results/clients/mealy/lakers/learnedModel.pdf similarity index 100% rename from experiments/saved_results/clients/lakers/learnedModel.pdf rename to experiments/saved_results/clients/mealy/lakers/learnedModel.pdf diff --git a/experiments/saved_results/clients/rise_m4_app/alphabet.xml b/experiments/saved_results/clients/mealy/rise_m4_app/alphabet.xml similarity index 100% rename from experiments/saved_results/clients/rise_m4_app/alphabet.xml rename to experiments/saved_results/clients/mealy/rise_m4_app/alphabet.xml diff --git a/experiments/saved_results/clients/rise_m4_app/hyp1.dot b/experiments/saved_results/clients/mealy/rise_m4_app/hyp1.dot similarity index 100% rename from experiments/saved_results/clients/rise_m4_app/hyp1.dot rename to experiments/saved_results/clients/mealy/rise_m4_app/hyp1.dot diff --git a/experiments/saved_results/clients/rise_m4_app/hyp2.dot b/experiments/saved_results/clients/mealy/rise_m4_app/hyp2.dot similarity index 100% rename from experiments/saved_results/clients/rise_m4_app/hyp2.dot rename to experiments/saved_results/clients/mealy/rise_m4_app/hyp2.dot diff --git a/experiments/saved_results/clients/rise_m4_app/hyp3.dot b/experiments/saved_results/clients/mealy/rise_m4_app/hyp3.dot similarity index 100% rename from experiments/saved_results/clients/rise_m4_app/hyp3.dot rename to experiments/saved_results/clients/mealy/rise_m4_app/hyp3.dot diff --git a/experiments/saved_results/clients/rise_m4_app/hyp4.dot b/experiments/saved_results/clients/mealy/rise_m4_app/hyp4.dot similarity index 100% rename from experiments/saved_results/clients/rise_m4_app/hyp4.dot rename to experiments/saved_results/clients/mealy/rise_m4_app/hyp4.dot diff --git a/experiments/saved_results/clients/rise_m4_app/learnedModel.dot b/experiments/saved_results/clients/mealy/rise_m4_app/learnedModel.dot similarity index 100% rename from experiments/saved_results/clients/rise_m4_app/learnedModel.dot rename to experiments/saved_results/clients/mealy/rise_m4_app/learnedModel.dot diff --git a/experiments/saved_results/clients/rise_m4_app/learnedModel.pdf b/experiments/saved_results/clients/mealy/rise_m4_app/learnedModel.pdf similarity index 100% rename from experiments/saved_results/clients/rise_m4_app/learnedModel.pdf rename to experiments/saved_results/clients/mealy/rise_m4_app/learnedModel.pdf diff --git a/experiments/saved_results/clients/sifis-home_phase_1/alphabet.xml b/experiments/saved_results/clients/mealy/sifis-home_phase_1/alphabet.xml similarity index 100% rename from experiments/saved_results/clients/sifis-home_phase_1/alphabet.xml rename to experiments/saved_results/clients/mealy/sifis-home_phase_1/alphabet.xml diff --git a/experiments/saved_results/clients/sifis-home_phase_1/hyp1.dot b/experiments/saved_results/clients/mealy/sifis-home_phase_1/hyp1.dot similarity index 100% rename from experiments/saved_results/clients/sifis-home_phase_1/hyp1.dot rename to experiments/saved_results/clients/mealy/sifis-home_phase_1/hyp1.dot diff --git a/experiments/saved_results/clients/sifis-home_phase_1/hyp2.dot b/experiments/saved_results/clients/mealy/sifis-home_phase_1/hyp2.dot similarity index 100% rename from experiments/saved_results/clients/sifis-home_phase_1/hyp2.dot rename to experiments/saved_results/clients/mealy/sifis-home_phase_1/hyp2.dot diff --git a/experiments/saved_results/clients/sifis-home_phase_1/hyp3.dot b/experiments/saved_results/clients/mealy/sifis-home_phase_1/hyp3.dot similarity index 100% rename from experiments/saved_results/clients/sifis-home_phase_1/hyp3.dot rename to experiments/saved_results/clients/mealy/sifis-home_phase_1/hyp3.dot diff --git a/experiments/saved_results/clients/sifis-home_phase_1/hyp4.dot b/experiments/saved_results/clients/mealy/sifis-home_phase_1/hyp4.dot similarity index 100% rename from experiments/saved_results/clients/sifis-home_phase_1/hyp4.dot rename to experiments/saved_results/clients/mealy/sifis-home_phase_1/hyp4.dot diff --git a/experiments/saved_results/clients/sifis-home_phase_1/learnedModel.dot b/experiments/saved_results/clients/mealy/sifis-home_phase_1/learnedModel.dot similarity index 100% rename from experiments/saved_results/clients/sifis-home_phase_1/learnedModel.dot rename to experiments/saved_results/clients/mealy/sifis-home_phase_1/learnedModel.dot diff --git a/experiments/saved_results/clients/sifis-home_phase_1/learnedModel.pdf b/experiments/saved_results/clients/mealy/sifis-home_phase_1/learnedModel.pdf similarity index 100% rename from experiments/saved_results/clients/sifis-home_phase_1/learnedModel.pdf rename to experiments/saved_results/clients/mealy/sifis-home_phase_1/learnedModel.pdf diff --git a/experiments/saved_results/clients/uoscore-uedhoc_linux_edhoc_oscore/alphabet.xml b/experiments/saved_results/clients/mealy/uoscore-uedhoc_linux_edhoc_oscore/alphabet.xml similarity index 100% rename from experiments/saved_results/clients/uoscore-uedhoc_linux_edhoc_oscore/alphabet.xml rename to experiments/saved_results/clients/mealy/uoscore-uedhoc_linux_edhoc_oscore/alphabet.xml diff --git a/experiments/saved_results/clients/uoscore-uedhoc_linux_edhoc_oscore/hyp1.dot b/experiments/saved_results/clients/mealy/uoscore-uedhoc_linux_edhoc_oscore/hyp1.dot similarity index 100% rename from experiments/saved_results/clients/uoscore-uedhoc_linux_edhoc_oscore/hyp1.dot rename to experiments/saved_results/clients/mealy/uoscore-uedhoc_linux_edhoc_oscore/hyp1.dot diff --git a/experiments/saved_results/clients/uoscore-uedhoc_linux_edhoc_oscore/hyp2.dot b/experiments/saved_results/clients/mealy/uoscore-uedhoc_linux_edhoc_oscore/hyp2.dot similarity index 100% rename from experiments/saved_results/clients/uoscore-uedhoc_linux_edhoc_oscore/hyp2.dot rename to experiments/saved_results/clients/mealy/uoscore-uedhoc_linux_edhoc_oscore/hyp2.dot diff --git a/experiments/saved_results/clients/uoscore-uedhoc_linux_edhoc_oscore/hyp3.dot b/experiments/saved_results/clients/mealy/uoscore-uedhoc_linux_edhoc_oscore/hyp3.dot similarity index 100% rename from experiments/saved_results/clients/uoscore-uedhoc_linux_edhoc_oscore/hyp3.dot rename to experiments/saved_results/clients/mealy/uoscore-uedhoc_linux_edhoc_oscore/hyp3.dot diff --git a/experiments/saved_results/clients/uoscore-uedhoc_linux_edhoc_oscore/learnedModel.dot b/experiments/saved_results/clients/mealy/uoscore-uedhoc_linux_edhoc_oscore/learnedModel.dot similarity index 100% rename from experiments/saved_results/clients/uoscore-uedhoc_linux_edhoc_oscore/learnedModel.dot rename to experiments/saved_results/clients/mealy/uoscore-uedhoc_linux_edhoc_oscore/learnedModel.dot diff --git a/experiments/saved_results/clients/uoscore-uedhoc_linux_edhoc_oscore/learnedModel.pdf b/experiments/saved_results/clients/mealy/uoscore-uedhoc_linux_edhoc_oscore/learnedModel.pdf similarity index 100% rename from experiments/saved_results/clients/uoscore-uedhoc_linux_edhoc_oscore/learnedModel.pdf rename to experiments/saved_results/clients/mealy/uoscore-uedhoc_linux_edhoc_oscore/learnedModel.pdf diff --git a/experiments/saved_results/clients/ra/lakers/command.args b/experiments/saved_results/clients/ra/lakers/command.args new file mode 100644 index 00000000..a4fe96f3 --- /dev/null +++ b/experiments/saved_results/clients/ra/lakers/command.args @@ -0,0 +1,71 @@ +state-fuzzer-client + + +##### StateFuzzerConfig ##### +-output +${results.learning.clients.ra}/lakers + + +##### LearnerConfig ##### +-learningAlgorithm +RaStar +-equivalenceAlgorithms +IO_RANDOM_WALK +-logQueries +-alphabet +./src/main/resources/alphabet_placeholder.xml +-maxDepthRA +10 +-probNewDataValue +0.5 +-seed +7 + + +##### EdhocMapperConfig ##### +-protocolVersion +v23 + +## Mapper Auth ## + +-mapCredType +CCS + +-mapIdCredType +KID + +## Sul Auth ## + +-sulCredType +CCS + +-sulIdCredType +KID + +# TestVector +-testVectorJson +${authentication.test_vectors}/test_vectors_lakers.json + +-testVectorJsonKey +test_vector_p256 + +-testVectorPeerKeyCurve +P256 + +-edhocRole +Responder + +##### SulConfig ##### +-responseWait +300 +-processDir +${models.clients}/lakers +-cmd +./coapclient +-startWait +50 + + +##### EdhocSulClientConfig ##### +-port +5683 diff --git a/experiments/saved_results/clients/ra/lakers/hyp1.dot b/experiments/saved_results/clients/ra/lakers/hyp1.dot new file mode 100644 index 00000000..e2669d1c --- /dev/null +++ b/experiments/saved_results/clients/ra/lakers/hyp1.dot @@ -0,0 +1,22 @@ +digraph RA { +"" [shape=none,label=<>] +"l0" [shape=doublecircle] +"l1" [shape=doublecircle] +"l2" [shape=circle] +"l3" [shape=circle] +"l4" [shape=doublecircle] +"l5" [shape=doublecircle] +"" -> "l0" +"l0" -> "l1" [label=] +"l0" -> "l1" [label=] +"l0" -> "l1" [label=] +"l0" -> "l1" [label=] +"l0" -> "l1" [label=] +"l0" -> "l1" [label=] +"l0" -> "l4" [label=] +"l0" -> "l5" [label=] +"l0" -> "l5" [label=] +"l1" -> "l0" [label=] +"l4" -> "l0" [label=] +"l5" -> "l0" [label=] +} diff --git a/experiments/saved_results/clients/ra/lakers/hyp2.dot b/experiments/saved_results/clients/ra/lakers/hyp2.dot new file mode 100644 index 00000000..aac1c653 --- /dev/null +++ b/experiments/saved_results/clients/ra/lakers/hyp2.dot @@ -0,0 +1,34 @@ +digraph RA { +"" [shape=none,label=<>] +"l0" [shape=doublecircle] +"l1" [shape=doublecircle] +"l2" [shape=circle] +"l3" [shape=circle] +"l4" [shape=doublecircle] +"l5" [shape=doublecircle] +"l6" [shape=doublecircle] +"l7" [shape=doublecircle] +"" -> "l0" +"l0" -> "l1" [label=] +"l0" -> "l1" [label=] +"l0" -> "l1" [label=] +"l0" -> "l1" [label=] +"l0" -> "l1" [label=] +"l0" -> "l1" [label=] +"l0" -> "l4" [label=] +"l0" -> "l5" [label=] +"l0" -> "l5" [label=] +"l1" -> "l6" [label=] +"l4" -> "l0" [label=] +"l5" -> "l0" [label=] +"l6" -> "l7" [label=] +"l6" -> "l7" [label=] +"l6" -> "l7" [label=] +"l6" -> "l7" [label=] +"l6" -> "l7" [label=] +"l6" -> "l7" [label=] +"l6" -> "l7" [label=] +"l6" -> "l7" [label=] +"l6" -> "l7" [label=] +"l7" -> "l6" [label=] +} diff --git a/experiments/saved_results/clients/ra/lakers/hyp3.dot b/experiments/saved_results/clients/ra/lakers/hyp3.dot new file mode 100644 index 00000000..2790561f --- /dev/null +++ b/experiments/saved_results/clients/ra/lakers/hyp3.dot @@ -0,0 +1,44 @@ +digraph RA { +"" [shape=none,label=<>] +"l0" [shape=doublecircle] +"l1" [shape=doublecircle] +"l2" [shape=circle] +"l3" [shape=circle] +"l4" [shape=doublecircle] +"l5" [shape=doublecircle] +"l6" [shape=doublecircle] +"l7" [shape=doublecircle] +"l8" [shape=doublecircle] +"" -> "l0" +"l0" -> "l1" [label=] +"l0" -> "l1" [label=] +"l0" -> "l1" [label=] +"l0" -> "l1" [label=] +"l0" -> "l1" [label=] +"l0" -> "l1" [label=] +"l0" -> "l4" [label=] +"l0" -> "l5" [label=] +"l0" -> "l5" [label=] +"l1" -> "l6" [label=] +"l4" -> "l8" [label=] +"l5" -> "l0" [label=] +"l6" -> "l7" [label=] +"l6" -> "l7" [label=] +"l6" -> "l7" [label=] +"l6" -> "l7" [label=] +"l6" -> "l7" [label=] +"l6" -> "l7" [label=] +"l6" -> "l7" [label=] +"l6" -> "l7" [label=] +"l6" -> "l7" [label=] +"l7" -> "l6" [label=] +"l8" -> "l1" [label=] +"l8" -> "l1" [label=] +"l8" -> "l1" [label=] +"l8" -> "l1" [label=] +"l8" -> "l1" [label=] +"l8" -> "l1" [label=] +"l8" -> "l1" [label=] +"l8" -> "l5" [label=] +"l8" -> "l5" [label=] +} diff --git a/experiments/saved_results/clients/ra/lakers/hyp4.dot b/experiments/saved_results/clients/ra/lakers/hyp4.dot new file mode 100644 index 00000000..67085162 --- /dev/null +++ b/experiments/saved_results/clients/ra/lakers/hyp4.dot @@ -0,0 +1,46 @@ +digraph RA { +"" [shape=none,label=<>] +"l0" [shape=doublecircle] +"l1" [shape=doublecircle] +"l2" [shape=circle] +"l3" [shape=circle] +"l4" [shape=doublecircle] +"l5" [shape=doublecircle] +"l6" [shape=doublecircle] +"l7" [shape=doublecircle] +"l8" [shape=doublecircle] +"l9" [shape=doublecircle] +"" -> "l0" +"l0" -> "l1" [label=] +"l0" -> "l1" [label=] +"l0" -> "l1" [label=] +"l0" -> "l1" [label=] +"l0" -> "l1" [label=] +"l0" -> "l1" [label=] +"l0" -> "l4" [label=] +"l0" -> "l5" [label=] +"l0" -> "l5" [label=] +"l1" -> "l6" [label=] +"l4" -> "l8" [label=] +"l5" -> "l0" [label=] +"l6" -> "l7" [label=] +"l6" -> "l7" [label=] +"l6" -> "l7" [label=] +"l6" -> "l7" [label=] +"l6" -> "l7" [label=] +"l6" -> "l7" [label=] +"l6" -> "l7" [label=] +"l6" -> "l7" [label=] +"l6" -> "l7" [label=] +"l7" -> "l6" [label=] +"l8" -> "l1" [label=] +"l8" -> "l1" [label=] +"l8" -> "l1" [label=] +"l8" -> "l1" [label=] +"l8" -> "l1" [label=] +"l8" -> "l1" [label=] +"l8" -> "l1" [label=] +"l8" -> "l9" [label=] +"l8" -> "l9" [label=] +"l9" -> "l8" [label=] +} diff --git a/experiments/saved_results/clients/ra/lakers/learnedModel.dot b/experiments/saved_results/clients/ra/lakers/learnedModel.dot new file mode 100644 index 00000000..67085162 --- /dev/null +++ b/experiments/saved_results/clients/ra/lakers/learnedModel.dot @@ -0,0 +1,46 @@ +digraph RA { +"" [shape=none,label=<>] +"l0" [shape=doublecircle] +"l1" [shape=doublecircle] +"l2" [shape=circle] +"l3" [shape=circle] +"l4" [shape=doublecircle] +"l5" [shape=doublecircle] +"l6" [shape=doublecircle] +"l7" [shape=doublecircle] +"l8" [shape=doublecircle] +"l9" [shape=doublecircle] +"" -> "l0" +"l0" -> "l1" [label=] +"l0" -> "l1" [label=] +"l0" -> "l1" [label=] +"l0" -> "l1" [label=] +"l0" -> "l1" [label=] +"l0" -> "l1" [label=] +"l0" -> "l4" [label=] +"l0" -> "l5" [label=] +"l0" -> "l5" [label=] +"l1" -> "l6" [label=] +"l4" -> "l8" [label=] +"l5" -> "l0" [label=] +"l6" -> "l7" [label=] +"l6" -> "l7" [label=] +"l6" -> "l7" [label=] +"l6" -> "l7" [label=] +"l6" -> "l7" [label=] +"l6" -> "l7" [label=] +"l6" -> "l7" [label=] +"l6" -> "l7" [label=] +"l6" -> "l7" [label=] +"l7" -> "l6" [label=] +"l8" -> "l1" [label=] +"l8" -> "l1" [label=] +"l8" -> "l1" [label=] +"l8" -> "l1" [label=] +"l8" -> "l1" [label=] +"l8" -> "l1" [label=] +"l8" -> "l1" [label=] +"l8" -> "l9" [label=] +"l8" -> "l9" [label=] +"l9" -> "l8" [label=] +} diff --git a/experiments/saved_results/clients/ra/lakers/learnedModel.pdf b/experiments/saved_results/clients/ra/lakers/learnedModel.pdf new file mode 100644 index 00000000..5bd74cc2 Binary files /dev/null and b/experiments/saved_results/clients/ra/lakers/learnedModel.pdf differ diff --git a/experiments/saved_results/clients/ra/lakers/learnedModelShortNames.pdf b/experiments/saved_results/clients/ra/lakers/learnedModelShortNames.pdf new file mode 100644 index 00000000..52407b06 Binary files /dev/null and b/experiments/saved_results/clients/ra/lakers/learnedModelShortNames.pdf differ diff --git a/experiments/saved_results/clients/ra/lakers/learnedModelbtf.dot b/experiments/saved_results/clients/ra/lakers/learnedModelbtf.dot new file mode 100644 index 00000000..3f2dcf56 --- /dev/null +++ b/experiments/saved_results/clients/ra/lakers/learnedModelbtf.dot @@ -0,0 +1,46 @@ +digraph RA { +"" [shape=none,label=<>] +"l0" [shape=doublecircle] +"l1" [shape=doublecircle] +"l2" [shape=circle] +"l3" [shape=circle] +"l4" [shape=doublecircle] +"l5" [shape=doublecircle] +"l6" [shape=doublecircle] +"l7" [shape=doublecircle] +"l8" [shape=doublecircle] +"l9" [shape=doublecircle] +"" -> "l0" +"l0" -> "l1" [label=] +"l0" -> "l1" [label=] +"l0" -> "l1" [label=] +"l0" -> "l1" [label=] +"l0" -> "l1" [label=] +"l0" -> "l1" [label=] +"l0" -> "l4" [label=] +"l0" -> "l5" [label=] +"l0" -> "l5" [label=] +"l1" -> "l6" [label=] +"l4" -> "l8" [label=] +"l5" -> "l0" [label=] +"l6" -> "l7" [label=] +"l6" -> "l7" [label=] +"l6" -> "l7" [label=] +"l6" -> "l7" [label=] +"l6" -> "l7" [label=] +"l6" -> "l7" [label=] +"l6" -> "l7" [label=] +"l6" -> "l7" [label=] +"l6" -> "l7" [label=] +"l7" -> "l6" [label=] +"l8" -> "l1" [label=] +"l8" -> "l1" [label=] +"l8" -> "l1" [label=] +"l8" -> "l1" [label=] +"l8" -> "l1" [label=] +"l8" -> "l1" [label=] +"l8" -> "l1" [label=] +"l8" -> "l9" [label=] +"l8" -> "l9" [label=] +"l9" -> "l8" [label=] +} diff --git a/experiments/saved_results/clients/ra/lakers/mapper_connection.config b/experiments/saved_results/clients/ra/lakers/mapper_connection.config new file mode 100644 index 00000000..97827755 --- /dev/null +++ b/experiments/saved_results/clients/ra/lakers/mapper_connection.config @@ -0,0 +1,153 @@ +# Californium3 CoAP Properties file for EdhocMapper +# +# Random factor for initial CoAP acknowledge timeout. +# Default: 1.5 +COAP.ACK_INIT_RANDOM=1.5 +# Initial CoAP acknowledge timeout. +# Default: 2[s] +# Adjust MAX_ACK_TIMEOUT to add more time +COAP.ACK_TIMEOUT=10[s] +# Scale factor for CoAP acknowledge backoff-timeout. +# Default: 2.0 +COAP.ACK_TIMEOUT_SCALE=2.0 +# Enable automatic failover on "entity too large" response. +# Default: true +COAP.BLOCKWISE_ENTITY_TOO_LARGE_AUTO_FAILOVER=true +# Reuse token for blockwise requests. Ease traceability but may introduce +# vulnerability. +# Default: false +COAP.BLOCKWISE_REUSE_TOKEN=false +# Interval to validate lifetime of blockwise status. +# Default: 5[s] +COAP.BLOCKWISE_STATUS_INTERVAL=5[s] +# Lifetime of blockwise status. +# Default: 5[min] +COAP.BLOCKWISE_STATUS_LIFETIME=5[min] +# Use block2 option strictly, even if block2 is not required. +# Default: false +COAP.BLOCKWISE_STRICT_BLOCK2_OPTION=false +# CoAP port. +# Default: 5683 +COAP.COAP_PORT=5683 +# CoAP DTLS port. +# Default: 5684 +COAP.COAP_SECURE_PORT=5684 +# Congestion-Control algorithm (still experimental). +# [NULL, COCOA, COCOA_STRONG, BASIC_RTO, LINUX_RTO, PEAKHOPPER_RTO]. +# Default: NULL +COAP.CONGESTION_CONTROL_ALGORITHM=NULL +# Crop rotation period. +# Default: 247[s] +COAP.CROP_ROTATION_PERIOD=247[s] +# Deduplicator algorithm. +# [MARK_AND_SWEEP, PEERS_MARK_AND_SWEEP, CROP_ROTATION, NO_DEDUPLICATOR]. +# Default: MARK_AND_SWEEP +COAP.DEDUPLICATOR=MARK_AND_SWEEP +# Automatic replace entries in deduplicator. +# Default: true +COAP.DEDUPLICATOR_AUTO_REPLACE=true +# CoAP maximum exchange lifetime for CON requests. +# Default: 247[s] +COAP.EXCHANGE_LIFETIME=247[s] +# Timespan a multicast server may spread the response. +# Default: 5[s] +COAP.LEISURE=5[s] +# Mark and sweep interval. +# Default: 10[s] +COAP.MARK_AND_SWEEP_INTERVAL=10[s] +# Maximum CoAP acknowledge timeout. +# Default: 1[min] +# Should be: ACK_TIMEOUT <= MAX_ACK_TIMEOUT +COAP.MAX_ACK_TIMEOUT=10[s] +# Maximum number of active peers. +# Default: 150000 +COAP.MAX_ACTIVE_PEERS=150000 +# Maximum transmission latency for messages. +# Default: 100[s] +COAP.MAX_LATENCY=100[s] +# Maximum payload size. +# Default: 1024 +COAP.MAX_MESSAGE_SIZE=1024 +# Maximum inactive period of peer. +# Default: 10[min] +COAP.MAX_PEER_INACTIVITY_PERIOD=10[min] +# Maximum size of resource body. 0 to disable transparent blockwise +# mode. +# Default: 8192 +COAP.MAX_RESOURCE_BODY_SIZE=8192 +# Maximum number of CoAP retransmissions. +# Default: 4 +# Should be >= 0 (0: no retransmissions) +COAP.MAX_RETRANSMIT=0 +# Maximum number of observes on server-side. 0 to disable this limitation. +# Default: 50000 +COAP.MAX_SERVER_OBSERVES=50000 +# Maximum server response delay. +# Default: 250[s] +COAP.MAX_SERVER_RESPONSE_DELAY=250[s] +# Maximum time to wait for ACK or RST after the first transmission of +# a CON message. +# Default: 93[s] +COAP.MAX_TRANSMIT_WAIT=93[s] +# MID tracker. +# [NULL, GROUPED, MAPBASED]. +# Default: GROUPED +COAP.MID_TACKER=GROUPED +# Number of MID tracker groups. +# Default: 16 +COAP.MID_TRACKER_GROUPS=16 +# Base MID for multicast requests. +# Default: 65000 +COAP.MULTICAST_BASE_MID=65000 +# CoAP maximum lifetime for NON requests. +# Default: 145[s] +COAP.NON_LIFETIME=145[s] +# Interval time to check notifications receiver using a CON message. +# Default: 2[min] +COAP.NOTIFICATION_CHECK_INTERVAL=2[min] +# Interval counter to check notifications receiver using a CON message. +# Default: 100 +COAP.NOTIFICATION_CHECK_INTERVAL_COUNT=100 +# Additional time (backoff) to the max-age option +# for waiting for the next notification before reregister. +# Default: 2[s] +COAP.NOTIFICATION_REREGISTRATION_BACKOFF=2[s] +# Maximum concurrent transmissions. +# Default: 1 +COAP.NSTART=1 +# Maximum messages kept per peer for PEERS_MARK_AND_SWEEP. +# Default: 64 +COAP.PEERS_MARK_AND_SWEEP_MESSAGES=64 +# Preferred blocksize for blockwise transfer. +# Default: 512 +COAP.PREFERRED_BLOCK_SIZE=512 +# Probing rate to peers, which didn't response before. Currently not +# used. +# Default: 1.0 +COAP.PROBING_RATE=1.0 +# Protocol stage thread count. +# Default: 1 +COAP.PROTOCOL_STAGE_THREAD_COUNT=1 +# Response matching mode. +# [STRICT, RELAXED, PRINCIPAL, PRINCIPAL_IDENTITY]. +# Default: STRICT +COAP.RESPONSE_MATCHING=STRICT +# Process empty messages strictly according RFC7252, 4.1 as format error. +# Disable to ignore additional data as tokens or options. +# Default: true +COAP.STRICT_EMPTY_MESSAGE_FORMAT=false +# Number of block per TCP-blockwise bulk transfer. +# Default: 1 +COAP.TCP_NUMBER_OF_BULK_BLOCKS=1 +# Limit of token size. +# Default: 8 +COAP.TOKEN_SIZE_LIMIT=8 +# Use message off-loading, when data is not longer required. +# Default: false +COAP.USE_MESSAGE_OFFLOADING=false +# Use initially a random value for MID. +# Default: true +COAP.USE_RANDOM_MID_START=true +# Health status interval. 0 to disable the health status. +# Default: 0[ms] +SYS.HEALTH_STATUS_INTERVAL=0[ms] diff --git a/experiments/saved_results/clients/ra/lakers/statistics.txt b/experiments/saved_results/clients/ra/lakers/statistics.txt new file mode 100644 index 00000000..b355cdc4 --- /dev/null +++ b/experiments/saved_results/clients/ra/lakers/statistics.txt @@ -0,0 +1,121 @@ +=== RUN DESCRIPTION === +Alphabet: [?EDHOC_MESSAGE_1_INPUT[C_I], !EDHOC_MESSAGE_1_OUTPUT[C_I], !EDHOC_MESSAGE_2_OUTPUT[], ?EDHOC_MESSAGE_3_INPUT[], !EDHOC_MESSAGE_3_OUTPUT[], !EDHOC_MESSAGE_4_OUTPUT[], !UNSUCCESSFUL_MESSAGE[], !COAP_EMPTY_MESSAGE_OUTPUT[], !EDHOC_MESSAGE_3_OSCORE_APP_OUTPUT[C_I], ?EDHOC_ERROR_MESSAGE_INPUT[], !COAP_APP_MESSAGE_OUTPUT[], !COAP_MESSAGE_OUTPUT[], !COAP_ERROR_MESSAGE_OUTPUT[], ?COAP_APP_MESSAGE_INPUT[], ?COAP_EMPTY_MESSAGE_INPUT[], !OSCORE_APP_MESSAGE_OUTPUT[], !SOCKET_CLOSED[], !EDHOC_ERROR_MESSAGE_OUTPUT[], ?EDHOC_MESSAGE_2_INPUT[], !DISABLED[], ?EDHOC_MESSAGE_4_INPUT[], !UNSUPPORTED_MESSAGE[], !TIMEOUT[], !UNKNOWN[], ?EDHOC_MESSAGE_3_OSCORE_APP_INPUT[C_I], ?OSCORE_APP_MESSAGE_INPUT[]] + +StateFuzzerConfig Parameters +Help: false +Debug: false +Quiet: false +Output Directory: experiments/results/clients/ra/lakers +Fuzzing Client: true + +LearnerConfigStandard Parameters +Alphabet: ./src/main/resources/alphabet_placeholder.xml +Learning Algorithm: RASTAR +Equivalence Algorithms: [IO_RANDOM_WALK] +Max Depth: 1 +Min Length: 5 +Max Length: 15 +Max Equivalence Queries: 1000 +Runs Per Membership Query: 1 +Random Length: 5 +Membership Query Retries: 3 +Log Queries: true +Prob Reset: 0.0 +Test File: null +Seed: 7 +Cache Tests: false +Ce Sanitization: true +Skip Non Det Tests: false +Ce Reruns: 3 +Probabilistic Sanitization: true +Time Limit: null +Test Limit: null +Round Limit: null +IOMode: true +Probability of Choosing a New DataValue: 0.5 +Max Runs: 10000 +Max Depth for Register Automata: 10 +Reset Runs: false +Seed transitions: false +Draw symbols uniformly: false + +SulConfig Parameters +Fuzzing Role: client +Fuzzing Client: true +Response Wait: 100 +Input Response Timeout: null +Command: null +Terminate Command: null +Process Dir: null +Redirect Output Streams: false +Process Trigger: NEW_TEST +Start Wait: 0 + +SulClientConfig Parameters +Client Wait: 50 +Port: 5683 + +MapperConfig Parameters +Mapper Connection Config: null +Repeating Outputs: null +Socket Closed as Timeout: false +Disabled as Timeout: false +Merge Repeating: true + +EdhocMapperConfig Parameters +Protocol Version: v23 +Combined Message Version: v06 +Edhoc Role: Responder +Edhoc Coap Resource: .well-known/edhoc +App Coap Resource: applicationEndpoint +App Message Code To Coap Server: GET +App Message Payload To Coap Server: +App Message Code To Coap Client: CHANGED +App Message Payload To Coap Client: Server Application Data +Coap Error As Edhoc Error: false +use Content Format: true +use Session Reset: false +use CX Correlation: true +Own Connection Id: 36 +Generate Own Connection Id: true +Force Oscore Sender Id: null +Force Oscore Recipient Id: null + +AuthenticationConfig Parameters +Map Cred Type: CCS +Map Id Cred Type: KID +Sul Cred Type: CCS +Sul Id Cred Type: KID +Trust Model: STRICT + +TestVectorAuthenticationConfig Parameters +Test Vector File: experiments/authentication/test_vectors/test_vectors_lakers.json +Test Vector Key: test_vector_p256 +Test Vector Peer Key Curve: P256 + +SulAdapterConfig Parameters +Adapter Port: null +Adapter Address: localhost + +=== STATISTICS === +Learning finished: true +Size of the input alphabet: 26 +Number of states: 10 +Number of hypotheses: 4 +Number of inputs: 100215 +Number of tests: 10132 +Number of learning inputs: 237 +Number of learning tests: 132 +Number of inputs up to last hypothesis: 2285 +Number of tests up to last hypothesis: 339 +Time (ms) to learn model: 4613865 +Counterexamples: +CE 1:Query[ε|EDHOC_MESSAGE_4_INPUT[] TIMEOUT[] COAP_EMPTY_MESSAGE_INPUT[] SOCKET_CLOSED[] / true] +CE 2:Query[ε|EDHOC_MESSAGE_3_OSCORE_APP_INPUT[0[C_I]] UNSUPPORTED_MESSAGE[] EDHOC_MESSAGE_2_INPUT[] EDHOC_MESSAGE_3_OUTPUT[] EDHOC_MESSAGE_2_INPUT[] TIMEOUT[] / true] +CE 3:Query[ε|EDHOC_MESSAGE_2_INPUT[] EDHOC_MESSAGE_3_OUTPUT[] EDHOC_MESSAGE_3_OSCORE_APP_INPUT[0[C_I]] UNSUPPORTED_MESSAGE[] EDHOC_MESSAGE_2_INPUT[] TIMEOUT[] / true] +Number of inputs when hypothesis was generated: [27, 110, 2118, 2285] +Number of tests when hypothesis was generated: [27, 70, 303, 339] +Time (ms) when hypothesis was generated: [10406, 30189, 132762, 145730] +Number of inputs when counterexample was found: [29, 2043, 2231] +Number of tests when counterexample was found: [28, 264, 315] +Time (ms) when counterexample was found: [10871, 119305, 138258] diff --git a/experiments/saved_results/clients/ra/rise_m4_app/command.args b/experiments/saved_results/clients/ra/rise_m4_app/command.args new file mode 100644 index 00000000..686625f2 --- /dev/null +++ b/experiments/saved_results/clients/ra/rise_m4_app/command.args @@ -0,0 +1,79 @@ +state-fuzzer-client + + +##### StateFuzzerConfig ##### +-output +${results.learning.clients.ra}/rise_m4_app + + +##### LearnerConfig ##### +-learningAlgorithm +RaStar +-equivalenceAlgorithms +IO_RANDOM_WALK +-logQueries +-alphabet +./src/main/resources/alphabet_placeholder.xml +-maxDepthRA +10 +-probNewDataValue +0.5 +-seed +7 +-socketClosedAsTimeout + + +##### EdhocMapperConfig ##### +-protocolVersion +v23 + +-combinedMessageVersion +v07 + +## Mapper Auth ## + +-mapCredType +X509 + +-mapIdCredType +X5T + +## Sul Auth ## + +-sulCredType +X509 + +-sulIdCredType +X5T + +# TestVector +-testVectorJson +${authentication.test_vectors}/test_vectors_rise.json + +-testVectorJsonKey +test_vector_ed25519 + +-testVectorPeerKeyCurve +Ed25519 + +-edhocRole +Responder + +-appCoapResource +helloWorld + + +##### SulConfig ##### +-responseWait +500 +-processDir +${models.clients}/rise +-cmd +java -cp cf-edhoc.jar org.eclipse.californium.edhoc.EdhocClient 5 +-startWait +100 + + +##### EdhocSulClientConfig ##### +-port +5683 diff --git a/experiments/saved_results/clients/ra/rise_m4_app/hyp1.dot b/experiments/saved_results/clients/ra/rise_m4_app/hyp1.dot new file mode 100644 index 00000000..e2669d1c --- /dev/null +++ b/experiments/saved_results/clients/ra/rise_m4_app/hyp1.dot @@ -0,0 +1,22 @@ +digraph RA { +"" [shape=none,label=<>] +"l0" [shape=doublecircle] +"l1" [shape=doublecircle] +"l2" [shape=circle] +"l3" [shape=circle] +"l4" [shape=doublecircle] +"l5" [shape=doublecircle] +"" -> "l0" +"l0" -> "l1" [label=] +"l0" -> "l1" [label=] +"l0" -> "l1" [label=] +"l0" -> "l1" [label=] +"l0" -> "l1" [label=] +"l0" -> "l1" [label=] +"l0" -> "l4" [label=] +"l0" -> "l5" [label=] +"l0" -> "l5" [label=] +"l1" -> "l0" [label=] +"l4" -> "l0" [label=] +"l5" -> "l0" [label=] +} diff --git a/experiments/saved_results/clients/ra/rise_m4_app/hyp10.dot b/experiments/saved_results/clients/ra/rise_m4_app/hyp10.dot new file mode 100644 index 00000000..0bf9841e --- /dev/null +++ b/experiments/saved_results/clients/ra/rise_m4_app/hyp10.dot @@ -0,0 +1,100 @@ +digraph RA { +"" [shape=none,label=<>] +"l0" [shape=doublecircle] +"l1" [shape=doublecircle] +"l2" [shape=circle] +"l3" [shape=circle] +"l4" [shape=doublecircle] +"l5" [shape=doublecircle] +"l6" [shape=doublecircle] +"l7" [shape=doublecircle] +"l8" [shape=doublecircle] +"l9" [shape=doublecircle] +"l10" [shape=doublecircle] +"l11" [shape=doublecircle] +"l12" [shape=doublecircle] +"l13" [shape=doublecircle] +"l14" [shape=doublecircle] +"l15" [shape=doublecircle] +"l16" [shape=doublecircle] +"l17" [shape=doublecircle] +"l18" [shape=doublecircle] +"l19" [shape=doublecircle] +"l20" [shape=doublecircle] +"" -> "l0" +"l0" -> "l1" [label=] +"l0" -> "l1" [label=] +"l0" -> "l1" [label=] +"l0" -> "l1" [label=] +"l0" -> "l1" [label=] +"l0" -> "l1" [label=] +"l0" -> "l4" [label=] +"l0" -> "l5" [label=] +"l0" -> "l17" [label=] +"l1" -> "l6" [label=] +"l4" -> "l8" [label=] +"l5" -> "l12" [label=] +"l6" -> "l7" [label=] +"l6" -> "l7" [label=] +"l6" -> "l7" [label=] +"l6" -> "l7" [label=] +"l6" -> "l7" [label=] +"l6" -> "l7" [label=] +"l6" -> "l7" [label=] +"l6" -> "l7" [label=] +"l6" -> "l7" [label=] +"l7" -> "l6" [label=] +"l8" -> "l1" [label=] +"l8" -> "l1" [label=] +"l8" -> "l1" [label=] +"l8" -> "l1" [label=] +"l8" -> "l9" [label=] +"l8" -> "l9" [label=] +"l8" -> "l10" [label=] +"l8" -> "l18" [label=] +"l8" -> "l18" [label=] +"l9" -> "l11" [label=] +"l10" -> "l20" [label=] +"l11" -> "l1" [label=] +"l11" -> "l1" [label=] +"l11" -> "l1" [label=] +"l11" -> "l1" [label=] +"l11" -> "l1" [label=] +"l11" -> "l1" [label=] +"l11" -> "l1" [label=] +"l11" -> "l19" [label=] +"l11" -> "l19" [label=] +"l12" -> "l1" [label=] +"l12" -> "l1" [label=] +"l12" -> "l1" [label=] +"l12" -> "l1" [label=] +"l12" -> "l1" [label=] +"l12" -> "l1" [label=] +"l12" -> "l5" [label=] +"l12" -> "l5" [label=] +"l12" -> "l13" [label=] +"l13" -> "l14" [label=] +"l14" -> "l1" [label=] +"l14" -> "l1" [label=] +"l14" -> "l1" [label=] +"l14" -> "l1" [label=] +"l14" -> "l9" [label=] +"l14" -> "l9" [label=] +"l14" -> "l15" [label=] +"l14" -> "l16" [label=] +"l14" -> "l16" [label=] +"l15" -> "l11" [label=] +"l16" -> "l14" [label=] +"l17" -> "l0" [label=] +"l18" -> "l8" [label=] +"l19" -> "l11" [label=] +"l20" -> "l1" [label=] +"l20" -> "l1" [label=] +"l20" -> "l1" [label=] +"l20" -> "l1" [label=] +"l20" -> "l1" [label=] +"l20" -> "l1" [label=] +"l20" -> "l1" [label=] +"l20" -> "l1" [label=] +"l20" -> "l19" [label=] +} diff --git a/experiments/saved_results/clients/ra/rise_m4_app/hyp11.dot b/experiments/saved_results/clients/ra/rise_m4_app/hyp11.dot new file mode 100644 index 00000000..b77c7913 --- /dev/null +++ b/experiments/saved_results/clients/ra/rise_m4_app/hyp11.dot @@ -0,0 +1,102 @@ +digraph RA { +"" [shape=none,label=<>] +"l0" [shape=doublecircle] +"l1" [shape=doublecircle] +"l2" [shape=circle] +"l3" [shape=circle] +"l4" [shape=doublecircle] +"l5" [shape=doublecircle] +"l6" [shape=doublecircle] +"l7" [shape=doublecircle] +"l8" [shape=doublecircle] +"l9" [shape=doublecircle] +"l10" [shape=doublecircle] +"l11" [shape=doublecircle] +"l12" [shape=doublecircle] +"l13" [shape=doublecircle] +"l14" [shape=doublecircle] +"l15" [shape=doublecircle] +"l16" [shape=doublecircle] +"l17" [shape=doublecircle] +"l18" [shape=doublecircle] +"l19" [shape=doublecircle] +"l20" [shape=doublecircle] +"l21" [shape=doublecircle] +"" -> "l0" +"l0" -> "l1" [label=] +"l0" -> "l1" [label=] +"l0" -> "l1" [label=] +"l0" -> "l1" [label=] +"l0" -> "l1" [label=] +"l0" -> "l1" [label=] +"l0" -> "l4" [label=] +"l0" -> "l5" [label=] +"l0" -> "l17" [label=] +"l1" -> "l6" [label=] +"l4" -> "l8" [label=] +"l5" -> "l12" [label=] +"l6" -> "l7" [label=] +"l6" -> "l7" [label=] +"l6" -> "l7" [label=] +"l6" -> "l7" [label=] +"l6" -> "l7" [label=] +"l6" -> "l7" [label=] +"l6" -> "l7" [label=] +"l6" -> "l7" [label=] +"l6" -> "l7" [label=] +"l7" -> "l6" [label=] +"l8" -> "l1" [label=] +"l8" -> "l1" [label=] +"l8" -> "l1" [label=] +"l8" -> "l1" [label=] +"l8" -> "l9" [label=] +"l8" -> "l9" [label=] +"l8" -> "l10" [label=] +"l8" -> "l18" [label=] +"l8" -> "l18" [label=] +"l9" -> "l11" [label=] +"l10" -> "l20" [label=] +"l11" -> "l1" [label=] +"l11" -> "l1" [label=] +"l11" -> "l1" [label=] +"l11" -> "l1" [label=] +"l11" -> "l1" [label=] +"l11" -> "l1" [label=] +"l11" -> "l1" [label=] +"l11" -> "l19" [label=] +"l11" -> "l19" [label=] +"l12" -> "l1" [label=] +"l12" -> "l1" [label=] +"l12" -> "l1" [label=] +"l12" -> "l1" [label=] +"l12" -> "l1" [label=] +"l12" -> "l1" [label=] +"l12" -> "l5" [label=] +"l12" -> "l5" [label=] +"l12" -> "l13" [label=] +"l13" -> "l14" [label=] +"l14" -> "l1" [label=] +"l14" -> "l1" [label=] +"l14" -> "l1" [label=] +"l14" -> "l1" [label=] +"l14" -> "l9" [label=] +"l14" -> "l9" [label=] +"l14" -> "l15" [label=] +"l14" -> "l16" [label=] +"l14" -> "l16" [label=] +"l15" -> "l11" [label=] +"l16" -> "l14" [label=] +"l17" -> "l0" [label=] +"l18" -> "l8" [label=] +"l19" -> "l11" [label=] +"l20" -> "l1" [label=] +"l20" -> "l1" [label=] +"l20" -> "l1" [label=] +"l20" -> "l1" [label=] +"l20" -> "l1" [label=] +"l20" -> "l1" [label=] +"l20" -> "l1" [label=] +"l20" -> "l1" [label=] +"l20" -> "l21" [label=] +"l21" -> "l20" [label=] +} diff --git a/experiments/saved_results/clients/ra/rise_m4_app/hyp2.dot b/experiments/saved_results/clients/ra/rise_m4_app/hyp2.dot new file mode 100644 index 00000000..aac1c653 --- /dev/null +++ b/experiments/saved_results/clients/ra/rise_m4_app/hyp2.dot @@ -0,0 +1,34 @@ +digraph RA { +"" [shape=none,label=<>] +"l0" [shape=doublecircle] +"l1" [shape=doublecircle] +"l2" [shape=circle] +"l3" [shape=circle] +"l4" [shape=doublecircle] +"l5" [shape=doublecircle] +"l6" [shape=doublecircle] +"l7" [shape=doublecircle] +"" -> "l0" +"l0" -> "l1" [label=] +"l0" -> "l1" [label=] +"l0" -> "l1" [label=] +"l0" -> "l1" [label=] +"l0" -> "l1" [label=] +"l0" -> "l1" [label=] +"l0" -> "l4" [label=] +"l0" -> "l5" [label=] +"l0" -> "l5" [label=] +"l1" -> "l6" [label=] +"l4" -> "l0" [label=] +"l5" -> "l0" [label=] +"l6" -> "l7" [label=] +"l6" -> "l7" [label=] +"l6" -> "l7" [label=] +"l6" -> "l7" [label=] +"l6" -> "l7" [label=] +"l6" -> "l7" [label=] +"l6" -> "l7" [label=] +"l6" -> "l7" [label=] +"l6" -> "l7" [label=] +"l7" -> "l6" [label=] +} diff --git a/experiments/saved_results/clients/ra/rise_m4_app/hyp3.dot b/experiments/saved_results/clients/ra/rise_m4_app/hyp3.dot new file mode 100644 index 00000000..90aae8c5 --- /dev/null +++ b/experiments/saved_results/clients/ra/rise_m4_app/hyp3.dot @@ -0,0 +1,48 @@ +digraph RA { +"" [shape=none,label=<>] +"l0" [shape=doublecircle] +"l1" [shape=doublecircle] +"l2" [shape=circle] +"l3" [shape=circle] +"l4" [shape=doublecircle] +"l5" [shape=doublecircle] +"l6" [shape=doublecircle] +"l7" [shape=doublecircle] +"l8" [shape=doublecircle] +"l9" [shape=doublecircle] +"l10" [shape=doublecircle] +"" -> "l0" +"l0" -> "l1" [label=] +"l0" -> "l1" [label=] +"l0" -> "l1" [label=] +"l0" -> "l1" [label=] +"l0" -> "l1" [label=] +"l0" -> "l1" [label=] +"l0" -> "l4" [label=] +"l0" -> "l5" [label=] +"l0" -> "l5" [label=] +"l1" -> "l6" [label=] +"l4" -> "l8" [label=] +"l5" -> "l0" [label=] +"l6" -> "l7" [label=] +"l6" -> "l7" [label=] +"l6" -> "l7" [label=] +"l6" -> "l7" [label=] +"l6" -> "l7" [label=] +"l6" -> "l7" [label=] +"l6" -> "l7" [label=] +"l6" -> "l7" [label=] +"l6" -> "l7" [label=] +"l7" -> "l6" [label=] +"l8" -> "l1" [label=] +"l8" -> "l1" [label=] +"l8" -> "l1" [label=] +"l8" -> "l1" [label=] +"l8" -> "l5" [label=] +"l8" -> "l5" [label=] +"l8" -> "l9" [label=] +"l8" -> "l9" [label=] +"l8" -> "l10" [label=] +"l9" -> "l0" [label=] +"l10" -> "l0" [label=] +} diff --git a/experiments/saved_results/clients/ra/rise_m4_app/hyp4.dot b/experiments/saved_results/clients/ra/rise_m4_app/hyp4.dot new file mode 100644 index 00000000..c9c7fe67 --- /dev/null +++ b/experiments/saved_results/clients/ra/rise_m4_app/hyp4.dot @@ -0,0 +1,58 @@ +digraph RA { +"" [shape=none,label=<>] +"l0" [shape=doublecircle] +"l1" [shape=doublecircle] +"l2" [shape=circle] +"l3" [shape=circle] +"l4" [shape=doublecircle] +"l5" [shape=doublecircle] +"l6" [shape=doublecircle] +"l7" [shape=doublecircle] +"l8" [shape=doublecircle] +"l9" [shape=doublecircle] +"l10" [shape=doublecircle] +"l11" [shape=doublecircle] +"" -> "l0" +"l0" -> "l1" [label=] +"l0" -> "l1" [label=] +"l0" -> "l1" [label=] +"l0" -> "l1" [label=] +"l0" -> "l1" [label=] +"l0" -> "l1" [label=] +"l0" -> "l4" [label=] +"l0" -> "l5" [label=] +"l0" -> "l5" [label=] +"l1" -> "l6" [label=] +"l4" -> "l8" [label=] +"l5" -> "l0" [label=] +"l6" -> "l7" [label=] +"l6" -> "l7" [label=] +"l6" -> "l7" [label=] +"l6" -> "l7" [label=] +"l6" -> "l7" [label=] +"l6" -> "l7" [label=] +"l6" -> "l7" [label=] +"l6" -> "l7" [label=] +"l6" -> "l7" [label=] +"l7" -> "l6" [label=] +"l8" -> "l1" [label=] +"l8" -> "l1" [label=] +"l8" -> "l1" [label=] +"l8" -> "l1" [label=] +"l8" -> "l5" [label=] +"l8" -> "l5" [label=] +"l8" -> "l9" [label=] +"l8" -> "l9" [label=] +"l8" -> "l10" [label=] +"l9" -> "l11" [label=] +"l10" -> "l11" [label=] +"l11" -> "l1" [label=] +"l11" -> "l1" [label=] +"l11" -> "l1" [label=] +"l11" -> "l1" [label=] +"l11" -> "l1" [label=] +"l11" -> "l1" [label=] +"l11" -> "l1" [label=] +"l11" -> "l5" [label=] +"l11" -> "l5" [label=] +} diff --git a/experiments/saved_results/clients/ra/rise_m4_app/hyp5.dot b/experiments/saved_results/clients/ra/rise_m4_app/hyp5.dot new file mode 100644 index 00000000..271a795d --- /dev/null +++ b/experiments/saved_results/clients/ra/rise_m4_app/hyp5.dot @@ -0,0 +1,82 @@ +digraph RA { +"" [shape=none,label=<>] +"l0" [shape=doublecircle] +"l1" [shape=doublecircle] +"l2" [shape=circle] +"l3" [shape=circle] +"l4" [shape=doublecircle] +"l5" [shape=doublecircle] +"l6" [shape=doublecircle] +"l7" [shape=doublecircle] +"l8" [shape=doublecircle] +"l9" [shape=doublecircle] +"l10" [shape=doublecircle] +"l11" [shape=doublecircle] +"l12" [shape=doublecircle] +"l13" [shape=doublecircle] +"l14" [shape=doublecircle] +"l15" [shape=doublecircle] +"" -> "l0" +"l0" -> "l1" [label=] +"l0" -> "l1" [label=] +"l0" -> "l1" [label=] +"l0" -> "l1" [label=] +"l0" -> "l1" [label=] +"l0" -> "l1" [label=] +"l0" -> "l4" [label=] +"l0" -> "l5" [label=] +"l0" -> "l5" [label=] +"l1" -> "l6" [label=] +"l4" -> "l8" [label=] +"l5" -> "l12" [label=] +"l6" -> "l7" [label=] +"l6" -> "l7" [label=] +"l6" -> "l7" [label=] +"l6" -> "l7" [label=] +"l6" -> "l7" [label=] +"l6" -> "l7" [label=] +"l6" -> "l7" [label=] +"l6" -> "l7" [label=] +"l6" -> "l7" [label=] +"l7" -> "l6" [label=] +"l8" -> "l1" [label=] +"l8" -> "l1" [label=] +"l8" -> "l1" [label=] +"l8" -> "l1" [label=] +"l8" -> "l5" [label=] +"l8" -> "l5" [label=] +"l8" -> "l9" [label=] +"l8" -> "l9" [label=] +"l8" -> "l10" [label=] +"l9" -> "l11" [label=] +"l10" -> "l11" [label=] +"l11" -> "l1" [label=] +"l11" -> "l1" [label=] +"l11" -> "l1" [label=] +"l11" -> "l1" [label=] +"l11" -> "l1" [label=] +"l11" -> "l1" [label=] +"l11" -> "l1" [label=] +"l11" -> "l5" [label=] +"l11" -> "l5" [label=] +"l12" -> "l1" [label=] +"l12" -> "l1" [label=] +"l12" -> "l1" [label=] +"l12" -> "l1" [label=] +"l12" -> "l1" [label=] +"l12" -> "l1" [label=] +"l12" -> "l5" [label=] +"l12" -> "l5" [label=] +"l12" -> "l13" [label=] +"l13" -> "l14" [label=] +"l14" -> "l1" [label=] +"l14" -> "l1" [label=] +"l14" -> "l1" [label=] +"l14" -> "l1" [label=] +"l14" -> "l5" [label=] +"l14" -> "l5" [label=] +"l14" -> "l9" [label=] +"l14" -> "l9" [label=] +"l14" -> "l15" [label=] +"l15" -> "l11" [label=] +} diff --git a/experiments/saved_results/clients/ra/rise_m4_app/hyp6.dot b/experiments/saved_results/clients/ra/rise_m4_app/hyp6.dot new file mode 100644 index 00000000..a5e775d6 --- /dev/null +++ b/experiments/saved_results/clients/ra/rise_m4_app/hyp6.dot @@ -0,0 +1,84 @@ +digraph RA { +"" [shape=none,label=<>] +"l0" [shape=doublecircle] +"l1" [shape=doublecircle] +"l2" [shape=circle] +"l3" [shape=circle] +"l4" [shape=doublecircle] +"l5" [shape=doublecircle] +"l6" [shape=doublecircle] +"l7" [shape=doublecircle] +"l8" [shape=doublecircle] +"l9" [shape=doublecircle] +"l10" [shape=doublecircle] +"l11" [shape=doublecircle] +"l12" [shape=doublecircle] +"l13" [shape=doublecircle] +"l14" [shape=doublecircle] +"l15" [shape=doublecircle] +"l16" [shape=doublecircle] +"" -> "l0" +"l0" -> "l1" [label=] +"l0" -> "l1" [label=] +"l0" -> "l1" [label=] +"l0" -> "l1" [label=] +"l0" -> "l1" [label=] +"l0" -> "l1" [label=] +"l0" -> "l4" [label=] +"l0" -> "l5" [label=] +"l0" -> "l5" [label=] +"l1" -> "l6" [label=] +"l4" -> "l8" [label=] +"l5" -> "l12" [label=] +"l6" -> "l7" [label=] +"l6" -> "l7" [label=] +"l6" -> "l7" [label=] +"l6" -> "l7" [label=] +"l6" -> "l7" [label=] +"l6" -> "l7" [label=] +"l6" -> "l7" [label=] +"l6" -> "l7" [label=] +"l6" -> "l7" [label=] +"l7" -> "l6" [label=] +"l8" -> "l1" [label=] +"l8" -> "l1" [label=] +"l8" -> "l1" [label=] +"l8" -> "l1" [label=] +"l8" -> "l5" [label=] +"l8" -> "l5" [label=] +"l8" -> "l9" [label=] +"l8" -> "l9" [label=] +"l8" -> "l10" [label=] +"l9" -> "l11" [label=] +"l10" -> "l11" [label=] +"l11" -> "l1" [label=] +"l11" -> "l1" [label=] +"l11" -> "l1" [label=] +"l11" -> "l1" [label=] +"l11" -> "l1" [label=] +"l11" -> "l1" [label=] +"l11" -> "l1" [label=] +"l11" -> "l5" [label=] +"l11" -> "l5" [label=] +"l12" -> "l1" [label=] +"l12" -> "l1" [label=] +"l12" -> "l1" [label=] +"l12" -> "l1" [label=] +"l12" -> "l1" [label=] +"l12" -> "l1" [label=] +"l12" -> "l5" [label=] +"l12" -> "l5" [label=] +"l12" -> "l13" [label=] +"l13" -> "l14" [label=] +"l14" -> "l1" [label=] +"l14" -> "l1" [label=] +"l14" -> "l1" [label=] +"l14" -> "l1" [label=] +"l14" -> "l9" [label=] +"l14" -> "l9" [label=] +"l14" -> "l15" [label=] +"l14" -> "l16" [label=] +"l14" -> "l16" [label=] +"l15" -> "l11" [label=] +"l16" -> "l14" [label=] +} diff --git a/experiments/saved_results/clients/ra/rise_m4_app/hyp7.dot b/experiments/saved_results/clients/ra/rise_m4_app/hyp7.dot new file mode 100644 index 00000000..d451d408 --- /dev/null +++ b/experiments/saved_results/clients/ra/rise_m4_app/hyp7.dot @@ -0,0 +1,86 @@ +digraph RA { +"" [shape=none,label=<>] +"l0" [shape=doublecircle] +"l1" [shape=doublecircle] +"l2" [shape=circle] +"l3" [shape=circle] +"l4" [shape=doublecircle] +"l5" [shape=doublecircle] +"l6" [shape=doublecircle] +"l7" [shape=doublecircle] +"l8" [shape=doublecircle] +"l9" [shape=doublecircle] +"l10" [shape=doublecircle] +"l11" [shape=doublecircle] +"l12" [shape=doublecircle] +"l13" [shape=doublecircle] +"l14" [shape=doublecircle] +"l15" [shape=doublecircle] +"l16" [shape=doublecircle] +"l17" [shape=doublecircle] +"" -> "l0" +"l0" -> "l1" [label=] +"l0" -> "l1" [label=] +"l0" -> "l1" [label=] +"l0" -> "l1" [label=] +"l0" -> "l1" [label=] +"l0" -> "l1" [label=] +"l0" -> "l4" [label=] +"l0" -> "l5" [label=] +"l0" -> "l17" [label=] +"l1" -> "l6" [label=] +"l4" -> "l8" [label=] +"l5" -> "l12" [label=] +"l6" -> "l7" [label=] +"l6" -> "l7" [label=] +"l6" -> "l7" [label=] +"l6" -> "l7" [label=] +"l6" -> "l7" [label=] +"l6" -> "l7" [label=] +"l6" -> "l7" [label=] +"l6" -> "l7" [label=] +"l6" -> "l7" [label=] +"l7" -> "l6" [label=] +"l8" -> "l1" [label=] +"l8" -> "l1" [label=] +"l8" -> "l1" [label=] +"l8" -> "l1" [label=] +"l8" -> "l5" [label=] +"l8" -> "l5" [label=] +"l8" -> "l9" [label=] +"l8" -> "l9" [label=] +"l8" -> "l10" [label=] +"l9" -> "l11" [label=] +"l10" -> "l11" [label=] +"l11" -> "l1" [label=] +"l11" -> "l1" [label=] +"l11" -> "l1" [label=] +"l11" -> "l1" [label=] +"l11" -> "l1" [label=] +"l11" -> "l1" [label=] +"l11" -> "l1" [label=] +"l11" -> "l5" [label=] +"l11" -> "l5" [label=] +"l12" -> "l1" [label=] +"l12" -> "l1" [label=] +"l12" -> "l1" [label=] +"l12" -> "l1" [label=] +"l12" -> "l1" [label=] +"l12" -> "l1" [label=] +"l12" -> "l5" [label=] +"l12" -> "l5" [label=] +"l12" -> "l13" [label=] +"l13" -> "l14" [label=] +"l14" -> "l1" [label=] +"l14" -> "l1" [label=] +"l14" -> "l1" [label=] +"l14" -> "l1" [label=] +"l14" -> "l9" [label=] +"l14" -> "l9" [label=] +"l14" -> "l15" [label=] +"l14" -> "l16" [label=] +"l14" -> "l16" [label=] +"l15" -> "l11" [label=] +"l16" -> "l14" [label=] +"l17" -> "l0" [label=] +} diff --git a/experiments/saved_results/clients/ra/rise_m4_app/hyp8.dot b/experiments/saved_results/clients/ra/rise_m4_app/hyp8.dot new file mode 100644 index 00000000..3d5bb62d --- /dev/null +++ b/experiments/saved_results/clients/ra/rise_m4_app/hyp8.dot @@ -0,0 +1,88 @@ +digraph RA { +"" [shape=none,label=<>] +"l0" [shape=doublecircle] +"l1" [shape=doublecircle] +"l2" [shape=circle] +"l3" [shape=circle] +"l4" [shape=doublecircle] +"l5" [shape=doublecircle] +"l6" [shape=doublecircle] +"l7" [shape=doublecircle] +"l8" [shape=doublecircle] +"l9" [shape=doublecircle] +"l10" [shape=doublecircle] +"l11" [shape=doublecircle] +"l12" [shape=doublecircle] +"l13" [shape=doublecircle] +"l14" [shape=doublecircle] +"l15" [shape=doublecircle] +"l16" [shape=doublecircle] +"l17" [shape=doublecircle] +"l18" [shape=doublecircle] +"" -> "l0" +"l0" -> "l1" [label=] +"l0" -> "l1" [label=] +"l0" -> "l1" [label=] +"l0" -> "l1" [label=] +"l0" -> "l1" [label=] +"l0" -> "l1" [label=] +"l0" -> "l4" [label=] +"l0" -> "l5" [label=] +"l0" -> "l17" [label=] +"l1" -> "l6" [label=] +"l4" -> "l8" [label=] +"l5" -> "l12" [label=] +"l6" -> "l7" [label=] +"l6" -> "l7" [label=] +"l6" -> "l7" [label=] +"l6" -> "l7" [label=] +"l6" -> "l7" [label=] +"l6" -> "l7" [label=] +"l6" -> "l7" [label=] +"l6" -> "l7" [label=] +"l6" -> "l7" [label=] +"l7" -> "l6" [label=] +"l8" -> "l1" [label=] +"l8" -> "l1" [label=] +"l8" -> "l1" [label=] +"l8" -> "l1" [label=] +"l8" -> "l9" [label=] +"l8" -> "l9" [label=] +"l8" -> "l10" [label=] +"l8" -> "l18" [label=] +"l8" -> "l18" [label=] +"l9" -> "l11" [label=] +"l10" -> "l11" [label=] +"l11" -> "l1" [label=] +"l11" -> "l1" [label=] +"l11" -> "l1" [label=] +"l11" -> "l1" [label=] +"l11" -> "l1" [label=] +"l11" -> "l1" [label=] +"l11" -> "l1" [label=] +"l11" -> "l5" [label=] +"l11" -> "l5" [label=] +"l12" -> "l1" [label=] +"l12" -> "l1" [label=] +"l12" -> "l1" [label=] +"l12" -> "l1" [label=] +"l12" -> "l1" [label=] +"l12" -> "l1" [label=] +"l12" -> "l5" [label=] +"l12" -> "l5" [label=] +"l12" -> "l13" [label=] +"l13" -> "l14" [label=] +"l14" -> "l1" [label=] +"l14" -> "l1" [label=] +"l14" -> "l1" [label=] +"l14" -> "l1" [label=] +"l14" -> "l9" [label=] +"l14" -> "l9" [label=] +"l14" -> "l15" [label=] +"l14" -> "l16" [label=] +"l14" -> "l16" [label=] +"l15" -> "l11" [label=] +"l16" -> "l14" [label=] +"l17" -> "l0" [label=] +"l18" -> "l8" [label=] +} diff --git a/experiments/saved_results/clients/ra/rise_m4_app/hyp9.dot b/experiments/saved_results/clients/ra/rise_m4_app/hyp9.dot new file mode 100644 index 00000000..e536990c --- /dev/null +++ b/experiments/saved_results/clients/ra/rise_m4_app/hyp9.dot @@ -0,0 +1,90 @@ +digraph RA { +"" [shape=none,label=<>] +"l0" [shape=doublecircle] +"l1" [shape=doublecircle] +"l2" [shape=circle] +"l3" [shape=circle] +"l4" [shape=doublecircle] +"l5" [shape=doublecircle] +"l6" [shape=doublecircle] +"l7" [shape=doublecircle] +"l8" [shape=doublecircle] +"l9" [shape=doublecircle] +"l10" [shape=doublecircle] +"l11" [shape=doublecircle] +"l12" [shape=doublecircle] +"l13" [shape=doublecircle] +"l14" [shape=doublecircle] +"l15" [shape=doublecircle] +"l16" [shape=doublecircle] +"l17" [shape=doublecircle] +"l18" [shape=doublecircle] +"l19" [shape=doublecircle] +"" -> "l0" +"l0" -> "l1" [label=] +"l0" -> "l1" [label=] +"l0" -> "l1" [label=] +"l0" -> "l1" [label=] +"l0" -> "l1" [label=] +"l0" -> "l1" [label=] +"l0" -> "l4" [label=] +"l0" -> "l5" [label=] +"l0" -> "l17" [label=] +"l1" -> "l6" [label=] +"l4" -> "l8" [label=] +"l5" -> "l12" [label=] +"l6" -> "l7" [label=] +"l6" -> "l7" [label=] +"l6" -> "l7" [label=] +"l6" -> "l7" [label=] +"l6" -> "l7" [label=] +"l6" -> "l7" [label=] +"l6" -> "l7" [label=] +"l6" -> "l7" [label=] +"l6" -> "l7" [label=] +"l7" -> "l6" [label=] +"l8" -> "l1" [label=] +"l8" -> "l1" [label=] +"l8" -> "l1" [label=] +"l8" -> "l1" [label=] +"l8" -> "l9" [label=] +"l8" -> "l9" [label=] +"l8" -> "l10" [label=] +"l8" -> "l18" [label=] +"l8" -> "l18" [label=] +"l9" -> "l11" [label=] +"l10" -> "l11" [label=] +"l11" -> "l1" [label=] +"l11" -> "l1" [label=] +"l11" -> "l1" [label=] +"l11" -> "l1" [label=] +"l11" -> "l1" [label=] +"l11" -> "l1" [label=] +"l11" -> "l1" [label=] +"l11" -> "l19" [label=] +"l11" -> "l19" [label=] +"l12" -> "l1" [label=] +"l12" -> "l1" [label=] +"l12" -> "l1" [label=] +"l12" -> "l1" [label=] +"l12" -> "l1" [label=] +"l12" -> "l1" [label=] +"l12" -> "l5" [label=] +"l12" -> "l5" [label=] +"l12" -> "l13" [label=] +"l13" -> "l14" [label=] +"l14" -> "l1" [label=] +"l14" -> "l1" [label=] +"l14" -> "l1" [label=] +"l14" -> "l1" [label=] +"l14" -> "l9" [label=] +"l14" -> "l9" [label=] +"l14" -> "l15" [label=] +"l14" -> "l16" [label=] +"l14" -> "l16" [label=] +"l15" -> "l11" [label=] +"l16" -> "l14" [label=] +"l17" -> "l0" [label=] +"l18" -> "l8" [label=] +"l19" -> "l11" [label=] +} diff --git a/experiments/saved_results/clients/ra/rise_m4_app/learnedModel.dot b/experiments/saved_results/clients/ra/rise_m4_app/learnedModel.dot new file mode 100644 index 00000000..b77c7913 --- /dev/null +++ b/experiments/saved_results/clients/ra/rise_m4_app/learnedModel.dot @@ -0,0 +1,102 @@ +digraph RA { +"" [shape=none,label=<>] +"l0" [shape=doublecircle] +"l1" [shape=doublecircle] +"l2" [shape=circle] +"l3" [shape=circle] +"l4" [shape=doublecircle] +"l5" [shape=doublecircle] +"l6" [shape=doublecircle] +"l7" [shape=doublecircle] +"l8" [shape=doublecircle] +"l9" [shape=doublecircle] +"l10" [shape=doublecircle] +"l11" [shape=doublecircle] +"l12" [shape=doublecircle] +"l13" [shape=doublecircle] +"l14" [shape=doublecircle] +"l15" [shape=doublecircle] +"l16" [shape=doublecircle] +"l17" [shape=doublecircle] +"l18" [shape=doublecircle] +"l19" [shape=doublecircle] +"l20" [shape=doublecircle] +"l21" [shape=doublecircle] +"" -> "l0" +"l0" -> "l1" [label=] +"l0" -> "l1" [label=] +"l0" -> "l1" [label=] +"l0" -> "l1" [label=] +"l0" -> "l1" [label=] +"l0" -> "l1" [label=] +"l0" -> "l4" [label=] +"l0" -> "l5" [label=] +"l0" -> "l17" [label=] +"l1" -> "l6" [label=] +"l4" -> "l8" [label=] +"l5" -> "l12" [label=] +"l6" -> "l7" [label=] +"l6" -> "l7" [label=] +"l6" -> "l7" [label=] +"l6" -> "l7" [label=] +"l6" -> "l7" [label=] +"l6" -> "l7" [label=] +"l6" -> "l7" [label=] +"l6" -> "l7" [label=] +"l6" -> "l7" [label=] +"l7" -> "l6" [label=] +"l8" -> "l1" [label=] +"l8" -> "l1" [label=] +"l8" -> "l1" [label=] +"l8" -> "l1" [label=] +"l8" -> "l9" [label=] +"l8" -> "l9" [label=] +"l8" -> "l10" [label=] +"l8" -> "l18" [label=] +"l8" -> "l18" [label=] +"l9" -> "l11" [label=] +"l10" -> "l20" [label=] +"l11" -> "l1" [label=] +"l11" -> "l1" [label=] +"l11" -> "l1" [label=] +"l11" -> "l1" [label=] +"l11" -> "l1" [label=] +"l11" -> "l1" [label=] +"l11" -> "l1" [label=] +"l11" -> "l19" [label=] +"l11" -> "l19" [label=] +"l12" -> "l1" [label=] +"l12" -> "l1" [label=] +"l12" -> "l1" [label=] +"l12" -> "l1" [label=] +"l12" -> "l1" [label=] +"l12" -> "l1" [label=] +"l12" -> "l5" [label=] +"l12" -> "l5" [label=] +"l12" -> "l13" [label=] +"l13" -> "l14" [label=] +"l14" -> "l1" [label=] +"l14" -> "l1" [label=] +"l14" -> "l1" [label=] +"l14" -> "l1" [label=] +"l14" -> "l9" [label=] +"l14" -> "l9" [label=] +"l14" -> "l15" [label=] +"l14" -> "l16" [label=] +"l14" -> "l16" [label=] +"l15" -> "l11" [label=] +"l16" -> "l14" [label=] +"l17" -> "l0" [label=] +"l18" -> "l8" [label=] +"l19" -> "l11" [label=] +"l20" -> "l1" [label=] +"l20" -> "l1" [label=] +"l20" -> "l1" [label=] +"l20" -> "l1" [label=] +"l20" -> "l1" [label=] +"l20" -> "l1" [label=] +"l20" -> "l1" [label=] +"l20" -> "l1" [label=] +"l20" -> "l21" [label=] +"l21" -> "l20" [label=] +} diff --git a/experiments/saved_results/clients/ra/rise_m4_app/learnedModel.pdf b/experiments/saved_results/clients/ra/rise_m4_app/learnedModel.pdf new file mode 100644 index 00000000..52d36732 Binary files /dev/null and b/experiments/saved_results/clients/ra/rise_m4_app/learnedModel.pdf differ diff --git a/experiments/saved_results/clients/ra/rise_m4_app/learnedModelShortNames.pdf b/experiments/saved_results/clients/ra/rise_m4_app/learnedModelShortNames.pdf new file mode 100644 index 00000000..d68484e9 Binary files /dev/null and b/experiments/saved_results/clients/ra/rise_m4_app/learnedModelShortNames.pdf differ diff --git a/experiments/saved_results/clients/ra/rise_m4_app/learnedModelbtf.dot b/experiments/saved_results/clients/ra/rise_m4_app/learnedModelbtf.dot new file mode 100644 index 00000000..2753ee7a --- /dev/null +++ b/experiments/saved_results/clients/ra/rise_m4_app/learnedModelbtf.dot @@ -0,0 +1,102 @@ +digraph RA { +"" [shape=none,label=<>] +"l0" [shape=doublecircle] +"l1" [shape=doublecircle] +"l2" [shape=circle] +"l3" [shape=circle] +"l4" [shape=doublecircle] +"l5" [shape=doublecircle] +"l6" [shape=doublecircle] +"l7" [shape=doublecircle] +"l8" [shape=doublecircle] +"l9" [shape=doublecircle] +"l10" [shape=doublecircle] +"l11" [shape=doublecircle] +"l12" [shape=doublecircle] +"l13" [shape=doublecircle] +"l14" [shape=doublecircle] +"l15" [shape=doublecircle] +"l16" [shape=doublecircle] +"l17" [shape=doublecircle] +"l18" [shape=doublecircle] +"l19" [shape=doublecircle] +"l20" [shape=doublecircle] +"l21" [shape=doublecircle] +"" -> "l0" +"l0" -> "l1" [label=] +"l0" -> "l1" [label=] +"l0" -> "l1" [label=] +"l0" -> "l1" [label=] +"l0" -> "l1" [label=] +"l0" -> "l1" [label=] +"l0" -> "l4" [label=] +"l0" -> "l5" [label=] +"l0" -> "l17" [label=] +"l1" -> "l6" [label=] +"l4" -> "l8" [label=] +"l5" -> "l12" [label=] +"l6" -> "l7" [label=] +"l6" -> "l7" [label=] +"l6" -> "l7" [label=] +"l6" -> "l7" [label=] +"l6" -> "l7" [label=] +"l6" -> "l7" [label=] +"l6" -> "l7" [label=] +"l6" -> "l7" [label=] +"l6" -> "l7" [label=] +"l7" -> "l6" [label=] +"l8" -> "l1" [label=] +"l8" -> "l1" [label=] +"l8" -> "l1" [label=] +"l8" -> "l1" [label=] +"l8" -> "l9" [label=] +"l8" -> "l9" [label=] +"l8" -> "l10" [label=] +"l8" -> "l18" [label=] +"l8" -> "l18" [label=] +"l9" -> "l11" [label=] +"l10" -> "l20" [label=] +"l11" -> "l1" [label=] +"l11" -> "l1" [label=] +"l11" -> "l1" [label=] +"l11" -> "l1" [label=] +"l11" -> "l1" [label=] +"l11" -> "l1" [label=] +"l11" -> "l1" [label=] +"l11" -> "l19" [label=] +"l11" -> "l19" [label=] +"l12" -> "l1" [label=] +"l12" -> "l1" [label=] +"l12" -> "l1" [label=] +"l12" -> "l1" [label=] +"l12" -> "l1" [label=] +"l12" -> "l1" [label=] +"l12" -> "l5" [label=] +"l12" -> "l5" [label=] +"l12" -> "l13" [label=] +"l13" -> "l14" [label=] +"l14" -> "l1" [label=] +"l14" -> "l1" [label=] +"l14" -> "l1" [label=] +"l14" -> "l1" [label=] +"l14" -> "l9" [label=] +"l14" -> "l9" [label=] +"l14" -> "l15" [label=] +"l14" -> "l16" [label=] +"l14" -> "l16" [label=] +"l15" -> "l11" [label=] +"l16" -> "l14" [label=] +"l17" -> "l0" [label=] +"l18" -> "l8" [label=] +"l19" -> "l11" [label=] +"l20" -> "l1" [label=] +"l20" -> "l1" [label=] +"l20" -> "l1" [label=] +"l20" -> "l1" [label=] +"l20" -> "l1" [label=] +"l20" -> "l1" [label=] +"l20" -> "l1" [label=] +"l20" -> "l1" [label=] +"l20" -> "l21" [label=] +"l21" -> "l20" [label=] +} diff --git a/experiments/saved_results/clients/ra/rise_m4_app/mapper_connection.config b/experiments/saved_results/clients/ra/rise_m4_app/mapper_connection.config new file mode 100644 index 00000000..97827755 --- /dev/null +++ b/experiments/saved_results/clients/ra/rise_m4_app/mapper_connection.config @@ -0,0 +1,153 @@ +# Californium3 CoAP Properties file for EdhocMapper +# +# Random factor for initial CoAP acknowledge timeout. +# Default: 1.5 +COAP.ACK_INIT_RANDOM=1.5 +# Initial CoAP acknowledge timeout. +# Default: 2[s] +# Adjust MAX_ACK_TIMEOUT to add more time +COAP.ACK_TIMEOUT=10[s] +# Scale factor for CoAP acknowledge backoff-timeout. +# Default: 2.0 +COAP.ACK_TIMEOUT_SCALE=2.0 +# Enable automatic failover on "entity too large" response. +# Default: true +COAP.BLOCKWISE_ENTITY_TOO_LARGE_AUTO_FAILOVER=true +# Reuse token for blockwise requests. Ease traceability but may introduce +# vulnerability. +# Default: false +COAP.BLOCKWISE_REUSE_TOKEN=false +# Interval to validate lifetime of blockwise status. +# Default: 5[s] +COAP.BLOCKWISE_STATUS_INTERVAL=5[s] +# Lifetime of blockwise status. +# Default: 5[min] +COAP.BLOCKWISE_STATUS_LIFETIME=5[min] +# Use block2 option strictly, even if block2 is not required. +# Default: false +COAP.BLOCKWISE_STRICT_BLOCK2_OPTION=false +# CoAP port. +# Default: 5683 +COAP.COAP_PORT=5683 +# CoAP DTLS port. +# Default: 5684 +COAP.COAP_SECURE_PORT=5684 +# Congestion-Control algorithm (still experimental). +# [NULL, COCOA, COCOA_STRONG, BASIC_RTO, LINUX_RTO, PEAKHOPPER_RTO]. +# Default: NULL +COAP.CONGESTION_CONTROL_ALGORITHM=NULL +# Crop rotation period. +# Default: 247[s] +COAP.CROP_ROTATION_PERIOD=247[s] +# Deduplicator algorithm. +# [MARK_AND_SWEEP, PEERS_MARK_AND_SWEEP, CROP_ROTATION, NO_DEDUPLICATOR]. +# Default: MARK_AND_SWEEP +COAP.DEDUPLICATOR=MARK_AND_SWEEP +# Automatic replace entries in deduplicator. +# Default: true +COAP.DEDUPLICATOR_AUTO_REPLACE=true +# CoAP maximum exchange lifetime for CON requests. +# Default: 247[s] +COAP.EXCHANGE_LIFETIME=247[s] +# Timespan a multicast server may spread the response. +# Default: 5[s] +COAP.LEISURE=5[s] +# Mark and sweep interval. +# Default: 10[s] +COAP.MARK_AND_SWEEP_INTERVAL=10[s] +# Maximum CoAP acknowledge timeout. +# Default: 1[min] +# Should be: ACK_TIMEOUT <= MAX_ACK_TIMEOUT +COAP.MAX_ACK_TIMEOUT=10[s] +# Maximum number of active peers. +# Default: 150000 +COAP.MAX_ACTIVE_PEERS=150000 +# Maximum transmission latency for messages. +# Default: 100[s] +COAP.MAX_LATENCY=100[s] +# Maximum payload size. +# Default: 1024 +COAP.MAX_MESSAGE_SIZE=1024 +# Maximum inactive period of peer. +# Default: 10[min] +COAP.MAX_PEER_INACTIVITY_PERIOD=10[min] +# Maximum size of resource body. 0 to disable transparent blockwise +# mode. +# Default: 8192 +COAP.MAX_RESOURCE_BODY_SIZE=8192 +# Maximum number of CoAP retransmissions. +# Default: 4 +# Should be >= 0 (0: no retransmissions) +COAP.MAX_RETRANSMIT=0 +# Maximum number of observes on server-side. 0 to disable this limitation. +# Default: 50000 +COAP.MAX_SERVER_OBSERVES=50000 +# Maximum server response delay. +# Default: 250[s] +COAP.MAX_SERVER_RESPONSE_DELAY=250[s] +# Maximum time to wait for ACK or RST after the first transmission of +# a CON message. +# Default: 93[s] +COAP.MAX_TRANSMIT_WAIT=93[s] +# MID tracker. +# [NULL, GROUPED, MAPBASED]. +# Default: GROUPED +COAP.MID_TACKER=GROUPED +# Number of MID tracker groups. +# Default: 16 +COAP.MID_TRACKER_GROUPS=16 +# Base MID for multicast requests. +# Default: 65000 +COAP.MULTICAST_BASE_MID=65000 +# CoAP maximum lifetime for NON requests. +# Default: 145[s] +COAP.NON_LIFETIME=145[s] +# Interval time to check notifications receiver using a CON message. +# Default: 2[min] +COAP.NOTIFICATION_CHECK_INTERVAL=2[min] +# Interval counter to check notifications receiver using a CON message. +# Default: 100 +COAP.NOTIFICATION_CHECK_INTERVAL_COUNT=100 +# Additional time (backoff) to the max-age option +# for waiting for the next notification before reregister. +# Default: 2[s] +COAP.NOTIFICATION_REREGISTRATION_BACKOFF=2[s] +# Maximum concurrent transmissions. +# Default: 1 +COAP.NSTART=1 +# Maximum messages kept per peer for PEERS_MARK_AND_SWEEP. +# Default: 64 +COAP.PEERS_MARK_AND_SWEEP_MESSAGES=64 +# Preferred blocksize for blockwise transfer. +# Default: 512 +COAP.PREFERRED_BLOCK_SIZE=512 +# Probing rate to peers, which didn't response before. Currently not +# used. +# Default: 1.0 +COAP.PROBING_RATE=1.0 +# Protocol stage thread count. +# Default: 1 +COAP.PROTOCOL_STAGE_THREAD_COUNT=1 +# Response matching mode. +# [STRICT, RELAXED, PRINCIPAL, PRINCIPAL_IDENTITY]. +# Default: STRICT +COAP.RESPONSE_MATCHING=STRICT +# Process empty messages strictly according RFC7252, 4.1 as format error. +# Disable to ignore additional data as tokens or options. +# Default: true +COAP.STRICT_EMPTY_MESSAGE_FORMAT=false +# Number of block per TCP-blockwise bulk transfer. +# Default: 1 +COAP.TCP_NUMBER_OF_BULK_BLOCKS=1 +# Limit of token size. +# Default: 8 +COAP.TOKEN_SIZE_LIMIT=8 +# Use message off-loading, when data is not longer required. +# Default: false +COAP.USE_MESSAGE_OFFLOADING=false +# Use initially a random value for MID. +# Default: true +COAP.USE_RANDOM_MID_START=true +# Health status interval. 0 to disable the health status. +# Default: 0[ms] +SYS.HEALTH_STATUS_INTERVAL=0[ms] diff --git a/experiments/saved_results/clients/ra/rise_m4_app/statistics.txt b/experiments/saved_results/clients/ra/rise_m4_app/statistics.txt new file mode 100644 index 00000000..9e2fce18 --- /dev/null +++ b/experiments/saved_results/clients/ra/rise_m4_app/statistics.txt @@ -0,0 +1,128 @@ +=== RUN DESCRIPTION === +Alphabet: [?EDHOC_MESSAGE_1_INPUT[C_I], !EDHOC_MESSAGE_1_OUTPUT[C_I], !EDHOC_MESSAGE_2_OUTPUT[], ?EDHOC_MESSAGE_3_INPUT[], !EDHOC_MESSAGE_3_OUTPUT[], !EDHOC_MESSAGE_4_OUTPUT[], !UNSUCCESSFUL_MESSAGE[], !COAP_EMPTY_MESSAGE_OUTPUT[], !EDHOC_MESSAGE_3_OSCORE_APP_OUTPUT[C_I], ?EDHOC_ERROR_MESSAGE_INPUT[], !COAP_APP_MESSAGE_OUTPUT[], !COAP_MESSAGE_OUTPUT[], !COAP_ERROR_MESSAGE_OUTPUT[], ?COAP_APP_MESSAGE_INPUT[], ?COAP_EMPTY_MESSAGE_INPUT[], !OSCORE_APP_MESSAGE_OUTPUT[], !SOCKET_CLOSED[], !EDHOC_ERROR_MESSAGE_OUTPUT[], ?EDHOC_MESSAGE_2_INPUT[], !DISABLED[], ?EDHOC_MESSAGE_4_INPUT[], !UNSUPPORTED_MESSAGE[], !TIMEOUT[], !UNKNOWN[], ?EDHOC_MESSAGE_3_OSCORE_APP_INPUT[C_I], ?OSCORE_APP_MESSAGE_INPUT[]] + +StateFuzzerConfig Parameters +Help: false +Debug: false +Quiet: false +Output Directory: experiments/results/clients/ra/rise_m4_app +Fuzzing Client: true + +LearnerConfigStandard Parameters +Alphabet: ./src/main/resources/alphabet_placeholder.xml +Learning Algorithm: RASTAR +Equivalence Algorithms: [IO_RANDOM_WALK] +Max Depth: 1 +Min Length: 5 +Max Length: 15 +Max Equivalence Queries: 1000 +Runs Per Membership Query: 1 +Random Length: 5 +Membership Query Retries: 3 +Log Queries: true +Prob Reset: 0.0 +Test File: null +Seed: 7 +Cache Tests: false +Ce Sanitization: true +Skip Non Det Tests: false +Ce Reruns: 3 +Probabilistic Sanitization: true +Time Limit: null +Test Limit: null +Round Limit: null +IOMode: true +Probability of Choosing a New DataValue: 0.5 +Max Runs: 10000 +Max Depth for Register Automata: 10 +Reset Runs: false +Seed transitions: false +Draw symbols uniformly: false + +SulConfig Parameters +Fuzzing Role: client +Fuzzing Client: true +Response Wait: 100 +Input Response Timeout: null +Command: null +Terminate Command: null +Process Dir: null +Redirect Output Streams: false +Process Trigger: NEW_TEST +Start Wait: 0 + +SulClientConfig Parameters +Client Wait: 50 +Port: 5683 + +MapperConfig Parameters +Mapper Connection Config: null +Repeating Outputs: null +Socket Closed as Timeout: true +Disabled as Timeout: false +Merge Repeating: true + +EdhocMapperConfig Parameters +Protocol Version: v23 +Combined Message Version: v07 +Edhoc Role: Responder +Edhoc Coap Resource: .well-known/edhoc +App Coap Resource: helloWorld +App Message Code To Coap Server: GET +App Message Payload To Coap Server: +App Message Code To Coap Client: CHANGED +App Message Payload To Coap Client: Server Application Data +Coap Error As Edhoc Error: false +use Content Format: true +use Session Reset: false +use CX Correlation: true +Own Connection Id: 36 +Generate Own Connection Id: true +Force Oscore Sender Id: null +Force Oscore Recipient Id: null + +AuthenticationConfig Parameters +Map Cred Type: X509 +Map Id Cred Type: X5T +Sul Cred Type: X509 +Sul Id Cred Type: X5T +Trust Model: STRICT + +TestVectorAuthenticationConfig Parameters +Test Vector File: experiments/authentication/test_vectors/test_vectors_rise.json +Test Vector Key: test_vector_ed25519 +Test Vector Peer Key Curve: Ed25519 + +SulAdapterConfig Parameters +Adapter Port: null +Adapter Address: localhost + +=== STATISTICS === +Learning finished: true +Size of the input alphabet: 26 +Number of states: 22 +Number of hypotheses: 11 +Number of inputs: 101125 +Number of tests: 10444 +Number of learning inputs: 1191 +Number of learning tests: 444 +Number of inputs up to last hypothesis: 18825 +Number of tests up to last hypothesis: 2214 +Time (ms) to learn model: 10500455 +Counterexamples: +CE 1:Query[ε|EDHOC_MESSAGE_4_INPUT[] TIMEOUT[] COAP_EMPTY_MESSAGE_INPUT[] SOCKET_CLOSED[] / true] +CE 2:Query[ε|EDHOC_MESSAGE_2_INPUT[] EDHOC_MESSAGE_3_OUTPUT[] EDHOC_MESSAGE_4_INPUT[] OSCORE_APP_MESSAGE_OUTPUT[] / true] +CE 3:Query[ε|EDHOC_MESSAGE_2_INPUT[] EDHOC_MESSAGE_3_OUTPUT[] EDHOC_MESSAGE_4_INPUT[] OSCORE_APP_MESSAGE_OUTPUT[] EDHOC_MESSAGE_3_OSCORE_APP_INPUT[0[C_I]] UNSUPPORTED_MESSAGE[] EDHOC_MESSAGE_2_INPUT[] TIMEOUT[] / true] +CE 4:Query[ε|EDHOC_MESSAGE_3_OSCORE_APP_INPUT[0[C_I]] UNSUPPORTED_MESSAGE[] EDHOC_MESSAGE_2_INPUT[] EDHOC_MESSAGE_3_OUTPUT[] EDHOC_MESSAGE_4_INPUT[] UNSUCCESSFUL_MESSAGE[] / true] +CE 5:Query[ε|EDHOC_MESSAGE_3_OSCORE_APP_INPUT[0[C_I]] UNSUPPORTED_MESSAGE[] EDHOC_MESSAGE_2_INPUT[] EDHOC_MESSAGE_3_OUTPUT[] EDHOC_MESSAGE_3_OSCORE_APP_INPUT[1[C_I]] UNSUPPORTED_MESSAGE[] EDHOC_MESSAGE_4_INPUT[] UNSUCCESSFUL_MESSAGE[] / true] +CE 6:Query[ε|OSCORE_APP_MESSAGE_INPUT[] UNSUPPORTED_MESSAGE[] EDHOC_MESSAGE_2_INPUT[] EDHOC_MESSAGE_3_OUTPUT[] EDHOC_MESSAGE_4_INPUT[] OSCORE_APP_MESSAGE_OUTPUT[] / true] +CE 7:Query[ε|EDHOC_MESSAGE_2_INPUT[] EDHOC_MESSAGE_3_OUTPUT[] EDHOC_MESSAGE_3_OSCORE_APP_INPUT[0[C_I]] UNSUPPORTED_MESSAGE[] EDHOC_MESSAGE_2_INPUT[] EDHOC_ERROR_MESSAGE_OUTPUT[] / true] +CE 8:Query[ε|EDHOC_MESSAGE_2_INPUT[] EDHOC_MESSAGE_3_OUTPUT[] EDHOC_MESSAGE_3_OSCORE_APP_INPUT[0[C_I]] UNSUPPORTED_MESSAGE[] EDHOC_MESSAGE_3_INPUT[] EDHOC_ERROR_MESSAGE_OUTPUT[] OSCORE_APP_MESSAGE_INPUT[] UNSUPPORTED_MESSAGE[] EDHOC_MESSAGE_2_INPUT[] TIMEOUT[] / true] +CE 9:Query[ε|EDHOC_MESSAGE_2_INPUT[] EDHOC_MESSAGE_3_OUTPUT[] EDHOC_MESSAGE_4_INPUT[] OSCORE_APP_MESSAGE_OUTPUT[] OSCORE_APP_MESSAGE_INPUT[] TIMEOUT[] / true] +CE 10:Query[ε|OSCORE_APP_MESSAGE_INPUT[] UNSUPPORTED_MESSAGE[] EDHOC_MESSAGE_2_INPUT[] EDHOC_MESSAGE_3_OUTPUT[] EDHOC_MESSAGE_4_INPUT[] OSCORE_APP_MESSAGE_OUTPUT[] EDHOC_MESSAGE_3_OSCORE_APP_INPUT[0[C_I]] UNSUPPORTED_MESSAGE[] OSCORE_APP_MESSAGE_INPUT[] TIMEOUT[] / true] +Number of inputs when hypothesis was generated: [27, 110, 367, 754, 1091, 1329, 3378, 3698, 8479, 13271, 18825] +Number of tests when hypothesis was generated: [27, 70, 134, 209, 292, 353, 582, 624, 1117, 1632, 2214] +Time (ms) when hypothesis was generated: [23821, 67516, 126177, 195225, 265706, 312883, 538180, 576613, 1074422, 1589191, 2169689] +Number of inputs when counterexample was found: [29, 262, 631, 917, 1155, 3252, 3671, 8413, 13112, 18696] +Number of tests when counterexample was found: [28, 86, 161, 226, 299, 546, 612, 1096, 1581, 2175] +Time (ms) when counterexample was found: [24850, 83515, 153853, 212014, 272309, 508492, 568123, 1056148, 1546409, 2139940] diff --git a/experiments/saved_results/clients/ra/sifis-home_phase_1/command.args b/experiments/saved_results/clients/ra/sifis-home_phase_1/command.args new file mode 100644 index 00000000..e9199d5c --- /dev/null +++ b/experiments/saved_results/clients/ra/sifis-home_phase_1/command.args @@ -0,0 +1,79 @@ +state-fuzzer-client + + +##### StateFuzzerConfig ##### +-output +${results.learning.clients.ra}/sifis-home_phase_1 + + +##### LearnerConfig ##### +-learningAlgorithm +RaStar +-equivalenceAlgorithms +IO_RANDOM_WALK +-logQueries +-alphabet +./src/main/resources/alphabet_placeholder.xml +-maxDepthRA +10 +-probNewDataValue +0.5 +-seed +7 + + + +##### EdhocMapperConfig ##### +-protocolVersion +v22 + +-combinedMessageVersion +v07 + +## Mapper Auth ## + +-mapCredType +X509 + +-mapIdCredType +X5T + +## Sul Auth ## + +-sulCredType +X509 + +-sulIdCredType +X5T + +# TestVector +-testVectorJson +${authentication.test_vectors}/test_vectors_sifis_home.json + +-testVectorJsonKey +test_vector_ed25519_phases_1_3 + +-testVectorPeerKeyCurve +Ed25519 + +-edhocRole +Responder + +-appCoapResource +light + + +##### SulConfig ##### +-responseWait +400 +-processDir +${models.clients}/sifis-home +-cmd +java -cp edhoc-applications.jar se.sics.edhocapps.Phase1Client -server coap://localhost:5683 1q +-startWait +100 + + +##### EdhocSulClientConfig ##### +-port +5683 diff --git a/experiments/saved_results/clients/ra/sifis-home_phase_1/hyp1.dot b/experiments/saved_results/clients/ra/sifis-home_phase_1/hyp1.dot new file mode 100644 index 00000000..e2669d1c --- /dev/null +++ b/experiments/saved_results/clients/ra/sifis-home_phase_1/hyp1.dot @@ -0,0 +1,22 @@ +digraph RA { +"" [shape=none,label=<>] +"l0" [shape=doublecircle] +"l1" [shape=doublecircle] +"l2" [shape=circle] +"l3" [shape=circle] +"l4" [shape=doublecircle] +"l5" [shape=doublecircle] +"" -> "l0" +"l0" -> "l1" [label=] +"l0" -> "l1" [label=] +"l0" -> "l1" [label=] +"l0" -> "l1" [label=] +"l0" -> "l1" [label=] +"l0" -> "l1" [label=] +"l0" -> "l4" [label=] +"l0" -> "l5" [label=] +"l0" -> "l5" [label=] +"l1" -> "l0" [label=] +"l4" -> "l0" [label=] +"l5" -> "l0" [label=] +} diff --git a/experiments/saved_results/clients/ra/sifis-home_phase_1/hyp10.dot b/experiments/saved_results/clients/ra/sifis-home_phase_1/hyp10.dot new file mode 100644 index 00000000..63605148 --- /dev/null +++ b/experiments/saved_results/clients/ra/sifis-home_phase_1/hyp10.dot @@ -0,0 +1,110 @@ +digraph RA { +"" [shape=none,label=<>] +"l0" [shape=doublecircle] +"l1" [shape=doublecircle] +"l2" [shape=circle] +"l3" [shape=circle] +"l4" [shape=doublecircle] +"l5" [shape=doublecircle] +"l6" [shape=doublecircle] +"l7" [shape=doublecircle] +"l8" [shape=doublecircle] +"l9" [shape=doublecircle] +"l10" [shape=doublecircle] +"l11" [shape=doublecircle] +"l12" [shape=doublecircle] +"l13" [shape=doublecircle] +"l14" [shape=doublecircle] +"l15" [shape=doublecircle] +"l16" [shape=doublecircle] +"l17" [shape=doublecircle] +"l18" [shape=doublecircle] +"l19" [shape=doublecircle] +"l20" [shape=doublecircle] +"l21" [shape=doublecircle] +"" -> "l0" +"l0" -> "l1" [label=] +"l0" -> "l1" [label=] +"l0" -> "l1" [label=] +"l0" -> "l1" [label=] +"l0" -> "l1" [label=] +"l0" -> "l1" [label=] +"l0" -> "l4" [label=] +"l0" -> "l5" [label=] +"l0" -> "l17" [label=] +"l1" -> "l6" [label=] +"l4" -> "l8" [label=] +"l5" -> "l13" [label=] +"l6" -> "l7" [label=] +"l6" -> "l7" [label=] +"l6" -> "l7" [label=] +"l6" -> "l7" [label=] +"l6" -> "l7" [label=] +"l6" -> "l7" [label=] +"l6" -> "l7" [label=] +"l6" -> "l7" [label=] +"l6" -> "l7" [label=] +"l7" -> "l6" [label=] +"l8" -> "l1" [label=] +"l8" -> "l1" [label=] +"l8" -> "l1" [label=] +"l8" -> "l1" [label=] +"l8" -> "l1" [label=] +"l8" -> "l9" [label=] +"l8" -> "l9" [label=] +"l8" -> "l10" [label=] +"l8" -> "l10" [label=] +"l9" -> "l11" [label=] +"l10" -> "l8" [label=] +"l11" -> "l5" [label=] +"l11" -> "l12" [label=] +"l11" -> "l12" [label=] +"l11" -> "l12" [label=] +"l11" -> "l12" [label=] +"l11" -> "l12" [label=] +"l11" -> "l12" [label=] +"l11" -> "l12" [label=] +"l11" -> "l12" [label=] +"l12" -> "l19" [label=] +"l13" -> "l1" [label=] +"l13" -> "l1" [label=] +"l13" -> "l1" [label=] +"l13" -> "l1" [label=] +"l13" -> "l1" [label=] +"l13" -> "l1" [label=] +"l13" -> "l5" [label=] +"l13" -> "l5" [label=] +"l13" -> "l14" [label=] +"l14" -> "l15" [label=] +"l15" -> "l1" [label=] +"l15" -> "l1" [label=] +"l15" -> "l1" [label=] +"l15" -> "l1" [label=] +"l15" -> "l1" [label=] +"l15" -> "l16" [label=] +"l15" -> "l16" [label=] +"l15" -> "l18" [label=] +"l15" -> "l18" [label=] +"l16" -> "l21" [label=] +"l17" -> "l0" [label=] +"l18" -> "l15" [label=] +"l19" -> "l20" [label=] +"l19" -> "l20" [label=] +"l19" -> "l20" [label=] +"l19" -> "l20" [label=] +"l19" -> "l20" [label=] +"l19" -> "l20" [label=] +"l19" -> "l20" [label=] +"l19" -> "l20" [label=] +"l19" -> "l20" [label=] +"l20" -> "l19" [label=] +"l21" -> "l5" [label=] +"l21" -> "l5" [label=] +"l21" -> "l12" [label=] +"l21" -> "l12" [label=] +"l21" -> "l12" [label=] +"l21" -> "l12" [label=] +"l21" -> "l12" [label=] +"l21" -> "l12" [label=] +"l21" -> "l12" [label=] +} diff --git a/experiments/saved_results/clients/ra/sifis-home_phase_1/hyp11.dot b/experiments/saved_results/clients/ra/sifis-home_phase_1/hyp11.dot new file mode 100644 index 00000000..753a9752 --- /dev/null +++ b/experiments/saved_results/clients/ra/sifis-home_phase_1/hyp11.dot @@ -0,0 +1,112 @@ +digraph RA { +"" [shape=none,label=<>] +"l0" [shape=doublecircle] +"l1" [shape=doublecircle] +"l2" [shape=circle] +"l3" [shape=circle] +"l4" [shape=doublecircle] +"l5" [shape=doublecircle] +"l6" [shape=doublecircle] +"l7" [shape=doublecircle] +"l8" [shape=doublecircle] +"l9" [shape=doublecircle] +"l10" [shape=doublecircle] +"l11" [shape=doublecircle] +"l12" [shape=doublecircle] +"l13" [shape=doublecircle] +"l14" [shape=doublecircle] +"l15" [shape=doublecircle] +"l16" [shape=doublecircle] +"l17" [shape=doublecircle] +"l18" [shape=doublecircle] +"l19" [shape=doublecircle] +"l20" [shape=doublecircle] +"l21" [shape=doublecircle] +"l22" [shape=doublecircle] +"" -> "l0" +"l0" -> "l1" [label=] +"l0" -> "l1" [label=] +"l0" -> "l1" [label=] +"l0" -> "l1" [label=] +"l0" -> "l1" [label=] +"l0" -> "l1" [label=] +"l0" -> "l4" [label=] +"l0" -> "l5" [label=] +"l0" -> "l17" [label=] +"l1" -> "l6" [label=] +"l4" -> "l8" [label=] +"l5" -> "l13" [label=] +"l6" -> "l7" [label=] +"l6" -> "l7" [label=] +"l6" -> "l7" [label=] +"l6" -> "l7" [label=] +"l6" -> "l7" [label=] +"l6" -> "l7" [label=] +"l6" -> "l7" [label=] +"l6" -> "l7" [label=] +"l6" -> "l7" [label=] +"l7" -> "l6" [label=] +"l8" -> "l1" [label=] +"l8" -> "l1" [label=] +"l8" -> "l1" [label=] +"l8" -> "l1" [label=] +"l8" -> "l1" [label=] +"l8" -> "l9" [label=] +"l8" -> "l9" [label=] +"l8" -> "l10" [label=] +"l8" -> "l10" [label=] +"l9" -> "l11" [label=] +"l10" -> "l8" [label=] +"l11" -> "l12" [label=] +"l11" -> "l12" [label=] +"l11" -> "l12" [label=] +"l11" -> "l12" [label=] +"l11" -> "l12" [label=] +"l11" -> "l12" [label=] +"l11" -> "l12" [label=] +"l11" -> "l12" [label=] +"l11" -> "l22" [label=] +"l12" -> "l19" [label=] +"l13" -> "l1" [label=] +"l13" -> "l1" [label=] +"l13" -> "l1" [label=] +"l13" -> "l1" [label=] +"l13" -> "l1" [label=] +"l13" -> "l1" [label=] +"l13" -> "l5" [label=] +"l13" -> "l5" [label=] +"l13" -> "l14" [label=] +"l14" -> "l15" [label=] +"l15" -> "l1" [label=] +"l15" -> "l1" [label=] +"l15" -> "l1" [label=] +"l15" -> "l1" [label=] +"l15" -> "l1" [label=] +"l15" -> "l16" [label=] +"l15" -> "l16" [label=] +"l15" -> "l18" [label=] +"l15" -> "l18" [label=] +"l16" -> "l21" [label=] +"l17" -> "l0" [label=] +"l18" -> "l15" [label=] +"l19" -> "l20" [label=] +"l19" -> "l20" [label=] +"l19" -> "l20" [label=] +"l19" -> "l20" [label=] +"l19" -> "l20" [label=] +"l19" -> "l20" [label=] +"l19" -> "l20" [label=] +"l19" -> "l20" [label=] +"l19" -> "l20" [label=] +"l20" -> "l19" [label=] +"l21" -> "l5" [label=] +"l21" -> "l5" [label=] +"l21" -> "l12" [label=] +"l21" -> "l12" [label=] +"l21" -> "l12" [label=] +"l21" -> "l12" [label=] +"l21" -> "l12" [label=] +"l21" -> "l12" [label=] +"l21" -> "l12" [label=] +"l22" -> "l11" [label=] +} diff --git a/experiments/saved_results/clients/ra/sifis-home_phase_1/hyp12.dot b/experiments/saved_results/clients/ra/sifis-home_phase_1/hyp12.dot new file mode 100644 index 00000000..f9acf845 --- /dev/null +++ b/experiments/saved_results/clients/ra/sifis-home_phase_1/hyp12.dot @@ -0,0 +1,114 @@ +digraph RA { +"" [shape=none,label=<>] +"l0" [shape=doublecircle] +"l1" [shape=doublecircle] +"l2" [shape=circle] +"l3" [shape=circle] +"l4" [shape=doublecircle] +"l5" [shape=doublecircle] +"l6" [shape=doublecircle] +"l7" [shape=doublecircle] +"l8" [shape=doublecircle] +"l9" [shape=doublecircle] +"l10" [shape=doublecircle] +"l11" [shape=doublecircle] +"l12" [shape=doublecircle] +"l13" [shape=doublecircle] +"l14" [shape=doublecircle] +"l15" [shape=doublecircle] +"l16" [shape=doublecircle] +"l17" [shape=doublecircle] +"l18" [shape=doublecircle] +"l19" [shape=doublecircle] +"l20" [shape=doublecircle] +"l21" [shape=doublecircle] +"l22" [shape=doublecircle] +"l23" [shape=doublecircle] +"" -> "l0" +"l0" -> "l1" [label=] +"l0" -> "l1" [label=] +"l0" -> "l1" [label=] +"l0" -> "l1" [label=] +"l0" -> "l1" [label=] +"l0" -> "l1" [label=] +"l0" -> "l4" [label=] +"l0" -> "l5" [label=] +"l0" -> "l17" [label=] +"l1" -> "l6" [label=] +"l4" -> "l8" [label=] +"l5" -> "l13" [label=] +"l6" -> "l7" [label=] +"l6" -> "l7" [label=] +"l6" -> "l7" [label=] +"l6" -> "l7" [label=] +"l6" -> "l7" [label=] +"l6" -> "l7" [label=] +"l6" -> "l7" [label=] +"l6" -> "l7" [label=] +"l6" -> "l7" [label=] +"l7" -> "l6" [label=] +"l8" -> "l1" [label=] +"l8" -> "l1" [label=] +"l8" -> "l1" [label=] +"l8" -> "l1" [label=] +"l8" -> "l1" [label=] +"l8" -> "l9" [label=] +"l8" -> "l9" [label=] +"l8" -> "l10" [label=] +"l8" -> "l10" [label=] +"l9" -> "l11" [label=] +"l10" -> "l8" [label=] +"l11" -> "l12" [label=] +"l11" -> "l12" [label=] +"l11" -> "l12" [label=] +"l11" -> "l12" [label=] +"l11" -> "l12" [label=] +"l11" -> "l12" [label=] +"l11" -> "l12" [label=] +"l11" -> "l12" [label=] +"l11" -> "l22" [label=] +"l12" -> "l19" [label=] +"l13" -> "l1" [label=] +"l13" -> "l1" [label=] +"l13" -> "l1" [label=] +"l13" -> "l1" [label=] +"l13" -> "l1" [label=] +"l13" -> "l1" [label=] +"l13" -> "l5" [label=] +"l13" -> "l5" [label=] +"l13" -> "l14" [label=] +"l14" -> "l15" [label=] +"l15" -> "l1" [label=] +"l15" -> "l1" [label=] +"l15" -> "l1" [label=] +"l15" -> "l1" [label=] +"l15" -> "l1" [label=] +"l15" -> "l16" [label=] +"l15" -> "l16" [label=] +"l15" -> "l18" [label=] +"l15" -> "l18" [label=] +"l16" -> "l21" [label=] +"l17" -> "l0" [label=] +"l18" -> "l15" [label=] +"l19" -> "l20" [label=] +"l19" -> "l20" [label=] +"l19" -> "l20" [label=] +"l19" -> "l20" [label=] +"l19" -> "l20" [label=] +"l19" -> "l20" [label=] +"l19" -> "l20" [label=] +"l19" -> "l20" [label=] +"l19" -> "l20" [label=] +"l20" -> "l19" [label=] +"l21" -> "l12" [label=] +"l21" -> "l12" [label=] +"l21" -> "l12" [label=] +"l21" -> "l12" [label=] +"l21" -> "l12" [label=] +"l21" -> "l12" [label=] +"l21" -> "l12" [label=] +"l21" -> "l23" [label=] +"l21" -> "l23" [label=] +"l22" -> "l11" [label=] +"l23" -> "l21" [label=] +} diff --git a/experiments/saved_results/clients/ra/sifis-home_phase_1/hyp2.dot b/experiments/saved_results/clients/ra/sifis-home_phase_1/hyp2.dot new file mode 100644 index 00000000..aac1c653 --- /dev/null +++ b/experiments/saved_results/clients/ra/sifis-home_phase_1/hyp2.dot @@ -0,0 +1,34 @@ +digraph RA { +"" [shape=none,label=<>] +"l0" [shape=doublecircle] +"l1" [shape=doublecircle] +"l2" [shape=circle] +"l3" [shape=circle] +"l4" [shape=doublecircle] +"l5" [shape=doublecircle] +"l6" [shape=doublecircle] +"l7" [shape=doublecircle] +"" -> "l0" +"l0" -> "l1" [label=] +"l0" -> "l1" [label=] +"l0" -> "l1" [label=] +"l0" -> "l1" [label=] +"l0" -> "l1" [label=] +"l0" -> "l1" [label=] +"l0" -> "l4" [label=] +"l0" -> "l5" [label=] +"l0" -> "l5" [label=] +"l1" -> "l6" [label=] +"l4" -> "l0" [label=] +"l5" -> "l0" [label=] +"l6" -> "l7" [label=] +"l6" -> "l7" [label=] +"l6" -> "l7" [label=] +"l6" -> "l7" [label=] +"l6" -> "l7" [label=] +"l6" -> "l7" [label=] +"l6" -> "l7" [label=] +"l6" -> "l7" [label=] +"l6" -> "l7" [label=] +"l7" -> "l6" [label=] +} diff --git a/experiments/saved_results/clients/ra/sifis-home_phase_1/hyp3.dot b/experiments/saved_results/clients/ra/sifis-home_phase_1/hyp3.dot new file mode 100644 index 00000000..421d5240 --- /dev/null +++ b/experiments/saved_results/clients/ra/sifis-home_phase_1/hyp3.dot @@ -0,0 +1,46 @@ +digraph RA { +"" [shape=none,label=<>] +"l0" [shape=doublecircle] +"l1" [shape=doublecircle] +"l2" [shape=circle] +"l3" [shape=circle] +"l4" [shape=doublecircle] +"l5" [shape=doublecircle] +"l6" [shape=doublecircle] +"l7" [shape=doublecircle] +"l8" [shape=doublecircle] +"l9" [shape=doublecircle] +"" -> "l0" +"l0" -> "l1" [label=] +"l0" -> "l1" [label=] +"l0" -> "l1" [label=] +"l0" -> "l1" [label=] +"l0" -> "l1" [label=] +"l0" -> "l1" [label=] +"l0" -> "l4" [label=] +"l0" -> "l5" [label=] +"l0" -> "l5" [label=] +"l1" -> "l6" [label=] +"l4" -> "l8" [label=] +"l5" -> "l0" [label=] +"l6" -> "l7" [label=] +"l6" -> "l7" [label=] +"l6" -> "l7" [label=] +"l6" -> "l7" [label=] +"l6" -> "l7" [label=] +"l6" -> "l7" [label=] +"l6" -> "l7" [label=] +"l6" -> "l7" [label=] +"l6" -> "l7" [label=] +"l7" -> "l6" [label=] +"l8" -> "l1" [label=] +"l8" -> "l1" [label=] +"l8" -> "l1" [label=] +"l8" -> "l1" [label=] +"l8" -> "l1" [label=] +"l8" -> "l5" [label=] +"l8" -> "l5" [label=] +"l8" -> "l9" [label=] +"l8" -> "l9" [label=] +"l9" -> "l0" [label=] +} diff --git a/experiments/saved_results/clients/ra/sifis-home_phase_1/hyp4.dot b/experiments/saved_results/clients/ra/sifis-home_phase_1/hyp4.dot new file mode 100644 index 00000000..9b18872a --- /dev/null +++ b/experiments/saved_results/clients/ra/sifis-home_phase_1/hyp4.dot @@ -0,0 +1,48 @@ +digraph RA { +"" [shape=none,label=<>] +"l0" [shape=doublecircle] +"l1" [shape=doublecircle] +"l2" [shape=circle] +"l3" [shape=circle] +"l4" [shape=doublecircle] +"l5" [shape=doublecircle] +"l6" [shape=doublecircle] +"l7" [shape=doublecircle] +"l8" [shape=doublecircle] +"l9" [shape=doublecircle] +"l10" [shape=doublecircle] +"" -> "l0" +"l0" -> "l1" [label=] +"l0" -> "l1" [label=] +"l0" -> "l1" [label=] +"l0" -> "l1" [label=] +"l0" -> "l1" [label=] +"l0" -> "l1" [label=] +"l0" -> "l4" [label=] +"l0" -> "l5" [label=] +"l0" -> "l5" [label=] +"l1" -> "l6" [label=] +"l4" -> "l8" [label=] +"l5" -> "l0" [label=] +"l6" -> "l7" [label=] +"l6" -> "l7" [label=] +"l6" -> "l7" [label=] +"l6" -> "l7" [label=] +"l6" -> "l7" [label=] +"l6" -> "l7" [label=] +"l6" -> "l7" [label=] +"l6" -> "l7" [label=] +"l6" -> "l7" [label=] +"l7" -> "l6" [label=] +"l8" -> "l1" [label=] +"l8" -> "l1" [label=] +"l8" -> "l1" [label=] +"l8" -> "l1" [label=] +"l8" -> "l1" [label=] +"l8" -> "l9" [label=] +"l8" -> "l9" [label=] +"l8" -> "l10" [label=] +"l8" -> "l10" [label=] +"l9" -> "l0" [label=] +"l10" -> "l8" [label=] +} diff --git a/experiments/saved_results/clients/ra/sifis-home_phase_1/hyp5.dot b/experiments/saved_results/clients/ra/sifis-home_phase_1/hyp5.dot new file mode 100644 index 00000000..3d949be6 --- /dev/null +++ b/experiments/saved_results/clients/ra/sifis-home_phase_1/hyp5.dot @@ -0,0 +1,60 @@ +digraph RA { +"" [shape=none,label=<>] +"l0" [shape=doublecircle] +"l1" [shape=doublecircle] +"l2" [shape=circle] +"l3" [shape=circle] +"l4" [shape=doublecircle] +"l5" [shape=doublecircle] +"l6" [shape=doublecircle] +"l7" [shape=doublecircle] +"l8" [shape=doublecircle] +"l9" [shape=doublecircle] +"l10" [shape=doublecircle] +"l11" [shape=doublecircle] +"l12" [shape=doublecircle] +"" -> "l0" +"l0" -> "l1" [label=] +"l0" -> "l1" [label=] +"l0" -> "l1" [label=] +"l0" -> "l1" [label=] +"l0" -> "l1" [label=] +"l0" -> "l1" [label=] +"l0" -> "l4" [label=] +"l0" -> "l5" [label=] +"l0" -> "l5" [label=] +"l1" -> "l6" [label=] +"l4" -> "l8" [label=] +"l5" -> "l0" [label=] +"l6" -> "l7" [label=] +"l6" -> "l7" [label=] +"l6" -> "l7" [label=] +"l6" -> "l7" [label=] +"l6" -> "l7" [label=] +"l6" -> "l7" [label=] +"l6" -> "l7" [label=] +"l6" -> "l7" [label=] +"l6" -> "l7" [label=] +"l7" -> "l6" [label=] +"l8" -> "l1" [label=] +"l8" -> "l1" [label=] +"l8" -> "l1" [label=] +"l8" -> "l1" [label=] +"l8" -> "l1" [label=] +"l8" -> "l9" [label=] +"l8" -> "l9" [label=] +"l8" -> "l10" [label=] +"l8" -> "l10" [label=] +"l9" -> "l11" [label=] +"l10" -> "l8" [label=] +"l11" -> "l5" [label=] +"l11" -> "l12" [label=] +"l11" -> "l12" [label=] +"l11" -> "l12" [label=] +"l11" -> "l12" [label=] +"l11" -> "l12" [label=] +"l11" -> "l12" [label=] +"l11" -> "l12" [label=] +"l11" -> "l12" [label=] +"l12" -> "l0" [label=] +} diff --git a/experiments/saved_results/clients/ra/sifis-home_phase_1/hyp6.dot b/experiments/saved_results/clients/ra/sifis-home_phase_1/hyp6.dot new file mode 100644 index 00000000..4f0a57fa --- /dev/null +++ b/experiments/saved_results/clients/ra/sifis-home_phase_1/hyp6.dot @@ -0,0 +1,84 @@ +digraph RA { +"" [shape=none,label=<>] +"l0" [shape=doublecircle] +"l1" [shape=doublecircle] +"l2" [shape=circle] +"l3" [shape=circle] +"l4" [shape=doublecircle] +"l5" [shape=doublecircle] +"l6" [shape=doublecircle] +"l7" [shape=doublecircle] +"l8" [shape=doublecircle] +"l9" [shape=doublecircle] +"l10" [shape=doublecircle] +"l11" [shape=doublecircle] +"l12" [shape=doublecircle] +"l13" [shape=doublecircle] +"l14" [shape=doublecircle] +"l15" [shape=doublecircle] +"l16" [shape=doublecircle] +"" -> "l0" +"l0" -> "l1" [label=] +"l0" -> "l1" [label=] +"l0" -> "l1" [label=] +"l0" -> "l1" [label=] +"l0" -> "l1" [label=] +"l0" -> "l1" [label=] +"l0" -> "l4" [label=] +"l0" -> "l5" [label=] +"l0" -> "l5" [label=] +"l1" -> "l6" [label=] +"l4" -> "l8" [label=] +"l5" -> "l13" [label=] +"l6" -> "l7" [label=] +"l6" -> "l7" [label=] +"l6" -> "l7" [label=] +"l6" -> "l7" [label=] +"l6" -> "l7" [label=] +"l6" -> "l7" [label=] +"l6" -> "l7" [label=] +"l6" -> "l7" [label=] +"l6" -> "l7" [label=] +"l7" -> "l6" [label=] +"l8" -> "l1" [label=] +"l8" -> "l1" [label=] +"l8" -> "l1" [label=] +"l8" -> "l1" [label=] +"l8" -> "l1" [label=] +"l8" -> "l9" [label=] +"l8" -> "l9" [label=] +"l8" -> "l10" [label=] +"l8" -> "l10" [label=] +"l9" -> "l11" [label=] +"l10" -> "l8" [label=] +"l11" -> "l5" [label=] +"l11" -> "l12" [label=] +"l11" -> "l12" [label=] +"l11" -> "l12" [label=] +"l11" -> "l12" [label=] +"l11" -> "l12" [label=] +"l11" -> "l12" [label=] +"l11" -> "l12" [label=] +"l11" -> "l12" [label=] +"l12" -> "l0" [label=] +"l13" -> "l1" [label=] +"l13" -> "l1" [label=] +"l13" -> "l1" [label=] +"l13" -> "l1" [label=] +"l13" -> "l1" [label=] +"l13" -> "l1" [label=] +"l13" -> "l5" [label=] +"l13" -> "l5" [label=] +"l13" -> "l14" [label=] +"l14" -> "l15" [label=] +"l15" -> "l1" [label=] +"l15" -> "l1" [label=] +"l15" -> "l1" [label=] +"l15" -> "l1" [label=] +"l15" -> "l1" [label=] +"l15" -> "l5" [label=] +"l15" -> "l5" [label=] +"l15" -> "l16" [label=] +"l15" -> "l16" [label=] +"l16" -> "l11" [label=] +} diff --git a/experiments/saved_results/clients/ra/sifis-home_phase_1/hyp7.dot b/experiments/saved_results/clients/ra/sifis-home_phase_1/hyp7.dot new file mode 100644 index 00000000..525e33ff --- /dev/null +++ b/experiments/saved_results/clients/ra/sifis-home_phase_1/hyp7.dot @@ -0,0 +1,86 @@ +digraph RA { +"" [shape=none,label=<>] +"l0" [shape=doublecircle] +"l1" [shape=doublecircle] +"l2" [shape=circle] +"l3" [shape=circle] +"l4" [shape=doublecircle] +"l5" [shape=doublecircle] +"l6" [shape=doublecircle] +"l7" [shape=doublecircle] +"l8" [shape=doublecircle] +"l9" [shape=doublecircle] +"l10" [shape=doublecircle] +"l11" [shape=doublecircle] +"l12" [shape=doublecircle] +"l13" [shape=doublecircle] +"l14" [shape=doublecircle] +"l15" [shape=doublecircle] +"l16" [shape=doublecircle] +"l17" [shape=doublecircle] +"" -> "l0" +"l0" -> "l1" [label=] +"l0" -> "l1" [label=] +"l0" -> "l1" [label=] +"l0" -> "l1" [label=] +"l0" -> "l1" [label=] +"l0" -> "l1" [label=] +"l0" -> "l4" [label=] +"l0" -> "l5" [label=] +"l0" -> "l17" [label=] +"l1" -> "l6" [label=] +"l4" -> "l8" [label=] +"l5" -> "l13" [label=] +"l6" -> "l7" [label=] +"l6" -> "l7" [label=] +"l6" -> "l7" [label=] +"l6" -> "l7" [label=] +"l6" -> "l7" [label=] +"l6" -> "l7" [label=] +"l6" -> "l7" [label=] +"l6" -> "l7" [label=] +"l6" -> "l7" [label=] +"l7" -> "l6" [label=] +"l8" -> "l1" [label=] +"l8" -> "l1" [label=] +"l8" -> "l1" [label=] +"l8" -> "l1" [label=] +"l8" -> "l1" [label=] +"l8" -> "l9" [label=] +"l8" -> "l9" [label=] +"l8" -> "l10" [label=] +"l8" -> "l10" [label=] +"l9" -> "l11" [label=] +"l10" -> "l8" [label=] +"l11" -> "l5" [label=] +"l11" -> "l12" [label=] +"l11" -> "l12" [label=] +"l11" -> "l12" [label=] +"l11" -> "l12" [label=] +"l11" -> "l12" [label=] +"l11" -> "l12" [label=] +"l11" -> "l12" [label=] +"l11" -> "l12" [label=] +"l12" -> "l0" [label=] +"l13" -> "l1" [label=] +"l13" -> "l1" [label=] +"l13" -> "l1" [label=] +"l13" -> "l1" [label=] +"l13" -> "l1" [label=] +"l13" -> "l1" [label=] +"l13" -> "l5" [label=] +"l13" -> "l5" [label=] +"l13" -> "l14" [label=] +"l14" -> "l15" [label=] +"l15" -> "l1" [label=] +"l15" -> "l1" [label=] +"l15" -> "l1" [label=] +"l15" -> "l1" [label=] +"l15" -> "l1" [label=] +"l15" -> "l5" [label=] +"l15" -> "l5" [label=] +"l15" -> "l16" [label=] +"l15" -> "l16" [label=] +"l16" -> "l11" [label=] +"l17" -> "l0" [label=] +} diff --git a/experiments/saved_results/clients/ra/sifis-home_phase_1/hyp8.dot b/experiments/saved_results/clients/ra/sifis-home_phase_1/hyp8.dot new file mode 100644 index 00000000..557595fa --- /dev/null +++ b/experiments/saved_results/clients/ra/sifis-home_phase_1/hyp8.dot @@ -0,0 +1,88 @@ +digraph RA { +"" [shape=none,label=<>] +"l0" [shape=doublecircle] +"l1" [shape=doublecircle] +"l2" [shape=circle] +"l3" [shape=circle] +"l4" [shape=doublecircle] +"l5" [shape=doublecircle] +"l6" [shape=doublecircle] +"l7" [shape=doublecircle] +"l8" [shape=doublecircle] +"l9" [shape=doublecircle] +"l10" [shape=doublecircle] +"l11" [shape=doublecircle] +"l12" [shape=doublecircle] +"l13" [shape=doublecircle] +"l14" [shape=doublecircle] +"l15" [shape=doublecircle] +"l16" [shape=doublecircle] +"l17" [shape=doublecircle] +"l18" [shape=doublecircle] +"" -> "l0" +"l0" -> "l1" [label=] +"l0" -> "l1" [label=] +"l0" -> "l1" [label=] +"l0" -> "l1" [label=] +"l0" -> "l1" [label=] +"l0" -> "l1" [label=] +"l0" -> "l4" [label=] +"l0" -> "l5" [label=] +"l0" -> "l17" [label=] +"l1" -> "l6" [label=] +"l4" -> "l8" [label=] +"l5" -> "l13" [label=] +"l6" -> "l7" [label=] +"l6" -> "l7" [label=] +"l6" -> "l7" [label=] +"l6" -> "l7" [label=] +"l6" -> "l7" [label=] +"l6" -> "l7" [label=] +"l6" -> "l7" [label=] +"l6" -> "l7" [label=] +"l6" -> "l7" [label=] +"l7" -> "l6" [label=] +"l8" -> "l1" [label=] +"l8" -> "l1" [label=] +"l8" -> "l1" [label=] +"l8" -> "l1" [label=] +"l8" -> "l1" [label=] +"l8" -> "l9" [label=] +"l8" -> "l9" [label=] +"l8" -> "l10" [label=] +"l8" -> "l10" [label=] +"l9" -> "l11" [label=] +"l10" -> "l8" [label=] +"l11" -> "l5" [label=] +"l11" -> "l12" [label=] +"l11" -> "l12" [label=] +"l11" -> "l12" [label=] +"l11" -> "l12" [label=] +"l11" -> "l12" [label=] +"l11" -> "l12" [label=] +"l11" -> "l12" [label=] +"l11" -> "l12" [label=] +"l12" -> "l0" [label=] +"l13" -> "l1" [label=] +"l13" -> "l1" [label=] +"l13" -> "l1" [label=] +"l13" -> "l1" [label=] +"l13" -> "l1" [label=] +"l13" -> "l1" [label=] +"l13" -> "l5" [label=] +"l13" -> "l5" [label=] +"l13" -> "l14" [label=] +"l14" -> "l15" [label=] +"l15" -> "l1" [label=] +"l15" -> "l1" [label=] +"l15" -> "l1" [label=] +"l15" -> "l1" [label=] +"l15" -> "l1" [label=] +"l15" -> "l16" [label=] +"l15" -> "l16" [label=] +"l15" -> "l18" [label=] +"l15" -> "l18" [label=] +"l16" -> "l11" [label=] +"l17" -> "l0" [label=] +"l18" -> "l15" [label=] +} diff --git a/experiments/saved_results/clients/ra/sifis-home_phase_1/hyp9.dot b/experiments/saved_results/clients/ra/sifis-home_phase_1/hyp9.dot new file mode 100644 index 00000000..db023fcf --- /dev/null +++ b/experiments/saved_results/clients/ra/sifis-home_phase_1/hyp9.dot @@ -0,0 +1,100 @@ +digraph RA { +"" [shape=none,label=<>] +"l0" [shape=doublecircle] +"l1" [shape=doublecircle] +"l2" [shape=circle] +"l3" [shape=circle] +"l4" [shape=doublecircle] +"l5" [shape=doublecircle] +"l6" [shape=doublecircle] +"l7" [shape=doublecircle] +"l8" [shape=doublecircle] +"l9" [shape=doublecircle] +"l10" [shape=doublecircle] +"l11" [shape=doublecircle] +"l12" [shape=doublecircle] +"l13" [shape=doublecircle] +"l14" [shape=doublecircle] +"l15" [shape=doublecircle] +"l16" [shape=doublecircle] +"l17" [shape=doublecircle] +"l18" [shape=doublecircle] +"l19" [shape=doublecircle] +"l20" [shape=doublecircle] +"" -> "l0" +"l0" -> "l1" [label=] +"l0" -> "l1" [label=] +"l0" -> "l1" [label=] +"l0" -> "l1" [label=] +"l0" -> "l1" [label=] +"l0" -> "l1" [label=] +"l0" -> "l4" [label=] +"l0" -> "l5" [label=] +"l0" -> "l17" [label=] +"l1" -> "l6" [label=] +"l4" -> "l8" [label=] +"l5" -> "l13" [label=] +"l6" -> "l7" [label=] +"l6" -> "l7" [label=] +"l6" -> "l7" [label=] +"l6" -> "l7" [label=] +"l6" -> "l7" [label=] +"l6" -> "l7" [label=] +"l6" -> "l7" [label=] +"l6" -> "l7" [label=] +"l6" -> "l7" [label=] +"l7" -> "l6" [label=] +"l8" -> "l1" [label=] +"l8" -> "l1" [label=] +"l8" -> "l1" [label=] +"l8" -> "l1" [label=] +"l8" -> "l1" [label=] +"l8" -> "l9" [label=] +"l8" -> "l9" [label=] +"l8" -> "l10" [label=] +"l8" -> "l10" [label=] +"l9" -> "l11" [label=] +"l10" -> "l8" [label=] +"l11" -> "l5" [label=] +"l11" -> "l12" [label=] +"l11" -> "l12" [label=] +"l11" -> "l12" [label=] +"l11" -> "l12" [label=] +"l11" -> "l12" [label=] +"l11" -> "l12" [label=] +"l11" -> "l12" [label=] +"l11" -> "l12" [label=] +"l12" -> "l19" [label=] +"l13" -> "l1" [label=] +"l13" -> "l1" [label=] +"l13" -> "l1" [label=] +"l13" -> "l1" [label=] +"l13" -> "l1" [label=] +"l13" -> "l1" [label=] +"l13" -> "l5" [label=] +"l13" -> "l5" [label=] +"l13" -> "l14" [label=] +"l14" -> "l15" [label=] +"l15" -> "l1" [label=] +"l15" -> "l1" [label=] +"l15" -> "l1" [label=] +"l15" -> "l1" [label=] +"l15" -> "l1" [label=] +"l15" -> "l16" [label=] +"l15" -> "l16" [label=] +"l15" -> "l18" [label=] +"l15" -> "l18" [label=] +"l16" -> "l11" [label=] +"l17" -> "l0" [label=] +"l18" -> "l15" [label=] +"l19" -> "l20" [label=] +"l19" -> "l20" [label=] +"l19" -> "l20" [label=] +"l19" -> "l20" [label=] +"l19" -> "l20" [label=] +"l19" -> "l20" [label=] +"l19" -> "l20" [label=] +"l19" -> "l20" [label=] +"l19" -> "l20" [label=] +"l20" -> "l19" [label=] +} diff --git a/experiments/saved_results/clients/ra/sifis-home_phase_1/learnedModel.dot b/experiments/saved_results/clients/ra/sifis-home_phase_1/learnedModel.dot new file mode 100644 index 00000000..f9acf845 --- /dev/null +++ b/experiments/saved_results/clients/ra/sifis-home_phase_1/learnedModel.dot @@ -0,0 +1,114 @@ +digraph RA { +"" [shape=none,label=<>] +"l0" [shape=doublecircle] +"l1" [shape=doublecircle] +"l2" [shape=circle] +"l3" [shape=circle] +"l4" [shape=doublecircle] +"l5" [shape=doublecircle] +"l6" [shape=doublecircle] +"l7" [shape=doublecircle] +"l8" [shape=doublecircle] +"l9" [shape=doublecircle] +"l10" [shape=doublecircle] +"l11" [shape=doublecircle] +"l12" [shape=doublecircle] +"l13" [shape=doublecircle] +"l14" [shape=doublecircle] +"l15" [shape=doublecircle] +"l16" [shape=doublecircle] +"l17" [shape=doublecircle] +"l18" [shape=doublecircle] +"l19" [shape=doublecircle] +"l20" [shape=doublecircle] +"l21" [shape=doublecircle] +"l22" [shape=doublecircle] +"l23" [shape=doublecircle] +"" -> "l0" +"l0" -> "l1" [label=] +"l0" -> "l1" [label=] +"l0" -> "l1" [label=] +"l0" -> "l1" [label=] +"l0" -> "l1" [label=] +"l0" -> "l1" [label=] +"l0" -> "l4" [label=] +"l0" -> "l5" [label=] +"l0" -> "l17" [label=] +"l1" -> "l6" [label=] +"l4" -> "l8" [label=] +"l5" -> "l13" [label=] +"l6" -> "l7" [label=] +"l6" -> "l7" [label=] +"l6" -> "l7" [label=] +"l6" -> "l7" [label=] +"l6" -> "l7" [label=] +"l6" -> "l7" [label=] +"l6" -> "l7" [label=] +"l6" -> "l7" [label=] +"l6" -> "l7" [label=] +"l7" -> "l6" [label=] +"l8" -> "l1" [label=] +"l8" -> "l1" [label=] +"l8" -> "l1" [label=] +"l8" -> "l1" [label=] +"l8" -> "l1" [label=] +"l8" -> "l9" [label=] +"l8" -> "l9" [label=] +"l8" -> "l10" [label=] +"l8" -> "l10" [label=] +"l9" -> "l11" [label=] +"l10" -> "l8" [label=] +"l11" -> "l12" [label=] +"l11" -> "l12" [label=] +"l11" -> "l12" [label=] +"l11" -> "l12" [label=] +"l11" -> "l12" [label=] +"l11" -> "l12" [label=] +"l11" -> "l12" [label=] +"l11" -> "l12" [label=] +"l11" -> "l22" [label=] +"l12" -> "l19" [label=] +"l13" -> "l1" [label=] +"l13" -> "l1" [label=] +"l13" -> "l1" [label=] +"l13" -> "l1" [label=] +"l13" -> "l1" [label=] +"l13" -> "l1" [label=] +"l13" -> "l5" [label=] +"l13" -> "l5" [label=] +"l13" -> "l14" [label=] +"l14" -> "l15" [label=] +"l15" -> "l1" [label=] +"l15" -> "l1" [label=] +"l15" -> "l1" [label=] +"l15" -> "l1" [label=] +"l15" -> "l1" [label=] +"l15" -> "l16" [label=] +"l15" -> "l16" [label=] +"l15" -> "l18" [label=] +"l15" -> "l18" [label=] +"l16" -> "l21" [label=] +"l17" -> "l0" [label=] +"l18" -> "l15" [label=] +"l19" -> "l20" [label=] +"l19" -> "l20" [label=] +"l19" -> "l20" [label=] +"l19" -> "l20" [label=] +"l19" -> "l20" [label=] +"l19" -> "l20" [label=] +"l19" -> "l20" [label=] +"l19" -> "l20" [label=] +"l19" -> "l20" [label=] +"l20" -> "l19" [label=] +"l21" -> "l12" [label=] +"l21" -> "l12" [label=] +"l21" -> "l12" [label=] +"l21" -> "l12" [label=] +"l21" -> "l12" [label=] +"l21" -> "l12" [label=] +"l21" -> "l12" [label=] +"l21" -> "l23" [label=] +"l21" -> "l23" [label=] +"l22" -> "l11" [label=] +"l23" -> "l21" [label=] +} diff --git a/experiments/saved_results/clients/ra/sifis-home_phase_1/learnedModel.pdf b/experiments/saved_results/clients/ra/sifis-home_phase_1/learnedModel.pdf new file mode 100644 index 00000000..c26419be Binary files /dev/null and b/experiments/saved_results/clients/ra/sifis-home_phase_1/learnedModel.pdf differ diff --git a/experiments/saved_results/clients/ra/sifis-home_phase_1/learnedModelShortNames.pdf b/experiments/saved_results/clients/ra/sifis-home_phase_1/learnedModelShortNames.pdf new file mode 100644 index 00000000..e0f6543f Binary files /dev/null and b/experiments/saved_results/clients/ra/sifis-home_phase_1/learnedModelShortNames.pdf differ diff --git a/experiments/saved_results/clients/ra/sifis-home_phase_1/learnedModelbtf.dot b/experiments/saved_results/clients/ra/sifis-home_phase_1/learnedModelbtf.dot new file mode 100644 index 00000000..a42ee9b1 --- /dev/null +++ b/experiments/saved_results/clients/ra/sifis-home_phase_1/learnedModelbtf.dot @@ -0,0 +1,114 @@ +digraph RA { +"" [shape=none,label=<>] +"l0" [shape=doublecircle] +"l1" [shape=doublecircle] +"l2" [shape=circle] +"l3" [shape=circle] +"l4" [shape=doublecircle] +"l5" [shape=doublecircle] +"l6" [shape=doublecircle] +"l7" [shape=doublecircle] +"l8" [shape=doublecircle] +"l9" [shape=doublecircle] +"l10" [shape=doublecircle] +"l11" [shape=doublecircle] +"l12" [shape=doublecircle] +"l13" [shape=doublecircle] +"l14" [shape=doublecircle] +"l15" [shape=doublecircle] +"l16" [shape=doublecircle] +"l17" [shape=doublecircle] +"l18" [shape=doublecircle] +"l19" [shape=doublecircle] +"l20" [shape=doublecircle] +"l21" [shape=doublecircle] +"l22" [shape=doublecircle] +"l23" [shape=doublecircle] +"" -> "l0" +"l0" -> "l1" [label=] +"l0" -> "l1" [label=] +"l0" -> "l1" [label=] +"l0" -> "l1" [label=] +"l0" -> "l1" [label=] +"l0" -> "l1" [label=] +"l0" -> "l4" [label=] +"l0" -> "l5" [label=] +"l0" -> "l17" [label=] +"l1" -> "l6" [label=] +"l4" -> "l8" [label=] +"l5" -> "l13" [label=] +"l6" -> "l7" [label=] +"l6" -> "l7" [label=] +"l6" -> "l7" [label=] +"l6" -> "l7" [label=] +"l6" -> "l7" [label=] +"l6" -> "l7" [label=] +"l6" -> "l7" [label=] +"l6" -> "l7" [label=] +"l6" -> "l7" [label=] +"l7" -> "l6" [label=] +"l8" -> "l1" [label=] +"l8" -> "l1" [label=] +"l8" -> "l1" [label=] +"l8" -> "l1" [label=] +"l8" -> "l1" [label=] +"l8" -> "l9" [label=] +"l8" -> "l9" [label=] +"l8" -> "l10" [label=] +"l8" -> "l10" [label=] +"l9" -> "l11" [label=] +"l10" -> "l8" [label=] +"l11" -> "l12" [label=] +"l11" -> "l12" [label=] +"l11" -> "l12" [label=] +"l11" -> "l12" [label=] +"l11" -> "l12" [label=] +"l11" -> "l12" [label=] +"l11" -> "l12" [label=] +"l11" -> "l12" [label=] +"l11" -> "l22" [label=] +"l12" -> "l19" [label=] +"l13" -> "l1" [label=] +"l13" -> "l1" [label=] +"l13" -> "l1" [label=] +"l13" -> "l1" [label=] +"l13" -> "l1" [label=] +"l13" -> "l1" [label=] +"l13" -> "l5" [label=] +"l13" -> "l5" [label=] +"l13" -> "l14" [label=] +"l14" -> "l15" [label=] +"l15" -> "l1" [label=] +"l15" -> "l1" [label=] +"l15" -> "l1" [label=] +"l15" -> "l1" [label=] +"l15" -> "l1" [label=] +"l15" -> "l16" [label=] +"l15" -> "l16" [label=] +"l15" -> "l18" [label=] +"l15" -> "l18" [label=] +"l16" -> "l21" [label=] +"l17" -> "l0" [label=] +"l18" -> "l15" [label=] +"l19" -> "l20" [label=] +"l19" -> "l20" [label=] +"l19" -> "l20" [label=] +"l19" -> "l20" [label=] +"l19" -> "l20" [label=] +"l19" -> "l20" [label=] +"l19" -> "l20" [label=] +"l19" -> "l20" [label=] +"l19" -> "l20" [label=] +"l20" -> "l19" [label=] +"l21" -> "l12" [label=] +"l21" -> "l12" [label=] +"l21" -> "l12" [label=] +"l21" -> "l12" [label=] +"l21" -> "l12" [label=] +"l21" -> "l12" [label=] +"l21" -> "l12" [label=] +"l21" -> "l23" [label=] +"l21" -> "l23" [label=] +"l22" -> "l11" [label=] +"l23" -> "l21" [label=] +} diff --git a/experiments/saved_results/clients/ra/sifis-home_phase_1/mapper_connection.config b/experiments/saved_results/clients/ra/sifis-home_phase_1/mapper_connection.config new file mode 100644 index 00000000..97827755 --- /dev/null +++ b/experiments/saved_results/clients/ra/sifis-home_phase_1/mapper_connection.config @@ -0,0 +1,153 @@ +# Californium3 CoAP Properties file for EdhocMapper +# +# Random factor for initial CoAP acknowledge timeout. +# Default: 1.5 +COAP.ACK_INIT_RANDOM=1.5 +# Initial CoAP acknowledge timeout. +# Default: 2[s] +# Adjust MAX_ACK_TIMEOUT to add more time +COAP.ACK_TIMEOUT=10[s] +# Scale factor for CoAP acknowledge backoff-timeout. +# Default: 2.0 +COAP.ACK_TIMEOUT_SCALE=2.0 +# Enable automatic failover on "entity too large" response. +# Default: true +COAP.BLOCKWISE_ENTITY_TOO_LARGE_AUTO_FAILOVER=true +# Reuse token for blockwise requests. Ease traceability but may introduce +# vulnerability. +# Default: false +COAP.BLOCKWISE_REUSE_TOKEN=false +# Interval to validate lifetime of blockwise status. +# Default: 5[s] +COAP.BLOCKWISE_STATUS_INTERVAL=5[s] +# Lifetime of blockwise status. +# Default: 5[min] +COAP.BLOCKWISE_STATUS_LIFETIME=5[min] +# Use block2 option strictly, even if block2 is not required. +# Default: false +COAP.BLOCKWISE_STRICT_BLOCK2_OPTION=false +# CoAP port. +# Default: 5683 +COAP.COAP_PORT=5683 +# CoAP DTLS port. +# Default: 5684 +COAP.COAP_SECURE_PORT=5684 +# Congestion-Control algorithm (still experimental). +# [NULL, COCOA, COCOA_STRONG, BASIC_RTO, LINUX_RTO, PEAKHOPPER_RTO]. +# Default: NULL +COAP.CONGESTION_CONTROL_ALGORITHM=NULL +# Crop rotation period. +# Default: 247[s] +COAP.CROP_ROTATION_PERIOD=247[s] +# Deduplicator algorithm. +# [MARK_AND_SWEEP, PEERS_MARK_AND_SWEEP, CROP_ROTATION, NO_DEDUPLICATOR]. +# Default: MARK_AND_SWEEP +COAP.DEDUPLICATOR=MARK_AND_SWEEP +# Automatic replace entries in deduplicator. +# Default: true +COAP.DEDUPLICATOR_AUTO_REPLACE=true +# CoAP maximum exchange lifetime for CON requests. +# Default: 247[s] +COAP.EXCHANGE_LIFETIME=247[s] +# Timespan a multicast server may spread the response. +# Default: 5[s] +COAP.LEISURE=5[s] +# Mark and sweep interval. +# Default: 10[s] +COAP.MARK_AND_SWEEP_INTERVAL=10[s] +# Maximum CoAP acknowledge timeout. +# Default: 1[min] +# Should be: ACK_TIMEOUT <= MAX_ACK_TIMEOUT +COAP.MAX_ACK_TIMEOUT=10[s] +# Maximum number of active peers. +# Default: 150000 +COAP.MAX_ACTIVE_PEERS=150000 +# Maximum transmission latency for messages. +# Default: 100[s] +COAP.MAX_LATENCY=100[s] +# Maximum payload size. +# Default: 1024 +COAP.MAX_MESSAGE_SIZE=1024 +# Maximum inactive period of peer. +# Default: 10[min] +COAP.MAX_PEER_INACTIVITY_PERIOD=10[min] +# Maximum size of resource body. 0 to disable transparent blockwise +# mode. +# Default: 8192 +COAP.MAX_RESOURCE_BODY_SIZE=8192 +# Maximum number of CoAP retransmissions. +# Default: 4 +# Should be >= 0 (0: no retransmissions) +COAP.MAX_RETRANSMIT=0 +# Maximum number of observes on server-side. 0 to disable this limitation. +# Default: 50000 +COAP.MAX_SERVER_OBSERVES=50000 +# Maximum server response delay. +# Default: 250[s] +COAP.MAX_SERVER_RESPONSE_DELAY=250[s] +# Maximum time to wait for ACK or RST after the first transmission of +# a CON message. +# Default: 93[s] +COAP.MAX_TRANSMIT_WAIT=93[s] +# MID tracker. +# [NULL, GROUPED, MAPBASED]. +# Default: GROUPED +COAP.MID_TACKER=GROUPED +# Number of MID tracker groups. +# Default: 16 +COAP.MID_TRACKER_GROUPS=16 +# Base MID for multicast requests. +# Default: 65000 +COAP.MULTICAST_BASE_MID=65000 +# CoAP maximum lifetime for NON requests. +# Default: 145[s] +COAP.NON_LIFETIME=145[s] +# Interval time to check notifications receiver using a CON message. +# Default: 2[min] +COAP.NOTIFICATION_CHECK_INTERVAL=2[min] +# Interval counter to check notifications receiver using a CON message. +# Default: 100 +COAP.NOTIFICATION_CHECK_INTERVAL_COUNT=100 +# Additional time (backoff) to the max-age option +# for waiting for the next notification before reregister. +# Default: 2[s] +COAP.NOTIFICATION_REREGISTRATION_BACKOFF=2[s] +# Maximum concurrent transmissions. +# Default: 1 +COAP.NSTART=1 +# Maximum messages kept per peer for PEERS_MARK_AND_SWEEP. +# Default: 64 +COAP.PEERS_MARK_AND_SWEEP_MESSAGES=64 +# Preferred blocksize for blockwise transfer. +# Default: 512 +COAP.PREFERRED_BLOCK_SIZE=512 +# Probing rate to peers, which didn't response before. Currently not +# used. +# Default: 1.0 +COAP.PROBING_RATE=1.0 +# Protocol stage thread count. +# Default: 1 +COAP.PROTOCOL_STAGE_THREAD_COUNT=1 +# Response matching mode. +# [STRICT, RELAXED, PRINCIPAL, PRINCIPAL_IDENTITY]. +# Default: STRICT +COAP.RESPONSE_MATCHING=STRICT +# Process empty messages strictly according RFC7252, 4.1 as format error. +# Disable to ignore additional data as tokens or options. +# Default: true +COAP.STRICT_EMPTY_MESSAGE_FORMAT=false +# Number of block per TCP-blockwise bulk transfer. +# Default: 1 +COAP.TCP_NUMBER_OF_BULK_BLOCKS=1 +# Limit of token size. +# Default: 8 +COAP.TOKEN_SIZE_LIMIT=8 +# Use message off-loading, when data is not longer required. +# Default: false +COAP.USE_MESSAGE_OFFLOADING=false +# Use initially a random value for MID. +# Default: true +COAP.USE_RANDOM_MID_START=true +# Health status interval. 0 to disable the health status. +# Default: 0[ms] +SYS.HEALTH_STATUS_INTERVAL=0[ms] diff --git a/experiments/saved_results/clients/ra/sifis-home_phase_1/statistics.txt b/experiments/saved_results/clients/ra/sifis-home_phase_1/statistics.txt new file mode 100644 index 00000000..814f3d27 --- /dev/null +++ b/experiments/saved_results/clients/ra/sifis-home_phase_1/statistics.txt @@ -0,0 +1,129 @@ +=== RUN DESCRIPTION === +Alphabet: [?EDHOC_MESSAGE_1_INPUT[C_I], !EDHOC_MESSAGE_1_OUTPUT[C_I], !EDHOC_MESSAGE_2_OUTPUT[], ?EDHOC_MESSAGE_3_INPUT[], !EDHOC_MESSAGE_3_OUTPUT[], !EDHOC_MESSAGE_4_OUTPUT[], !UNSUCCESSFUL_MESSAGE[], !COAP_EMPTY_MESSAGE_OUTPUT[], !EDHOC_MESSAGE_3_OSCORE_APP_OUTPUT[C_I], ?EDHOC_ERROR_MESSAGE_INPUT[], !COAP_APP_MESSAGE_OUTPUT[], !COAP_MESSAGE_OUTPUT[], !COAP_ERROR_MESSAGE_OUTPUT[], ?COAP_APP_MESSAGE_INPUT[], ?COAP_EMPTY_MESSAGE_INPUT[], !OSCORE_APP_MESSAGE_OUTPUT[], !SOCKET_CLOSED[], !EDHOC_ERROR_MESSAGE_OUTPUT[], ?EDHOC_MESSAGE_2_INPUT[], !DISABLED[], ?EDHOC_MESSAGE_4_INPUT[], !UNSUPPORTED_MESSAGE[], !TIMEOUT[], !UNKNOWN[], ?EDHOC_MESSAGE_3_OSCORE_APP_INPUT[C_I], ?OSCORE_APP_MESSAGE_INPUT[]] + +StateFuzzerConfig Parameters +Help: false +Debug: false +Quiet: false +Output Directory: experiments/results/clients/ra/sifis-home_phase_1 +Fuzzing Client: true + +LearnerConfigStandard Parameters +Alphabet: ./src/main/resources/alphabet_placeholder.xml +Learning Algorithm: RASTAR +Equivalence Algorithms: [IO_RANDOM_WALK] +Max Depth: 1 +Min Length: 5 +Max Length: 15 +Max Equivalence Queries: 1000 +Runs Per Membership Query: 1 +Random Length: 5 +Membership Query Retries: 3 +Log Queries: true +Prob Reset: 0.0 +Test File: null +Seed: 7 +Cache Tests: false +Ce Sanitization: true +Skip Non Det Tests: false +Ce Reruns: 3 +Probabilistic Sanitization: true +Time Limit: null +Test Limit: null +Round Limit: null +IOMode: true +Probability of Choosing a New DataValue: 0.5 +Max Runs: 10000 +Max Depth for Register Automata: 10 +Reset Runs: false +Seed transitions: false +Draw symbols uniformly: false + +SulConfig Parameters +Fuzzing Role: client +Fuzzing Client: true +Response Wait: 100 +Input Response Timeout: null +Command: null +Terminate Command: null +Process Dir: null +Redirect Output Streams: false +Process Trigger: NEW_TEST +Start Wait: 0 + +SulClientConfig Parameters +Client Wait: 50 +Port: 5683 + +MapperConfig Parameters +Mapper Connection Config: null +Repeating Outputs: null +Socket Closed as Timeout: false +Disabled as Timeout: false +Merge Repeating: true + +EdhocMapperConfig Parameters +Protocol Version: v22 +Combined Message Version: v07 +Edhoc Role: Responder +Edhoc Coap Resource: .well-known/edhoc +App Coap Resource: light +App Message Code To Coap Server: GET +App Message Payload To Coap Server: +App Message Code To Coap Client: CHANGED +App Message Payload To Coap Client: Server Application Data +Coap Error As Edhoc Error: false +use Content Format: true +use Session Reset: false +use CX Correlation: true +Own Connection Id: 36 +Generate Own Connection Id: true +Force Oscore Sender Id: null +Force Oscore Recipient Id: null + +AuthenticationConfig Parameters +Map Cred Type: X509 +Map Id Cred Type: X5T +Sul Cred Type: X509 +Sul Id Cred Type: X5T +Trust Model: STRICT + +TestVectorAuthenticationConfig Parameters +Test Vector File: experiments/authentication/test_vectors/test_vectors_sifis_home.json +Test Vector Key: test_vector_ed25519_phases_1_3 +Test Vector Peer Key Curve: Ed25519 + +SulAdapterConfig Parameters +Adapter Port: null +Adapter Address: localhost + +=== STATISTICS === +Learning finished: true +Size of the input alphabet: 26 +Number of states: 24 +Number of hypotheses: 12 +Number of inputs: 104882 +Number of tests: 11182 +Number of learning inputs: 4944 +Number of learning tests: 1182 +Number of inputs up to last hypothesis: 9282 +Number of tests up to last hypothesis: 1622 +Time (ms) to learn model: 10489696 +Counterexamples: +CE 1:Query[ε|EDHOC_MESSAGE_4_INPUT[] TIMEOUT[] COAP_EMPTY_MESSAGE_INPUT[] SOCKET_CLOSED[] / true] +CE 2:Query[ε|OSCORE_APP_MESSAGE_INPUT[] UNSUPPORTED_MESSAGE[] EDHOC_MESSAGE_2_INPUT[] EDHOC_MESSAGE_3_OUTPUT[] COAP_EMPTY_MESSAGE_INPUT[] OSCORE_APP_MESSAGE_OUTPUT[] / true] +CE 3:Query[ε|EDHOC_MESSAGE_2_INPUT[] EDHOC_MESSAGE_3_OUTPUT[] EDHOC_MESSAGE_3_OSCORE_APP_INPUT[0[C_I]] UNSUPPORTED_MESSAGE[] EDHOC_MESSAGE_3_OSCORE_APP_INPUT[0[C_I]] UNSUPPORTED_MESSAGE[] COAP_APP_MESSAGE_INPUT[] OSCORE_APP_MESSAGE_OUTPUT[] / true] +CE 4:Query[ε|EDHOC_MESSAGE_2_INPUT[] EDHOC_MESSAGE_3_OUTPUT[] COAP_EMPTY_MESSAGE_INPUT[] OSCORE_APP_MESSAGE_OUTPUT[] EDHOC_MESSAGE_4_INPUT[] TIMEOUT[] EDHOC_MESSAGE_3_OSCORE_APP_INPUT[0[C_I]] UNSUPPORTED_MESSAGE[] / true] +CE 5:Query[ε|EDHOC_MESSAGE_3_OSCORE_APP_INPUT[0[C_I]] UNSUPPORTED_MESSAGE[] EDHOC_MESSAGE_2_INPUT[] EDHOC_MESSAGE_3_OUTPUT[] COAP_EMPTY_MESSAGE_INPUT[] UNSUCCESSFUL_MESSAGE[] / true] +CE 6:Query[ε|OSCORE_APP_MESSAGE_INPUT[] UNSUPPORTED_MESSAGE[] EDHOC_MESSAGE_2_INPUT[] EDHOC_MESSAGE_3_OUTPUT[] COAP_APP_MESSAGE_INPUT[] OSCORE_APP_MESSAGE_OUTPUT[] / true] +CE 7:Query[ε|EDHOC_MESSAGE_3_OSCORE_APP_INPUT[0[C_I]] UNSUPPORTED_MESSAGE[] EDHOC_MESSAGE_3_OSCORE_APP_INPUT[0[C_I]] UNSUPPORTED_MESSAGE[] EDHOC_MESSAGE_2_INPUT[] EDHOC_MESSAGE_3_OUTPUT[] EDHOC_MESSAGE_3_OSCORE_APP_INPUT[0[C_I]] UNSUPPORTED_MESSAGE[] OSCORE_APP_MESSAGE_INPUT[] UNSUPPORTED_MESSAGE[] COAP_APP_MESSAGE_INPUT[] UNSUCCESSFUL_MESSAGE[] / true] +CE 8:Query[ε|EDHOC_MESSAGE_2_INPUT[] EDHOC_MESSAGE_3_OUTPUT[] OSCORE_APP_MESSAGE_INPUT[] UNSUPPORTED_MESSAGE[] COAP_APP_MESSAGE_INPUT[] OSCORE_APP_MESSAGE_OUTPUT[] COAP_EMPTY_MESSAGE_INPUT[] TIMEOUT[] EDHOC_MESSAGE_3_OSCORE_APP_INPUT[0[C_I]] UNSUPPORTED_MESSAGE[] EDHOC_MESSAGE_3_OSCORE_APP_INPUT[1[C_I]] UNSUPPORTED_MESSAGE[] EDHOC_ERROR_MESSAGE_INPUT[] UNSUPPORTED_MESSAGE[] / true] +CE 9:Query[ε|EDHOC_MESSAGE_3_OSCORE_APP_INPUT[0[C_I]] UNSUPPORTED_MESSAGE[] OSCORE_APP_MESSAGE_INPUT[] UNSUPPORTED_MESSAGE[] EDHOC_MESSAGE_2_INPUT[] EDHOC_MESSAGE_3_OUTPUT[] COAP_APP_MESSAGE_INPUT[] UNSUCCESSFUL_MESSAGE[] OSCORE_APP_MESSAGE_INPUT[] UNSUPPORTED_MESSAGE[] / true] +CE 10:Query[ε|EDHOC_MESSAGE_2_INPUT[] EDHOC_MESSAGE_3_OUTPUT[] EDHOC_MESSAGE_3_OSCORE_APP_INPUT[0[C_I]] UNSUPPORTED_MESSAGE[] COAP_EMPTY_MESSAGE_INPUT[] OSCORE_APP_MESSAGE_OUTPUT[] EDHOC_MESSAGE_3_OSCORE_APP_INPUT[0[C_I]] UNSUPPORTED_MESSAGE[] OSCORE_APP_MESSAGE_INPUT[] TIMEOUT[] / true] +CE 11:Query[ε|EDHOC_MESSAGE_3_OSCORE_APP_INPUT[0[C_I]] UNSUPPORTED_MESSAGE[] EDHOC_MESSAGE_2_INPUT[] EDHOC_MESSAGE_3_OUTPUT[] COAP_EMPTY_MESSAGE_INPUT[] UNSUCCESSFUL_MESSAGE[] OSCORE_APP_MESSAGE_INPUT[] UNSUPPORTED_MESSAGE[] EDHOC_MESSAGE_3_INPUT[] TIMEOUT[] COAP_APP_MESSAGE_INPUT[] UNSUPPORTED_MESSAGE[] / true] +Number of inputs when hypothesis was generated: [27, 110, 222, 341, 1263, 1851, 2066, 2476, 5399, 6700, 7601, 9282] +Number of tests when hypothesis was generated: [27, 70, 111, 149, 330, 490, 538, 625, 1094, 1278, 1392, 1622] +Time (ms) when hypothesis was generated: [22621, 61992, 96396, 125024, 297690, 438038, 476196, 545048, 1003701, 1173733, 1280285, 1499111] +Number of inputs when counterexample was found: [29, 153, 266, 855, 1356, 1934, 2182, 3383, 6244, 7415, 8577] +Number of tests when counterexample was found: [28, 75, 116, 201, 340, 499, 550, 716, 1179, 1350, 1490] +Time (ms) when counterexample was found: [23562, 66436, 100979, 173900, 306770, 446078, 487155, 630110, 1082826, 1241506, 1372534] diff --git a/experiments/saved_results/clients/ra/uoscore-uedhoc_linux_edhoc_oscore/command.args b/experiments/saved_results/clients/ra/uoscore-uedhoc_linux_edhoc_oscore/command.args new file mode 100644 index 00000000..ae82acab --- /dev/null +++ b/experiments/saved_results/clients/ra/uoscore-uedhoc_linux_edhoc_oscore/command.args @@ -0,0 +1,81 @@ +state-fuzzer-client + +##### StateFuzzerConfig ##### +-output +${results.learning.clients.ra}/uoscore-uedhoc_linux_edhoc_oscore + + +##### LearnerConfig ##### +-learningAlgorithm +RaStar +-equivalenceAlgorithms +IO_RANDOM_WALK +-logQueries +-alphabet +./src/main/resources/alphabet_placeholder.xml +-maxDepthRA +10 +-probNewDataValue +0.5 +-seed +7 + + +##### EdhocMapperConfig ##### +-protocolVersion +v16 +## Mapper Auth ## + +-mapCredType +X509 + +-mapIdCredType +X5T + +## Sul Auth ## + +-sulCredType +X509 + +-sulIdCredType +X5T + +# TestVector +-testVectorJson +${authentication.test_vectors}/test_vectors_v16_p256.json + +-testVectorJsonKey +test_vector_1 + +-testVectorPeerKeyCurve +P256 + +-edhocRole +Responder + +-appCoapResource +tv1 + +-disableCXCorrelation + +-forceOscoreSenderId +01 + +-forceOscoreRecipientId +[] + + +##### SulConfig ##### +-responseWait +500 +-processDir +${models.clients}/uoscore-uedhoc +-cmd +./linux-edhoc-oscore-initiator-client +-startWait +100 + + +##### EdhocSulClientConfig ##### +-port +5683 diff --git a/experiments/saved_results/clients/ra/uoscore-uedhoc_linux_edhoc_oscore/hyp1.dot b/experiments/saved_results/clients/ra/uoscore-uedhoc_linux_edhoc_oscore/hyp1.dot new file mode 100644 index 00000000..e2669d1c --- /dev/null +++ b/experiments/saved_results/clients/ra/uoscore-uedhoc_linux_edhoc_oscore/hyp1.dot @@ -0,0 +1,22 @@ +digraph RA { +"" [shape=none,label=<>] +"l0" [shape=doublecircle] +"l1" [shape=doublecircle] +"l2" [shape=circle] +"l3" [shape=circle] +"l4" [shape=doublecircle] +"l5" [shape=doublecircle] +"" -> "l0" +"l0" -> "l1" [label=] +"l0" -> "l1" [label=] +"l0" -> "l1" [label=] +"l0" -> "l1" [label=] +"l0" -> "l1" [label=] +"l0" -> "l1" [label=] +"l0" -> "l4" [label=] +"l0" -> "l5" [label=] +"l0" -> "l5" [label=] +"l1" -> "l0" [label=] +"l4" -> "l0" [label=] +"l5" -> "l0" [label=] +} diff --git a/experiments/saved_results/clients/ra/uoscore-uedhoc_linux_edhoc_oscore/hyp2.dot b/experiments/saved_results/clients/ra/uoscore-uedhoc_linux_edhoc_oscore/hyp2.dot new file mode 100644 index 00000000..aac1c653 --- /dev/null +++ b/experiments/saved_results/clients/ra/uoscore-uedhoc_linux_edhoc_oscore/hyp2.dot @@ -0,0 +1,34 @@ +digraph RA { +"" [shape=none,label=<>] +"l0" [shape=doublecircle] +"l1" [shape=doublecircle] +"l2" [shape=circle] +"l3" [shape=circle] +"l4" [shape=doublecircle] +"l5" [shape=doublecircle] +"l6" [shape=doublecircle] +"l7" [shape=doublecircle] +"" -> "l0" +"l0" -> "l1" [label=] +"l0" -> "l1" [label=] +"l0" -> "l1" [label=] +"l0" -> "l1" [label=] +"l0" -> "l1" [label=] +"l0" -> "l1" [label=] +"l0" -> "l4" [label=] +"l0" -> "l5" [label=] +"l0" -> "l5" [label=] +"l1" -> "l6" [label=] +"l4" -> "l0" [label=] +"l5" -> "l0" [label=] +"l6" -> "l7" [label=] +"l6" -> "l7" [label=] +"l6" -> "l7" [label=] +"l6" -> "l7" [label=] +"l6" -> "l7" [label=] +"l6" -> "l7" [label=] +"l6" -> "l7" [label=] +"l6" -> "l7" [label=] +"l6" -> "l7" [label=] +"l7" -> "l6" [label=] +} diff --git a/experiments/saved_results/clients/ra/uoscore-uedhoc_linux_edhoc_oscore/hyp3.dot b/experiments/saved_results/clients/ra/uoscore-uedhoc_linux_edhoc_oscore/hyp3.dot new file mode 100644 index 00000000..01454af4 --- /dev/null +++ b/experiments/saved_results/clients/ra/uoscore-uedhoc_linux_edhoc_oscore/hyp3.dot @@ -0,0 +1,46 @@ +digraph RA { +"" [shape=none,label=<>] +"l0" [shape=doublecircle] +"l1" [shape=doublecircle] +"l2" [shape=circle] +"l3" [shape=circle] +"l4" [shape=doublecircle] +"l5" [shape=doublecircle] +"l6" [shape=doublecircle] +"l7" [shape=doublecircle] +"l8" [shape=doublecircle] +"l9" [shape=doublecircle] +"" -> "l0" +"l0" -> "l1" [label=] +"l0" -> "l1" [label=] +"l0" -> "l1" [label=] +"l0" -> "l1" [label=] +"l0" -> "l1" [label=] +"l0" -> "l1" [label=] +"l0" -> "l4" [label=] +"l0" -> "l5" [label=] +"l0" -> "l5" [label=] +"l1" -> "l6" [label=] +"l4" -> "l8" [label=] +"l5" -> "l0" [label=] +"l6" -> "l7" [label=] +"l6" -> "l7" [label=] +"l6" -> "l7" [label=] +"l6" -> "l7" [label=] +"l6" -> "l7" [label=] +"l6" -> "l7" [label=] +"l6" -> "l7" [label=] +"l6" -> "l7" [label=] +"l6" -> "l7" [label=] +"l7" -> "l6" [label=] +"l8" -> "l5" [label=] +"l8" -> "l5" [label=] +"l8" -> "l9" [label=] +"l8" -> "l9" [label=] +"l8" -> "l9" [label=] +"l8" -> "l9" [label=] +"l8" -> "l9" [label=] +"l8" -> "l9" [label=] +"l8" -> "l9" [label=] +"l9" -> "l8" [label=] +} diff --git a/experiments/saved_results/clients/ra/uoscore-uedhoc_linux_edhoc_oscore/hyp4.dot b/experiments/saved_results/clients/ra/uoscore-uedhoc_linux_edhoc_oscore/hyp4.dot new file mode 100644 index 00000000..5a1013ae --- /dev/null +++ b/experiments/saved_results/clients/ra/uoscore-uedhoc_linux_edhoc_oscore/hyp4.dot @@ -0,0 +1,70 @@ +digraph RA { +"" [shape=none,label=<>] +"l0" [shape=doublecircle] +"l1" [shape=doublecircle] +"l2" [shape=circle] +"l3" [shape=circle] +"l4" [shape=doublecircle] +"l5" [shape=doublecircle] +"l6" [shape=doublecircle] +"l7" [shape=doublecircle] +"l8" [shape=doublecircle] +"l9" [shape=doublecircle] +"l10" [shape=doublecircle] +"l11" [shape=doublecircle] +"l12" [shape=doublecircle] +"l13" [shape=doublecircle] +"" -> "l0" +"l0" -> "l1" [label=] +"l0" -> "l1" [label=] +"l0" -> "l1" [label=] +"l0" -> "l1" [label=] +"l0" -> "l1" [label=] +"l0" -> "l1" [label=] +"l0" -> "l4" [label=] +"l0" -> "l5" [label=] +"l0" -> "l5" [label=] +"l1" -> "l6" [label=] +"l4" -> "l8" [label=] +"l5" -> "l10" [label=] +"l6" -> "l7" [label=] +"l6" -> "l7" [label=] +"l6" -> "l7" [label=] +"l6" -> "l7" [label=] +"l6" -> "l7" [label=] +"l6" -> "l7" [label=] +"l6" -> "l7" [label=] +"l6" -> "l7" [label=] +"l6" -> "l7" [label=] +"l7" -> "l6" [label=] +"l8" -> "l5" [label=] +"l8" -> "l5" [label=] +"l8" -> "l9" [label=] +"l8" -> "l9" [label=] +"l8" -> "l9" [label=] +"l8" -> "l9" [label=] +"l8" -> "l9" [label=] +"l8" -> "l9" [label=] +"l8" -> "l9" [label=] +"l9" -> "l8" [label=] +"l10" -> "l1" [label=] +"l10" -> "l1" [label=] +"l10" -> "l1" [label=] +"l10" -> "l1" [label=] +"l10" -> "l1" [label=] +"l10" -> "l1" [label=] +"l10" -> "l5" [label=] +"l10" -> "l5" [label=] +"l10" -> "l11" [label=] +"l11" -> "l12" [label=] +"l12" -> "l5" [label=] +"l12" -> "l5" [label=] +"l12" -> "l13" [label=] +"l12" -> "l13" [label=] +"l12" -> "l13" [label=] +"l12" -> "l13" [label=] +"l12" -> "l13" [label=] +"l12" -> "l13" [label=] +"l12" -> "l13" [label=] +"l13" -> "l12" [label=] +} diff --git a/experiments/saved_results/clients/ra/uoscore-uedhoc_linux_edhoc_oscore/hyp5.dot b/experiments/saved_results/clients/ra/uoscore-uedhoc_linux_edhoc_oscore/hyp5.dot new file mode 100644 index 00000000..4d0ced0b --- /dev/null +++ b/experiments/saved_results/clients/ra/uoscore-uedhoc_linux_edhoc_oscore/hyp5.dot @@ -0,0 +1,72 @@ +digraph RA { +"" [shape=none,label=<>] +"l0" [shape=doublecircle] +"l1" [shape=doublecircle] +"l2" [shape=circle] +"l3" [shape=circle] +"l4" [shape=doublecircle] +"l5" [shape=doublecircle] +"l6" [shape=doublecircle] +"l7" [shape=doublecircle] +"l8" [shape=doublecircle] +"l9" [shape=doublecircle] +"l10" [shape=doublecircle] +"l11" [shape=doublecircle] +"l12" [shape=doublecircle] +"l13" [shape=doublecircle] +"l14" [shape=doublecircle] +"" -> "l0" +"l0" -> "l1" [label=] +"l0" -> "l1" [label=] +"l0" -> "l1" [label=] +"l0" -> "l1" [label=] +"l0" -> "l1" [label=] +"l0" -> "l1" [label=] +"l0" -> "l4" [label=] +"l0" -> "l5" [label=] +"l0" -> "l5" [label=] +"l1" -> "l6" [label=] +"l4" -> "l8" [label=] +"l5" -> "l10" [label=] +"l6" -> "l7" [label=] +"l6" -> "l7" [label=] +"l6" -> "l7" [label=] +"l6" -> "l7" [label=] +"l6" -> "l7" [label=] +"l6" -> "l7" [label=] +"l6" -> "l7" [label=] +"l6" -> "l7" [label=] +"l6" -> "l7" [label=] +"l7" -> "l6" [label=] +"l8" -> "l9" [label=] +"l8" -> "l9" [label=] +"l8" -> "l9" [label=] +"l8" -> "l9" [label=] +"l8" -> "l9" [label=] +"l8" -> "l9" [label=] +"l8" -> "l9" [label=] +"l8" -> "l14" [label=] +"l8" -> "l14" [label=] +"l9" -> "l8" [label=] +"l10" -> "l1" [label=] +"l10" -> "l1" [label=] +"l10" -> "l1" [label=] +"l10" -> "l1" [label=] +"l10" -> "l1" [label=] +"l10" -> "l1" [label=] +"l10" -> "l5" [label=] +"l10" -> "l5" [label=] +"l10" -> "l11" [label=] +"l11" -> "l12" [label=] +"l12" -> "l5" [label=] +"l12" -> "l5" [label=] +"l12" -> "l13" [label=] +"l12" -> "l13" [label=] +"l12" -> "l13" [label=] +"l12" -> "l13" [label=] +"l12" -> "l13" [label=] +"l12" -> "l13" [label=] +"l12" -> "l13" [label=] +"l13" -> "l12" [label=] +"l14" -> "l8" [label=] +} diff --git a/experiments/saved_results/clients/ra/uoscore-uedhoc_linux_edhoc_oscore/hyp6.dot b/experiments/saved_results/clients/ra/uoscore-uedhoc_linux_edhoc_oscore/hyp6.dot new file mode 100644 index 00000000..e3995344 --- /dev/null +++ b/experiments/saved_results/clients/ra/uoscore-uedhoc_linux_edhoc_oscore/hyp6.dot @@ -0,0 +1,82 @@ +digraph RA { +"" [shape=none,label=<>] +"l0" [shape=doublecircle] +"l1" [shape=doublecircle] +"l2" [shape=circle] +"l3" [shape=circle] +"l4" [shape=doublecircle] +"l5" [shape=doublecircle] +"l6" [shape=doublecircle] +"l7" [shape=doublecircle] +"l8" [shape=doublecircle] +"l9" [shape=doublecircle] +"l10" [shape=doublecircle] +"l11" [shape=doublecircle] +"l12" [shape=doublecircle] +"l13" [shape=doublecircle] +"l14" [shape=doublecircle] +"l15" [shape=doublecircle] +"" -> "l0" +"l0" -> "l1" [label=] +"l0" -> "l1" [label=] +"l0" -> "l1" [label=] +"l0" -> "l1" [label=] +"l0" -> "l1" [label=] +"l0" -> "l1" [label=] +"l0" -> "l4" [label=] +"l0" -> "l5" [label=] +"l0" -> "l5" [label=] +"l1" -> "l6" [label=] +"l4" -> "l8" [label=] +"l5" -> "l10" [label=] +"l6" -> "l7" [label=] +"l6" -> "l7" [label=] +"l6" -> "l7" [label=] +"l6" -> "l7" [label=] +"l6" -> "l7" [label=] +"l6" -> "l7" [label=] +"l6" -> "l7" [label=] +"l6" -> "l7" [label=] +"l6" -> "l7" [label=] +"l7" -> "l6" [label=] +"l8" -> "l9" [label=] +"l8" -> "l9" [label=] +"l8" -> "l9" [label=] +"l8" -> "l9" [label=] +"l8" -> "l9" [label=] +"l8" -> "l9" [label=] +"l8" -> "l9" [label=] +"l8" -> "l14" [label=] +"l8" -> "l14" [label=] +"l9" -> "l15" [label=] +"l10" -> "l1" [label=] +"l10" -> "l1" [label=] +"l10" -> "l1" [label=] +"l10" -> "l1" [label=] +"l10" -> "l1" [label=] +"l10" -> "l1" [label=] +"l10" -> "l5" [label=] +"l10" -> "l5" [label=] +"l10" -> "l11" [label=] +"l11" -> "l12" [label=] +"l12" -> "l5" [label=] +"l12" -> "l5" [label=] +"l12" -> "l13" [label=] +"l12" -> "l13" [label=] +"l12" -> "l13" [label=] +"l12" -> "l13" [label=] +"l12" -> "l13" [label=] +"l12" -> "l13" [label=] +"l12" -> "l13" [label=] +"l13" -> "l12" [label=] +"l14" -> "l8" [label=] +"l15" -> "l9" [label=] +"l15" -> "l9" [label=] +"l15" -> "l9" [label=] +"l15" -> "l9" [label=] +"l15" -> "l9" [label=] +"l15" -> "l9" [label=] +"l15" -> "l9" [label=] +"l15" -> "l9" [label=] +"l15" -> "l14" [label=] +} diff --git a/experiments/saved_results/clients/ra/uoscore-uedhoc_linux_edhoc_oscore/hyp7.dot b/experiments/saved_results/clients/ra/uoscore-uedhoc_linux_edhoc_oscore/hyp7.dot new file mode 100644 index 00000000..8114550a --- /dev/null +++ b/experiments/saved_results/clients/ra/uoscore-uedhoc_linux_edhoc_oscore/hyp7.dot @@ -0,0 +1,84 @@ +digraph RA { +"" [shape=none,label=<>] +"l0" [shape=doublecircle] +"l1" [shape=doublecircle] +"l2" [shape=circle] +"l3" [shape=circle] +"l4" [shape=doublecircle] +"l5" [shape=doublecircle] +"l6" [shape=doublecircle] +"l7" [shape=doublecircle] +"l8" [shape=doublecircle] +"l9" [shape=doublecircle] +"l10" [shape=doublecircle] +"l11" [shape=doublecircle] +"l12" [shape=doublecircle] +"l13" [shape=doublecircle] +"l14" [shape=doublecircle] +"l15" [shape=doublecircle] +"l16" [shape=doublecircle] +"" -> "l0" +"l0" -> "l1" [label=] +"l0" -> "l1" [label=] +"l0" -> "l1" [label=] +"l0" -> "l1" [label=] +"l0" -> "l1" [label=] +"l0" -> "l1" [label=] +"l0" -> "l4" [label=] +"l0" -> "l5" [label=] +"l0" -> "l5" [label=] +"l1" -> "l6" [label=] +"l4" -> "l8" [label=] +"l5" -> "l10" [label=] +"l6" -> "l7" [label=] +"l6" -> "l7" [label=] +"l6" -> "l7" [label=] +"l6" -> "l7" [label=] +"l6" -> "l7" [label=] +"l6" -> "l7" [label=] +"l6" -> "l7" [label=] +"l6" -> "l7" [label=] +"l6" -> "l7" [label=] +"l7" -> "l6" [label=] +"l8" -> "l9" [label=] +"l8" -> "l9" [label=] +"l8" -> "l9" [label=] +"l8" -> "l9" [label=] +"l8" -> "l9" [label=] +"l8" -> "l9" [label=] +"l8" -> "l9" [label=] +"l8" -> "l14" [label=] +"l8" -> "l14" [label=] +"l9" -> "l15" [label=] +"l10" -> "l1" [label=] +"l10" -> "l1" [label=] +"l10" -> "l1" [label=] +"l10" -> "l1" [label=] +"l10" -> "l1" [label=] +"l10" -> "l1" [label=] +"l10" -> "l5" [label=] +"l10" -> "l5" [label=] +"l10" -> "l11" [label=] +"l11" -> "l12" [label=] +"l12" -> "l13" [label=] +"l12" -> "l13" [label=] +"l12" -> "l13" [label=] +"l12" -> "l13" [label=] +"l12" -> "l13" [label=] +"l12" -> "l13" [label=] +"l12" -> "l13" [label=] +"l12" -> "l16" [label=] +"l12" -> "l16" [label=] +"l13" -> "l12" [label=] +"l14" -> "l8" [label=] +"l15" -> "l9" [label=] +"l15" -> "l9" [label=] +"l15" -> "l9" [label=] +"l15" -> "l9" [label=] +"l15" -> "l9" [label=] +"l15" -> "l9" [label=] +"l15" -> "l9" [label=] +"l15" -> "l9" [label=] +"l15" -> "l14" [label=] +"l16" -> "l12" [label=] +} diff --git a/experiments/saved_results/clients/ra/uoscore-uedhoc_linux_edhoc_oscore/hyp8.dot b/experiments/saved_results/clients/ra/uoscore-uedhoc_linux_edhoc_oscore/hyp8.dot new file mode 100644 index 00000000..0696329b --- /dev/null +++ b/experiments/saved_results/clients/ra/uoscore-uedhoc_linux_edhoc_oscore/hyp8.dot @@ -0,0 +1,86 @@ +digraph RA { +"" [shape=none,label=<>] +"l0" [shape=doublecircle] +"l1" [shape=doublecircle] +"l2" [shape=circle] +"l3" [shape=circle] +"l4" [shape=doublecircle] +"l5" [shape=doublecircle] +"l6" [shape=doublecircle] +"l7" [shape=doublecircle] +"l8" [shape=doublecircle] +"l9" [shape=doublecircle] +"l10" [shape=doublecircle] +"l11" [shape=doublecircle] +"l12" [shape=doublecircle] +"l13" [shape=doublecircle] +"l14" [shape=doublecircle] +"l15" [shape=doublecircle] +"l16" [shape=doublecircle] +"l17" [shape=doublecircle] +"" -> "l0" +"l0" -> "l1" [label=] +"l0" -> "l1" [label=] +"l0" -> "l1" [label=] +"l0" -> "l1" [label=] +"l0" -> "l1" [label=] +"l0" -> "l1" [label=] +"l0" -> "l4" [label=] +"l0" -> "l5" [label=] +"l0" -> "l17" [label=] +"l1" -> "l6" [label=] +"l4" -> "l8" [label=] +"l5" -> "l10" [label=] +"l6" -> "l7" [label=] +"l6" -> "l7" [label=] +"l6" -> "l7" [label=] +"l6" -> "l7" [label=] +"l6" -> "l7" [label=] +"l6" -> "l7" [label=] +"l6" -> "l7" [label=] +"l6" -> "l7" [label=] +"l6" -> "l7" [label=] +"l7" -> "l6" [label=] +"l8" -> "l9" [label=] +"l8" -> "l9" [label=] +"l8" -> "l9" [label=] +"l8" -> "l9" [label=] +"l8" -> "l9" [label=] +"l8" -> "l9" [label=] +"l8" -> "l9" [label=] +"l8" -> "l14" [label=] +"l8" -> "l14" [label=] +"l9" -> "l15" [label=] +"l10" -> "l1" [label=] +"l10" -> "l1" [label=] +"l10" -> "l1" [label=] +"l10" -> "l1" [label=] +"l10" -> "l1" [label=] +"l10" -> "l1" [label=] +"l10" -> "l5" [label=] +"l10" -> "l5" [label=] +"l10" -> "l11" [label=] +"l11" -> "l12" [label=] +"l12" -> "l13" [label=] +"l12" -> "l13" [label=] +"l12" -> "l13" [label=] +"l12" -> "l13" [label=] +"l12" -> "l13" [label=] +"l12" -> "l13" [label=] +"l12" -> "l13" [label=] +"l12" -> "l16" [label=] +"l12" -> "l16" [label=] +"l13" -> "l12" [label=] +"l14" -> "l8" [label=] +"l15" -> "l9" [label=] +"l15" -> "l9" [label=] +"l15" -> "l9" [label=] +"l15" -> "l9" [label=] +"l15" -> "l9" [label=] +"l15" -> "l9" [label=] +"l15" -> "l9" [label=] +"l15" -> "l9" [label=] +"l15" -> "l14" [label=] +"l16" -> "l12" [label=] +"l17" -> "l0" [label=] +} diff --git a/experiments/saved_results/clients/ra/uoscore-uedhoc_linux_edhoc_oscore/hyp9.dot b/experiments/saved_results/clients/ra/uoscore-uedhoc_linux_edhoc_oscore/hyp9.dot new file mode 100644 index 00000000..577b2db7 --- /dev/null +++ b/experiments/saved_results/clients/ra/uoscore-uedhoc_linux_edhoc_oscore/hyp9.dot @@ -0,0 +1,88 @@ +digraph RA { +"" [shape=none,label=<>] +"l0" [shape=doublecircle] +"l1" [shape=doublecircle] +"l2" [shape=circle] +"l3" [shape=circle] +"l4" [shape=doublecircle] +"l5" [shape=doublecircle] +"l6" [shape=doublecircle] +"l7" [shape=doublecircle] +"l8" [shape=doublecircle] +"l9" [shape=doublecircle] +"l10" [shape=doublecircle] +"l11" [shape=doublecircle] +"l12" [shape=doublecircle] +"l13" [shape=doublecircle] +"l14" [shape=doublecircle] +"l15" [shape=doublecircle] +"l16" [shape=doublecircle] +"l17" [shape=doublecircle] +"l18" [shape=doublecircle] +"" -> "l0" +"l0" -> "l1" [label=] +"l0" -> "l1" [label=] +"l0" -> "l1" [label=] +"l0" -> "l1" [label=] +"l0" -> "l1" [label=] +"l0" -> "l1" [label=] +"l0" -> "l4" [label=] +"l0" -> "l5" [label=] +"l0" -> "l17" [label=] +"l1" -> "l6" [label=] +"l4" -> "l8" [label=] +"l5" -> "l10" [label=] +"l6" -> "l7" [label=] +"l6" -> "l7" [label=] +"l6" -> "l7" [label=] +"l6" -> "l7" [label=] +"l6" -> "l7" [label=] +"l6" -> "l7" [label=] +"l6" -> "l7" [label=] +"l6" -> "l7" [label=] +"l6" -> "l7" [label=] +"l7" -> "l6" [label=] +"l8" -> "l9" [label=] +"l8" -> "l9" [label=] +"l8" -> "l9" [label=] +"l8" -> "l9" [label=] +"l8" -> "l9" [label=] +"l8" -> "l9" [label=] +"l8" -> "l9" [label=] +"l8" -> "l14" [label=] +"l8" -> "l14" [label=] +"l9" -> "l15" [label=] +"l10" -> "l1" [label=] +"l10" -> "l1" [label=] +"l10" -> "l1" [label=] +"l10" -> "l1" [label=] +"l10" -> "l1" [label=] +"l10" -> "l1" [label=] +"l10" -> "l5" [label=] +"l10" -> "l5" [label=] +"l10" -> "l11" [label=] +"l11" -> "l12" [label=] +"l12" -> "l13" [label=] +"l12" -> "l13" [label=] +"l12" -> "l13" [label=] +"l12" -> "l13" [label=] +"l12" -> "l13" [label=] +"l12" -> "l13" [label=] +"l12" -> "l13" [label=] +"l12" -> "l16" [label=] +"l12" -> "l16" [label=] +"l13" -> "l12" [label=] +"l14" -> "l8" [label=] +"l15" -> "l9" [label=] +"l15" -> "l9" [label=] +"l15" -> "l9" [label=] +"l15" -> "l9" [label=] +"l15" -> "l9" [label=] +"l15" -> "l9" [label=] +"l15" -> "l9" [label=] +"l15" -> "l9" [label=] +"l15" -> "l18" [label=] +"l16" -> "l12" [label=] +"l17" -> "l0" [label=] +"l18" -> "l15" [label=] +} diff --git a/experiments/saved_results/clients/ra/uoscore-uedhoc_linux_edhoc_oscore/learnedModel.dot b/experiments/saved_results/clients/ra/uoscore-uedhoc_linux_edhoc_oscore/learnedModel.dot new file mode 100644 index 00000000..577b2db7 --- /dev/null +++ b/experiments/saved_results/clients/ra/uoscore-uedhoc_linux_edhoc_oscore/learnedModel.dot @@ -0,0 +1,88 @@ +digraph RA { +"" [shape=none,label=<>] +"l0" [shape=doublecircle] +"l1" [shape=doublecircle] +"l2" [shape=circle] +"l3" [shape=circle] +"l4" [shape=doublecircle] +"l5" [shape=doublecircle] +"l6" [shape=doublecircle] +"l7" [shape=doublecircle] +"l8" [shape=doublecircle] +"l9" [shape=doublecircle] +"l10" [shape=doublecircle] +"l11" [shape=doublecircle] +"l12" [shape=doublecircle] +"l13" [shape=doublecircle] +"l14" [shape=doublecircle] +"l15" [shape=doublecircle] +"l16" [shape=doublecircle] +"l17" [shape=doublecircle] +"l18" [shape=doublecircle] +"" -> "l0" +"l0" -> "l1" [label=] +"l0" -> "l1" [label=] +"l0" -> "l1" [label=] +"l0" -> "l1" [label=] +"l0" -> "l1" [label=] +"l0" -> "l1" [label=] +"l0" -> "l4" [label=] +"l0" -> "l5" [label=] +"l0" -> "l17" [label=] +"l1" -> "l6" [label=] +"l4" -> "l8" [label=] +"l5" -> "l10" [label=] +"l6" -> "l7" [label=] +"l6" -> "l7" [label=] +"l6" -> "l7" [label=] +"l6" -> "l7" [label=] +"l6" -> "l7" [label=] +"l6" -> "l7" [label=] +"l6" -> "l7" [label=] +"l6" -> "l7" [label=] +"l6" -> "l7" [label=] +"l7" -> "l6" [label=] +"l8" -> "l9" [label=] +"l8" -> "l9" [label=] +"l8" -> "l9" [label=] +"l8" -> "l9" [label=] +"l8" -> "l9" [label=] +"l8" -> "l9" [label=] +"l8" -> "l9" [label=] +"l8" -> "l14" [label=] +"l8" -> "l14" [label=] +"l9" -> "l15" [label=] +"l10" -> "l1" [label=] +"l10" -> "l1" [label=] +"l10" -> "l1" [label=] +"l10" -> "l1" [label=] +"l10" -> "l1" [label=] +"l10" -> "l1" [label=] +"l10" -> "l5" [label=] +"l10" -> "l5" [label=] +"l10" -> "l11" [label=] +"l11" -> "l12" [label=] +"l12" -> "l13" [label=] +"l12" -> "l13" [label=] +"l12" -> "l13" [label=] +"l12" -> "l13" [label=] +"l12" -> "l13" [label=] +"l12" -> "l13" [label=] +"l12" -> "l13" [label=] +"l12" -> "l16" [label=] +"l12" -> "l16" [label=] +"l13" -> "l12" [label=] +"l14" -> "l8" [label=] +"l15" -> "l9" [label=] +"l15" -> "l9" [label=] +"l15" -> "l9" [label=] +"l15" -> "l9" [label=] +"l15" -> "l9" [label=] +"l15" -> "l9" [label=] +"l15" -> "l9" [label=] +"l15" -> "l9" [label=] +"l15" -> "l18" [label=] +"l16" -> "l12" [label=] +"l17" -> "l0" [label=] +"l18" -> "l15" [label=] +} diff --git a/experiments/saved_results/clients/ra/uoscore-uedhoc_linux_edhoc_oscore/learnedModel.pdf b/experiments/saved_results/clients/ra/uoscore-uedhoc_linux_edhoc_oscore/learnedModel.pdf new file mode 100644 index 00000000..509a369f Binary files /dev/null and b/experiments/saved_results/clients/ra/uoscore-uedhoc_linux_edhoc_oscore/learnedModel.pdf differ diff --git a/experiments/saved_results/clients/ra/uoscore-uedhoc_linux_edhoc_oscore/learnedModelShortNames.pdf b/experiments/saved_results/clients/ra/uoscore-uedhoc_linux_edhoc_oscore/learnedModelShortNames.pdf new file mode 100644 index 00000000..dac7d031 Binary files /dev/null and b/experiments/saved_results/clients/ra/uoscore-uedhoc_linux_edhoc_oscore/learnedModelShortNames.pdf differ diff --git a/experiments/saved_results/clients/ra/uoscore-uedhoc_linux_edhoc_oscore/learnedModelbtf.dot b/experiments/saved_results/clients/ra/uoscore-uedhoc_linux_edhoc_oscore/learnedModelbtf.dot new file mode 100644 index 00000000..47cf8a04 --- /dev/null +++ b/experiments/saved_results/clients/ra/uoscore-uedhoc_linux_edhoc_oscore/learnedModelbtf.dot @@ -0,0 +1,88 @@ +digraph RA { +"" [shape=none,label=<>] +"l0" [shape=doublecircle] +"l1" [shape=doublecircle] +"l2" [shape=circle] +"l3" [shape=circle] +"l4" [shape=doublecircle] +"l5" [shape=doublecircle] +"l6" [shape=doublecircle] +"l7" [shape=doublecircle] +"l8" [shape=doublecircle] +"l9" [shape=doublecircle] +"l10" [shape=doublecircle] +"l11" [shape=doublecircle] +"l12" [shape=doublecircle] +"l13" [shape=doublecircle] +"l14" [shape=doublecircle] +"l15" [shape=doublecircle] +"l16" [shape=doublecircle] +"l17" [shape=doublecircle] +"l18" [shape=doublecircle] +"" -> "l0" +"l0" -> "l1" [label=] +"l0" -> "l1" [label=] +"l0" -> "l1" [label=] +"l0" -> "l1" [label=] +"l0" -> "l1" [label=] +"l0" -> "l1" [label=] +"l0" -> "l4" [label=] +"l0" -> "l5" [label=] +"l0" -> "l17" [label=] +"l1" -> "l6" [label=] +"l4" -> "l8" [label=] +"l5" -> "l10" [label=] +"l6" -> "l7" [label=] +"l6" -> "l7" [label=] +"l6" -> "l7" [label=] +"l6" -> "l7" [label=] +"l6" -> "l7" [label=] +"l6" -> "l7" [label=] +"l6" -> "l7" [label=] +"l6" -> "l7" [label=] +"l6" -> "l7" [label=] +"l7" -> "l6" [label=] +"l8" -> "l9" [label=] +"l8" -> "l9" [label=] +"l8" -> "l9" [label=] +"l8" -> "l9" [label=] +"l8" -> "l9" [label=] +"l8" -> "l9" [label=] +"l8" -> "l9" [label=] +"l8" -> "l14" [label=] +"l8" -> "l14" [label=] +"l9" -> "l15" [label=] +"l10" -> "l1" [label=] +"l10" -> "l1" [label=] +"l10" -> "l1" [label=] +"l10" -> "l1" [label=] +"l10" -> "l1" [label=] +"l10" -> "l1" [label=] +"l10" -> "l5" [label=] +"l10" -> "l5" [label=] +"l10" -> "l11" [label=] +"l11" -> "l12" [label=] +"l12" -> "l13" [label=] +"l12" -> "l13" [label=] +"l12" -> "l13" [label=] +"l12" -> "l13" [label=] +"l12" -> "l13" [label=] +"l12" -> "l13" [label=] +"l12" -> "l13" [label=] +"l12" -> "l16" [label=] +"l12" -> "l16" [label=] +"l13" -> "l12" [label=] +"l14" -> "l8" [label=] +"l15" -> "l9" [label=] +"l15" -> "l9" [label=] +"l15" -> "l9" [label=] +"l15" -> "l9" [label=] +"l15" -> "l9" [label=] +"l15" -> "l9" [label=] +"l15" -> "l9" [label=] +"l15" -> "l9" [label=] +"l15" -> "l18" [label=] +"l16" -> "l12" [label=] +"l17" -> "l0" [label=] +"l18" -> "l15" [label=] +} diff --git a/experiments/saved_results/clients/ra/uoscore-uedhoc_linux_edhoc_oscore/mapper_connection.config b/experiments/saved_results/clients/ra/uoscore-uedhoc_linux_edhoc_oscore/mapper_connection.config new file mode 100644 index 00000000..97827755 --- /dev/null +++ b/experiments/saved_results/clients/ra/uoscore-uedhoc_linux_edhoc_oscore/mapper_connection.config @@ -0,0 +1,153 @@ +# Californium3 CoAP Properties file for EdhocMapper +# +# Random factor for initial CoAP acknowledge timeout. +# Default: 1.5 +COAP.ACK_INIT_RANDOM=1.5 +# Initial CoAP acknowledge timeout. +# Default: 2[s] +# Adjust MAX_ACK_TIMEOUT to add more time +COAP.ACK_TIMEOUT=10[s] +# Scale factor for CoAP acknowledge backoff-timeout. +# Default: 2.0 +COAP.ACK_TIMEOUT_SCALE=2.0 +# Enable automatic failover on "entity too large" response. +# Default: true +COAP.BLOCKWISE_ENTITY_TOO_LARGE_AUTO_FAILOVER=true +# Reuse token for blockwise requests. Ease traceability but may introduce +# vulnerability. +# Default: false +COAP.BLOCKWISE_REUSE_TOKEN=false +# Interval to validate lifetime of blockwise status. +# Default: 5[s] +COAP.BLOCKWISE_STATUS_INTERVAL=5[s] +# Lifetime of blockwise status. +# Default: 5[min] +COAP.BLOCKWISE_STATUS_LIFETIME=5[min] +# Use block2 option strictly, even if block2 is not required. +# Default: false +COAP.BLOCKWISE_STRICT_BLOCK2_OPTION=false +# CoAP port. +# Default: 5683 +COAP.COAP_PORT=5683 +# CoAP DTLS port. +# Default: 5684 +COAP.COAP_SECURE_PORT=5684 +# Congestion-Control algorithm (still experimental). +# [NULL, COCOA, COCOA_STRONG, BASIC_RTO, LINUX_RTO, PEAKHOPPER_RTO]. +# Default: NULL +COAP.CONGESTION_CONTROL_ALGORITHM=NULL +# Crop rotation period. +# Default: 247[s] +COAP.CROP_ROTATION_PERIOD=247[s] +# Deduplicator algorithm. +# [MARK_AND_SWEEP, PEERS_MARK_AND_SWEEP, CROP_ROTATION, NO_DEDUPLICATOR]. +# Default: MARK_AND_SWEEP +COAP.DEDUPLICATOR=MARK_AND_SWEEP +# Automatic replace entries in deduplicator. +# Default: true +COAP.DEDUPLICATOR_AUTO_REPLACE=true +# CoAP maximum exchange lifetime for CON requests. +# Default: 247[s] +COAP.EXCHANGE_LIFETIME=247[s] +# Timespan a multicast server may spread the response. +# Default: 5[s] +COAP.LEISURE=5[s] +# Mark and sweep interval. +# Default: 10[s] +COAP.MARK_AND_SWEEP_INTERVAL=10[s] +# Maximum CoAP acknowledge timeout. +# Default: 1[min] +# Should be: ACK_TIMEOUT <= MAX_ACK_TIMEOUT +COAP.MAX_ACK_TIMEOUT=10[s] +# Maximum number of active peers. +# Default: 150000 +COAP.MAX_ACTIVE_PEERS=150000 +# Maximum transmission latency for messages. +# Default: 100[s] +COAP.MAX_LATENCY=100[s] +# Maximum payload size. +# Default: 1024 +COAP.MAX_MESSAGE_SIZE=1024 +# Maximum inactive period of peer. +# Default: 10[min] +COAP.MAX_PEER_INACTIVITY_PERIOD=10[min] +# Maximum size of resource body. 0 to disable transparent blockwise +# mode. +# Default: 8192 +COAP.MAX_RESOURCE_BODY_SIZE=8192 +# Maximum number of CoAP retransmissions. +# Default: 4 +# Should be >= 0 (0: no retransmissions) +COAP.MAX_RETRANSMIT=0 +# Maximum number of observes on server-side. 0 to disable this limitation. +# Default: 50000 +COAP.MAX_SERVER_OBSERVES=50000 +# Maximum server response delay. +# Default: 250[s] +COAP.MAX_SERVER_RESPONSE_DELAY=250[s] +# Maximum time to wait for ACK or RST after the first transmission of +# a CON message. +# Default: 93[s] +COAP.MAX_TRANSMIT_WAIT=93[s] +# MID tracker. +# [NULL, GROUPED, MAPBASED]. +# Default: GROUPED +COAP.MID_TACKER=GROUPED +# Number of MID tracker groups. +# Default: 16 +COAP.MID_TRACKER_GROUPS=16 +# Base MID for multicast requests. +# Default: 65000 +COAP.MULTICAST_BASE_MID=65000 +# CoAP maximum lifetime for NON requests. +# Default: 145[s] +COAP.NON_LIFETIME=145[s] +# Interval time to check notifications receiver using a CON message. +# Default: 2[min] +COAP.NOTIFICATION_CHECK_INTERVAL=2[min] +# Interval counter to check notifications receiver using a CON message. +# Default: 100 +COAP.NOTIFICATION_CHECK_INTERVAL_COUNT=100 +# Additional time (backoff) to the max-age option +# for waiting for the next notification before reregister. +# Default: 2[s] +COAP.NOTIFICATION_REREGISTRATION_BACKOFF=2[s] +# Maximum concurrent transmissions. +# Default: 1 +COAP.NSTART=1 +# Maximum messages kept per peer for PEERS_MARK_AND_SWEEP. +# Default: 64 +COAP.PEERS_MARK_AND_SWEEP_MESSAGES=64 +# Preferred blocksize for blockwise transfer. +# Default: 512 +COAP.PREFERRED_BLOCK_SIZE=512 +# Probing rate to peers, which didn't response before. Currently not +# used. +# Default: 1.0 +COAP.PROBING_RATE=1.0 +# Protocol stage thread count. +# Default: 1 +COAP.PROTOCOL_STAGE_THREAD_COUNT=1 +# Response matching mode. +# [STRICT, RELAXED, PRINCIPAL, PRINCIPAL_IDENTITY]. +# Default: STRICT +COAP.RESPONSE_MATCHING=STRICT +# Process empty messages strictly according RFC7252, 4.1 as format error. +# Disable to ignore additional data as tokens or options. +# Default: true +COAP.STRICT_EMPTY_MESSAGE_FORMAT=false +# Number of block per TCP-blockwise bulk transfer. +# Default: 1 +COAP.TCP_NUMBER_OF_BULK_BLOCKS=1 +# Limit of token size. +# Default: 8 +COAP.TOKEN_SIZE_LIMIT=8 +# Use message off-loading, when data is not longer required. +# Default: false +COAP.USE_MESSAGE_OFFLOADING=false +# Use initially a random value for MID. +# Default: true +COAP.USE_RANDOM_MID_START=true +# Health status interval. 0 to disable the health status. +# Default: 0[ms] +SYS.HEALTH_STATUS_INTERVAL=0[ms] diff --git a/experiments/saved_results/clients/ra/uoscore-uedhoc_linux_edhoc_oscore/statistics.txt b/experiments/saved_results/clients/ra/uoscore-uedhoc_linux_edhoc_oscore/statistics.txt new file mode 100644 index 00000000..62672be9 --- /dev/null +++ b/experiments/saved_results/clients/ra/uoscore-uedhoc_linux_edhoc_oscore/statistics.txt @@ -0,0 +1,126 @@ +=== RUN DESCRIPTION === +Alphabet: [?EDHOC_MESSAGE_1_INPUT[C_I], !EDHOC_MESSAGE_1_OUTPUT[C_I], !EDHOC_MESSAGE_2_OUTPUT[], ?EDHOC_MESSAGE_3_INPUT[], !EDHOC_MESSAGE_3_OUTPUT[], !EDHOC_MESSAGE_4_OUTPUT[], !UNSUCCESSFUL_MESSAGE[], !COAP_EMPTY_MESSAGE_OUTPUT[], !EDHOC_MESSAGE_3_OSCORE_APP_OUTPUT[C_I], ?EDHOC_ERROR_MESSAGE_INPUT[], !COAP_APP_MESSAGE_OUTPUT[], !COAP_MESSAGE_OUTPUT[], !COAP_ERROR_MESSAGE_OUTPUT[], ?COAP_APP_MESSAGE_INPUT[], ?COAP_EMPTY_MESSAGE_INPUT[], !OSCORE_APP_MESSAGE_OUTPUT[], !SOCKET_CLOSED[], !EDHOC_ERROR_MESSAGE_OUTPUT[], ?EDHOC_MESSAGE_2_INPUT[], !DISABLED[], ?EDHOC_MESSAGE_4_INPUT[], !UNSUPPORTED_MESSAGE[], !TIMEOUT[], !UNKNOWN[], ?EDHOC_MESSAGE_3_OSCORE_APP_INPUT[C_I], ?OSCORE_APP_MESSAGE_INPUT[]] + +StateFuzzerConfig Parameters +Help: false +Debug: false +Quiet: false +Output Directory: experiments/results/clients/ra/uoscore-uedhoc_linux_edhoc_oscore +Fuzzing Client: true + +LearnerConfigStandard Parameters +Alphabet: ./src/main/resources/alphabet_placeholder.xml +Learning Algorithm: RASTAR +Equivalence Algorithms: [IO_RANDOM_WALK] +Max Depth: 1 +Min Length: 5 +Max Length: 15 +Max Equivalence Queries: 1000 +Runs Per Membership Query: 1 +Random Length: 5 +Membership Query Retries: 3 +Log Queries: true +Prob Reset: 0.0 +Test File: null +Seed: 7 +Cache Tests: false +Ce Sanitization: true +Skip Non Det Tests: false +Ce Reruns: 3 +Probabilistic Sanitization: true +Time Limit: null +Test Limit: null +Round Limit: null +IOMode: true +Probability of Choosing a New DataValue: 0.5 +Max Runs: 10000 +Max Depth for Register Automata: 10 +Reset Runs: false +Seed transitions: false +Draw symbols uniformly: false + +SulConfig Parameters +Fuzzing Role: client +Fuzzing Client: true +Response Wait: 100 +Input Response Timeout: null +Command: null +Terminate Command: null +Process Dir: null +Redirect Output Streams: false +Process Trigger: NEW_TEST +Start Wait: 0 + +SulClientConfig Parameters +Client Wait: 50 +Port: 5683 + +MapperConfig Parameters +Mapper Connection Config: null +Repeating Outputs: null +Socket Closed as Timeout: false +Disabled as Timeout: false +Merge Repeating: true + +EdhocMapperConfig Parameters +Protocol Version: v16 +Combined Message Version: v06 +Edhoc Role: Responder +Edhoc Coap Resource: .well-known/edhoc +App Coap Resource: tv1 +App Message Code To Coap Server: GET +App Message Payload To Coap Server: +App Message Code To Coap Client: CHANGED +App Message Payload To Coap Client: Server Application Data +Coap Error As Edhoc Error: false +use Content Format: true +use Session Reset: false +use CX Correlation: false +Own Connection Id: 36 +Generate Own Connection Id: true +Force Oscore Sender Id: 01 +Force Oscore Recipient Id: [] + +AuthenticationConfig Parameters +Map Cred Type: X509 +Map Id Cred Type: X5T +Sul Cred Type: X509 +Sul Id Cred Type: X5T +Trust Model: STRICT + +TestVectorAuthenticationConfig Parameters +Test Vector File: experiments/authentication/test_vectors/test_vectors_v16_p256.json +Test Vector Key: test_vector_1 +Test Vector Peer Key Curve: P256 + +SulAdapterConfig Parameters +Adapter Port: null +Adapter Address: localhost + +=== STATISTICS === +Learning finished: true +Size of the input alphabet: 26 +Number of states: 19 +Number of hypotheses: 9 +Number of inputs: 101213 +Number of tests: 10459 +Number of learning inputs: 1254 +Number of learning tests: 459 +Number of inputs up to last hypothesis: 2623 +Number of tests up to last hypothesis: 600 +Time (ms) to learn model: 7034190 +Counterexamples: +CE 1:Query[ε|EDHOC_MESSAGE_4_INPUT[] TIMEOUT[] COAP_EMPTY_MESSAGE_INPUT[] SOCKET_CLOSED[] / true] +CE 2:Query[ε|EDHOC_MESSAGE_2_INPUT[] EDHOC_MESSAGE_3_OUTPUT[] EDHOC_MESSAGE_3_OSCORE_APP_INPUT[0[C_I]] UNSUPPORTED_MESSAGE[] EDHOC_ERROR_MESSAGE_INPUT[] OSCORE_APP_MESSAGE_OUTPUT[] / true] +CE 3:Query[ε|EDHOC_MESSAGE_3_OSCORE_APP_INPUT[0[C_I]] UNSUPPORTED_MESSAGE[] EDHOC_MESSAGE_3_OSCORE_APP_INPUT[1[C_I]] UNSUPPORTED_MESSAGE[] EDHOC_MESSAGE_2_INPUT[] EDHOC_MESSAGE_3_OUTPUT[] EDHOC_MESSAGE_4_INPUT[] UNSUCCESSFUL_MESSAGE[] / true] +CE 4:Query[ε|EDHOC_MESSAGE_2_INPUT[] EDHOC_MESSAGE_3_OUTPUT[] COAP_APP_MESSAGE_INPUT[] OSCORE_APP_MESSAGE_OUTPUT[] EDHOC_MESSAGE_3_INPUT[] OSCORE_APP_MESSAGE_OUTPUT[] EDHOC_MESSAGE_4_INPUT[] OSCORE_APP_MESSAGE_OUTPUT[] EDHOC_ERROR_MESSAGE_INPUT[] OSCORE_APP_MESSAGE_OUTPUT[] EDHOC_MESSAGE_4_INPUT[] OSCORE_APP_MESSAGE_OUTPUT[] EDHOC_MESSAGE_3_OSCORE_APP_INPUT[0[C_I]] UNSUPPORTED_MESSAGE[] EDHOC_MESSAGE_1_INPUT[0[C_I]] OSCORE_APP_MESSAGE_OUTPUT[] / true] +CE 5:Query[ε|EDHOC_MESSAGE_2_INPUT[] EDHOC_MESSAGE_3_OUTPUT[] EDHOC_MESSAGE_3_OSCORE_APP_INPUT[0[C_I]] UNSUPPORTED_MESSAGE[] EDHOC_MESSAGE_3_INPUT[] OSCORE_APP_MESSAGE_OUTPUT[] OSCORE_APP_MESSAGE_INPUT[] OSCORE_APP_MESSAGE_OUTPUT[] / true] +CE 6:Query[ε|EDHOC_MESSAGE_3_OSCORE_APP_INPUT[0[C_I]] UNSUPPORTED_MESSAGE[] EDHOC_MESSAGE_2_INPUT[] EDHOC_MESSAGE_3_OUTPUT[] COAP_EMPTY_MESSAGE_INPUT[] UNSUCCESSFUL_MESSAGE[] EDHOC_MESSAGE_3_OSCORE_APP_INPUT[0[C_I]] UNSUPPORTED_MESSAGE[] EDHOC_MESSAGE_2_INPUT[] UNSUCCESSFUL_MESSAGE[] / true] +CE 7:Query[ε|OSCORE_APP_MESSAGE_INPUT[] UNSUPPORTED_MESSAGE[] EDHOC_MESSAGE_2_INPUT[] EDHOC_MESSAGE_3_OUTPUT[] EDHOC_MESSAGE_4_INPUT[] OSCORE_APP_MESSAGE_OUTPUT[] / true] +CE 8:Query[ε|EDHOC_MESSAGE_2_INPUT[] EDHOC_MESSAGE_3_OUTPUT[] EDHOC_MESSAGE_3_OSCORE_APP_INPUT[0[C_I]] UNSUPPORTED_MESSAGE[] EDHOC_MESSAGE_1_INPUT[1[C_I]] OSCORE_APP_MESSAGE_OUTPUT[] OSCORE_APP_MESSAGE_INPUT[] OSCORE_APP_MESSAGE_OUTPUT[] COAP_EMPTY_MESSAGE_INPUT[] OSCORE_APP_MESSAGE_OUTPUT[] OSCORE_APP_MESSAGE_INPUT[] OSCORE_APP_MESSAGE_OUTPUT[] OSCORE_APP_MESSAGE_INPUT[] OSCORE_APP_MESSAGE_OUTPUT[] EDHOC_MESSAGE_3_INPUT[] OSCORE_APP_MESSAGE_OUTPUT[] EDHOC_MESSAGE_3_OSCORE_APP_INPUT[0[C_I]] UNSUPPORTED_MESSAGE[] OSCORE_APP_MESSAGE_INPUT[] OSCORE_APP_MESSAGE_OUTPUT[] / true] +Number of inputs when hypothesis was generated: [27, 110, 222, 479, 847, 1085, 1419, 1517, 2623] +Number of tests when hypothesis was generated: [27, 70, 120, 206, 291, 349, 421, 454, 600] +Time (ms) when hypothesis was generated: [16871, 48115, 68113, 100743, 141384, 162969, 188323, 202518, 281397] +Number of inputs when counterexample was found: [29, 123, 236, 637, 941, 1230, 1442, 2437] +Number of tests when counterexample was found: [28, 72, 122, 222, 301, 364, 424, 546] +Time (ms) when counterexample was found: [17635, 49153, 69148, 112398, 148482, 172887, 190108, 266899] diff --git a/experiments/saved_results/servers/lakers/alphabet.xml b/experiments/saved_results/servers/mealy/lakers/alphabet.xml similarity index 100% rename from experiments/saved_results/servers/lakers/alphabet.xml rename to experiments/saved_results/servers/mealy/lakers/alphabet.xml diff --git a/experiments/saved_results/servers/lakers/hyp1.dot b/experiments/saved_results/servers/mealy/lakers/hyp1.dot similarity index 100% rename from experiments/saved_results/servers/lakers/hyp1.dot rename to experiments/saved_results/servers/mealy/lakers/hyp1.dot diff --git a/experiments/saved_results/servers/lakers/hyp2.dot b/experiments/saved_results/servers/mealy/lakers/hyp2.dot similarity index 100% rename from experiments/saved_results/servers/lakers/hyp2.dot rename to experiments/saved_results/servers/mealy/lakers/hyp2.dot diff --git a/experiments/saved_results/servers/lakers/learnedModel.dot b/experiments/saved_results/servers/mealy/lakers/learnedModel.dot similarity index 100% rename from experiments/saved_results/servers/lakers/learnedModel.dot rename to experiments/saved_results/servers/mealy/lakers/learnedModel.dot diff --git a/experiments/saved_results/servers/lakers/learnedModel.pdf b/experiments/saved_results/servers/mealy/lakers/learnedModel.pdf similarity index 100% rename from experiments/saved_results/servers/lakers/learnedModel.pdf rename to experiments/saved_results/servers/mealy/lakers/learnedModel.pdf diff --git a/experiments/saved_results/servers/rise_m4_app/alphabet.xml b/experiments/saved_results/servers/mealy/rise_m4_app/alphabet.xml similarity index 100% rename from experiments/saved_results/servers/rise_m4_app/alphabet.xml rename to experiments/saved_results/servers/mealy/rise_m4_app/alphabet.xml diff --git a/experiments/saved_results/servers/rise_m4_app/hyp1.dot b/experiments/saved_results/servers/mealy/rise_m4_app/hyp1.dot similarity index 100% rename from experiments/saved_results/servers/rise_m4_app/hyp1.dot rename to experiments/saved_results/servers/mealy/rise_m4_app/hyp1.dot diff --git a/experiments/saved_results/servers/rise_m4_app/hyp2.dot b/experiments/saved_results/servers/mealy/rise_m4_app/hyp2.dot similarity index 100% rename from experiments/saved_results/servers/rise_m4_app/hyp2.dot rename to experiments/saved_results/servers/mealy/rise_m4_app/hyp2.dot diff --git a/experiments/saved_results/servers/rise_m4_app/hyp3.dot b/experiments/saved_results/servers/mealy/rise_m4_app/hyp3.dot similarity index 100% rename from experiments/saved_results/servers/rise_m4_app/hyp3.dot rename to experiments/saved_results/servers/mealy/rise_m4_app/hyp3.dot diff --git a/experiments/saved_results/servers/rise_m4_app/hyp4.dot b/experiments/saved_results/servers/mealy/rise_m4_app/hyp4.dot similarity index 100% rename from experiments/saved_results/servers/rise_m4_app/hyp4.dot rename to experiments/saved_results/servers/mealy/rise_m4_app/hyp4.dot diff --git a/experiments/saved_results/servers/rise_m4_app/hyp5.dot b/experiments/saved_results/servers/mealy/rise_m4_app/hyp5.dot similarity index 100% rename from experiments/saved_results/servers/rise_m4_app/hyp5.dot rename to experiments/saved_results/servers/mealy/rise_m4_app/hyp5.dot diff --git a/experiments/saved_results/servers/rise_m4_app/learnedModel.dot b/experiments/saved_results/servers/mealy/rise_m4_app/learnedModel.dot similarity index 100% rename from experiments/saved_results/servers/rise_m4_app/learnedModel.dot rename to experiments/saved_results/servers/mealy/rise_m4_app/learnedModel.dot diff --git a/experiments/saved_results/servers/rise_m4_app/learnedModel.pdf b/experiments/saved_results/servers/mealy/rise_m4_app/learnedModel.pdf similarity index 100% rename from experiments/saved_results/servers/rise_m4_app/learnedModel.pdf rename to experiments/saved_results/servers/mealy/rise_m4_app/learnedModel.pdf diff --git a/experiments/saved_results/servers/sifis-home_phase_1/alphabet.xml b/experiments/saved_results/servers/mealy/sifis-home_phase_1/alphabet.xml similarity index 100% rename from experiments/saved_results/servers/sifis-home_phase_1/alphabet.xml rename to experiments/saved_results/servers/mealy/sifis-home_phase_1/alphabet.xml diff --git a/experiments/saved_results/servers/sifis-home_phase_1/hyp1.dot b/experiments/saved_results/servers/mealy/sifis-home_phase_1/hyp1.dot similarity index 100% rename from experiments/saved_results/servers/sifis-home_phase_1/hyp1.dot rename to experiments/saved_results/servers/mealy/sifis-home_phase_1/hyp1.dot diff --git a/experiments/saved_results/servers/sifis-home_phase_1/hyp2.dot b/experiments/saved_results/servers/mealy/sifis-home_phase_1/hyp2.dot similarity index 100% rename from experiments/saved_results/servers/sifis-home_phase_1/hyp2.dot rename to experiments/saved_results/servers/mealy/sifis-home_phase_1/hyp2.dot diff --git a/experiments/saved_results/servers/sifis-home_phase_1/hyp3.dot b/experiments/saved_results/servers/mealy/sifis-home_phase_1/hyp3.dot similarity index 100% rename from experiments/saved_results/servers/sifis-home_phase_1/hyp3.dot rename to experiments/saved_results/servers/mealy/sifis-home_phase_1/hyp3.dot diff --git a/experiments/saved_results/servers/sifis-home_phase_1/hyp4.dot b/experiments/saved_results/servers/mealy/sifis-home_phase_1/hyp4.dot similarity index 100% rename from experiments/saved_results/servers/sifis-home_phase_1/hyp4.dot rename to experiments/saved_results/servers/mealy/sifis-home_phase_1/hyp4.dot diff --git a/experiments/saved_results/servers/sifis-home_phase_1/hyp5.dot b/experiments/saved_results/servers/mealy/sifis-home_phase_1/hyp5.dot similarity index 100% rename from experiments/saved_results/servers/sifis-home_phase_1/hyp5.dot rename to experiments/saved_results/servers/mealy/sifis-home_phase_1/hyp5.dot diff --git a/experiments/saved_results/servers/sifis-home_phase_1/learnedModel.dot b/experiments/saved_results/servers/mealy/sifis-home_phase_1/learnedModel.dot similarity index 100% rename from experiments/saved_results/servers/sifis-home_phase_1/learnedModel.dot rename to experiments/saved_results/servers/mealy/sifis-home_phase_1/learnedModel.dot diff --git a/experiments/saved_results/servers/sifis-home_phase_1/learnedModel.pdf b/experiments/saved_results/servers/mealy/sifis-home_phase_1/learnedModel.pdf similarity index 100% rename from experiments/saved_results/servers/sifis-home_phase_1/learnedModel.pdf rename to experiments/saved_results/servers/mealy/sifis-home_phase_1/learnedModel.pdf diff --git a/experiments/saved_results/servers/uoscore-uedhoc_linux_edhoc_oscore/alphabet.xml b/experiments/saved_results/servers/mealy/uoscore-uedhoc_linux_edhoc_oscore/alphabet.xml similarity index 100% rename from experiments/saved_results/servers/uoscore-uedhoc_linux_edhoc_oscore/alphabet.xml rename to experiments/saved_results/servers/mealy/uoscore-uedhoc_linux_edhoc_oscore/alphabet.xml diff --git a/experiments/saved_results/servers/uoscore-uedhoc_linux_edhoc_oscore/hyp1.dot b/experiments/saved_results/servers/mealy/uoscore-uedhoc_linux_edhoc_oscore/hyp1.dot similarity index 100% rename from experiments/saved_results/servers/uoscore-uedhoc_linux_edhoc_oscore/hyp1.dot rename to experiments/saved_results/servers/mealy/uoscore-uedhoc_linux_edhoc_oscore/hyp1.dot diff --git a/experiments/saved_results/servers/uoscore-uedhoc_linux_edhoc_oscore/hyp2.dot b/experiments/saved_results/servers/mealy/uoscore-uedhoc_linux_edhoc_oscore/hyp2.dot similarity index 100% rename from experiments/saved_results/servers/uoscore-uedhoc_linux_edhoc_oscore/hyp2.dot rename to experiments/saved_results/servers/mealy/uoscore-uedhoc_linux_edhoc_oscore/hyp2.dot diff --git a/experiments/saved_results/servers/uoscore-uedhoc_linux_edhoc_oscore/learnedModel.dot b/experiments/saved_results/servers/mealy/uoscore-uedhoc_linux_edhoc_oscore/learnedModel.dot similarity index 100% rename from experiments/saved_results/servers/uoscore-uedhoc_linux_edhoc_oscore/learnedModel.dot rename to experiments/saved_results/servers/mealy/uoscore-uedhoc_linux_edhoc_oscore/learnedModel.dot diff --git a/experiments/saved_results/servers/uoscore-uedhoc_linux_edhoc_oscore/learnedModel.pdf b/experiments/saved_results/servers/mealy/uoscore-uedhoc_linux_edhoc_oscore/learnedModel.pdf similarity index 100% rename from experiments/saved_results/servers/uoscore-uedhoc_linux_edhoc_oscore/learnedModel.pdf rename to experiments/saved_results/servers/mealy/uoscore-uedhoc_linux_edhoc_oscore/learnedModel.pdf diff --git a/experiments/saved_results/servers/ra/lakers/alphabet b/experiments/saved_results/servers/ra/lakers/alphabet new file mode 100644 index 00000000..e69de29b diff --git a/experiments/saved_results/servers/ra/lakers/command.args b/experiments/saved_results/servers/ra/lakers/command.args new file mode 100644 index 00000000..66ed118e --- /dev/null +++ b/experiments/saved_results/servers/ra/lakers/command.args @@ -0,0 +1,72 @@ +state-fuzzer-server + + +##### StateFuzzerConfig ##### +-output +${results.learning.servers.ra}/lakers + + +##### LearnerConfig ##### +-learningAlgorithm +RaStar +-equivalenceAlgorithms +IO_RANDOM_WALK +-logQueries +-alphabet +./src/main/resources/alphabet_placeholder.xml +-maxDepthRA +4 +-probNewDataValue +0.5 +-seed +7 +-socketClosedAsTimeout + +##### EdhocMapperConfig ##### +-protocolVersion +v23 + +## Mapper Auth ## + +-mapCredType +CCS + +-mapIdCredType +KID + +## Sul Auth ## + +-sulCredType +CCS + +-sulIdCredType +KID + +# TestVector +-testVectorJson +${authentication.test_vectors}/test_vectors_lakers.json + +-testVectorJsonKey +test_vector_p256 + +-testVectorPeerKeyCurve +P256 + +-edhocRole +Initiator + + +##### SulConfig ##### +-responseWait +600 +-processDir +${models.servers}/lakers +-cmd +./coapserver +-startWait +500 + + +##### EdhocSulServerConfig ##### +-connect +localhost:5683 diff --git a/experiments/saved_results/servers/ra/lakers/hyp1.dot b/experiments/saved_results/servers/ra/lakers/hyp1.dot new file mode 100644 index 00000000..9df4a2a5 --- /dev/null +++ b/experiments/saved_results/servers/ra/lakers/hyp1.dot @@ -0,0 +1,22 @@ +digraph RA { +"" [shape=none,label=<>] +"l0" [shape=doublecircle] +"l1" [shape=doublecircle] +"l2" [shape=circle] +"l3" [shape=circle] +"l4" [shape=doublecircle] +"l5" [shape=doublecircle] +"" -> "l0" +"l0" -> "l1" [label=] +"l0" -> "l4" [label=] +"l0" -> "l4" [label=] +"l0" -> "l4" [label=] +"l0" -> "l4" [label=] +"l0" -> "l4" [label=] +"l0" -> "l5" [label=] +"l0" -> "l5" [label=] +"l0" -> "l5" [label=] +"l1" -> "l0" [label=] +"l4" -> "l0" [label=] +"l5" -> "l0" [label=] +} diff --git a/experiments/saved_results/servers/ra/lakers/hyp2.dot b/experiments/saved_results/servers/ra/lakers/hyp2.dot new file mode 100644 index 00000000..cb587b2b --- /dev/null +++ b/experiments/saved_results/servers/ra/lakers/hyp2.dot @@ -0,0 +1,34 @@ +digraph RA { +"" [shape=none,label=<>] +"l0" [shape=doublecircle] +"l1" [shape=doublecircle] +"l2" [shape=circle] +"l3" [shape=circle] +"l4" [shape=doublecircle] +"l5" [shape=doublecircle] +"l6" [shape=doublecircle] +"l7" [shape=doublecircle] +"" -> "l0" +"l0" -> "l1" [label=] +"l0" -> "l4" [label=] +"l0" -> "l4" [label=] +"l0" -> "l4" [label=] +"l0" -> "l4" [label=] +"l0" -> "l4" [label=] +"l0" -> "l5" [label=] +"l0" -> "l5" [label=] +"l0" -> "l5" [label=] +"l1" -> "l0" [label=] +"l4" -> "l6" [label=] +"l5" -> "l0" [label=] +"l6" -> "l7" [label=] +"l6" -> "l7" [label=] +"l6" -> "l7" [label=] +"l6" -> "l7" [label=] +"l6" -> "l7" [label=] +"l6" -> "l7" [label=] +"l6" -> "l7" [label=] +"l6" -> "l7" [label=] +"l6" -> "l7" [label=] +"l7" -> "l6" [label=] +} diff --git a/experiments/saved_results/servers/ra/lakers/hyp3.dot b/experiments/saved_results/servers/ra/lakers/hyp3.dot new file mode 100644 index 00000000..f89a27c2 --- /dev/null +++ b/experiments/saved_results/servers/ra/lakers/hyp3.dot @@ -0,0 +1,46 @@ +digraph RA { +"" [shape=none,label=<>] +"l0" [shape=doublecircle] +"l1" [shape=doublecircle] +"l2" [shape=circle] +"l3" [shape=circle] +"l4" [shape=doublecircle] +"l5" [shape=doublecircle] +"l6" [shape=doublecircle] +"l7" [shape=doublecircle] +"l8" [shape=doublecircle] +"l9" [shape=doublecircle] +"" -> "l0" +"l0" -> "l1" [label=] +"l0" -> "l4" [label=] +"l0" -> "l4" [label=] +"l0" -> "l4" [label=] +"l0" -> "l4" [label=] +"l0" -> "l4" [label=] +"l0" -> "l5" [label=] +"l0" -> "l5" [label=] +"l0" -> "l5" [label=] +"l1" -> "l8" [label=] +"l4" -> "l6" [label=] +"l5" -> "l0" [label=] +"l6" -> "l7" [label=] +"l6" -> "l7" [label=] +"l6" -> "l7" [label=] +"l6" -> "l7" [label=] +"l6" -> "l7" [label=] +"l6" -> "l7" [label=] +"l6" -> "l7" [label=] +"l6" -> "l7" [label=] +"l6" -> "l7" [label=] +"l7" -> "l6" [label=] +"l8" -> "l1" [label=] +"l8" -> "l4" [label=] +"l8" -> "l4" [label=] +"l8" -> "l4" [label=] +"l8" -> "l4" [label=] +"l8" -> "l4" [label=] +"l8" -> "l5" [label=] +"l8" -> "l5" [label=] +"l8" -> "l9" [label=] +"l9" -> "l0" [label=] +} diff --git a/experiments/saved_results/servers/ra/lakers/hyp4.dot b/experiments/saved_results/servers/ra/lakers/hyp4.dot new file mode 100644 index 00000000..69a45633 --- /dev/null +++ b/experiments/saved_results/servers/ra/lakers/hyp4.dot @@ -0,0 +1,60 @@ +digraph RA { +"" [shape=none,label=<>] +"l0" [shape=doublecircle] +"l1" [shape=doublecircle] +"l2" [shape=circle] +"l3" [shape=circle] +"l4" [shape=doublecircle] +"l5" [shape=doublecircle] +"l6" [shape=doublecircle] +"l7" [shape=doublecircle] +"l8" [shape=doublecircle] +"l9" [shape=doublecircle] +"l10" [shape=doublecircle] +"l11" [shape=doublecircle] +"" -> "l0" +"l0" -> "l1" [label=[r1:=p1,]>] +"l0" -> "l4" [label=] +"l0" -> "l4" [label=] +"l0" -> "l4" [label=] +"l0" -> "l4" [label=] +"l0" -> "l4" [label=] +"l0" -> "l5" [label=] +"l0" -> "l5" [label=] +"l0" -> "l5" [label=] +"l1" -> "l8" [label=[r1:=r1,]>] +"l4" -> "l6" [label=] +"l5" -> "l0" [label=] +"l6" -> "l7" [label=] +"l6" -> "l7" [label=] +"l6" -> "l7" [label=] +"l6" -> "l7" [label=] +"l6" -> "l7" [label=] +"l6" -> "l7" [label=] +"l6" -> "l7" [label=] +"l6" -> "l7" [label=] +"l6" -> "l7" [label=] +"l7" -> "l6" [label=] +"l8" -> "l1" [label=[r1:=p1,]>] +"l8" -> "l4" [label=] +"l8" -> "l4" [label=] +"l8" -> "l5" [label=] +"l8" -> "l5" [label=] +"l8" -> "l5" [label=] +"l8" -> "l10" [label=[r1:=r1,]>] +"l8" -> "l9" [label=[r1:=r1,]>] +"l8" -> "l10" [label=[r1:=r1,]>] +"l8" -> "l10" [label=[r1:=r1,]>] +"l9" -> "l11" [label=[r1:=r1,]>] +"l10" -> "l11" [label=[r1:=r1,]>] +"l11" -> "l1" [label=[r1:=p1,]>] +"l11" -> "l4" [label=] +"l11" -> "l4" [label=] +"l11" -> "l4" [label=] +"l11" -> "l4" [label=] +"l11" -> "l4" [label=] +"l11" -> "l5" [label=] +"l11" -> "l5" [label=] +"l11" -> "l10" [label=[r1:=r1,]>] +"l11" -> "l5" [label=] +} diff --git a/experiments/saved_results/servers/ra/lakers/hyp5.dot b/experiments/saved_results/servers/ra/lakers/hyp5.dot new file mode 100644 index 00000000..de559f89 --- /dev/null +++ b/experiments/saved_results/servers/ra/lakers/hyp5.dot @@ -0,0 +1,62 @@ +digraph RA { +"" [shape=none,label=<>] +"l0" [shape=doublecircle] +"l1" [shape=doublecircle] +"l2" [shape=circle] +"l3" [shape=circle] +"l4" [shape=doublecircle] +"l5" [shape=doublecircle] +"l6" [shape=doublecircle] +"l7" [shape=doublecircle] +"l8" [shape=doublecircle] +"l9" [shape=doublecircle] +"l10" [shape=doublecircle] +"l11" [shape=doublecircle] +"l12" [shape=doublecircle] +"" -> "l0" +"l0" -> "l1" [label=[r1:=p1,]>] +"l0" -> "l4" [label=] +"l0" -> "l4" [label=] +"l0" -> "l4" [label=] +"l0" -> "l4" [label=] +"l0" -> "l4" [label=] +"l0" -> "l5" [label=] +"l0" -> "l5" [label=] +"l0" -> "l12" [label=[r1:=p1,]>] +"l1" -> "l8" [label=[r1:=r1,]>] +"l4" -> "l6" [label=] +"l5" -> "l0" [label=] +"l6" -> "l7" [label=] +"l6" -> "l7" [label=] +"l6" -> "l7" [label=] +"l6" -> "l7" [label=] +"l6" -> "l7" [label=] +"l6" -> "l7" [label=] +"l6" -> "l7" [label=] +"l6" -> "l7" [label=] +"l6" -> "l7" [label=] +"l7" -> "l6" [label=] +"l8" -> "l1" [label=[r1:=p1,]>] +"l8" -> "l4" [label=] +"l8" -> "l4" [label=] +"l8" -> "l9" [label=[r1:=r1,]>] +"l8" -> "l10" [label=[r1:=r1,]>] +"l8" -> "l10" [label=[r1:=r1,]>] +"l8" -> "l10" [label=[r1:=r1,]>] +"l8" -> "l12" [label=[r1:=r1,]>] +"l8" -> "l12" [label=[r1:=r1,]>] +"l8" -> "l12" [label=[r1:=r1,]>] +"l9" -> "l11" [label=[r1:=r1,]>] +"l10" -> "l11" [label=[r1:=r1,]>] +"l11" -> "l1" [label=[r1:=p1,]>] +"l11" -> "l4" [label=] +"l11" -> "l4" [label=] +"l11" -> "l4" [label=] +"l11" -> "l4" [label=] +"l11" -> "l4" [label=] +"l11" -> "l10" [label=[r1:=r1,]>] +"l11" -> "l12" [label=[r1:=r1,]>] +"l11" -> "l12" [label=[r1:=r1,]>] +"l11" -> "l12" [label=[r1:=r1,]>] +"l12" -> "l11" [label=[r1:=r1,]>] +} diff --git a/experiments/saved_results/servers/ra/lakers/hyp6.dot b/experiments/saved_results/servers/ra/lakers/hyp6.dot new file mode 100644 index 00000000..91851f42 --- /dev/null +++ b/experiments/saved_results/servers/ra/lakers/hyp6.dot @@ -0,0 +1,64 @@ +digraph RA { +"" [shape=none,label=<>] +"l0" [shape=doublecircle] +"l1" [shape=doublecircle] +"l2" [shape=circle] +"l3" [shape=circle] +"l4" [shape=doublecircle] +"l5" [shape=doublecircle] +"l6" [shape=doublecircle] +"l7" [shape=doublecircle] +"l8" [shape=doublecircle] +"l9" [shape=doublecircle] +"l10" [shape=doublecircle] +"l11" [shape=doublecircle] +"l12" [shape=doublecircle] +"l13" [shape=doublecircle] +"" -> "l0" +"l0" -> "l1" [label=[r1:=p1,]>] +"l0" -> "l4" [label=] +"l0" -> "l4" [label=] +"l0" -> "l4" [label=] +"l0" -> "l4" [label=] +"l0" -> "l4" [label=] +"l0" -> "l5" [label=] +"l0" -> "l5" [label=] +"l0" -> "l12" [label=[r1:=p1,]>] +"l1" -> "l8" [label=[r1:=r1,]>] +"l4" -> "l6" [label=] +"l5" -> "l0" [label=] +"l6" -> "l7" [label=] +"l6" -> "l7" [label=] +"l6" -> "l7" [label=] +"l6" -> "l7" [label=] +"l6" -> "l7" [label=] +"l6" -> "l7" [label=] +"l6" -> "l7" [label=] +"l6" -> "l7" [label=] +"l6" -> "l7" [label=] +"l7" -> "l6" [label=] +"l8" -> "l1" [label=[r1:=p1,]>] +"l8" -> "l4" [label=] +"l8" -> "l4" [label=] +"l8" -> "l9" [label=[r1:=r1,]>] +"l8" -> "l10" [label=[r1:=r1,]>] +"l8" -> "l10" [label=[r1:=r1,]>] +"l8" -> "l10" [label=[r1:=r1,]>] +"l8" -> "l13" [label=[r1:=r1,]>] +"l8" -> "l13" [label=[r1:=r1,]>] +"l8" -> "l13" [label=[r1:=r1,]>] +"l9" -> "l11" [label=[r1:=r1,]>] +"l10" -> "l11" [label=[r1:=r1,]>] +"l11" -> "l1" [label=[r1:=p1,]>] +"l11" -> "l4" [label=] +"l11" -> "l4" [label=] +"l11" -> "l4" [label=] +"l11" -> "l4" [label=] +"l11" -> "l4" [label=] +"l11" -> "l10" [label=[r1:=r1,]>] +"l11" -> "l12" [label=[r1:=r1,]>] +"l11" -> "l12" [label=[r1:=r1,]>] +"l11" -> "l12" [label=[r1:=r1,]>] +"l12" -> "l11" [label=[r1:=r1,]>] +"l13" -> "l8" [label=[r1:=r1,]>] +} diff --git a/experiments/saved_results/servers/ra/lakers/hyp7.dot b/experiments/saved_results/servers/ra/lakers/hyp7.dot new file mode 100644 index 00000000..330fc5e0 --- /dev/null +++ b/experiments/saved_results/servers/ra/lakers/hyp7.dot @@ -0,0 +1,66 @@ +digraph RA { +"" [shape=none,label=<>] +"l0" [shape=doublecircle] +"l1" [shape=doublecircle] +"l2" [shape=circle] +"l3" [shape=circle] +"l4" [shape=doublecircle] +"l5" [shape=doublecircle] +"l6" [shape=doublecircle] +"l7" [shape=doublecircle] +"l8" [shape=doublecircle] +"l9" [shape=doublecircle] +"l10" [shape=doublecircle] +"l11" [shape=doublecircle] +"l12" [shape=doublecircle] +"l13" [shape=doublecircle] +"l14" [shape=doublecircle] +"" -> "l0" +"l0" -> "l1" [label=[r1:=p1,]>] +"l0" -> "l4" [label=] +"l0" -> "l4" [label=] +"l0" -> "l4" [label=] +"l0" -> "l4" [label=] +"l0" -> "l4" [label=] +"l0" -> "l5" [label=] +"l0" -> "l5" [label=] +"l0" -> "l12" [label=[r1:=p1,]>] +"l1" -> "l8" [label=[r1:=r1,]>] +"l4" -> "l6" [label=] +"l5" -> "l0" [label=] +"l6" -> "l7" [label=] +"l6" -> "l7" [label=] +"l6" -> "l7" [label=] +"l6" -> "l7" [label=] +"l6" -> "l7" [label=] +"l6" -> "l7" [label=] +"l6" -> "l7" [label=] +"l6" -> "l7" [label=] +"l6" -> "l7" [label=] +"l7" -> "l6" [label=] +"l8" -> "l1" [label=[r1:=p1,]>] +"l8" -> "l4" [label=] +"l8" -> "l4" [label=] +"l8" -> "l9" [label=[r1:=r1,]>] +"l8" -> "l10" [label=[r1:=r1,]>] +"l8" -> "l10" [label=[r1:=r1,]>] +"l8" -> "l13" [label=[r1:=r1,]>] +"l8" -> "l13" [label=[r1:=r1,]>] +"l8" -> "l13" [label=[r1:=r1,]>] +"l8" -> "l14" [label=[r1:=r1,]>] +"l9" -> "l11" [label=[r1:=r1,]>] +"l10" -> "l11" [label=[r1:=r1,]>] +"l11" -> "l1" [label=[r1:=p1,]>] +"l11" -> "l4" [label=] +"l11" -> "l4" [label=] +"l11" -> "l4" [label=] +"l11" -> "l4" [label=] +"l11" -> "l4" [label=] +"l11" -> "l10" [label=[r1:=r1,]>] +"l11" -> "l12" [label=[r1:=r1,]>] +"l11" -> "l12" [label=[r1:=r1,]>] +"l11" -> "l12" [label=[r1:=r1,]>] +"l12" -> "l11" [label=[r1:=r1,]>] +"l13" -> "l8" [label=[r1:=r1,]>] +"l14" -> "l8" [label=[r1:=r1,]>] +} diff --git a/experiments/saved_results/servers/ra/lakers/learnedModel.dot b/experiments/saved_results/servers/ra/lakers/learnedModel.dot new file mode 100644 index 00000000..330fc5e0 --- /dev/null +++ b/experiments/saved_results/servers/ra/lakers/learnedModel.dot @@ -0,0 +1,66 @@ +digraph RA { +"" [shape=none,label=<>] +"l0" [shape=doublecircle] +"l1" [shape=doublecircle] +"l2" [shape=circle] +"l3" [shape=circle] +"l4" [shape=doublecircle] +"l5" [shape=doublecircle] +"l6" [shape=doublecircle] +"l7" [shape=doublecircle] +"l8" [shape=doublecircle] +"l9" [shape=doublecircle] +"l10" [shape=doublecircle] +"l11" [shape=doublecircle] +"l12" [shape=doublecircle] +"l13" [shape=doublecircle] +"l14" [shape=doublecircle] +"" -> "l0" +"l0" -> "l1" [label=[r1:=p1,]>] +"l0" -> "l4" [label=] +"l0" -> "l4" [label=] +"l0" -> "l4" [label=] +"l0" -> "l4" [label=] +"l0" -> "l4" [label=] +"l0" -> "l5" [label=] +"l0" -> "l5" [label=] +"l0" -> "l12" [label=[r1:=p1,]>] +"l1" -> "l8" [label=[r1:=r1,]>] +"l4" -> "l6" [label=] +"l5" -> "l0" [label=] +"l6" -> "l7" [label=] +"l6" -> "l7" [label=] +"l6" -> "l7" [label=] +"l6" -> "l7" [label=] +"l6" -> "l7" [label=] +"l6" -> "l7" [label=] +"l6" -> "l7" [label=] +"l6" -> "l7" [label=] +"l6" -> "l7" [label=] +"l7" -> "l6" [label=] +"l8" -> "l1" [label=[r1:=p1,]>] +"l8" -> "l4" [label=] +"l8" -> "l4" [label=] +"l8" -> "l9" [label=[r1:=r1,]>] +"l8" -> "l10" [label=[r1:=r1,]>] +"l8" -> "l10" [label=[r1:=r1,]>] +"l8" -> "l13" [label=[r1:=r1,]>] +"l8" -> "l13" [label=[r1:=r1,]>] +"l8" -> "l13" [label=[r1:=r1,]>] +"l8" -> "l14" [label=[r1:=r1,]>] +"l9" -> "l11" [label=[r1:=r1,]>] +"l10" -> "l11" [label=[r1:=r1,]>] +"l11" -> "l1" [label=[r1:=p1,]>] +"l11" -> "l4" [label=] +"l11" -> "l4" [label=] +"l11" -> "l4" [label=] +"l11" -> "l4" [label=] +"l11" -> "l4" [label=] +"l11" -> "l10" [label=[r1:=r1,]>] +"l11" -> "l12" [label=[r1:=r1,]>] +"l11" -> "l12" [label=[r1:=r1,]>] +"l11" -> "l12" [label=[r1:=r1,]>] +"l12" -> "l11" [label=[r1:=r1,]>] +"l13" -> "l8" [label=[r1:=r1,]>] +"l14" -> "l8" [label=[r1:=r1,]>] +} diff --git a/experiments/saved_results/servers/ra/lakers/learnedModel.pdf b/experiments/saved_results/servers/ra/lakers/learnedModel.pdf new file mode 100644 index 00000000..1dfc4e4e Binary files /dev/null and b/experiments/saved_results/servers/ra/lakers/learnedModel.pdf differ diff --git a/experiments/saved_results/servers/ra/lakers/learnedModelbtf.dot b/experiments/saved_results/servers/ra/lakers/learnedModelbtf.dot new file mode 100644 index 00000000..3d4363e2 --- /dev/null +++ b/experiments/saved_results/servers/ra/lakers/learnedModelbtf.dot @@ -0,0 +1,66 @@ +digraph RA { +"" [shape=none,label=<>] +"l0" [shape=doublecircle] +"l1" [shape=doublecircle] +"l2" [shape=circle] +"l3" [shape=circle] +"l4" [shape=doublecircle] +"l5" [shape=doublecircle] +"l6" [shape=doublecircle] +"l7" [shape=doublecircle] +"l8" [shape=doublecircle] +"l9" [shape=doublecircle] +"l10" [shape=doublecircle] +"l11" [shape=doublecircle] +"l12" [shape=doublecircle] +"l13" [shape=doublecircle] +"l14" [shape=doublecircle] +"" -> "l0" +"l0" -> "l1" [label=[r1:=p1,]>] +"l0" -> "l4" [label=] +"l0" -> "l4" [label=] +"l0" -> "l4" [label=] +"l0" -> "l4" [label=] +"l0" -> "l4" [label=] +"l0" -> "l5" [label=] +"l0" -> "l5" [label=] +"l0" -> "l12" [label=[r1:=p1,]>] +"l1" -> "l8" [label=[r1:=r1,]>] +"l4" -> "l6" [label=] +"l5" -> "l0" [label=] +"l6" -> "l7" [label=] +"l6" -> "l7" [label=] +"l6" -> "l7" [label=] +"l6" -> "l7" [label=] +"l6" -> "l7" [label=] +"l6" -> "l7" [label=] +"l6" -> "l7" [label=] +"l6" -> "l7" [label=] +"l6" -> "l7" [label=] +"l7" -> "l6" [label=] +"l8" -> "l1" [label=[r1:=p1,]>] +"l8" -> "l4" [label=] +"l8" -> "l4" [label=] +"l8" -> "l9" [label=[r1:=r1,]>] +"l8" -> "l10" [label=[r1:=r1,]>] +"l8" -> "l10" [label=[r1:=r1,]>] +"l8" -> "l13" [label=[r1:=r1,]>] +"l8" -> "l13" [label=[r1:=r1,]>] +"l8" -> "l13" [label=[r1:=r1,]>] +"l8" -> "l14" [label=[r1:=r1,]>] +"l9" -> "l11" [label=[r1:=r1,]>] +"l10" -> "l11" [label=[r1:=r1,]>] +"l11" -> "l1" [label=[r1:=p1,]>] +"l11" -> "l4" [label=] +"l11" -> "l4" [label=] +"l11" -> "l4" [label=] +"l11" -> "l4" [label=] +"l11" -> "l4" [label=] +"l11" -> "l10" [label=[r1:=r1,]>] +"l11" -> "l12" [label=[r1:=r1,]>] +"l11" -> "l12" [label=[r1:=r1,]>] +"l11" -> "l12" [label=[r1:=r1,]>] +"l12" -> "l11" [label=[r1:=r1,]>] +"l13" -> "l8" [label=[r1:=r1,]>] +"l14" -> "l8" [label=[r1:=r1,]>] +} diff --git a/experiments/saved_results/servers/ra/lakers/learnedModelbtf.pdf b/experiments/saved_results/servers/ra/lakers/learnedModelbtf.pdf new file mode 100644 index 00000000..86f653e8 Binary files /dev/null and b/experiments/saved_results/servers/ra/lakers/learnedModelbtf.pdf differ diff --git a/experiments/saved_results/servers/ra/lakers/mapper_connection.config b/experiments/saved_results/servers/ra/lakers/mapper_connection.config new file mode 100644 index 00000000..97827755 --- /dev/null +++ b/experiments/saved_results/servers/ra/lakers/mapper_connection.config @@ -0,0 +1,153 @@ +# Californium3 CoAP Properties file for EdhocMapper +# +# Random factor for initial CoAP acknowledge timeout. +# Default: 1.5 +COAP.ACK_INIT_RANDOM=1.5 +# Initial CoAP acknowledge timeout. +# Default: 2[s] +# Adjust MAX_ACK_TIMEOUT to add more time +COAP.ACK_TIMEOUT=10[s] +# Scale factor for CoAP acknowledge backoff-timeout. +# Default: 2.0 +COAP.ACK_TIMEOUT_SCALE=2.0 +# Enable automatic failover on "entity too large" response. +# Default: true +COAP.BLOCKWISE_ENTITY_TOO_LARGE_AUTO_FAILOVER=true +# Reuse token for blockwise requests. Ease traceability but may introduce +# vulnerability. +# Default: false +COAP.BLOCKWISE_REUSE_TOKEN=false +# Interval to validate lifetime of blockwise status. +# Default: 5[s] +COAP.BLOCKWISE_STATUS_INTERVAL=5[s] +# Lifetime of blockwise status. +# Default: 5[min] +COAP.BLOCKWISE_STATUS_LIFETIME=5[min] +# Use block2 option strictly, even if block2 is not required. +# Default: false +COAP.BLOCKWISE_STRICT_BLOCK2_OPTION=false +# CoAP port. +# Default: 5683 +COAP.COAP_PORT=5683 +# CoAP DTLS port. +# Default: 5684 +COAP.COAP_SECURE_PORT=5684 +# Congestion-Control algorithm (still experimental). +# [NULL, COCOA, COCOA_STRONG, BASIC_RTO, LINUX_RTO, PEAKHOPPER_RTO]. +# Default: NULL +COAP.CONGESTION_CONTROL_ALGORITHM=NULL +# Crop rotation period. +# Default: 247[s] +COAP.CROP_ROTATION_PERIOD=247[s] +# Deduplicator algorithm. +# [MARK_AND_SWEEP, PEERS_MARK_AND_SWEEP, CROP_ROTATION, NO_DEDUPLICATOR]. +# Default: MARK_AND_SWEEP +COAP.DEDUPLICATOR=MARK_AND_SWEEP +# Automatic replace entries in deduplicator. +# Default: true +COAP.DEDUPLICATOR_AUTO_REPLACE=true +# CoAP maximum exchange lifetime for CON requests. +# Default: 247[s] +COAP.EXCHANGE_LIFETIME=247[s] +# Timespan a multicast server may spread the response. +# Default: 5[s] +COAP.LEISURE=5[s] +# Mark and sweep interval. +# Default: 10[s] +COAP.MARK_AND_SWEEP_INTERVAL=10[s] +# Maximum CoAP acknowledge timeout. +# Default: 1[min] +# Should be: ACK_TIMEOUT <= MAX_ACK_TIMEOUT +COAP.MAX_ACK_TIMEOUT=10[s] +# Maximum number of active peers. +# Default: 150000 +COAP.MAX_ACTIVE_PEERS=150000 +# Maximum transmission latency for messages. +# Default: 100[s] +COAP.MAX_LATENCY=100[s] +# Maximum payload size. +# Default: 1024 +COAP.MAX_MESSAGE_SIZE=1024 +# Maximum inactive period of peer. +# Default: 10[min] +COAP.MAX_PEER_INACTIVITY_PERIOD=10[min] +# Maximum size of resource body. 0 to disable transparent blockwise +# mode. +# Default: 8192 +COAP.MAX_RESOURCE_BODY_SIZE=8192 +# Maximum number of CoAP retransmissions. +# Default: 4 +# Should be >= 0 (0: no retransmissions) +COAP.MAX_RETRANSMIT=0 +# Maximum number of observes on server-side. 0 to disable this limitation. +# Default: 50000 +COAP.MAX_SERVER_OBSERVES=50000 +# Maximum server response delay. +# Default: 250[s] +COAP.MAX_SERVER_RESPONSE_DELAY=250[s] +# Maximum time to wait for ACK or RST after the first transmission of +# a CON message. +# Default: 93[s] +COAP.MAX_TRANSMIT_WAIT=93[s] +# MID tracker. +# [NULL, GROUPED, MAPBASED]. +# Default: GROUPED +COAP.MID_TACKER=GROUPED +# Number of MID tracker groups. +# Default: 16 +COAP.MID_TRACKER_GROUPS=16 +# Base MID for multicast requests. +# Default: 65000 +COAP.MULTICAST_BASE_MID=65000 +# CoAP maximum lifetime for NON requests. +# Default: 145[s] +COAP.NON_LIFETIME=145[s] +# Interval time to check notifications receiver using a CON message. +# Default: 2[min] +COAP.NOTIFICATION_CHECK_INTERVAL=2[min] +# Interval counter to check notifications receiver using a CON message. +# Default: 100 +COAP.NOTIFICATION_CHECK_INTERVAL_COUNT=100 +# Additional time (backoff) to the max-age option +# for waiting for the next notification before reregister. +# Default: 2[s] +COAP.NOTIFICATION_REREGISTRATION_BACKOFF=2[s] +# Maximum concurrent transmissions. +# Default: 1 +COAP.NSTART=1 +# Maximum messages kept per peer for PEERS_MARK_AND_SWEEP. +# Default: 64 +COAP.PEERS_MARK_AND_SWEEP_MESSAGES=64 +# Preferred blocksize for blockwise transfer. +# Default: 512 +COAP.PREFERRED_BLOCK_SIZE=512 +# Probing rate to peers, which didn't response before. Currently not +# used. +# Default: 1.0 +COAP.PROBING_RATE=1.0 +# Protocol stage thread count. +# Default: 1 +COAP.PROTOCOL_STAGE_THREAD_COUNT=1 +# Response matching mode. +# [STRICT, RELAXED, PRINCIPAL, PRINCIPAL_IDENTITY]. +# Default: STRICT +COAP.RESPONSE_MATCHING=STRICT +# Process empty messages strictly according RFC7252, 4.1 as format error. +# Disable to ignore additional data as tokens or options. +# Default: true +COAP.STRICT_EMPTY_MESSAGE_FORMAT=false +# Number of block per TCP-blockwise bulk transfer. +# Default: 1 +COAP.TCP_NUMBER_OF_BULK_BLOCKS=1 +# Limit of token size. +# Default: 8 +COAP.TOKEN_SIZE_LIMIT=8 +# Use message off-loading, when data is not longer required. +# Default: false +COAP.USE_MESSAGE_OFFLOADING=false +# Use initially a random value for MID. +# Default: true +COAP.USE_RANDOM_MID_START=true +# Health status interval. 0 to disable the health status. +# Default: 0[ms] +SYS.HEALTH_STATUS_INTERVAL=0[ms] diff --git a/experiments/saved_results/servers/ra/lakers/statistics.txt b/experiments/saved_results/servers/ra/lakers/statistics.txt new file mode 100644 index 00000000..eda739f4 --- /dev/null +++ b/experiments/saved_results/servers/ra/lakers/statistics.txt @@ -0,0 +1,126 @@ +=== RUN DESCRIPTION === +Alphabet: [?EDHOC_MESSAGE_1_INPUT[C_I], !EDHOC_MESSAGE_1_OUTPUT[C_I], !EDHOC_MESSAGE_2_OUTPUT[], ?EDHOC_MESSAGE_3_INPUT[], !EDHOC_MESSAGE_3_OUTPUT[], !EDHOC_MESSAGE_4_OUTPUT[], !UNSUCCESSFUL_MESSAGE[], !COAP_EMPTY_MESSAGE_OUTPUT[], !EDHOC_MESSAGE_3_OSCORE_APP_OUTPUT[C_I], ?EDHOC_ERROR_MESSAGE_INPUT[], !COAP_APP_MESSAGE_OUTPUT[], !COAP_MESSAGE_OUTPUT[], !COAP_ERROR_MESSAGE_OUTPUT[], ?COAP_APP_MESSAGE_INPUT[], ?COAP_EMPTY_MESSAGE_INPUT[], !OSCORE_APP_MESSAGE_OUTPUT[], !SOCKET_CLOSED[], !EDHOC_ERROR_MESSAGE_OUTPUT[], ?EDHOC_MESSAGE_2_INPUT[], !DISABLED[], ?EDHOC_MESSAGE_4_INPUT[], !UNSUPPORTED_MESSAGE[], !TIMEOUT[], !UNKNOWN[], ?EDHOC_MESSAGE_3_OSCORE_APP_INPUT[C_I], ?OSCORE_APP_MESSAGE_INPUT[]] + +StateFuzzerConfig Parameters +Help: false +Debug: false +Quiet: false +Output Directory: experiments/results/servers/ra/lakers +Fuzzing Client: false + +LearnerConfigStandard Parameters +Alphabet: ./src/main/resources/alphabet_placeholder.xml +Learning Algorithm: RASTAR +Equivalence Algorithms: [IO_RANDOM_WALK] +Max Depth: 1 +Min Length: 5 +Max Length: 15 +Max Equivalence Queries: 1000 +Runs Per Membership Query: 1 +Random Length: 5 +Membership Query Retries: 3 +Log Queries: true +Prob Reset: 0.0 +Test File: null +Seed: 7 +Cache Tests: false +Ce Sanitization: true +Skip Non Det Tests: false +Ce Reruns: 3 +Probabilistic Sanitization: true +Time Limit: null +Test Limit: null +Round Limit: null +IOMode: true +Probability of Choosing a New DataValue: 0.5 +Max Runs: 10000 +Max Depth for Register Automata: 4 +Reset Runs: false +Seed transitions: false +Draw symbols uniformly: false + +SulConfig Parameters +Fuzzing Role: client +Fuzzing Client: true +Response Wait: 100 +Input Response Timeout: null +Command: null +Terminate Command: null +Process Dir: null +Redirect Output Streams: false +Process Trigger: NEW_TEST +Start Wait: 0 + +SulServerConfigStandard Parameters +Connect to: localhost:5683 + +MapperConfig Parameters +Mapper Connection Config: null +Repeating Outputs: null +Socket Closed as Timeout: true +Disabled as Timeout: false +Merge Repeating: true + +EdhocMapperConfig Parameters +Protocol Version: v23 +Combined Message Version: v06 +Edhoc Role: Initiator +Edhoc Coap Resource: .well-known/edhoc +App Coap Resource: applicationEndpoint +App Message Code To Coap Server: GET +App Message Payload To Coap Server: +App Message Code To Coap Client: CHANGED +App Message Payload To Coap Client: Server Application Data +Coap Error As Edhoc Error: false +use Content Format: true +use Old Content Format: false +use Session Reset: false +use CX Correlation: true +Own Connection Id: 36 +Generate Own Connection Id: true +Force Oscore Sender Id: null +Force Oscore Recipient Id: null + +AuthenticationConfig Parameters +Map Cred Type: CCS +Map Id Cred Type: KID +Sul Cred Type: CCS +Sul Id Cred Type: KID +Trust Model: NO_LEARNING + +TestVectorAuthenticationConfig Parameters +Test Vector File: experiments/authentication/test_vectors/test_vectors_lakers.json +Test Vector Key: test_vector_p256 +Test Vector Peer Key Curve: P256 + +SulAdapterConfig Parameters +Adapter Port: null +Adapter Address: localhost + +=== STATISTICS === +Learning finished: false +Reason: Index -1 out of bounds for length 8 +Size of the input alphabet: 26 +Number of states: 15 +Number of hypotheses: 7 +Number of inputs: 29968 +Number of tests: 7638 +Number of learning inputs: 1245 +Number of learning tests: 447 +Number of inputs up to last hypothesis: 1500 +Number of tests up to last hypothesis: 512 +Time (ms) to learn model: 12336181 +Counterexamples: +CE 1:Query[ε|EDHOC_MESSAGE_4_INPUT[] TIMEOUT[] COAP_EMPTY_MESSAGE_INPUT[] SOCKET_CLOSED[] / true] +CE 2:Query[ε|EDHOC_MESSAGE_1_INPUT[0[C_I]] EDHOC_MESSAGE_2_OUTPUT[] EDHOC_MESSAGE_1_INPUT[0[C_I]] EDHOC_MESSAGE_2_OUTPUT[] EDHOC_MESSAGE_3_INPUT[] EDHOC_MESSAGE_4_OUTPUT[] / true] +CE 3:Query[ε|EDHOC_MESSAGE_3_OSCORE_APP_INPUT[0[C_I]] COAP_ERROR_MESSAGE_OUTPUT[] EDHOC_MESSAGE_1_INPUT[1[C_I]] EDHOC_MESSAGE_2_OUTPUT[] EDHOC_MESSAGE_4_INPUT[] TIMEOUT[] EDHOC_MESSAGE_3_OSCORE_APP_INPUT[1[C_I]] COAP_ERROR_MESSAGE_OUTPUT[] / true] +CE 4:Query[ε|COAP_APP_MESSAGE_INPUT[] COAP_ERROR_MESSAGE_OUTPUT[] OSCORE_APP_MESSAGE_INPUT[] COAP_ERROR_MESSAGE_OUTPUT[] EDHOC_MESSAGE_3_OSCORE_APP_INPUT[0[C_I]] COAP_ERROR_MESSAGE_OUTPUT[] EDHOC_MESSAGE_3_OSCORE_APP_INPUT[1[C_I]] TIMEOUT[] / true] +CE 5:Query[ε|EDHOC_MESSAGE_1_INPUT[0[C_I]] EDHOC_MESSAGE_2_OUTPUT[] COAP_APP_MESSAGE_INPUT[] COAP_ERROR_MESSAGE_OUTPUT[] EDHOC_MESSAGE_3_INPUT[] EDHOC_MESSAGE_4_OUTPUT[] / true] +CE 6:Query[ε|EDHOC_MESSAGE_1_INPUT[0[C_I]] EDHOC_MESSAGE_2_OUTPUT[] EDHOC_MESSAGE_3_OSCORE_APP_INPUT[1[C_I]] TIMEOUT[] EDHOC_MESSAGE_3_INPUT[] EDHOC_MESSAGE_4_OUTPUT[] / true] +CE 7:Query[ε|OSCORE_APP_MESSAGE_INPUT[] COAP_ERROR_MESSAGE_OUTPUT[] EDHOC_MESSAGE_1_INPUT[0[C_I]] EDHOC_MESSAGE_2_OUTPUT[] EDHOC_MESSAGE_1_INPUT[0[C_I]] EDHOC_MESSAGE_2_OUTPUT[] EDHOC_MESSAGE_3_INPUT[] TIMEOUT[] / true] +Number of inputs when hypothesis was generated: [27, 110, 206, 809, 1039, 1270, 1500] +Number of tests when hypothesis was generated: [27, 70, 116, 296, 373, 440, 512] +Time (ms) when hypothesis was generated: [36927, 106220, 169048, 473786, 579288, 680024, 809781] +Number of inputs when counterexample was found: [29, 113, 266, 853, 1150, 1305, 29848] +Number of tests when counterexample was found: [28, 71, 131, 307, 401, 449, 7599] +Time (ms) when counterexample was found: [38539, 107240, 193233, 490892, 626156, 695709, 12296762] diff --git a/experiments/saved_results/servers/ra/rise_m4_app/command.args b/experiments/saved_results/servers/ra/rise_m4_app/command.args new file mode 100644 index 00000000..b1fc4761 --- /dev/null +++ b/experiments/saved_results/servers/ra/rise_m4_app/command.args @@ -0,0 +1,81 @@ +state-fuzzer-server + + +##### StateFuzzerConfig ##### +-output +${results.learning.servers.ra}/rise_m4_app + + +##### LearnerConfig ##### +-learningAlgorithm +RaStar +-equivalenceAlgorithms +IO_RANDOM_WALK +-logQueries +-alphabet +./src/main/resources/alphabet_placeholder.xml +-maxDepthRA +10 +-probNewDataValue +0.5 +-seed +7 +-socketClosedAsTimeout +-memQueryRuns +3 +-timeLimit +PT5H30M + +##### EdhocMapperConfig ##### +-protocolVersion +v23 + +-combinedMessageVersion +v07 + +## Mapper Auth ## + +-mapCredType +X509 + +-mapIdCredType +X5T + +## Sul Auth ## + +-sulCredType +X509 + +-sulIdCredType +X5T + +# TestVector +-testVectorJson +${authentication.test_vectors}/test_vectors_rise.json + +-testVectorJsonKey +test_vector_ed25519 + +-testVectorPeerKeyCurve +Ed25519 + +-edhocRole +Initiator + +-appCoapResource +helloWorld + +##### SulConfig ##### +-responseWait +600 +-processDir +${models.servers}/rise +-cmd +java -cp cf-edhoc.jar org.eclipse.californium.edhoc.EdhocServer 5 +-startWait +400 + + +##### EdhocSulServerConfig ##### +-connect +localhost:5683 diff --git a/experiments/saved_results/servers/ra/rise_m4_app/hyp1.dot b/experiments/saved_results/servers/ra/rise_m4_app/hyp1.dot new file mode 100644 index 00000000..a1209ede --- /dev/null +++ b/experiments/saved_results/servers/ra/rise_m4_app/hyp1.dot @@ -0,0 +1,24 @@ +digraph RA { +"" [shape=none,label=<>] +"l0" [shape=doublecircle] +"l1" [shape=doublecircle] +"l2" [shape=circle] +"l3" [shape=circle] +"l4" [shape=doublecircle] +"l5" [shape=doublecircle] +"l6" [shape=doublecircle] +"" -> "l0" +"l0" -> "l1" [label=] +"l0" -> "l4" [label=] +"l0" -> "l4" [label=] +"l0" -> "l4" [label=] +"l0" -> "l4" [label=] +"l0" -> "l4" [label=] +"l0" -> "l4" [label=] +"l0" -> "l5" [label=] +"l0" -> "l6" [label=] +"l1" -> "l0" [label=] +"l4" -> "l0" [label=] +"l5" -> "l0" [label=] +"l6" -> "l0" [label=] +} diff --git a/experiments/saved_results/servers/ra/rise_m4_app/hyp10.dot b/experiments/saved_results/servers/ra/rise_m4_app/hyp10.dot new file mode 100644 index 00000000..06088ec4 --- /dev/null +++ b/experiments/saved_results/servers/ra/rise_m4_app/hyp10.dot @@ -0,0 +1,129 @@ +digraph RA { +"" [shape=none,label=<>] +"l0" [shape=doublecircle] +"l1" [shape=doublecircle] +"l2" [shape=circle] +"l3" [shape=circle] +"l4" [shape=doublecircle] +"l5" [shape=doublecircle] +"l6" [shape=doublecircle] +"l7" [shape=doublecircle] +"l8" [shape=doublecircle] +"l9" [shape=doublecircle] +"l10" [shape=doublecircle] +"l11" [shape=doublecircle] +"l12" [shape=doublecircle] +"l13" [shape=doublecircle] +"l14" [shape=doublecircle] +"l15" [shape=doublecircle] +"l16" [shape=doublecircle] +"l17" [shape=doublecircle] +"l18" [shape=doublecircle] +"l19" [shape=doublecircle] +"l20" [shape=doublecircle] +"l21" [shape=doublecircle] +"l22" [shape=doublecircle] +"l23" [shape=doublecircle] +"l24" [shape=doublecircle] +"l25" [shape=doublecircle] +"l26" [shape=doublecircle] +"l27" [shape=doublecircle] +"l28" [shape=doublecircle] +"l29" [shape=doublecircle] +"l30" [shape=doublecircle] +"l31" [shape=doublecircle] +"l32" [shape=doublecircle] +"l33" [shape=doublecircle] +"" -> "l0" +"l0" -> "l1" [label=[r1:=p1,]>] +"l0" -> "l4" [label=] +"l0" -> "l5" [label=] +"l0" -> "l6" [label=] +"l0" -> "l12" [label=] +"l0" -> "l12" [label=] +"l0" -> "l12" [label=] +"l0" -> "l12" [label=] +"l0" -> "l13" [label=[r1:=p1,]>] +"l1" -> "l7" [label=[r1:=r1,]>] +"l4" -> "l8" [label=] +"l5" -> "l0" [label=] +"l6" -> "l0" [label=] +"l7" -> "l1" [label=[r1:=p1,]>] +"l7" -> "l9" [label=[r1:=r1,]>] +"l7" -> "l10" [label=[r1:=r1,]>] +"l7" -> "l11" [label=[r1:=r1,]>] +"l7" -> "l11" [label=[r1:=r1,]>] +"l7" -> "l14" [label=[r1:=r1,]>] +"l7" -> "l29" [label=[r1:=r1,]>] +"l7" -> "l19" [label=[r1:=r1,]>] +"l7" -> "l29" [label=[r1:=r1,]>] +"l7" -> "l29" [label=[r1:=r1,]>] +"l8" -> "l1" [label=[r1:=p1,]>] +"l8" -> "l4" [label=] +"l8" -> "l4" [label=] +"l8" -> "l4" [label=] +"l8" -> "l4" [label=] +"l8" -> "l4" [label=] +"l8" -> "l15" [label=] +"l8" -> "l15" [label=] +"l8" -> "l20" [label=] +"l9" -> "l16" [label=[r1:=r1,]>] +"l10" -> "l27" [label=[r1:=r1,]>] +"l11" -> "l27" [label=[r1:=r1,]>] +"l12" -> "l0" [label=] +"l13" -> "l27" [label=[r1:=r1,]>] +"l14" -> "l7" [label=[r1:=r1,]>] +"l15" -> "l8" [label=] +"l16" -> "l10" [label=[r1:=r1,]>] +"l16" -> "l13" [label=[r1:=r1,]>] +"l16" -> "l13" [label=[r1:=r1,]>] +"l16" -> "l13" [label=[r1:=r1,]>] +"l16" -> "l13" [label=[r1:=r1,]>] +"l16" -> "l13" [label=[r1:=r1,]>] +"l16" -> "l18" [label=[r1:=r1,]>] +"l16" -> "l13" [label=[r1:=r1,]>] +"l16" -> "l17" [label=] +"l16" -> "l19" [label=[r1:=r1,]>] +"l17" -> "l21" [label=] +"l18" -> "l16" [label=[r1:=r1,]>] +"l19" -> "l7" [label=[r1:=r1,]>] +"l20" -> "l8" [label=] +"l21" -> "l1" [label=[r1:=p1,]>] +"l21" -> "l22" [label=] +"l21" -> "l23" [label=] +"l21" -> "l24" [label=] +"l21" -> "l24" [label=] +"l21" -> "l25" [label=] +"l21" -> "l28" [label=] +"l21" -> "l28" [label=] +"l21" -> "l33" [label=] +"l22" -> "l26" [label=] +"l23" -> "l8" [label=] +"l24" -> "l8" [label=] +"l25" -> "l21" [label=] +"l26" -> "l4" [label=] +"l26" -> "l4" [label=] +"l26" -> "l4" [label=] +"l26" -> "l4" [label=] +"l26" -> "l4" [label=] +"l26" -> "l17" [label=] +"l26" -> "l23" [label=] +"l26" -> "l30" [label=] +"l26" -> "l33" [label=] +"l27" -> "l1" [label=[r1:=p1,]>] +"l27" -> "l13" [label=[r1:=r1,]>] +"l27" -> "l13" [label=[r1:=r1,]>] +"l27" -> "l13" [label=[r1:=r1,]>] +"l27" -> "l13" [label=[r1:=r1,]>] +"l27" -> "l13" [label=[r1:=r1,]>] +"l27" -> "l31" [label=[r1:=r1,]>] +"l27" -> "l13" [label=[r1:=r1,]>] +"l27" -> "l31" [label=[r1:=r1,]>] +"l27" -> "l32" [label=[r1:=r1,]>] +"l28" -> "l21" [label=] +"l29" -> "l7" [label=[r1:=r1,]>] +"l30" -> "l26" [label=] +"l31" -> "l27" [label=[r1:=r1,]>] +"l32" -> "l27" [label=[r1:=r1,]>] +"l33" -> "l21" [label=] +} diff --git a/experiments/saved_results/servers/ra/rise_m4_app/hyp11.dot b/experiments/saved_results/servers/ra/rise_m4_app/hyp11.dot new file mode 100644 index 00000000..8a5bbecf --- /dev/null +++ b/experiments/saved_results/servers/ra/rise_m4_app/hyp11.dot @@ -0,0 +1,142 @@ +digraph RA { +"" [shape=none,label=<>] +"l0" [shape=doublecircle] +"l1" [shape=doublecircle] +"l2" [shape=circle] +"l3" [shape=circle] +"l4" [shape=doublecircle] +"l5" [shape=doublecircle] +"l6" [shape=doublecircle] +"l7" [shape=doublecircle] +"l8" [shape=doublecircle] +"l9" [shape=doublecircle] +"l10" [shape=doublecircle] +"l11" [shape=doublecircle] +"l12" [shape=doublecircle] +"l13" [shape=doublecircle] +"l14" [shape=doublecircle] +"l15" [shape=doublecircle] +"l16" [shape=doublecircle] +"l17" [shape=doublecircle] +"l18" [shape=doublecircle] +"l19" [shape=doublecircle] +"l20" [shape=doublecircle] +"l21" [shape=doublecircle] +"l22" [shape=doublecircle] +"l23" [shape=doublecircle] +"l24" [shape=doublecircle] +"l25" [shape=doublecircle] +"l26" [shape=doublecircle] +"l27" [shape=doublecircle] +"l28" [shape=doublecircle] +"l29" [shape=doublecircle] +"l30" [shape=doublecircle] +"l31" [shape=doublecircle] +"l32" [shape=doublecircle] +"l33" [shape=doublecircle] +"l34" [shape=doublecircle] +"l35" [shape=doublecircle] +"" -> "l0" +"l0" -> "l1" [label=[r1:=p1,]>] +"l0" -> "l4" [label=] +"l0" -> "l5" [label=] +"l0" -> "l6" [label=] +"l0" -> "l12" [label=] +"l0" -> "l12" [label=] +"l0" -> "l12" [label=] +"l0" -> "l12" [label=] +"l0" -> "l13" [label=[r1:=p1,]>] +"l1" -> "l7" [label=[r1:=r1,]>] +"l4" -> "l8" [label=] +"l5" -> "l0" [label=] +"l6" -> "l0" [label=] +"l7" -> "l9" [label=[r1:=r1,]>] +"l7" -> "l10" [label=[r1:=r1,]>] +"l7" -> "l11" [label=[r1:=r1,]>] +"l7" -> "l11" [label=[r1:=r1,]>] +"l7" -> "l14" [label=[r1:=r1,]>] +"l7" -> "l29" [label=[r1:=r1,]>] +"l7" -> "l19" [label=[r1:=r1,]>] +"l7" -> "l29" [label=[r1:=r1,]>] +"l7" -> "l29" [label=[r1:=r1,]>] +"l7" -> "l34" [label=[r1:=p1,]>] +"l8" -> "l1" [label=[r1:=p1,]>] +"l8" -> "l4" [label=] +"l8" -> "l4" [label=] +"l8" -> "l4" [label=] +"l8" -> "l4" [label=] +"l8" -> "l4" [label=] +"l8" -> "l15" [label=] +"l8" -> "l15" [label=] +"l8" -> "l20" [label=] +"l9" -> "l16" [label=[r1:=r1,]>] +"l10" -> "l27" [label=[r1:=r1,]>] +"l11" -> "l27" [label=[r1:=r1,]>] +"l12" -> "l0" [label=] +"l13" -> "l27" [label=[r1:=r1,]>] +"l14" -> "l7" [label=[r1:=r1,]>] +"l15" -> "l8" [label=] +"l16" -> "l10" [label=[r1:=r1,]>] +"l16" -> "l13" [label=[r1:=r1,]>] +"l16" -> "l13" [label=[r1:=r1,]>] +"l16" -> "l13" [label=[r1:=r1,]>] +"l16" -> "l13" [label=[r1:=r1,]>] +"l16" -> "l13" [label=[r1:=r1,]>] +"l16" -> "l18" [label=[r1:=r1,]>] +"l16" -> "l13" [label=[r1:=r1,]>] +"l16" -> "l17" [label=] +"l16" -> "l19" [label=[r1:=r1,]>] +"l17" -> "l21" [label=] +"l18" -> "l16" [label=[r1:=r1,]>] +"l19" -> "l7" [label=[r1:=r1,]>] +"l20" -> "l8" [label=] +"l21" -> "l22" [label=] +"l21" -> "l23" [label=] +"l21" -> "l24" [label=] +"l21" -> "l24" [label=] +"l21" -> "l25" [label=] +"l21" -> "l28" [label=] +"l21" -> "l28" [label=] +"l21" -> "l33" [label=] +"l21" -> "l34" [label=[r1:=p1,]>] +"l22" -> "l26" [label=] +"l23" -> "l8" [label=] +"l24" -> "l8" [label=] +"l25" -> "l21" [label=] +"l26" -> "l4" [label=] +"l26" -> "l4" [label=] +"l26" -> "l4" [label=] +"l26" -> "l4" [label=] +"l26" -> "l4" [label=] +"l26" -> "l17" [label=] +"l26" -> "l23" [label=] +"l26" -> "l30" [label=] +"l26" -> "l33" [label=] +"l27" -> "l13" [label=[r1:=r1,]>] +"l27" -> "l13" [label=[r1:=r1,]>] +"l27" -> "l13" [label=[r1:=r1,]>] +"l27" -> "l13" [label=[r1:=r1,]>] +"l27" -> "l13" [label=[r1:=r1,]>] +"l27" -> "l31" [label=[r1:=r1,]>] +"l27" -> "l13" [label=[r1:=r1,]>] +"l27" -> "l31" [label=[r1:=r1,]>] +"l27" -> "l32" [label=[r1:=r1,]>] +"l27" -> "l34" [label=[r1:=p1,]>] +"l28" -> "l21" [label=] +"l29" -> "l7" [label=[r1:=r1,]>] +"l30" -> "l26" [label=] +"l31" -> "l27" [label=[r1:=r1,]>] +"l32" -> "l27" [label=[r1:=r1,]>] +"l33" -> "l21" [label=] +"l34" -> "l35" [label=[r1:=r1,]>] +"l35" -> "l9" [label=[r1:=r1,]>] +"l35" -> "l10" [label=[r1:=r1,]>] +"l35" -> "l11" [label=[r1:=r1,]>] +"l35" -> "l11" [label=[r1:=r1,]>] +"l35" -> "l11" [label=[r1:=r1,]>] +"l35" -> "l14" [label=[r1:=r1,]>] +"l35" -> "l19" [label=[r1:=r1,]>] +"l35" -> "l28" [label=] +"l35" -> "l28" [label=] +"l35" -> "l34" [label=[r1:=p1,]>] +} diff --git a/experiments/saved_results/servers/ra/rise_m4_app/hyp2.dot b/experiments/saved_results/servers/ra/rise_m4_app/hyp2.dot new file mode 100644 index 00000000..f5f8b360 --- /dev/null +++ b/experiments/saved_results/servers/ra/rise_m4_app/hyp2.dot @@ -0,0 +1,51 @@ +digraph RA { +"" [shape=none,label=<>] +"l0" [shape=doublecircle] +"l1" [shape=doublecircle] +"l2" [shape=circle] +"l3" [shape=circle] +"l4" [shape=doublecircle] +"l5" [shape=doublecircle] +"l6" [shape=doublecircle] +"l7" [shape=doublecircle] +"l8" [shape=doublecircle] +"l9" [shape=doublecircle] +"l10" [shape=doublecircle] +"l11" [shape=doublecircle] +"" -> "l0" +"l0" -> "l1" [label=[r1:=p1,]>] +"l0" -> "l4" [label=] +"l0" -> "l4" [label=] +"l0" -> "l4" [label=] +"l0" -> "l4" [label=] +"l0" -> "l4" [label=] +"l0" -> "l4" [label=] +"l0" -> "l5" [label=] +"l0" -> "l6" [label=] +"l1" -> "l7" [label=[r1:=r1,]>] +"l4" -> "l8" [label=] +"l5" -> "l0" [label=] +"l6" -> "l0" [label=] +"l7" -> "l1" [label=[r1:=p1,]>] +"l7" -> "l4" [label=] +"l7" -> "l4" [label=] +"l7" -> "l6" [label=] +"l7" -> "l4" [label=] +"l7" -> "l5" [label=] +"l7" -> "l9" [label=[r1:=r1,]>] +"l7" -> "l10" [label=[r1:=r1,]>] +"l7" -> "l11" [label=[r1:=r1,]>] +"l7" -> "l11" [label=[r1:=r1,]>] +"l8" -> "l1" [label=[r1:=p1,]>] +"l8" -> "l4" [label=] +"l8" -> "l4" [label=] +"l8" -> "l4" [label=] +"l8" -> "l4" [label=] +"l8" -> "l4" [label=] +"l8" -> "l5" [label=] +"l8" -> "l6" [label=] +"l8" -> "l6" [label=] +"l9" -> "l7" [label=[r1:=r1,]>] +"l10" -> "l7" [label=[r1:=r1,]>] +"l11" -> "l7" [label=[r1:=r1,]>] +} diff --git a/experiments/saved_results/servers/ra/rise_m4_app/hyp3.dot b/experiments/saved_results/servers/ra/rise_m4_app/hyp3.dot new file mode 100644 index 00000000..4ee3450f --- /dev/null +++ b/experiments/saved_results/servers/ra/rise_m4_app/hyp3.dot @@ -0,0 +1,55 @@ +digraph RA { +"" [shape=none,label=<>] +"l0" [shape=doublecircle] +"l1" [shape=doublecircle] +"l2" [shape=circle] +"l3" [shape=circle] +"l4" [shape=doublecircle] +"l5" [shape=doublecircle] +"l6" [shape=doublecircle] +"l7" [shape=doublecircle] +"l8" [shape=doublecircle] +"l9" [shape=doublecircle] +"l10" [shape=doublecircle] +"l11" [shape=doublecircle] +"l12" [shape=doublecircle] +"l13" [shape=doublecircle] +"" -> "l0" +"l0" -> "l1" [label=[r1:=p1,]>] +"l0" -> "l4" [label=] +"l0" -> "l5" [label=] +"l0" -> "l6" [label=] +"l0" -> "l12" [label=] +"l0" -> "l12" [label=] +"l0" -> "l12" [label=] +"l0" -> "l12" [label=] +"l0" -> "l13" [label=[r1:=p1,]>] +"l1" -> "l7" [label=[r1:=r1,]>] +"l4" -> "l8" [label=] +"l5" -> "l0" [label=] +"l6" -> "l0" [label=] +"l7" -> "l1" [label=[r1:=p1,]>] +"l7" -> "l5" [label=] +"l7" -> "l6" [label=] +"l7" -> "l13" [label=[r1:=r1,]>] +"l7" -> "l9" [label=[r1:=r1,]>] +"l7" -> "l10" [label=[r1:=r1,]>] +"l7" -> "l11" [label=[r1:=r1,]>] +"l7" -> "l11" [label=[r1:=r1,]>] +"l7" -> "l13" [label=[r1:=r1,]>] +"l7" -> "l13" [label=[r1:=r1,]>] +"l8" -> "l1" [label=[r1:=p1,]>] +"l8" -> "l4" [label=] +"l8" -> "l4" [label=] +"l8" -> "l4" [label=] +"l8" -> "l4" [label=] +"l8" -> "l4" [label=] +"l8" -> "l5" [label=] +"l8" -> "l6" [label=] +"l8" -> "l6" [label=] +"l9" -> "l7" [label=[r1:=r1,]>] +"l10" -> "l7" [label=[r1:=r1,]>] +"l11" -> "l7" [label=[r1:=r1,]>] +"l12" -> "l0" [label=] +"l13" -> "l7" [label=[r1:=r1,]>] +} diff --git a/experiments/saved_results/servers/ra/rise_m4_app/hyp4.dot b/experiments/saved_results/servers/ra/rise_m4_app/hyp4.dot new file mode 100644 index 00000000..41812b0d --- /dev/null +++ b/experiments/saved_results/servers/ra/rise_m4_app/hyp4.dot @@ -0,0 +1,59 @@ +digraph RA { +"" [shape=none,label=<>] +"l0" [shape=doublecircle] +"l1" [shape=doublecircle] +"l2" [shape=circle] +"l3" [shape=circle] +"l4" [shape=doublecircle] +"l5" [shape=doublecircle] +"l6" [shape=doublecircle] +"l7" [shape=doublecircle] +"l8" [shape=doublecircle] +"l9" [shape=doublecircle] +"l10" [shape=doublecircle] +"l11" [shape=doublecircle] +"l12" [shape=doublecircle] +"l13" [shape=doublecircle] +"l14" [shape=doublecircle] +"l15" [shape=doublecircle] +"" -> "l0" +"l0" -> "l1" [label=[r1:=p1,]>] +"l0" -> "l4" [label=] +"l0" -> "l5" [label=] +"l0" -> "l6" [label=] +"l0" -> "l12" [label=] +"l0" -> "l12" [label=] +"l0" -> "l12" [label=] +"l0" -> "l12" [label=] +"l0" -> "l13" [label=[r1:=p1,]>] +"l1" -> "l7" [label=[r1:=r1,]>] +"l4" -> "l8" [label=] +"l5" -> "l0" [label=] +"l6" -> "l0" [label=] +"l7" -> "l1" [label=[r1:=p1,]>] +"l7" -> "l5" [label=] +"l7" -> "l9" [label=[r1:=r1,]>] +"l7" -> "l10" [label=[r1:=r1,]>] +"l7" -> "l11" [label=[r1:=r1,]>] +"l7" -> "l11" [label=[r1:=r1,]>] +"l7" -> "l13" [label=[r1:=r1,]>] +"l7" -> "l13" [label=[r1:=r1,]>] +"l7" -> "l14" [label=[r1:=r1,]>] +"l7" -> "l13" [label=[r1:=r1,]>] +"l8" -> "l1" [label=[r1:=p1,]>] +"l8" -> "l4" [label=] +"l8" -> "l4" [label=] +"l8" -> "l4" [label=] +"l8" -> "l4" [label=] +"l8" -> "l4" [label=] +"l8" -> "l5" [label=] +"l8" -> "l15" [label=] +"l8" -> "l15" [label=] +"l9" -> "l7" [label=[r1:=r1,]>] +"l10" -> "l7" [label=[r1:=r1,]>] +"l11" -> "l7" [label=[r1:=r1,]>] +"l12" -> "l0" [label=] +"l13" -> "l7" [label=[r1:=r1,]>] +"l14" -> "l7" [label=[r1:=r1,]>] +"l15" -> "l8" [label=] +} diff --git a/experiments/saved_results/servers/ra/rise_m4_app/hyp5.dot b/experiments/saved_results/servers/ra/rise_m4_app/hyp5.dot new file mode 100644 index 00000000..fe67b7b4 --- /dev/null +++ b/experiments/saved_results/servers/ra/rise_m4_app/hyp5.dot @@ -0,0 +1,74 @@ +digraph RA { +"" [shape=none,label=<>] +"l0" [shape=doublecircle] +"l1" [shape=doublecircle] +"l2" [shape=circle] +"l3" [shape=circle] +"l4" [shape=doublecircle] +"l5" [shape=doublecircle] +"l6" [shape=doublecircle] +"l7" [shape=doublecircle] +"l8" [shape=doublecircle] +"l9" [shape=doublecircle] +"l10" [shape=doublecircle] +"l11" [shape=doublecircle] +"l12" [shape=doublecircle] +"l13" [shape=doublecircle] +"l14" [shape=doublecircle] +"l15" [shape=doublecircle] +"l16" [shape=doublecircle] +"l17" [shape=doublecircle] +"l18" [shape=doublecircle] +"" -> "l0" +"l0" -> "l1" [label=[r1:=p1,]>] +"l0" -> "l4" [label=] +"l0" -> "l5" [label=] +"l0" -> "l6" [label=] +"l0" -> "l12" [label=] +"l0" -> "l12" [label=] +"l0" -> "l12" [label=] +"l0" -> "l12" [label=] +"l0" -> "l13" [label=[r1:=p1,]>] +"l1" -> "l7" [label=[r1:=r1,]>] +"l4" -> "l8" [label=] +"l5" -> "l0" [label=] +"l6" -> "l0" [label=] +"l7" -> "l1" [label=[r1:=p1,]>] +"l7" -> "l5" [label=] +"l7" -> "l9" [label=[r1:=r1,]>] +"l7" -> "l10" [label=[r1:=r1,]>] +"l7" -> "l11" [label=[r1:=r1,]>] +"l7" -> "l11" [label=[r1:=r1,]>] +"l7" -> "l13" [label=[r1:=r1,]>] +"l7" -> "l13" [label=[r1:=r1,]>] +"l7" -> "l14" [label=[r1:=r1,]>] +"l7" -> "l13" [label=[r1:=r1,]>] +"l8" -> "l1" [label=[r1:=p1,]>] +"l8" -> "l4" [label=] +"l8" -> "l4" [label=] +"l8" -> "l4" [label=] +"l8" -> "l4" [label=] +"l8" -> "l4" [label=] +"l8" -> "l5" [label=] +"l8" -> "l15" [label=] +"l8" -> "l15" [label=] +"l9" -> "l16" [label=[r1:=r1,]>] +"l10" -> "l16" [label=[r1:=r1,]>] +"l11" -> "l16" [label=[r1:=r1,]>] +"l12" -> "l0" [label=] +"l13" -> "l16" [label=[r1:=r1,]>] +"l14" -> "l7" [label=[r1:=r1,]>] +"l15" -> "l8" [label=] +"l16" -> "l5" [label=] +"l16" -> "l10" [label=[r1:=r1,]>] +"l16" -> "l13" [label=[r1:=r1,]>] +"l16" -> "l13" [label=[r1:=r1,]>] +"l16" -> "l13" [label=[r1:=r1,]>] +"l16" -> "l13" [label=[r1:=r1,]>] +"l16" -> "l13" [label=[r1:=r1,]>] +"l16" -> "l18" [label=[r1:=r1,]>] +"l16" -> "l13" [label=[r1:=r1,]>] +"l16" -> "l17" [label=] +"l17" -> "l8" [label=] +"l18" -> "l16" [label=[r1:=r1,]>] +} diff --git a/experiments/saved_results/servers/ra/rise_m4_app/hyp6.dot b/experiments/saved_results/servers/ra/rise_m4_app/hyp6.dot new file mode 100644 index 00000000..d3f9ceb0 --- /dev/null +++ b/experiments/saved_results/servers/ra/rise_m4_app/hyp6.dot @@ -0,0 +1,78 @@ +digraph RA { +"" [shape=none,label=<>] +"l0" [shape=doublecircle] +"l1" [shape=doublecircle] +"l2" [shape=circle] +"l3" [shape=circle] +"l4" [shape=doublecircle] +"l5" [shape=doublecircle] +"l6" [shape=doublecircle] +"l7" [shape=doublecircle] +"l8" [shape=doublecircle] +"l9" [shape=doublecircle] +"l10" [shape=doublecircle] +"l11" [shape=doublecircle] +"l12" [shape=doublecircle] +"l13" [shape=doublecircle] +"l14" [shape=doublecircle] +"l15" [shape=doublecircle] +"l16" [shape=doublecircle] +"l17" [shape=doublecircle] +"l18" [shape=doublecircle] +"l19" [shape=doublecircle] +"l20" [shape=doublecircle] +"" -> "l0" +"l0" -> "l1" [label=[r1:=p1,]>] +"l0" -> "l4" [label=] +"l0" -> "l5" [label=] +"l0" -> "l6" [label=] +"l0" -> "l12" [label=] +"l0" -> "l12" [label=] +"l0" -> "l12" [label=] +"l0" -> "l12" [label=] +"l0" -> "l13" [label=[r1:=p1,]>] +"l1" -> "l7" [label=[r1:=r1,]>] +"l4" -> "l8" [label=] +"l5" -> "l0" [label=] +"l6" -> "l0" [label=] +"l7" -> "l1" [label=[r1:=p1,]>] +"l7" -> "l9" [label=[r1:=r1,]>] +"l7" -> "l10" [label=[r1:=r1,]>] +"l7" -> "l11" [label=[r1:=r1,]>] +"l7" -> "l11" [label=[r1:=r1,]>] +"l7" -> "l13" [label=[r1:=r1,]>] +"l7" -> "l13" [label=[r1:=r1,]>] +"l7" -> "l14" [label=[r1:=r1,]>] +"l7" -> "l13" [label=[r1:=r1,]>] +"l7" -> "l19" [label=[r1:=r1,]>] +"l8" -> "l1" [label=[r1:=p1,]>] +"l8" -> "l4" [label=] +"l8" -> "l4" [label=] +"l8" -> "l4" [label=] +"l8" -> "l4" [label=] +"l8" -> "l4" [label=] +"l8" -> "l15" [label=] +"l8" -> "l15" [label=] +"l8" -> "l20" [label=] +"l9" -> "l16" [label=[r1:=r1,]>] +"l10" -> "l16" [label=[r1:=r1,]>] +"l11" -> "l16" [label=[r1:=r1,]>] +"l12" -> "l0" [label=] +"l13" -> "l16" [label=[r1:=r1,]>] +"l14" -> "l7" [label=[r1:=r1,]>] +"l15" -> "l8" [label=] +"l16" -> "l10" [label=[r1:=r1,]>] +"l16" -> "l13" [label=[r1:=r1,]>] +"l16" -> "l13" [label=[r1:=r1,]>] +"l16" -> "l13" [label=[r1:=r1,]>] +"l16" -> "l13" [label=[r1:=r1,]>] +"l16" -> "l13" [label=[r1:=r1,]>] +"l16" -> "l18" [label=[r1:=r1,]>] +"l16" -> "l13" [label=[r1:=r1,]>] +"l16" -> "l17" [label=] +"l16" -> "l19" [label=[r1:=r1,]>] +"l17" -> "l8" [label=] +"l18" -> "l16" [label=[r1:=r1,]>] +"l19" -> "l7" [label=[r1:=r1,]>] +"l20" -> "l8" [label=] +} diff --git a/experiments/saved_results/servers/ra/rise_m4_app/hyp7.dot b/experiments/saved_results/servers/ra/rise_m4_app/hyp7.dot new file mode 100644 index 00000000..4b7dcd45 --- /dev/null +++ b/experiments/saved_results/servers/ra/rise_m4_app/hyp7.dot @@ -0,0 +1,96 @@ +digraph RA { +"" [shape=none,label=<>] +"l0" [shape=doublecircle] +"l1" [shape=doublecircle] +"l2" [shape=circle] +"l3" [shape=circle] +"l4" [shape=doublecircle] +"l5" [shape=doublecircle] +"l6" [shape=doublecircle] +"l7" [shape=doublecircle] +"l8" [shape=doublecircle] +"l9" [shape=doublecircle] +"l10" [shape=doublecircle] +"l11" [shape=doublecircle] +"l12" [shape=doublecircle] +"l13" [shape=doublecircle] +"l14" [shape=doublecircle] +"l15" [shape=doublecircle] +"l16" [shape=doublecircle] +"l17" [shape=doublecircle] +"l18" [shape=doublecircle] +"l19" [shape=doublecircle] +"l20" [shape=doublecircle] +"l21" [shape=doublecircle] +"l22" [shape=doublecircle] +"l23" [shape=doublecircle] +"l24" [shape=doublecircle] +"l25" [shape=doublecircle] +"" -> "l0" +"l0" -> "l1" [label=[r1:=p1,]>] +"l0" -> "l4" [label=] +"l0" -> "l5" [label=] +"l0" -> "l6" [label=] +"l0" -> "l12" [label=] +"l0" -> "l12" [label=] +"l0" -> "l12" [label=] +"l0" -> "l12" [label=] +"l0" -> "l13" [label=[r1:=p1,]>] +"l1" -> "l7" [label=[r1:=r1,]>] +"l4" -> "l8" [label=] +"l5" -> "l0" [label=] +"l6" -> "l0" [label=] +"l7" -> "l1" [label=[r1:=p1,]>] +"l7" -> "l9" [label=[r1:=r1,]>] +"l7" -> "l10" [label=[r1:=r1,]>] +"l7" -> "l11" [label=[r1:=r1,]>] +"l7" -> "l11" [label=[r1:=r1,]>] +"l7" -> "l13" [label=[r1:=r1,]>] +"l7" -> "l13" [label=[r1:=r1,]>] +"l7" -> "l14" [label=[r1:=r1,]>] +"l7" -> "l13" [label=[r1:=r1,]>] +"l7" -> "l19" [label=[r1:=r1,]>] +"l8" -> "l1" [label=[r1:=p1,]>] +"l8" -> "l4" [label=] +"l8" -> "l4" [label=] +"l8" -> "l4" [label=] +"l8" -> "l4" [label=] +"l8" -> "l4" [label=] +"l8" -> "l15" [label=] +"l8" -> "l15" [label=] +"l8" -> "l20" [label=] +"l9" -> "l16" [label=[r1:=r1,]>] +"l10" -> "l16" [label=[r1:=r1,]>] +"l11" -> "l16" [label=[r1:=r1,]>] +"l12" -> "l0" [label=] +"l13" -> "l16" [label=[r1:=r1,]>] +"l14" -> "l7" [label=[r1:=r1,]>] +"l15" -> "l8" [label=] +"l16" -> "l10" [label=[r1:=r1,]>] +"l16" -> "l13" [label=[r1:=r1,]>] +"l16" -> "l13" [label=[r1:=r1,]>] +"l16" -> "l13" [label=[r1:=r1,]>] +"l16" -> "l13" [label=[r1:=r1,]>] +"l16" -> "l13" [label=[r1:=r1,]>] +"l16" -> "l18" [label=[r1:=r1,]>] +"l16" -> "l13" [label=[r1:=r1,]>] +"l16" -> "l17" [label=] +"l16" -> "l19" [label=[r1:=r1,]>] +"l17" -> "l21" [label=] +"l18" -> "l16" [label=[r1:=r1,]>] +"l19" -> "l7" [label=[r1:=r1,]>] +"l20" -> "l8" [label=] +"l21" -> "l1" [label=[r1:=p1,]>] +"l21" -> "l4" [label=] +"l21" -> "l4" [label=] +"l21" -> "l20" [label=] +"l21" -> "l22" [label=] +"l21" -> "l23" [label=] +"l21" -> "l24" [label=] +"l21" -> "l24" [label=] +"l21" -> "l25" [label=] +"l22" -> "l8" [label=] +"l23" -> "l8" [label=] +"l24" -> "l8" [label=] +"l25" -> "l21" [label=] +} diff --git a/experiments/saved_results/servers/ra/rise_m4_app/hyp8.dot b/experiments/saved_results/servers/ra/rise_m4_app/hyp8.dot new file mode 100644 index 00000000..baf95ee8 --- /dev/null +++ b/experiments/saved_results/servers/ra/rise_m4_app/hyp8.dot @@ -0,0 +1,117 @@ +digraph RA { +"" [shape=none,label=<>] +"l0" [shape=doublecircle] +"l1" [shape=doublecircle] +"l2" [shape=circle] +"l3" [shape=circle] +"l4" [shape=doublecircle] +"l5" [shape=doublecircle] +"l6" [shape=doublecircle] +"l7" [shape=doublecircle] +"l8" [shape=doublecircle] +"l9" [shape=doublecircle] +"l10" [shape=doublecircle] +"l11" [shape=doublecircle] +"l12" [shape=doublecircle] +"l13" [shape=doublecircle] +"l14" [shape=doublecircle] +"l15" [shape=doublecircle] +"l16" [shape=doublecircle] +"l17" [shape=doublecircle] +"l18" [shape=doublecircle] +"l19" [shape=doublecircle] +"l20" [shape=doublecircle] +"l21" [shape=doublecircle] +"l22" [shape=doublecircle] +"l23" [shape=doublecircle] +"l24" [shape=doublecircle] +"l25" [shape=doublecircle] +"l26" [shape=doublecircle] +"l27" [shape=doublecircle] +"" -> "l0" +"l0" -> "l1" [label=[r1:=p1,]>] +"l0" -> "l4" [label=] +"l0" -> "l5" [label=] +"l0" -> "l6" [label=] +"l0" -> "l12" [label=] +"l0" -> "l12" [label=] +"l0" -> "l12" [label=] +"l0" -> "l12" [label=] +"l0" -> "l13" [label=[r1:=p1,]>] +"l1" -> "l7" [label=[r1:=r1,]>] +"l4" -> "l8" [label=] +"l5" -> "l0" [label=] +"l6" -> "l0" [label=] +"l7" -> "l1" [label=[r1:=p1,]>] +"l7" -> "l9" [label=[r1:=r1,]>] +"l7" -> "l10" [label=[r1:=r1,]>] +"l7" -> "l11" [label=[r1:=r1,]>] +"l7" -> "l11" [label=[r1:=r1,]>] +"l7" -> "l13" [label=[r1:=r1,]>] +"l7" -> "l13" [label=[r1:=r1,]>] +"l7" -> "l14" [label=[r1:=r1,]>] +"l7" -> "l13" [label=[r1:=r1,]>] +"l7" -> "l19" [label=[r1:=r1,]>] +"l8" -> "l1" [label=[r1:=p1,]>] +"l8" -> "l4" [label=] +"l8" -> "l4" [label=] +"l8" -> "l4" [label=] +"l8" -> "l4" [label=] +"l8" -> "l4" [label=] +"l8" -> "l15" [label=] +"l8" -> "l15" [label=] +"l8" -> "l20" [label=] +"l9" -> "l16" [label=[r1:=r1,]>] +"l10" -> "l27" [label=[r1:=r1,]>] +"l11" -> "l27" [label=[r1:=r1,]>] +"l12" -> "l0" [label=] +"l13" -> "l27" [label=[r1:=r1,]>] +"l14" -> "l7" [label=[r1:=r1,]>] +"l15" -> "l8" [label=] +"l16" -> "l10" [label=[r1:=r1,]>] +"l16" -> "l13" [label=[r1:=r1,]>] +"l16" -> "l13" [label=[r1:=r1,]>] +"l16" -> "l13" [label=[r1:=r1,]>] +"l16" -> "l13" [label=[r1:=r1,]>] +"l16" -> "l13" [label=[r1:=r1,]>] +"l16" -> "l18" [label=[r1:=r1,]>] +"l16" -> "l13" [label=[r1:=r1,]>] +"l16" -> "l17" [label=] +"l16" -> "l19" [label=[r1:=r1,]>] +"l17" -> "l21" [label=] +"l18" -> "l16" [label=[r1:=r1,]>] +"l19" -> "l7" [label=[r1:=r1,]>] +"l20" -> "l8" [label=] +"l21" -> "l1" [label=[r1:=p1,]>] +"l21" -> "l4" [label=] +"l21" -> "l4" [label=] +"l21" -> "l20" [label=] +"l21" -> "l22" [label=] +"l21" -> "l23" [label=] +"l21" -> "l24" [label=] +"l21" -> "l24" [label=] +"l21" -> "l25" [label=] +"l22" -> "l26" [label=] +"l23" -> "l8" [label=] +"l24" -> "l8" [label=] +"l25" -> "l21" [label=] +"l26" -> "l4" [label=] +"l26" -> "l4" [label=] +"l26" -> "l4" [label=] +"l26" -> "l4" [label=] +"l26" -> "l4" [label=] +"l26" -> "l15" [label=] +"l26" -> "l17" [label=] +"l26" -> "l20" [label=] +"l26" -> "l23" [label=] +"l27" -> "l1" [label=[r1:=p1,]>] +"l27" -> "l13" [label=[r1:=r1,]>] +"l27" -> "l13" [label=[r1:=r1,]>] +"l27" -> "l13" [label=[r1:=r1,]>] +"l27" -> "l13" [label=[r1:=r1,]>] +"l27" -> "l13" [label=[r1:=r1,]>] +"l27" -> "l18" [label=[r1:=r1,]>] +"l27" -> "l13" [label=[r1:=r1,]>] +"l27" -> "l18" [label=[r1:=r1,]>] +"l27" -> "l19" [label=[r1:=r1,]>] +} diff --git a/experiments/saved_results/servers/ra/rise_m4_app/hyp9.dot b/experiments/saved_results/servers/ra/rise_m4_app/hyp9.dot new file mode 100644 index 00000000..91aa1bcb --- /dev/null +++ b/experiments/saved_results/servers/ra/rise_m4_app/hyp9.dot @@ -0,0 +1,121 @@ +digraph RA { +"" [shape=none,label=<>] +"l0" [shape=doublecircle] +"l1" [shape=doublecircle] +"l2" [shape=circle] +"l3" [shape=circle] +"l4" [shape=doublecircle] +"l5" [shape=doublecircle] +"l6" [shape=doublecircle] +"l7" [shape=doublecircle] +"l8" [shape=doublecircle] +"l9" [shape=doublecircle] +"l10" [shape=doublecircle] +"l11" [shape=doublecircle] +"l12" [shape=doublecircle] +"l13" [shape=doublecircle] +"l14" [shape=doublecircle] +"l15" [shape=doublecircle] +"l16" [shape=doublecircle] +"l17" [shape=doublecircle] +"l18" [shape=doublecircle] +"l19" [shape=doublecircle] +"l20" [shape=doublecircle] +"l21" [shape=doublecircle] +"l22" [shape=doublecircle] +"l23" [shape=doublecircle] +"l24" [shape=doublecircle] +"l25" [shape=doublecircle] +"l26" [shape=doublecircle] +"l27" [shape=doublecircle] +"l28" [shape=doublecircle] +"l29" [shape=doublecircle] +"" -> "l0" +"l0" -> "l1" [label=[r1:=p1,]>] +"l0" -> "l4" [label=] +"l0" -> "l5" [label=] +"l0" -> "l6" [label=] +"l0" -> "l12" [label=] +"l0" -> "l12" [label=] +"l0" -> "l12" [label=] +"l0" -> "l12" [label=] +"l0" -> "l13" [label=[r1:=p1,]>] +"l1" -> "l7" [label=[r1:=r1,]>] +"l4" -> "l8" [label=] +"l5" -> "l0" [label=] +"l6" -> "l0" [label=] +"l7" -> "l1" [label=[r1:=p1,]>] +"l7" -> "l9" [label=[r1:=r1,]>] +"l7" -> "l10" [label=[r1:=r1,]>] +"l7" -> "l11" [label=[r1:=r1,]>] +"l7" -> "l11" [label=[r1:=r1,]>] +"l7" -> "l14" [label=[r1:=r1,]>] +"l7" -> "l29" [label=[r1:=r1,]>] +"l7" -> "l19" [label=[r1:=r1,]>] +"l7" -> "l29" [label=[r1:=r1,]>] +"l7" -> "l29" [label=[r1:=r1,]>] +"l8" -> "l1" [label=[r1:=p1,]>] +"l8" -> "l4" [label=] +"l8" -> "l4" [label=] +"l8" -> "l4" [label=] +"l8" -> "l4" [label=] +"l8" -> "l4" [label=] +"l8" -> "l15" [label=] +"l8" -> "l15" [label=] +"l8" -> "l20" [label=] +"l9" -> "l16" [label=[r1:=r1,]>] +"l10" -> "l27" [label=[r1:=r1,]>] +"l11" -> "l27" [label=[r1:=r1,]>] +"l12" -> "l0" [label=] +"l13" -> "l27" [label=[r1:=r1,]>] +"l14" -> "l7" [label=[r1:=r1,]>] +"l15" -> "l8" [label=] +"l16" -> "l10" [label=[r1:=r1,]>] +"l16" -> "l13" [label=[r1:=r1,]>] +"l16" -> "l13" [label=[r1:=r1,]>] +"l16" -> "l13" [label=[r1:=r1,]>] +"l16" -> "l13" [label=[r1:=r1,]>] +"l16" -> "l13" [label=[r1:=r1,]>] +"l16" -> "l18" [label=[r1:=r1,]>] +"l16" -> "l13" [label=[r1:=r1,]>] +"l16" -> "l17" [label=] +"l16" -> "l19" [label=[r1:=r1,]>] +"l17" -> "l21" [label=] +"l18" -> "l16" [label=[r1:=r1,]>] +"l19" -> "l7" [label=[r1:=r1,]>] +"l20" -> "l8" [label=] +"l21" -> "l1" [label=[r1:=p1,]>] +"l21" -> "l20" [label=] +"l21" -> "l22" [label=] +"l21" -> "l23" [label=] +"l21" -> "l24" [label=] +"l21" -> "l24" [label=] +"l21" -> "l25" [label=] +"l21" -> "l28" [label=] +"l21" -> "l28" [label=] +"l22" -> "l26" [label=] +"l23" -> "l8" [label=] +"l24" -> "l8" [label=] +"l25" -> "l21" [label=] +"l26" -> "l4" [label=] +"l26" -> "l4" [label=] +"l26" -> "l4" [label=] +"l26" -> "l4" [label=] +"l26" -> "l4" [label=] +"l26" -> "l15" [label=] +"l26" -> "l17" [label=] +"l26" -> "l20" [label=] +"l26" -> "l23" [label=] +"l27" -> "l1" [label=[r1:=p1,]>] +"l27" -> "l13" [label=[r1:=r1,]>] +"l27" -> "l13" [label=[r1:=r1,]>] +"l27" -> "l13" [label=[r1:=r1,]>] +"l27" -> "l13" [label=[r1:=r1,]>] +"l27" -> "l13" [label=[r1:=r1,]>] +"l27" -> "l18" [label=[r1:=r1,]>] +"l27" -> "l13" [label=[r1:=r1,]>] +"l27" -> "l18" [label=[r1:=r1,]>] +"l27" -> "l19" [label=[r1:=r1,]>] +"l28" -> "l21" [label=] +"l29" -> "l7" [label=[r1:=r1,]>] +} diff --git a/experiments/saved_results/servers/ra/rise_m4_app/learnedModel.dot b/experiments/saved_results/servers/ra/rise_m4_app/learnedModel.dot new file mode 100644 index 00000000..8a5bbecf --- /dev/null +++ b/experiments/saved_results/servers/ra/rise_m4_app/learnedModel.dot @@ -0,0 +1,142 @@ +digraph RA { +"" [shape=none,label=<>] +"l0" [shape=doublecircle] +"l1" [shape=doublecircle] +"l2" [shape=circle] +"l3" [shape=circle] +"l4" [shape=doublecircle] +"l5" [shape=doublecircle] +"l6" [shape=doublecircle] +"l7" [shape=doublecircle] +"l8" [shape=doublecircle] +"l9" [shape=doublecircle] +"l10" [shape=doublecircle] +"l11" [shape=doublecircle] +"l12" [shape=doublecircle] +"l13" [shape=doublecircle] +"l14" [shape=doublecircle] +"l15" [shape=doublecircle] +"l16" [shape=doublecircle] +"l17" [shape=doublecircle] +"l18" [shape=doublecircle] +"l19" [shape=doublecircle] +"l20" [shape=doublecircle] +"l21" [shape=doublecircle] +"l22" [shape=doublecircle] +"l23" [shape=doublecircle] +"l24" [shape=doublecircle] +"l25" [shape=doublecircle] +"l26" [shape=doublecircle] +"l27" [shape=doublecircle] +"l28" [shape=doublecircle] +"l29" [shape=doublecircle] +"l30" [shape=doublecircle] +"l31" [shape=doublecircle] +"l32" [shape=doublecircle] +"l33" [shape=doublecircle] +"l34" [shape=doublecircle] +"l35" [shape=doublecircle] +"" -> "l0" +"l0" -> "l1" [label=[r1:=p1,]>] +"l0" -> "l4" [label=] +"l0" -> "l5" [label=] +"l0" -> "l6" [label=] +"l0" -> "l12" [label=] +"l0" -> "l12" [label=] +"l0" -> "l12" [label=] +"l0" -> "l12" [label=] +"l0" -> "l13" [label=[r1:=p1,]>] +"l1" -> "l7" [label=[r1:=r1,]>] +"l4" -> "l8" [label=] +"l5" -> "l0" [label=] +"l6" -> "l0" [label=] +"l7" -> "l9" [label=[r1:=r1,]>] +"l7" -> "l10" [label=[r1:=r1,]>] +"l7" -> "l11" [label=[r1:=r1,]>] +"l7" -> "l11" [label=[r1:=r1,]>] +"l7" -> "l14" [label=[r1:=r1,]>] +"l7" -> "l29" [label=[r1:=r1,]>] +"l7" -> "l19" [label=[r1:=r1,]>] +"l7" -> "l29" [label=[r1:=r1,]>] +"l7" -> "l29" [label=[r1:=r1,]>] +"l7" -> "l34" [label=[r1:=p1,]>] +"l8" -> "l1" [label=[r1:=p1,]>] +"l8" -> "l4" [label=] +"l8" -> "l4" [label=] +"l8" -> "l4" [label=] +"l8" -> "l4" [label=] +"l8" -> "l4" [label=] +"l8" -> "l15" [label=] +"l8" -> "l15" [label=] +"l8" -> "l20" [label=] +"l9" -> "l16" [label=[r1:=r1,]>] +"l10" -> "l27" [label=[r1:=r1,]>] +"l11" -> "l27" [label=[r1:=r1,]>] +"l12" -> "l0" [label=] +"l13" -> "l27" [label=[r1:=r1,]>] +"l14" -> "l7" [label=[r1:=r1,]>] +"l15" -> "l8" [label=] +"l16" -> "l10" [label=[r1:=r1,]>] +"l16" -> "l13" [label=[r1:=r1,]>] +"l16" -> "l13" [label=[r1:=r1,]>] +"l16" -> "l13" [label=[r1:=r1,]>] +"l16" -> "l13" [label=[r1:=r1,]>] +"l16" -> "l13" [label=[r1:=r1,]>] +"l16" -> "l18" [label=[r1:=r1,]>] +"l16" -> "l13" [label=[r1:=r1,]>] +"l16" -> "l17" [label=] +"l16" -> "l19" [label=[r1:=r1,]>] +"l17" -> "l21" [label=] +"l18" -> "l16" [label=[r1:=r1,]>] +"l19" -> "l7" [label=[r1:=r1,]>] +"l20" -> "l8" [label=] +"l21" -> "l22" [label=] +"l21" -> "l23" [label=] +"l21" -> "l24" [label=] +"l21" -> "l24" [label=] +"l21" -> "l25" [label=] +"l21" -> "l28" [label=] +"l21" -> "l28" [label=] +"l21" -> "l33" [label=] +"l21" -> "l34" [label=[r1:=p1,]>] +"l22" -> "l26" [label=] +"l23" -> "l8" [label=] +"l24" -> "l8" [label=] +"l25" -> "l21" [label=] +"l26" -> "l4" [label=] +"l26" -> "l4" [label=] +"l26" -> "l4" [label=] +"l26" -> "l4" [label=] +"l26" -> "l4" [label=] +"l26" -> "l17" [label=] +"l26" -> "l23" [label=] +"l26" -> "l30" [label=] +"l26" -> "l33" [label=] +"l27" -> "l13" [label=[r1:=r1,]>] +"l27" -> "l13" [label=[r1:=r1,]>] +"l27" -> "l13" [label=[r1:=r1,]>] +"l27" -> "l13" [label=[r1:=r1,]>] +"l27" -> "l13" [label=[r1:=r1,]>] +"l27" -> "l31" [label=[r1:=r1,]>] +"l27" -> "l13" [label=[r1:=r1,]>] +"l27" -> "l31" [label=[r1:=r1,]>] +"l27" -> "l32" [label=[r1:=r1,]>] +"l27" -> "l34" [label=[r1:=p1,]>] +"l28" -> "l21" [label=] +"l29" -> "l7" [label=[r1:=r1,]>] +"l30" -> "l26" [label=] +"l31" -> "l27" [label=[r1:=r1,]>] +"l32" -> "l27" [label=[r1:=r1,]>] +"l33" -> "l21" [label=] +"l34" -> "l35" [label=[r1:=r1,]>] +"l35" -> "l9" [label=[r1:=r1,]>] +"l35" -> "l10" [label=[r1:=r1,]>] +"l35" -> "l11" [label=[r1:=r1,]>] +"l35" -> "l11" [label=[r1:=r1,]>] +"l35" -> "l11" [label=[r1:=r1,]>] +"l35" -> "l14" [label=[r1:=r1,]>] +"l35" -> "l19" [label=[r1:=r1,]>] +"l35" -> "l28" [label=] +"l35" -> "l28" [label=] +"l35" -> "l34" [label=[r1:=p1,]>] +} diff --git a/experiments/saved_results/servers/ra/rise_m4_app/learnedModel.pdf b/experiments/saved_results/servers/ra/rise_m4_app/learnedModel.pdf new file mode 100644 index 00000000..0d9d9625 Binary files /dev/null and b/experiments/saved_results/servers/ra/rise_m4_app/learnedModel.pdf differ diff --git a/experiments/saved_results/servers/ra/rise_m4_app/learnedModelShortNames.pdf b/experiments/saved_results/servers/ra/rise_m4_app/learnedModelShortNames.pdf new file mode 100644 index 00000000..1ed8a299 Binary files /dev/null and b/experiments/saved_results/servers/ra/rise_m4_app/learnedModelShortNames.pdf differ diff --git a/experiments/saved_results/servers/ra/rise_m4_app/learnedModelbtf.dot b/experiments/saved_results/servers/ra/rise_m4_app/learnedModelbtf.dot new file mode 100644 index 00000000..65f7a799 --- /dev/null +++ b/experiments/saved_results/servers/ra/rise_m4_app/learnedModelbtf.dot @@ -0,0 +1,142 @@ +digraph RA { +"" [shape=none,label=<>] +"l0" [shape=doublecircle] +"l1" [shape=doublecircle] +"l2" [shape=circle] +"l3" [shape=circle] +"l4" [shape=doublecircle] +"l5" [shape=doublecircle] +"l6" [shape=doublecircle] +"l7" [shape=doublecircle] +"l8" [shape=doublecircle] +"l9" [shape=doublecircle] +"l10" [shape=doublecircle] +"l11" [shape=doublecircle] +"l12" [shape=doublecircle] +"l13" [shape=doublecircle] +"l14" [shape=doublecircle] +"l15" [shape=doublecircle] +"l16" [shape=doublecircle] +"l17" [shape=doublecircle] +"l18" [shape=doublecircle] +"l19" [shape=doublecircle] +"l20" [shape=doublecircle] +"l21" [shape=doublecircle] +"l22" [shape=doublecircle] +"l23" [shape=doublecircle] +"l24" [shape=doublecircle] +"l25" [shape=doublecircle] +"l26" [shape=doublecircle] +"l27" [shape=doublecircle] +"l28" [shape=doublecircle] +"l29" [shape=doublecircle] +"l30" [shape=doublecircle] +"l31" [shape=doublecircle] +"l32" [shape=doublecircle] +"l33" [shape=doublecircle] +"l34" [shape=doublecircle] +"l35" [shape=doublecircle] +"" -> "l0" +"l0" -> "l1" [label=[r1:=p1,]>] +"l0" -> "l4" [label=] +"l0" -> "l5" [label=] +"l0" -> "l6" [label=] +"l0" -> "l12" [label=] +"l0" -> "l12" [label=] +"l0" -> "l12" [label=] +"l0" -> "l12" [label=] +"l0" -> "l13" [label=[r1:=p1,]>] +"l1" -> "l7" [label=[r1:=r1,]>] +"l4" -> "l8" [label=] +"l5" -> "l0" [label=] +"l6" -> "l0" [label=] +"l7" -> "l9" [label=[r1:=r1,]>] +"l7" -> "l10" [label=[r1:=r1,]>] +"l7" -> "l11" [label=[r1:=r1,]>] +"l7" -> "l11" [label=[r1:=r1,]>] +"l7" -> "l14" [label=[r1:=r1,]>] +"l7" -> "l29" [label=[r1:=r1,]>] +"l7" -> "l19" [label=[r1:=r1,]>] +"l7" -> "l29" [label=[r1:=r1,]>] +"l7" -> "l29" [label=[r1:=r1,]>] +"l7" -> "l34" [label=[r1:=p1,]>] +"l8" -> "l1" [label=[r1:=p1,]>] +"l8" -> "l4" [label=] +"l8" -> "l4" [label=] +"l8" -> "l4" [label=] +"l8" -> "l4" [label=] +"l8" -> "l4" [label=] +"l8" -> "l15" [label=] +"l8" -> "l15" [label=] +"l8" -> "l20" [label=] +"l9" -> "l16" [label=[r1:=r1,]>] +"l10" -> "l27" [label=[r1:=r1,]>] +"l11" -> "l27" [label=[r1:=r1,]>] +"l12" -> "l0" [label=] +"l13" -> "l27" [label=[r1:=r1,]>] +"l14" -> "l7" [label=[r1:=r1,]>] +"l15" -> "l8" [label=] +"l16" -> "l10" [label=[r1:=r1,]>] +"l16" -> "l13" [label=[r1:=r1,]>] +"l16" -> "l13" [label=[r1:=r1,]>] +"l16" -> "l13" [label=[r1:=r1,]>] +"l16" -> "l13" [label=[r1:=r1,]>] +"l16" -> "l13" [label=[r1:=r1,]>] +"l16" -> "l18" [label=[r1:=r1,]>] +"l16" -> "l13" [label=[r1:=r1,]>] +"l16" -> "l17" [label=] +"l16" -> "l19" [label=[r1:=r1,]>] +"l17" -> "l21" [label=] +"l18" -> "l16" [label=[r1:=r1,]>] +"l19" -> "l7" [label=[r1:=r1,]>] +"l20" -> "l8" [label=] +"l21" -> "l22" [label=] +"l21" -> "l23" [label=] +"l21" -> "l24" [label=] +"l21" -> "l24" [label=] +"l21" -> "l25" [label=] +"l21" -> "l28" [label=] +"l21" -> "l28" [label=] +"l21" -> "l33" [label=] +"l21" -> "l34" [label=[r1:=p1,]>] +"l22" -> "l26" [label=] +"l23" -> "l8" [label=] +"l24" -> "l8" [label=] +"l25" -> "l21" [label=] +"l26" -> "l4" [label=] +"l26" -> "l4" [label=] +"l26" -> "l4" [label=] +"l26" -> "l4" [label=] +"l26" -> "l4" [label=] +"l26" -> "l17" [label=] +"l26" -> "l23" [label=] +"l26" -> "l30" [label=] +"l26" -> "l33" [label=] +"l27" -> "l13" [label=[r1:=r1,]>] +"l27" -> "l13" [label=[r1:=r1,]>] +"l27" -> "l13" [label=[r1:=r1,]>] +"l27" -> "l13" [label=[r1:=r1,]>] +"l27" -> "l13" [label=[r1:=r1,]>] +"l27" -> "l31" [label=[r1:=r1,]>] +"l27" -> "l13" [label=[r1:=r1,]>] +"l27" -> "l31" [label=[r1:=r1,]>] +"l27" -> "l32" [label=[r1:=r1,]>] +"l27" -> "l34" [label=[r1:=p1,]>] +"l28" -> "l21" [label=] +"l29" -> "l7" [label=[r1:=r1,]>] +"l30" -> "l26" [label=] +"l31" -> "l27" [label=[r1:=r1,]>] +"l32" -> "l27" [label=[r1:=r1,]>] +"l33" -> "l21" [label=] +"l34" -> "l35" [label=[r1:=r1,]>] +"l35" -> "l9" [label=[r1:=r1,]>] +"l35" -> "l10" [label=[r1:=r1,]>] +"l35" -> "l11" [label=[r1:=r1,]>] +"l35" -> "l11" [label=[r1:=r1,]>] +"l35" -> "l11" [label=[r1:=r1,]>] +"l35" -> "l14" [label=[r1:=r1,]>] +"l35" -> "l19" [label=[r1:=r1,]>] +"l35" -> "l28" [label=] +"l35" -> "l28" [label=] +"l35" -> "l34" [label=[r1:=p1,]>] +} diff --git a/experiments/saved_results/servers/ra/rise_m4_app/mapper_connection.config b/experiments/saved_results/servers/ra/rise_m4_app/mapper_connection.config new file mode 100644 index 00000000..97827755 --- /dev/null +++ b/experiments/saved_results/servers/ra/rise_m4_app/mapper_connection.config @@ -0,0 +1,153 @@ +# Californium3 CoAP Properties file for EdhocMapper +# +# Random factor for initial CoAP acknowledge timeout. +# Default: 1.5 +COAP.ACK_INIT_RANDOM=1.5 +# Initial CoAP acknowledge timeout. +# Default: 2[s] +# Adjust MAX_ACK_TIMEOUT to add more time +COAP.ACK_TIMEOUT=10[s] +# Scale factor for CoAP acknowledge backoff-timeout. +# Default: 2.0 +COAP.ACK_TIMEOUT_SCALE=2.0 +# Enable automatic failover on "entity too large" response. +# Default: true +COAP.BLOCKWISE_ENTITY_TOO_LARGE_AUTO_FAILOVER=true +# Reuse token for blockwise requests. Ease traceability but may introduce +# vulnerability. +# Default: false +COAP.BLOCKWISE_REUSE_TOKEN=false +# Interval to validate lifetime of blockwise status. +# Default: 5[s] +COAP.BLOCKWISE_STATUS_INTERVAL=5[s] +# Lifetime of blockwise status. +# Default: 5[min] +COAP.BLOCKWISE_STATUS_LIFETIME=5[min] +# Use block2 option strictly, even if block2 is not required. +# Default: false +COAP.BLOCKWISE_STRICT_BLOCK2_OPTION=false +# CoAP port. +# Default: 5683 +COAP.COAP_PORT=5683 +# CoAP DTLS port. +# Default: 5684 +COAP.COAP_SECURE_PORT=5684 +# Congestion-Control algorithm (still experimental). +# [NULL, COCOA, COCOA_STRONG, BASIC_RTO, LINUX_RTO, PEAKHOPPER_RTO]. +# Default: NULL +COAP.CONGESTION_CONTROL_ALGORITHM=NULL +# Crop rotation period. +# Default: 247[s] +COAP.CROP_ROTATION_PERIOD=247[s] +# Deduplicator algorithm. +# [MARK_AND_SWEEP, PEERS_MARK_AND_SWEEP, CROP_ROTATION, NO_DEDUPLICATOR]. +# Default: MARK_AND_SWEEP +COAP.DEDUPLICATOR=MARK_AND_SWEEP +# Automatic replace entries in deduplicator. +# Default: true +COAP.DEDUPLICATOR_AUTO_REPLACE=true +# CoAP maximum exchange lifetime for CON requests. +# Default: 247[s] +COAP.EXCHANGE_LIFETIME=247[s] +# Timespan a multicast server may spread the response. +# Default: 5[s] +COAP.LEISURE=5[s] +# Mark and sweep interval. +# Default: 10[s] +COAP.MARK_AND_SWEEP_INTERVAL=10[s] +# Maximum CoAP acknowledge timeout. +# Default: 1[min] +# Should be: ACK_TIMEOUT <= MAX_ACK_TIMEOUT +COAP.MAX_ACK_TIMEOUT=10[s] +# Maximum number of active peers. +# Default: 150000 +COAP.MAX_ACTIVE_PEERS=150000 +# Maximum transmission latency for messages. +# Default: 100[s] +COAP.MAX_LATENCY=100[s] +# Maximum payload size. +# Default: 1024 +COAP.MAX_MESSAGE_SIZE=1024 +# Maximum inactive period of peer. +# Default: 10[min] +COAP.MAX_PEER_INACTIVITY_PERIOD=10[min] +# Maximum size of resource body. 0 to disable transparent blockwise +# mode. +# Default: 8192 +COAP.MAX_RESOURCE_BODY_SIZE=8192 +# Maximum number of CoAP retransmissions. +# Default: 4 +# Should be >= 0 (0: no retransmissions) +COAP.MAX_RETRANSMIT=0 +# Maximum number of observes on server-side. 0 to disable this limitation. +# Default: 50000 +COAP.MAX_SERVER_OBSERVES=50000 +# Maximum server response delay. +# Default: 250[s] +COAP.MAX_SERVER_RESPONSE_DELAY=250[s] +# Maximum time to wait for ACK or RST after the first transmission of +# a CON message. +# Default: 93[s] +COAP.MAX_TRANSMIT_WAIT=93[s] +# MID tracker. +# [NULL, GROUPED, MAPBASED]. +# Default: GROUPED +COAP.MID_TACKER=GROUPED +# Number of MID tracker groups. +# Default: 16 +COAP.MID_TRACKER_GROUPS=16 +# Base MID for multicast requests. +# Default: 65000 +COAP.MULTICAST_BASE_MID=65000 +# CoAP maximum lifetime for NON requests. +# Default: 145[s] +COAP.NON_LIFETIME=145[s] +# Interval time to check notifications receiver using a CON message. +# Default: 2[min] +COAP.NOTIFICATION_CHECK_INTERVAL=2[min] +# Interval counter to check notifications receiver using a CON message. +# Default: 100 +COAP.NOTIFICATION_CHECK_INTERVAL_COUNT=100 +# Additional time (backoff) to the max-age option +# for waiting for the next notification before reregister. +# Default: 2[s] +COAP.NOTIFICATION_REREGISTRATION_BACKOFF=2[s] +# Maximum concurrent transmissions. +# Default: 1 +COAP.NSTART=1 +# Maximum messages kept per peer for PEERS_MARK_AND_SWEEP. +# Default: 64 +COAP.PEERS_MARK_AND_SWEEP_MESSAGES=64 +# Preferred blocksize for blockwise transfer. +# Default: 512 +COAP.PREFERRED_BLOCK_SIZE=512 +# Probing rate to peers, which didn't response before. Currently not +# used. +# Default: 1.0 +COAP.PROBING_RATE=1.0 +# Protocol stage thread count. +# Default: 1 +COAP.PROTOCOL_STAGE_THREAD_COUNT=1 +# Response matching mode. +# [STRICT, RELAXED, PRINCIPAL, PRINCIPAL_IDENTITY]. +# Default: STRICT +COAP.RESPONSE_MATCHING=STRICT +# Process empty messages strictly according RFC7252, 4.1 as format error. +# Disable to ignore additional data as tokens or options. +# Default: true +COAP.STRICT_EMPTY_MESSAGE_FORMAT=false +# Number of block per TCP-blockwise bulk transfer. +# Default: 1 +COAP.TCP_NUMBER_OF_BULK_BLOCKS=1 +# Limit of token size. +# Default: 8 +COAP.TOKEN_SIZE_LIMIT=8 +# Use message off-loading, when data is not longer required. +# Default: false +COAP.USE_MESSAGE_OFFLOADING=false +# Use initially a random value for MID. +# Default: true +COAP.USE_RANDOM_MID_START=true +# Health status interval. 0 to disable the health status. +# Default: 0[ms] +SYS.HEALTH_STATUS_INTERVAL=0[ms] diff --git a/experiments/saved_results/servers/ra/rise_m4_app/statistics.txt b/experiments/saved_results/servers/ra/rise_m4_app/statistics.txt new file mode 100644 index 00000000..5c4f4a97 --- /dev/null +++ b/experiments/saved_results/servers/ra/rise_m4_app/statistics.txt @@ -0,0 +1,129 @@ +=== RUN DESCRIPTION === +Alphabet: [?EDHOC_MESSAGE_1_INPUT[C_I], !EDHOC_MESSAGE_1_OUTPUT[C_I], !EDHOC_MESSAGE_2_OUTPUT[], ?EDHOC_MESSAGE_3_INPUT[], !EDHOC_MESSAGE_3_OUTPUT[], !EDHOC_MESSAGE_4_OUTPUT[], !UNSUCCESSFUL_MESSAGE[], !COAP_EMPTY_MESSAGE_OUTPUT[], !EDHOC_MESSAGE_3_OSCORE_APP_OUTPUT[C_I], ?EDHOC_ERROR_MESSAGE_INPUT[], !COAP_APP_MESSAGE_OUTPUT[], !COAP_MESSAGE_OUTPUT[], !COAP_ERROR_MESSAGE_OUTPUT[], ?COAP_APP_MESSAGE_INPUT[], ?COAP_EMPTY_MESSAGE_INPUT[], !OSCORE_APP_MESSAGE_OUTPUT[], !SOCKET_CLOSED[], !EDHOC_ERROR_MESSAGE_OUTPUT[], ?EDHOC_MESSAGE_2_INPUT[], !DISABLED[], ?EDHOC_MESSAGE_4_INPUT[], !UNSUPPORTED_MESSAGE[], !TIMEOUT[], !UNKNOWN[], ?EDHOC_MESSAGE_3_OSCORE_APP_INPUT[C_I], ?OSCORE_APP_MESSAGE_INPUT[]] + +StateFuzzerConfig Parameters +Help: false +Debug: false +Quiet: false +Output Directory: experiments/results/servers/ra/rise_m4_app +Fuzzing Client: false + +LearnerConfigStandard Parameters +Alphabet: ./src/main/resources/alphabet_placeholder.xml +Learning Algorithm: RASTAR +Equivalence Algorithms: [IO_RANDOM_WALK] +Max Depth: 1 +Min Length: 5 +Max Length: 15 +Max Equivalence Queries: 1000 +Runs Per Membership Query: 3 +Random Length: 5 +Membership Query Retries: 3 +Log Queries: true +Prob Reset: 0.0 +Test File: null +Seed: 7 +Cache Tests: false +Ce Sanitization: true +Skip Non Det Tests: false +Ce Reruns: 3 +Probabilistic Sanitization: true +Time Limit: PT5H30M +Test Limit: null +Round Limit: null +IOMode: true +Probability of Choosing a New DataValue: 0.5 +Max Runs: 10000 +Max Depth for Register Automata: 10 +Reset Runs: false +Seed transitions: false +Draw symbols uniformly: false + +SulConfig Parameters +Fuzzing Role: client +Fuzzing Client: true +Response Wait: 100 +Input Response Timeout: null +Command: null +Terminate Command: null +Process Dir: null +Redirect Output Streams: false +Process Trigger: NEW_TEST +Start Wait: 0 + +SulServerConfigStandard Parameters +Connect to: localhost:5683 + +MapperConfig Parameters +Mapper Connection Config: null +Repeating Outputs: null +Socket Closed as Timeout: true +Disabled as Timeout: false +Merge Repeating: true + +EdhocMapperConfig Parameters +Protocol Version: v23 +Combined Message Version: v07 +Edhoc Role: Initiator +Edhoc Coap Resource: .well-known/edhoc +App Coap Resource: helloWorld +App Message Code To Coap Server: GET +App Message Payload To Coap Server: +App Message Code To Coap Client: CHANGED +App Message Payload To Coap Client: Server Application Data +Coap Error As Edhoc Error: false +use Content Format: true +use Session Reset: false +use CX Correlation: true +Own Connection Id: 36 +Generate Own Connection Id: true +Force Oscore Sender Id: null +Force Oscore Recipient Id: null + +AuthenticationConfig Parameters +Map Cred Type: X509 +Map Id Cred Type: X5T +Sul Cred Type: X509 +Sul Id Cred Type: X5T +Trust Model: STRICT + +TestVectorAuthenticationConfig Parameters +Test Vector File: experiments/authentication/test_vectors/test_vectors_rise.json +Test Vector Key: test_vector_ed25519 +Test Vector Peer Key Curve: Ed25519 + +SulAdapterConfig Parameters +Adapter Port: null +Adapter Address: localhost + +=== STATISTICS === +Learning finished: false +Reason: time limit reached +Size of the input alphabet: 26 +Number of states: 36 +Number of hypotheses: 11 +Number of inputs: 79401 +Number of tests: 12639 +Number of learning inputs: 10591 +Number of learning tests: 2821 +Number of inputs up to last hypothesis: 11027 +Number of tests up to last hypothesis: 2869 +Time (ms) to learn model: 19800566 +Counterexamples: +CE 1:Query[ε|EDHOC_MESSAGE_4_INPUT[] COAP_ERROR_MESSAGE_OUTPUT[] COAP_EMPTY_MESSAGE_INPUT[] COAP_ERROR_MESSAGE_OUTPUT[] EDHOC_MESSAGE_3_OSCORE_APP_INPUT[0[C_I]] COAP_ERROR_MESSAGE_OUTPUT[] EDHOC_MESSAGE_3_OSCORE_APP_INPUT[1[C_I]] TIMEOUT[] / true] +CE 2:Query[ε|EDHOC_MESSAGE_4_INPUT[] COAP_ERROR_MESSAGE_OUTPUT[] EDHOC_MESSAGE_2_INPUT[] COAP_ERROR_MESSAGE_OUTPUT[] EDHOC_MESSAGE_3_OSCORE_APP_INPUT[0[C_I]] COAP_ERROR_MESSAGE_OUTPUT[] / true] +CE 3:Query[ε|EDHOC_MESSAGE_3_INPUT[] COAP_ERROR_MESSAGE_OUTPUT[] EDHOC_MESSAGE_2_INPUT[] COAP_ERROR_MESSAGE_OUTPUT[] EDHOC_MESSAGE_4_INPUT[] COAP_ERROR_MESSAGE_OUTPUT[] EDHOC_MESSAGE_2_INPUT[] COAP_ERROR_MESSAGE_OUTPUT[] EDHOC_MESSAGE_1_INPUT[0[C_I]] EDHOC_MESSAGE_2_OUTPUT[] COAP_EMPTY_MESSAGE_INPUT[] COAP_ERROR_MESSAGE_OUTPUT[] EDHOC_MESSAGE_3_OSCORE_APP_INPUT[0[C_I]] COAP_ERROR_MESSAGE_OUTPUT[] EDHOC_MESSAGE_3_OSCORE_APP_INPUT[0[C_I]] COAP_ERROR_MESSAGE_OUTPUT[] EDHOC_MESSAGE_3_OSCORE_APP_INPUT[1[C_I]] TIMEOUT[] EDHOC_MESSAGE_3_INPUT[] EDHOC_MESSAGE_4_OUTPUT[] / true] +CE 4:Query[ε|EDHOC_MESSAGE_4_INPUT[] COAP_ERROR_MESSAGE_OUTPUT[] OSCORE_APP_MESSAGE_INPUT[] COAP_ERROR_MESSAGE_OUTPUT[] OSCORE_APP_MESSAGE_INPUT[] COAP_ERROR_MESSAGE_OUTPUT[] COAP_APP_MESSAGE_INPUT[] COAP_APP_MESSAGE_OUTPUT[] EDHOC_MESSAGE_3_OSCORE_APP_INPUT[0[C_I]] COAP_ERROR_MESSAGE_OUTPUT[] EDHOC_MESSAGE_3_OSCORE_APP_INPUT[0[C_I]] COAP_ERROR_MESSAGE_OUTPUT[] COAP_EMPTY_MESSAGE_INPUT[] COAP_ERROR_MESSAGE_OUTPUT[] EDHOC_MESSAGE_2_INPUT[] COAP_ERROR_MESSAGE_OUTPUT[] / true] +CE 5:Query[ε|EDHOC_MESSAGE_3_INPUT[] COAP_ERROR_MESSAGE_OUTPUT[] EDHOC_ERROR_MESSAGE_INPUT[] TIMEOUT[] EDHOC_MESSAGE_3_OSCORE_APP_INPUT[0[C_I]] TIMEOUT[] OSCORE_APP_MESSAGE_INPUT[] COAP_ERROR_MESSAGE_OUTPUT[] COAP_APP_MESSAGE_INPUT[] COAP_APP_MESSAGE_OUTPUT[] EDHOC_MESSAGE_3_OSCORE_APP_INPUT[0[C_I]] TIMEOUT[] / true] +CE 6:Query[ε|EDHOC_ERROR_MESSAGE_INPUT[] TIMEOUT[] OSCORE_APP_MESSAGE_INPUT[] COAP_ERROR_MESSAGE_OUTPUT[] EDHOC_ERROR_MESSAGE_INPUT[] TIMEOUT[] EDHOC_MESSAGE_2_INPUT[] COAP_ERROR_MESSAGE_OUTPUT[] EDHOC_MESSAGE_3_OSCORE_APP_INPUT[0[C_I]] COAP_ERROR_MESSAGE_OUTPUT[] EDHOC_MESSAGE_1_INPUT[1[C_I]] EDHOC_MESSAGE_2_OUTPUT[] EDHOC_MESSAGE_4_INPUT[] EDHOC_ERROR_MESSAGE_OUTPUT[] / true] +CE 7:Query[ε|EDHOC_MESSAGE_3_OSCORE_APP_INPUT[0[C_I]] COAP_ERROR_MESSAGE_OUTPUT[] EDHOC_ERROR_MESSAGE_INPUT[] TIMEOUT[] / true] +CE 8:Query[ε|EDHOC_ERROR_MESSAGE_INPUT[] TIMEOUT[] EDHOC_MESSAGE_1_INPUT[0[C_I]] EDHOC_MESSAGE_2_OUTPUT[] COAP_APP_MESSAGE_INPUT[] COAP_APP_MESSAGE_OUTPUT[] OSCORE_APP_MESSAGE_INPUT[] COAP_ERROR_MESSAGE_OUTPUT[] EDHOC_MESSAGE_3_OSCORE_APP_INPUT[0[C_I]] COAP_ERROR_MESSAGE_OUTPUT[] EDHOC_MESSAGE_3_OSCORE_APP_INPUT[0[C_I]] COAP_ERROR_MESSAGE_OUTPUT[] EDHOC_MESSAGE_4_INPUT[] EDHOC_ERROR_MESSAGE_OUTPUT[] / true] +CE 9:Query[ε|EDHOC_ERROR_MESSAGE_INPUT[] TIMEOUT[] EDHOC_MESSAGE_3_OSCORE_APP_INPUT[0[C_I]] COAP_ERROR_MESSAGE_OUTPUT[] EDHOC_ERROR_MESSAGE_INPUT[] TIMEOUT[] COAP_APP_MESSAGE_INPUT[] COAP_APP_MESSAGE_OUTPUT[] EDHOC_ERROR_MESSAGE_INPUT[] TIMEOUT[] / true] +CE 10:Query[ε|EDHOC_MESSAGE_1_INPUT[0[C_I]] EDHOC_MESSAGE_2_OUTPUT[] EDHOC_ERROR_MESSAGE_INPUT[] COAP_EMPTY_MESSAGE_OUTPUT[] EDHOC_MESSAGE_1_INPUT[0[C_I]] EDHOC_MESSAGE_2_OUTPUT[] EDHOC_MESSAGE_3_OSCORE_APP_INPUT[0[C_I]] EDHOC_ERROR_MESSAGE_OUTPUT[] / true] +CE 11:Query[ε|COAP_EMPTY_MESSAGE_INPUT[] COAP_ERROR_MESSAGE_OUTPUT[] COAP_APP_MESSAGE_INPUT[] COAP_APP_MESSAGE_OUTPUT[] EDHOC_MESSAGE_3_OSCORE_APP_INPUT[0[C_I]] COAP_ERROR_MESSAGE_OUTPUT[] EDHOC_MESSAGE_1_INPUT[1[C_I]] EDHOC_MESSAGE_2_OUTPUT[] EDHOC_MESSAGE_3_OSCORE_APP_INPUT[1[C_I]] COAP_ERROR_MESSAGE_OUTPUT[] / true] +Number of inputs when hypothesis was generated: [63, 662, 1021, 1486, 2743, 2973, 4723, 7350, 8407, 9294, 11027] +Number of tests when hypothesis was generated: [63, 323, 459, 593, 924, 1002, 1416, 1991, 2265, 2462, 2869] +Time (ms) when hypothesis was generated: [58485, 350341, 510970, 728018, 1124524, 1217187, 1789729, 2642203, 2907739, 3211994, 3779995] +Number of inputs when counterexample was found: [67, 685, 1031, 1504, 2749, 2980, 4725, 7357, 8412, 9648, 11152] +Number of tests when counterexample was found: [64, 326, 460, 595, 925, 1003, 1417, 1992, 2266, 2498, 2882] +Time (ms) when counterexample was found: [59939, 356010, 512570, 730339, 1127170, 1219338, 1791168, 2643748, 2910366, 3287408, 3810571] diff --git a/experiments/saved_results/servers/ra/sifis-home_phase_1/command.args b/experiments/saved_results/servers/ra/sifis-home_phase_1/command.args new file mode 100644 index 00000000..5734b41e --- /dev/null +++ b/experiments/saved_results/servers/ra/sifis-home_phase_1/command.args @@ -0,0 +1,84 @@ +state-fuzzer-server + + +##### StateFuzzerConfig ##### +-output +${results.learning.servers.ra}/sifis-home_phase_1 + + +##### LearnerConfig ##### +-learningAlgorithm +RaStar +-equivalenceAlgorithms +IO_RANDOM_WALK +-logQueries +-alphabet +./src/main/resources/alphabet_placeholder.xml +-maxDepthRA +4 +-probNewDataValue +0.5 +-seed +7 +-socketClosedAsTimeout + + +##### EdhocMapperConfig ##### +-protocolVersion +v22 + +-combinedMessageVersion +v07 + +## Mapper Auth ## + +-mapCredType +X509 + +-mapIdCredType +X5T + +## Sul Auth ## + +-sulCredType +X509 + +-sulIdCredType +X5T + +# TestVector +-testVectorJson +${authentication.test_vectors}/test_vectors_sifis_home.json + +-testVectorJsonKey +test_vector_ed25519_phases_1_3 + +-testVectorPeerKeyCurve +Ed25519 + +-edhocRole +Initiator + +-appCoapResource +light + +-appMessageCodeToCoapServer +POST + +-appMessagePayloadToCoapServer +1 + +##### SulConfig ##### +-responseWait +500 +-processDir +${models.servers}/sifis-home +-cmd +java -cp edhoc-applications.jar se.sics.edhocapps.Phase1Server +-startWait +400 + + +##### EdhocSulServerConfig ##### +-connect +localhost:5694 diff --git a/experiments/saved_results/servers/ra/sifis-home_phase_1/hyp1.dot b/experiments/saved_results/servers/ra/sifis-home_phase_1/hyp1.dot new file mode 100644 index 00000000..3541636b --- /dev/null +++ b/experiments/saved_results/servers/ra/sifis-home_phase_1/hyp1.dot @@ -0,0 +1,22 @@ +digraph RA { +"" [shape=none,label=<>] +"l0" [shape=doublecircle] +"l1" [shape=doublecircle] +"l2" [shape=circle] +"l3" [shape=circle] +"l4" [shape=doublecircle] +"l5" [shape=doublecircle] +"" -> "l0" +"l0" -> "l1" [label=] +"l0" -> "l4" [label=] +"l0" -> "l4" [label=] +"l0" -> "l4" [label=] +"l0" -> "l4" [label=] +"l0" -> "l4" [label=] +"l0" -> "l4" [label=] +"l0" -> "l4" [label=] +"l0" -> "l5" [label=] +"l1" -> "l0" [label=] +"l4" -> "l0" [label=] +"l5" -> "l0" [label=] +} diff --git a/experiments/saved_results/servers/ra/sifis-home_phase_1/hyp10.dot b/experiments/saved_results/servers/ra/sifis-home_phase_1/hyp10.dot new file mode 100644 index 00000000..5679076d --- /dev/null +++ b/experiments/saved_results/servers/ra/sifis-home_phase_1/hyp10.dot @@ -0,0 +1,128 @@ +digraph RA { +"" [shape=none,label=<>] +"l0" [shape=doublecircle] +"l1" [shape=doublecircle] +"l2" [shape=circle] +"l3" [shape=circle] +"l4" [shape=doublecircle] +"l5" [shape=doublecircle] +"l6" [shape=doublecircle] +"l7" [shape=doublecircle] +"l8" [shape=doublecircle] +"l9" [shape=doublecircle] +"l10" [shape=doublecircle] +"l11" [shape=doublecircle] +"l12" [shape=doublecircle] +"l13" [shape=doublecircle] +"l14" [shape=doublecircle] +"l15" [shape=doublecircle] +"l16" [shape=doublecircle] +"l17" [shape=doublecircle] +"l18" [shape=doublecircle] +"l19" [shape=doublecircle] +"l20" [shape=doublecircle] +"l21" [shape=doublecircle] +"l22" [shape=doublecircle] +"l23" [shape=doublecircle] +"l24" [shape=doublecircle] +"l25" [shape=doublecircle] +"l26" [shape=doublecircle] +"l27" [shape=doublecircle] +"l28" [shape=doublecircle] +"" -> "l0" +"l0" -> "l1" [label=[r1:=p1,]>] +"l0" -> "l4" [label=] +"l0" -> "l5" [label=] +"l0" -> "l10" [label=] +"l0" -> "l10" [label=] +"l0" -> "l10" [label=] +"l0" -> "l10" [label=] +"l0" -> "l10" [label=] +"l0" -> "l11" [label=[r1:=p1,]>] +"l1" -> "l6" [label=[r1:=r1,]>] +"l4" -> "l7" [label=] +"l5" -> "l0" [label=] +"l6" -> "l8" [label=[r1:=r1,]>] +"l6" -> "l8" [label=[r1:=r1,]>] +"l6" -> "l9" [label=[r1:=r1,]>] +"l6" -> "l9" [label=[r1:=r1,]>] +"l6" -> "l18" [label=[r1:=r1,]>] +"l6" -> "l18" [label=[r1:=r1,]>] +"l6" -> "l18" [label=[r1:=r1,]>] +"l6" -> "l19" [label=[r1:=r1,]>] +"l6" -> "l18" [label=[r1:=r1,]>] +"l6" -> "l25" [label=[r1:=p1,]>] +"l7" -> "l1" [label=[r1:=p1,]>] +"l7" -> "l4" [label=] +"l7" -> "l4" [label=] +"l7" -> "l4" [label=] +"l7" -> "l4" [label=] +"l7" -> "l4" [label=] +"l7" -> "l4" [label=] +"l7" -> "l20" [label=] +"l7" -> "l20" [label=] +"l8" -> "l12" [label=[r1:=r1,]>] +"l9" -> "l22" [label=[r1:=r1,]>] +"l10" -> "l0" [label=] +"l11" -> "l22" [label=[r1:=r1,]>] +"l12" -> "l8" [label=[r1:=r1,]>] +"l12" -> "l11" [label=[r1:=r1,]>] +"l12" -> "l11" [label=[r1:=r1,]>] +"l12" -> "l11" [label=[r1:=r1,]>] +"l12" -> "l11" [label=[r1:=r1,]>] +"l12" -> "l11" [label=[r1:=r1,]>] +"l12" -> "l11" [label=[r1:=r1,]>] +"l12" -> "l23" [label=[r1:=r1,]>] +"l12" -> "l11" [label=[r1:=r1,]>] +"l12" -> "l13" [label=] +"l13" -> "l14" [label=] +"l14" -> "l15" [label=] +"l14" -> "l15" [label=] +"l14" -> "l16" [label=] +"l14" -> "l16" [label=] +"l14" -> "l17" [label=] +"l14" -> "l17" [label=] +"l14" -> "l17" [label=] +"l14" -> "l24" [label=] +"l14" -> "l25" [label=[r1:=p1,]>] +"l15" -> "l21" [label=] +"l16" -> "l7" [label=] +"l17" -> "l14" [label=] +"l18" -> "l6" [label=[r1:=r1,]>] +"l19" -> "l6" [label=[r1:=r1,]>] +"l20" -> "l7" [label=] +"l21" -> "l4" [label=] +"l21" -> "l4" [label=] +"l21" -> "l4" [label=] +"l21" -> "l4" [label=] +"l21" -> "l4" [label=] +"l21" -> "l4" [label=] +"l21" -> "l13" [label=] +"l21" -> "l15" [label=] +"l21" -> "l27" [label=] +"l22" -> "l1" [label=[r1:=p1,]>] +"l22" -> "l11" [label=[r1:=r1,]>] +"l22" -> "l11" [label=[r1:=r1,]>] +"l22" -> "l11" [label=[r1:=r1,]>] +"l22" -> "l11" [label=[r1:=r1,]>] +"l22" -> "l11" [label=[r1:=r1,]>] +"l22" -> "l11" [label=[r1:=r1,]>] +"l22" -> "l28" [label=[r1:=r1,]>] +"l22" -> "l11" [label=[r1:=r1,]>] +"l22" -> "l28" [label=[r1:=r1,]>] +"l23" -> "l12" [label=[r1:=r1,]>] +"l24" -> "l14" [label=] +"l25" -> "l26" [label=[r1:=r1,]>] +"l26" -> "l8" [label=[r1:=r1,]>] +"l26" -> "l8" [label=[r1:=r1,]>] +"l26" -> "l9" [label=[r1:=r1,]>] +"l26" -> "l9" [label=[r1:=r1,]>] +"l26" -> "l9" [label=[r1:=r1,]>] +"l26" -> "l19" [label=[r1:=r1,]>] +"l26" -> "l17" [label=] +"l26" -> "l17" [label=] +"l26" -> "l17" [label=] +"l26" -> "l25" [label=[r1:=p1,]>] +"l27" -> "l21" [label=] +"l28" -> "l22" [label=[r1:=r1,]>] +} diff --git a/experiments/saved_results/servers/ra/sifis-home_phase_1/hyp11.dot b/experiments/saved_results/servers/ra/sifis-home_phase_1/hyp11.dot new file mode 100644 index 00000000..0a4e73a9 --- /dev/null +++ b/experiments/saved_results/servers/ra/sifis-home_phase_1/hyp11.dot @@ -0,0 +1,132 @@ +digraph RA { +"" [shape=none,label=<>] +"l0" [shape=doublecircle] +"l1" [shape=doublecircle] +"l2" [shape=circle] +"l3" [shape=circle] +"l4" [shape=doublecircle] +"l5" [shape=doublecircle] +"l6" [shape=doublecircle] +"l7" [shape=doublecircle] +"l8" [shape=doublecircle] +"l9" [shape=doublecircle] +"l10" [shape=doublecircle] +"l11" [shape=doublecircle] +"l12" [shape=doublecircle] +"l13" [shape=doublecircle] +"l14" [shape=doublecircle] +"l15" [shape=doublecircle] +"l16" [shape=doublecircle] +"l17" [shape=doublecircle] +"l18" [shape=doublecircle] +"l19" [shape=doublecircle] +"l20" [shape=doublecircle] +"l21" [shape=doublecircle] +"l22" [shape=doublecircle] +"l23" [shape=doublecircle] +"l24" [shape=doublecircle] +"l25" [shape=doublecircle] +"l26" [shape=doublecircle] +"l27" [shape=doublecircle] +"l28" [shape=doublecircle] +"l29" [shape=doublecircle] +"l30" [shape=doublecircle] +"" -> "l0" +"l0" -> "l1" [label=[r1:=p1,]>] +"l0" -> "l4" [label=] +"l0" -> "l5" [label=] +"l0" -> "l10" [label=] +"l0" -> "l10" [label=] +"l0" -> "l10" [label=] +"l0" -> "l10" [label=] +"l0" -> "l10" [label=] +"l0" -> "l11" [label=[r1:=p1,]>] +"l1" -> "l6" [label=[r1:=r1,]>] +"l4" -> "l7" [label=] +"l5" -> "l0" [label=] +"l6" -> "l8" [label=[r1:=r1,]>] +"l6" -> "l9" [label=[r1:=r1,]>] +"l6" -> "l9" [label=[r1:=r1,]>] +"l6" -> "l18" [label=[r1:=r1,]>] +"l6" -> "l18" [label=[r1:=r1,]>] +"l6" -> "l18" [label=[r1:=r1,]>] +"l6" -> "l19" [label=[r1:=r1,]>] +"l6" -> "l18" [label=[r1:=r1,]>] +"l6" -> "l25" [label=[r1:=p1,]>] +"l6" -> "l29" [label=[r1:=r1,]>] +"l7" -> "l1" [label=[r1:=p1,]>] +"l7" -> "l4" [label=] +"l7" -> "l4" [label=] +"l7" -> "l4" [label=] +"l7" -> "l4" [label=] +"l7" -> "l4" [label=] +"l7" -> "l4" [label=] +"l7" -> "l20" [label=] +"l7" -> "l20" [label=] +"l8" -> "l12" [label=[r1:=r1,]>] +"l9" -> "l22" [label=[r1:=r1,]>] +"l10" -> "l0" [label=] +"l11" -> "l22" [label=[r1:=r1,]>] +"l12" -> "l11" [label=[r1:=r1,]>] +"l12" -> "l11" [label=[r1:=r1,]>] +"l12" -> "l11" [label=[r1:=r1,]>] +"l12" -> "l11" [label=[r1:=r1,]>] +"l12" -> "l11" [label=[r1:=r1,]>] +"l12" -> "l11" [label=[r1:=r1,]>] +"l12" -> "l23" [label=[r1:=r1,]>] +"l12" -> "l11" [label=[r1:=r1,]>] +"l12" -> "l13" [label=] +"l12" -> "l29" [label=[r1:=r1,]>] +"l13" -> "l14" [label=] +"l14" -> "l15" [label=] +"l14" -> "l16" [label=] +"l14" -> "l16" [label=] +"l14" -> "l17" [label=] +"l14" -> "l17" [label=] +"l14" -> "l17" [label=] +"l14" -> "l24" [label=] +"l14" -> "l25" [label=[r1:=p1,]>] +"l14" -> "l30" [label=] +"l15" -> "l21" [label=] +"l16" -> "l7" [label=] +"l17" -> "l14" [label=] +"l18" -> "l6" [label=[r1:=r1,]>] +"l19" -> "l6" [label=[r1:=r1,]>] +"l20" -> "l7" [label=] +"l21" -> "l4" [label=] +"l21" -> "l4" [label=] +"l21" -> "l4" [label=] +"l21" -> "l4" [label=] +"l21" -> "l4" [label=] +"l21" -> "l4" [label=] +"l21" -> "l13" [label=] +"l21" -> "l27" [label=] +"l21" -> "l30" [label=] +"l22" -> "l1" [label=[r1:=p1,]>] +"l22" -> "l11" [label=[r1:=r1,]>] +"l22" -> "l11" [label=[r1:=r1,]>] +"l22" -> "l11" [label=[r1:=r1,]>] +"l22" -> "l11" [label=[r1:=r1,]>] +"l22" -> "l11" [label=[r1:=r1,]>] +"l22" -> "l11" [label=[r1:=r1,]>] +"l22" -> "l28" [label=[r1:=r1,]>] +"l22" -> "l11" [label=[r1:=r1,]>] +"l22" -> "l28" [label=[r1:=r1,]>] +"l23" -> "l12" [label=[r1:=r1,]>] +"l24" -> "l14" [label=] +"l25" -> "l26" [label=[r1:=r1,]>] +"l26" -> "l8" [label=[r1:=r1,]>] +"l26" -> "l9" [label=[r1:=r1,]>] +"l26" -> "l9" [label=[r1:=r1,]>] +"l26" -> "l9" [label=[r1:=r1,]>] +"l26" -> "l19" [label=[r1:=r1,]>] +"l26" -> "l17" [label=] +"l26" -> "l17" [label=] +"l26" -> "l17" [label=] +"l26" -> "l25" [label=[r1:=p1,]>] +"l26" -> "l29" [label=[r1:=r1,]>] +"l27" -> "l21" [label=] +"l28" -> "l22" [label=[r1:=r1,]>] +"l29" -> "l22" [label=[r1:=r1,]>] +"l30" -> "l7" [label=] +} diff --git a/experiments/saved_results/servers/ra/sifis-home_phase_1/hyp12.dot b/experiments/saved_results/servers/ra/sifis-home_phase_1/hyp12.dot new file mode 100644 index 00000000..0f9cb16a --- /dev/null +++ b/experiments/saved_results/servers/ra/sifis-home_phase_1/hyp12.dot @@ -0,0 +1,136 @@ +digraph RA { +"" [shape=none,label=<>] +"l0" [shape=doublecircle] +"l1" [shape=doublecircle] +"l2" [shape=circle] +"l3" [shape=circle] +"l4" [shape=doublecircle] +"l5" [shape=doublecircle] +"l6" [shape=doublecircle] +"l7" [shape=doublecircle] +"l8" [shape=doublecircle] +"l9" [shape=doublecircle] +"l10" [shape=doublecircle] +"l11" [shape=doublecircle] +"l12" [shape=doublecircle] +"l13" [shape=doublecircle] +"l14" [shape=doublecircle] +"l15" [shape=doublecircle] +"l16" [shape=doublecircle] +"l17" [shape=doublecircle] +"l18" [shape=doublecircle] +"l19" [shape=doublecircle] +"l20" [shape=doublecircle] +"l21" [shape=doublecircle] +"l22" [shape=doublecircle] +"l23" [shape=doublecircle] +"l24" [shape=doublecircle] +"l25" [shape=doublecircle] +"l26" [shape=doublecircle] +"l27" [shape=doublecircle] +"l28" [shape=doublecircle] +"l29" [shape=doublecircle] +"l30" [shape=doublecircle] +"l31" [shape=doublecircle] +"l32" [shape=doublecircle] +"" -> "l0" +"l0" -> "l1" [label=[r1:=p1,]>] +"l0" -> "l4" [label=] +"l0" -> "l5" [label=] +"l0" -> "l10" [label=] +"l0" -> "l10" [label=] +"l0" -> "l10" [label=] +"l0" -> "l10" [label=] +"l0" -> "l10" [label=] +"l0" -> "l11" [label=[r1:=p1,]>] +"l1" -> "l6" [label=[r1:=r1,]>] +"l4" -> "l7" [label=] +"l5" -> "l0" [label=] +"l6" -> "l8" [label=[r1:=r1,]>] +"l6" -> "l9" [label=[r1:=r1,]>] +"l6" -> "l9" [label=[r1:=r1,]>] +"l6" -> "l18" [label=[r1:=r1,]>] +"l6" -> "l18" [label=[r1:=r1,]>] +"l6" -> "l18" [label=[r1:=r1,]>] +"l6" -> "l19" [label=[r1:=r1,]>] +"l6" -> "l18" [label=[r1:=r1,]>] +"l6" -> "l25" [label=[r1:=p1,]>] +"l6" -> "l29" [label=[r1:=r1,]>] +"l7" -> "l1" [label=[r1:=p1,]>] +"l7" -> "l4" [label=] +"l7" -> "l4" [label=] +"l7" -> "l4" [label=] +"l7" -> "l4" [label=] +"l7" -> "l4" [label=] +"l7" -> "l4" [label=] +"l7" -> "l20" [label=] +"l7" -> "l20" [label=] +"l8" -> "l12" [label=[r1:=r1,]>] +"l9" -> "l22" [label=[r1:=r1,]>] +"l10" -> "l0" [label=] +"l11" -> "l22" [label=[r1:=r1,]>] +"l12" -> "l13" [label=] +"l12" -> "l23" [label=[r1:=r1,]>] +"l12" -> "l32" [label=[r1:=r1,]>] +"l12" -> "l29" [label=[r1:=r1,]>] +"l12" -> "l32" [label=[r1:=r1,]>] +"l12" -> "l32" [label=[r1:=r1,]>] +"l12" -> "l32" [label=[r1:=r1,]>] +"l12" -> "l32" [label=[r1:=r1,]>] +"l12" -> "l32" [label=[r1:=r1,]>] +"l12" -> "l32" [label=[r1:=r1,]>] +"l13" -> "l14" [label=] +"l14" -> "l15" [label=] +"l14" -> "l16" [label=] +"l14" -> "l16" [label=] +"l14" -> "l17" [label=] +"l14" -> "l17" [label=] +"l14" -> "l17" [label=] +"l14" -> "l24" [label=] +"l14" -> "l25" [label=[r1:=p1,]>] +"l14" -> "l30" [label=] +"l15" -> "l21" [label=] +"l16" -> "l7" [label=] +"l17" -> "l14" [label=] +"l18" -> "l6" [label=[r1:=r1,]>] +"l19" -> "l6" [label=[r1:=r1,]>] +"l20" -> "l7" [label=] +"l21" -> "l13" [label=] +"l21" -> "l27" [label=] +"l21" -> "l30" [label=] +"l21" -> "l31" [label=] +"l21" -> "l31" [label=] +"l21" -> "l31" [label=] +"l21" -> "l31" [label=] +"l21" -> "l31" [label=] +"l21" -> "l31" [label=] +"l22" -> "l1" [label=[r1:=p1,]>] +"l22" -> "l11" [label=[r1:=r1,]>] +"l22" -> "l11" [label=[r1:=r1,]>] +"l22" -> "l11" [label=[r1:=r1,]>] +"l22" -> "l11" [label=[r1:=r1,]>] +"l22" -> "l11" [label=[r1:=r1,]>] +"l22" -> "l11" [label=[r1:=r1,]>] +"l22" -> "l28" [label=[r1:=r1,]>] +"l22" -> "l11" [label=[r1:=r1,]>] +"l22" -> "l28" [label=[r1:=r1,]>] +"l23" -> "l12" [label=[r1:=r1,]>] +"l24" -> "l14" [label=] +"l25" -> "l26" [label=[r1:=r1,]>] +"l26" -> "l8" [label=[r1:=r1,]>] +"l26" -> "l9" [label=[r1:=r1,]>] +"l26" -> "l9" [label=[r1:=r1,]>] +"l26" -> "l9" [label=[r1:=r1,]>] +"l26" -> "l19" [label=[r1:=r1,]>] +"l26" -> "l17" [label=] +"l26" -> "l17" [label=] +"l26" -> "l17" [label=] +"l26" -> "l25" [label=[r1:=p1,]>] +"l26" -> "l29" [label=[r1:=r1,]>] +"l27" -> "l21" [label=] +"l28" -> "l22" [label=[r1:=r1,]>] +"l29" -> "l22" [label=[r1:=r1,]>] +"l30" -> "l7" [label=] +"l31" -> "l21" [label=] +"l32" -> "l12" [label=[r1:=r1,]>] +} diff --git a/experiments/saved_results/servers/ra/sifis-home_phase_1/hyp13.dot b/experiments/saved_results/servers/ra/sifis-home_phase_1/hyp13.dot new file mode 100644 index 00000000..1448336d --- /dev/null +++ b/experiments/saved_results/servers/ra/sifis-home_phase_1/hyp13.dot @@ -0,0 +1,138 @@ +digraph RA { +"" [shape=none,label=<>] +"l0" [shape=doublecircle] +"l1" [shape=doublecircle] +"l2" [shape=circle] +"l3" [shape=circle] +"l4" [shape=doublecircle] +"l5" [shape=doublecircle] +"l6" [shape=doublecircle] +"l7" [shape=doublecircle] +"l8" [shape=doublecircle] +"l9" [shape=doublecircle] +"l10" [shape=doublecircle] +"l11" [shape=doublecircle] +"l12" [shape=doublecircle] +"l13" [shape=doublecircle] +"l14" [shape=doublecircle] +"l15" [shape=doublecircle] +"l16" [shape=doublecircle] +"l17" [shape=doublecircle] +"l18" [shape=doublecircle] +"l19" [shape=doublecircle] +"l20" [shape=doublecircle] +"l21" [shape=doublecircle] +"l22" [shape=doublecircle] +"l23" [shape=doublecircle] +"l24" [shape=doublecircle] +"l25" [shape=doublecircle] +"l26" [shape=doublecircle] +"l27" [shape=doublecircle] +"l28" [shape=doublecircle] +"l29" [shape=doublecircle] +"l30" [shape=doublecircle] +"l31" [shape=doublecircle] +"l32" [shape=doublecircle] +"l33" [shape=doublecircle] +"" -> "l0" +"l0" -> "l1" [label=[r1:=p1,]>] +"l0" -> "l4" [label=] +"l0" -> "l5" [label=] +"l0" -> "l10" [label=] +"l0" -> "l10" [label=] +"l0" -> "l10" [label=] +"l0" -> "l10" [label=] +"l0" -> "l10" [label=] +"l0" -> "l11" [label=[r1:=p1,]>] +"l1" -> "l6" [label=[r1:=r1,]>] +"l4" -> "l7" [label=] +"l5" -> "l0" [label=] +"l6" -> "l8" [label=[r1:=r1,]>] +"l6" -> "l9" [label=[r1:=r1,]>] +"l6" -> "l9" [label=[r1:=r1,]>] +"l6" -> "l18" [label=[r1:=r1,]>] +"l6" -> "l18" [label=[r1:=r1,]>] +"l6" -> "l18" [label=[r1:=r1,]>] +"l6" -> "l19" [label=[r1:=r1,]>] +"l6" -> "l18" [label=[r1:=r1,]>] +"l6" -> "l25" [label=[r1:=p1,]>] +"l6" -> "l29" [label=[r1:=r1,]>] +"l7" -> "l1" [label=[r1:=p1,]>] +"l7" -> "l4" [label=] +"l7" -> "l4" [label=] +"l7" -> "l4" [label=] +"l7" -> "l4" [label=] +"l7" -> "l4" [label=] +"l7" -> "l4" [label=] +"l7" -> "l20" [label=] +"l7" -> "l20" [label=] +"l8" -> "l12" [label=[r1:=r1,]>] +"l9" -> "l22" [label=[r1:=r1,]>] +"l10" -> "l0" [label=] +"l11" -> "l22" [label=[r1:=r1,]>] +"l12" -> "l13" [label=] +"l12" -> "l23" [label=[r1:=r1,]>] +"l12" -> "l32" [label=[r1:=r1,]>] +"l12" -> "l29" [label=[r1:=r1,]>] +"l12" -> "l32" [label=[r1:=r1,]>] +"l12" -> "l32" [label=[r1:=r1,]>] +"l12" -> "l32" [label=[r1:=r1,]>] +"l12" -> "l32" [label=[r1:=r1,]>] +"l12" -> "l32" [label=[r1:=r1,]>] +"l12" -> "l32" [label=[r1:=r1,]>] +"l13" -> "l14" [label=] +"l14" -> "l15" [label=] +"l14" -> "l16" [label=] +"l14" -> "l16" [label=] +"l14" -> "l17" [label=] +"l14" -> "l17" [label=] +"l14" -> "l17" [label=] +"l14" -> "l24" [label=] +"l14" -> "l25" [label=[r1:=p1,]>] +"l14" -> "l30" [label=] +"l15" -> "l21" [label=] +"l16" -> "l7" [label=] +"l17" -> "l14" [label=] +"l18" -> "l6" [label=[r1:=r1,]>] +"l19" -> "l6" [label=[r1:=r1,]>] +"l20" -> "l7" [label=] +"l21" -> "l13" [label=] +"l21" -> "l27" [label=] +"l21" -> "l30" [label=] +"l21" -> "l31" [label=] +"l21" -> "l31" [label=] +"l21" -> "l31" [label=] +"l21" -> "l31" [label=] +"l21" -> "l31" [label=] +"l21" -> "l31" [label=] +"l22" -> "l1" [label=[r1:=p1,]>] +"l22" -> "l11" [label=[r1:=r1,]>] +"l22" -> "l11" [label=[r1:=r1,]>] +"l22" -> "l11" [label=[r1:=r1,]>] +"l22" -> "l11" [label=[r1:=r1,]>] +"l22" -> "l11" [label=[r1:=r1,]>] +"l22" -> "l11" [label=[r1:=r1,]>] +"l22" -> "l28" [label=[r1:=r1,]>] +"l22" -> "l11" [label=[r1:=r1,]>] +"l22" -> "l28" [label=[r1:=r1,]>] +"l23" -> "l12" [label=[r1:=r1,]>] +"l24" -> "l14" [label=] +"l25" -> "l26" [label=[r1:=r1,]>] +"l26" -> "l8" [label=[r1:=r1,]>] +"l26" -> "l9" [label=[r1:=r1,]>] +"l26" -> "l9" [label=[r1:=r1,]>] +"l26" -> "l17" [label=] +"l26" -> "l17" [label=] +"l26" -> "l17" [label=] +"l26" -> "l19" [label=[r1:=r1,]>] +"l26" -> "l33" [label=[r1:=r1,]>] +"l26" -> "l25" [label=[r1:=p1,]>] +"l26" -> "l29" [label=[r1:=r1,]>] +"l27" -> "l21" [label=] +"l28" -> "l22" [label=[r1:=r1,]>] +"l29" -> "l22" [label=[r1:=r1,]>] +"l30" -> "l7" [label=] +"l31" -> "l21" [label=] +"l32" -> "l12" [label=[r1:=r1,]>] +"l33" -> "l6" [label=[r1:=r1,]>] +} diff --git a/experiments/saved_results/servers/ra/sifis-home_phase_1/hyp14.dot b/experiments/saved_results/servers/ra/sifis-home_phase_1/hyp14.dot new file mode 100644 index 00000000..16a8cc5b --- /dev/null +++ b/experiments/saved_results/servers/ra/sifis-home_phase_1/hyp14.dot @@ -0,0 +1,151 @@ +digraph RA { +"" [shape=none,label=<>] +"l0" [shape=doublecircle] +"l1" [shape=doublecircle] +"l2" [shape=circle] +"l3" [shape=circle] +"l4" [shape=doublecircle] +"l5" [shape=doublecircle] +"l6" [shape=doublecircle] +"l7" [shape=doublecircle] +"l8" [shape=doublecircle] +"l9" [shape=doublecircle] +"l10" [shape=doublecircle] +"l11" [shape=doublecircle] +"l12" [shape=doublecircle] +"l13" [shape=doublecircle] +"l14" [shape=doublecircle] +"l15" [shape=doublecircle] +"l16" [shape=doublecircle] +"l17" [shape=doublecircle] +"l18" [shape=doublecircle] +"l19" [shape=doublecircle] +"l20" [shape=doublecircle] +"l21" [shape=doublecircle] +"l22" [shape=doublecircle] +"l23" [shape=doublecircle] +"l24" [shape=doublecircle] +"l25" [shape=doublecircle] +"l26" [shape=doublecircle] +"l27" [shape=doublecircle] +"l28" [shape=doublecircle] +"l29" [shape=doublecircle] +"l30" [shape=doublecircle] +"l31" [shape=doublecircle] +"l32" [shape=doublecircle] +"l33" [shape=doublecircle] +"l34" [shape=doublecircle] +"l35" [shape=doublecircle] +"" -> "l0" +"l0" -> "l1" [label=[r1:=p1,]>] +"l0" -> "l4" [label=] +"l0" -> "l5" [label=] +"l0" -> "l10" [label=] +"l0" -> "l10" [label=] +"l0" -> "l10" [label=] +"l0" -> "l10" [label=] +"l0" -> "l10" [label=] +"l0" -> "l11" [label=[r1:=p1,]>] +"l1" -> "l6" [label=[r1:=r1,]>] +"l4" -> "l7" [label=] +"l5" -> "l0" [label=] +"l6" -> "l8" [label=[r1:=r1,]>] +"l6" -> "l9" [label=[r1:=r1,]>] +"l6" -> "l9" [label=[r1:=r1,]>] +"l6" -> "l18" [label=[r1:=r1,]>] +"l6" -> "l18" [label=[r1:=r1,]>] +"l6" -> "l18" [label=[r1:=r1,]>] +"l6" -> "l19" [label=[r1:=r1,]>] +"l6" -> "l18" [label=[r1:=r1,]>] +"l6" -> "l25" [label=[r1:=p1,]>] +"l6" -> "l29" [label=[r1:=r1,]>] +"l7" -> "l1" [label=[r1:=p1,]>] +"l7" -> "l4" [label=] +"l7" -> "l4" [label=] +"l7" -> "l4" [label=] +"l7" -> "l4" [label=] +"l7" -> "l4" [label=] +"l7" -> "l4" [label=] +"l7" -> "l20" [label=] +"l7" -> "l20" [label=] +"l8" -> "l12" [label=[r1:=r1,]>] +"l9" -> "l22" [label=[r1:=r1,]>] +"l10" -> "l0" [label=] +"l11" -> "l22" [label=[r1:=r1,]>] +"l12" -> "l13" [label=] +"l12" -> "l23" [label=[r1:=r1,]>] +"l12" -> "l32" [label=[r1:=r1,]>] +"l12" -> "l29" [label=[r1:=r1,]>] +"l12" -> "l32" [label=[r1:=r1,]>] +"l12" -> "l32" [label=[r1:=r1,]>] +"l12" -> "l32" [label=[r1:=r1,]>] +"l12" -> "l32" [label=[r1:=r1,]>] +"l12" -> "l32" [label=[r1:=r1,]>] +"l12" -> "l32" [label=[r1:=r1,]>] +"l13" -> "l14" [label=] +"l14" -> "l15" [label=] +"l14" -> "l16" [label=] +"l14" -> "l16" [label=] +"l14" -> "l17" [label=] +"l14" -> "l17" [label=] +"l14" -> "l17" [label=] +"l14" -> "l24" [label=] +"l14" -> "l25" [label=[r1:=p1,]>] +"l14" -> "l30" [label=] +"l15" -> "l21" [label=] +"l16" -> "l7" [label=] +"l17" -> "l14" [label=] +"l18" -> "l6" [label=[r1:=r1,]>] +"l19" -> "l6" [label=[r1:=r1,]>] +"l20" -> "l7" [label=] +"l21" -> "l13" [label=] +"l21" -> "l27" [label=] +"l21" -> "l30" [label=] +"l21" -> "l31" [label=] +"l21" -> "l31" [label=] +"l21" -> "l31" [label=] +"l21" -> "l31" [label=] +"l21" -> "l31" [label=] +"l21" -> "l31" [label=] +"l22" -> "l1" [label=[r1:=p1,]>] +"l22" -> "l11" [label=[r1:=r1,]>] +"l22" -> "l11" [label=[r1:=r1,]>] +"l22" -> "l11" [label=[r1:=r1,]>] +"l22" -> "l11" [label=[r1:=r1,]>] +"l22" -> "l11" [label=[r1:=r1,]>] +"l22" -> "l11" [label=[r1:=r1,]>] +"l22" -> "l28" [label=[r1:=r1,]>] +"l22" -> "l11" [label=[r1:=r1,]>] +"l22" -> "l28" [label=[r1:=r1,]>] +"l23" -> "l12" [label=[r1:=r1,]>] +"l24" -> "l14" [label=] +"l25" -> "l26" [label=[r1:=r1,]>] +"l26" -> "l8" [label=[r1:=r1,]>] +"l26" -> "l17" [label=] +"l26" -> "l17" [label=] +"l26" -> "l17" [label=] +"l26" -> "l19" [label=[r1:=r1,]>] +"l26" -> "l33" [label=[r1:=r1,]>] +"l26" -> "l25" [label=[r1:=p1,]>] +"l26" -> "l29" [label=[r1:=r1,]>] +"l26" -> "l34" [label=[r1:=r1,]>] +"l26" -> "l34" [label=[r1:=r1,]>] +"l27" -> "l21" [label=] +"l28" -> "l22" [label=[r1:=r1,]>] +"l29" -> "l22" [label=[r1:=r1,]>] +"l30" -> "l7" [label=] +"l31" -> "l21" [label=] +"l32" -> "l12" [label=[r1:=r1,]>] +"l33" -> "l6" [label=[r1:=r1,]>] +"l34" -> "l35" [label=[r1:=r1,]>] +"l35" -> "l1" [label=[r1:=p1,]>] +"l35" -> "l4" [label=] +"l35" -> "l4" [label=] +"l35" -> "l4" [label=] +"l35" -> "l4" [label=] +"l35" -> "l4" [label=] +"l35" -> "l4" [label=] +"l35" -> "l9" [label=[r1:=r1,]>] +"l35" -> "l28" [label=[r1:=r1,]>] +"l35" -> "l28" [label=[r1:=r1,]>] +} diff --git a/experiments/saved_results/servers/ra/sifis-home_phase_1/hyp15.dot b/experiments/saved_results/servers/ra/sifis-home_phase_1/hyp15.dot new file mode 100644 index 00000000..06afdc80 --- /dev/null +++ b/experiments/saved_results/servers/ra/sifis-home_phase_1/hyp15.dot @@ -0,0 +1,155 @@ +digraph RA { +"" [shape=none,label=<>] +"l0" [shape=doublecircle] +"l1" [shape=doublecircle] +"l2" [shape=circle] +"l3" [shape=circle] +"l4" [shape=doublecircle] +"l5" [shape=doublecircle] +"l6" [shape=doublecircle] +"l7" [shape=doublecircle] +"l8" [shape=doublecircle] +"l9" [shape=doublecircle] +"l10" [shape=doublecircle] +"l11" [shape=doublecircle] +"l12" [shape=doublecircle] +"l13" [shape=doublecircle] +"l14" [shape=doublecircle] +"l15" [shape=doublecircle] +"l16" [shape=doublecircle] +"l17" [shape=doublecircle] +"l18" [shape=doublecircle] +"l19" [shape=doublecircle] +"l20" [shape=doublecircle] +"l21" [shape=doublecircle] +"l22" [shape=doublecircle] +"l23" [shape=doublecircle] +"l24" [shape=doublecircle] +"l25" [shape=doublecircle] +"l26" [shape=doublecircle] +"l27" [shape=doublecircle] +"l28" [shape=doublecircle] +"l29" [shape=doublecircle] +"l30" [shape=doublecircle] +"l31" [shape=doublecircle] +"l32" [shape=doublecircle] +"l33" [shape=doublecircle] +"l34" [shape=doublecircle] +"l35" [shape=doublecircle] +"l36" [shape=doublecircle] +"l37" [shape=doublecircle] +"" -> "l0" +"l0" -> "l1" [label=[r1:=p1,]>] +"l0" -> "l4" [label=] +"l0" -> "l5" [label=] +"l0" -> "l10" [label=] +"l0" -> "l10" [label=] +"l0" -> "l10" [label=] +"l0" -> "l10" [label=] +"l0" -> "l10" [label=] +"l0" -> "l11" [label=[r1:=p1,]>] +"l1" -> "l6" [label=[r1:=r1,]>] +"l4" -> "l7" [label=] +"l5" -> "l0" [label=] +"l6" -> "l8" [label=[r1:=r1,]>] +"l6" -> "l9" [label=[r1:=r1,]>] +"l6" -> "l9" [label=[r1:=r1,]>] +"l6" -> "l18" [label=[r1:=r1,]>] +"l6" -> "l18" [label=[r1:=r1,]>] +"l6" -> "l18" [label=[r1:=r1,]>] +"l6" -> "l19" [label=[r1:=r1,]>] +"l6" -> "l18" [label=[r1:=r1,]>] +"l6" -> "l25" [label=[r1:=p1,]>] +"l6" -> "l29" [label=[r1:=r1,]>] +"l7" -> "l1" [label=[r1:=p1,]>] +"l7" -> "l4" [label=] +"l7" -> "l4" [label=] +"l7" -> "l4" [label=] +"l7" -> "l4" [label=] +"l7" -> "l4" [label=] +"l7" -> "l4" [label=] +"l7" -> "l20" [label=] +"l7" -> "l20" [label=] +"l8" -> "l12" [label=[r1:=r1,]>] +"l9" -> "l22" [label=[r1:=r1,]>] +"l10" -> "l0" [label=] +"l11" -> "l22" [label=[r1:=r1,]>] +"l12" -> "l13" [label=] +"l12" -> "l23" [label=[r1:=r1,]>] +"l12" -> "l32" [label=[r1:=r1,]>] +"l12" -> "l29" [label=[r1:=r1,]>] +"l12" -> "l32" [label=[r1:=r1,]>] +"l12" -> "l32" [label=[r1:=r1,]>] +"l12" -> "l32" [label=[r1:=r1,]>] +"l12" -> "l32" [label=[r1:=r1,]>] +"l12" -> "l32" [label=[r1:=r1,]>] +"l12" -> "l32" [label=[r1:=r1,]>] +"l13" -> "l14" [label=] +"l14" -> "l15" [label=] +"l14" -> "l16" [label=] +"l14" -> "l16" [label=] +"l14" -> "l17" [label=] +"l14" -> "l17" [label=] +"l14" -> "l17" [label=] +"l14" -> "l24" [label=] +"l14" -> "l25" [label=[r1:=p1,]>] +"l14" -> "l30" [label=] +"l15" -> "l21" [label=] +"l16" -> "l7" [label=] +"l17" -> "l14" [label=] +"l18" -> "l6" [label=[r1:=r1,]>] +"l19" -> "l6" [label=[r1:=r1,]>] +"l20" -> "l7" [label=] +"l21" -> "l13" [label=] +"l21" -> "l27" [label=] +"l21" -> "l30" [label=] +"l21" -> "l31" [label=] +"l21" -> "l31" [label=] +"l21" -> "l31" [label=] +"l21" -> "l31" [label=] +"l21" -> "l31" [label=] +"l21" -> "l31" [label=] +"l22" -> "l1" [label=[r1:=p1,]>] +"l22" -> "l11" [label=[r1:=r1,]>] +"l22" -> "l11" [label=[r1:=r1,]>] +"l22" -> "l11" [label=[r1:=r1,]>] +"l22" -> "l11" [label=[r1:=r1,]>] +"l22" -> "l11" [label=[r1:=r1,]>] +"l22" -> "l11" [label=[r1:=r1,]>] +"l22" -> "l28" [label=[r1:=r1,]>] +"l22" -> "l11" [label=[r1:=r1,]>] +"l22" -> "l28" [label=[r1:=r1,]>] +"l23" -> "l12" [label=[r1:=r1,]>] +"l24" -> "l14" [label=] +"l25" -> "l26" [label=[r1:=r1,]>] +"l26" -> "l8" [label=[r1:=r1,]>] +"l26" -> "l19" [label=[r1:=r1,]>] +"l26" -> "l33" [label=[r1:=r1,]>] +"l26" -> "l25" [label=[r1:=p1,]>] +"l26" -> "l29" [label=[r1:=r1,]>] +"l26" -> "l34" [label=[r1:=r1,]>] +"l26" -> "l34" [label=[r1:=r1,]>] +"l26" -> "l37" [label=[r1:=r1,]>] +"l26" -> "l37" [label=[r1:=r1,]>] +"l26" -> "l37" [label=[r1:=r1,]>] +"l27" -> "l21" [label=] +"l28" -> "l22" [label=[r1:=r1,]>] +"l29" -> "l22" [label=[r1:=r1,]>] +"l30" -> "l7" [label=] +"l31" -> "l21" [label=] +"l32" -> "l12" [label=[r1:=r1,]>] +"l33" -> "l6" [label=[r1:=r1,]>] +"l34" -> "l35" [label=[r1:=r1,]>] +"l35" -> "l1" [label=[r1:=p1,]>] +"l35" -> "l9" [label=[r1:=r1,]>] +"l35" -> "l28" [label=[r1:=r1,]>] +"l35" -> "l28" [label=[r1:=r1,]>] +"l35" -> "l36" [label=[r1:=r1,]>] +"l35" -> "l36" [label=[r1:=r1,]>] +"l35" -> "l36" [label=[r1:=r1,]>] +"l35" -> "l36" [label=[r1:=r1,]>] +"l35" -> "l36" [label=[r1:=r1,]>] +"l35" -> "l36" [label=[r1:=r1,]>] +"l36" -> "l35" [label=[r1:=r1,]>] +"l37" -> "l26" [label=[r1:=r1,]>] +} diff --git a/experiments/saved_results/servers/ra/sifis-home_phase_1/hyp16.dot b/experiments/saved_results/servers/ra/sifis-home_phase_1/hyp16.dot new file mode 100644 index 00000000..beee386f --- /dev/null +++ b/experiments/saved_results/servers/ra/sifis-home_phase_1/hyp16.dot @@ -0,0 +1,172 @@ +digraph RA { +"" [shape=none,label=<>] +"l0" [shape=doublecircle] +"l1" [shape=doublecircle] +"l2" [shape=circle] +"l3" [shape=circle] +"l4" [shape=doublecircle] +"l5" [shape=doublecircle] +"l6" [shape=doublecircle] +"l7" [shape=doublecircle] +"l8" [shape=doublecircle] +"l9" [shape=doublecircle] +"l10" [shape=doublecircle] +"l11" [shape=doublecircle] +"l12" [shape=doublecircle] +"l13" [shape=doublecircle] +"l14" [shape=doublecircle] +"l15" [shape=doublecircle] +"l16" [shape=doublecircle] +"l17" [shape=doublecircle] +"l18" [shape=doublecircle] +"l19" [shape=doublecircle] +"l20" [shape=doublecircle] +"l21" [shape=doublecircle] +"l22" [shape=doublecircle] +"l23" [shape=doublecircle] +"l24" [shape=doublecircle] +"l25" [shape=doublecircle] +"l26" [shape=doublecircle] +"l27" [shape=doublecircle] +"l28" [shape=doublecircle] +"l29" [shape=doublecircle] +"l30" [shape=doublecircle] +"l31" [shape=doublecircle] +"l32" [shape=doublecircle] +"l33" [shape=doublecircle] +"l34" [shape=doublecircle] +"l35" [shape=doublecircle] +"l36" [shape=doublecircle] +"l37" [shape=doublecircle] +"l38" [shape=doublecircle] +"l39" [shape=doublecircle] +"l40" [shape=doublecircle] +"l41" [shape=doublecircle] +"" -> "l0" +"l0" -> "l1" [label=[r1:=p1,]>] +"l0" -> "l4" [label=] +"l0" -> "l5" [label=] +"l0" -> "l10" [label=] +"l0" -> "l10" [label=] +"l0" -> "l10" [label=] +"l0" -> "l10" [label=] +"l0" -> "l10" [label=] +"l0" -> "l11" [label=[r1:=p1,]>] +"l1" -> "l6" [label=[r1:=r1,]>] +"l4" -> "l7" [label=] +"l5" -> "l0" [label=] +"l6" -> "l8" [label=[r1:=r1,]>] +"l6" -> "l9" [label=[r1:=r1,]>] +"l6" -> "l9" [label=[r1:=r1,]>] +"l6" -> "l18" [label=[r1:=r1,]>] +"l6" -> "l18" [label=[r1:=r1,]>] +"l6" -> "l18" [label=[r1:=r1,]>] +"l6" -> "l19" [label=[r1:=r1,]>] +"l6" -> "l18" [label=[r1:=r1,]>] +"l6" -> "l25" [label=[r1:=p1,]>] +"l6" -> "l29" [label=[r1:=r1,]>] +"l7" -> "l1" [label=[r1:=p1,]>] +"l7" -> "l4" [label=] +"l7" -> "l4" [label=] +"l7" -> "l4" [label=] +"l7" -> "l4" [label=] +"l7" -> "l4" [label=] +"l7" -> "l4" [label=] +"l7" -> "l20" [label=] +"l7" -> "l20" [label=] +"l8" -> "l12" [label=[r1:=r1,]>] +"l9" -> "l22" [label=[r1:=r1,]>] +"l10" -> "l0" [label=] +"l11" -> "l22" [label=[r1:=r1,]>] +"l12" -> "l13" [label=] +"l12" -> "l23" [label=[r1:=r1,]>] +"l12" -> "l32" [label=[r1:=r1,]>] +"l12" -> "l29" [label=[r1:=r1,]>] +"l12" -> "l32" [label=[r1:=r1,]>] +"l12" -> "l32" [label=[r1:=r1,]>] +"l12" -> "l32" [label=[r1:=r1,]>] +"l12" -> "l32" [label=[r1:=r1,]>] +"l12" -> "l32" [label=[r1:=r1,]>] +"l12" -> "l32" [label=[r1:=r1,]>] +"l13" -> "l14" [label=] +"l14" -> "l15" [label=] +"l14" -> "l16" [label=] +"l14" -> "l16" [label=] +"l14" -> "l17" [label=] +"l14" -> "l17" [label=] +"l14" -> "l17" [label=] +"l14" -> "l24" [label=] +"l14" -> "l25" [label=[r1:=p1,]>] +"l14" -> "l30" [label=] +"l15" -> "l21" [label=] +"l16" -> "l7" [label=] +"l17" -> "l14" [label=] +"l18" -> "l6" [label=[r1:=r1,]>] +"l19" -> "l6" [label=[r1:=r1,]>] +"l20" -> "l7" [label=] +"l21" -> "l13" [label=] +"l21" -> "l27" [label=] +"l21" -> "l30" [label=] +"l21" -> "l31" [label=] +"l21" -> "l31" [label=] +"l21" -> "l31" [label=] +"l21" -> "l31" [label=] +"l21" -> "l31" [label=] +"l21" -> "l31" [label=] +"l22" -> "l1" [label=[r1:=p1,]>] +"l22" -> "l11" [label=[r1:=r1,]>] +"l22" -> "l11" [label=[r1:=r1,]>] +"l22" -> "l11" [label=[r1:=r1,]>] +"l22" -> "l11" [label=[r1:=r1,]>] +"l22" -> "l11" [label=[r1:=r1,]>] +"l22" -> "l11" [label=[r1:=r1,]>] +"l22" -> "l28" [label=[r1:=r1,]>] +"l22" -> "l11" [label=[r1:=r1,]>] +"l22" -> "l28" [label=[r1:=r1,]>] +"l23" -> "l12" [label=[r1:=r1,]>] +"l24" -> "l14" [label=] +"l25" -> "l26" [label=[r1:=r1,]>] +"l26" -> "l19" [label=[r1:=r1,]>] +"l26" -> "l33" [label=[r1:=r1,]>] +"l26" -> "l25" [label=[r1:=p1,]>] +"l26" -> "l34" [label=[r1:=r1,]>] +"l26" -> "l34" [label=[r1:=r1,]>] +"l26" -> "l37" [label=[r1:=r1,]>] +"l26" -> "l37" [label=[r1:=r1,]>] +"l26" -> "l37" [label=[r1:=r1,]>] +"l26" -> "l38" [label=[r1:=r1,]>] +"l26" -> "l39" [label=[r1:=r1,]>] +"l27" -> "l21" [label=] +"l28" -> "l22" [label=[r1:=r1,]>] +"l29" -> "l22" [label=[r1:=r1,]>] +"l30" -> "l7" [label=] +"l31" -> "l21" [label=] +"l32" -> "l12" [label=[r1:=r1,]>] +"l33" -> "l6" [label=[r1:=r1,]>] +"l34" -> "l35" [label=[r1:=r1,]>] +"l35" -> "l1" [label=[r1:=p1,]>] +"l35" -> "l9" [label=[r1:=r1,]>] +"l35" -> "l28" [label=[r1:=r1,]>] +"l35" -> "l28" [label=[r1:=r1,]>] +"l35" -> "l36" [label=[r1:=r1,]>] +"l35" -> "l36" [label=[r1:=r1,]>] +"l35" -> "l36" [label=[r1:=r1,]>] +"l35" -> "l36" [label=[r1:=r1,]>] +"l35" -> "l36" [label=[r1:=r1,]>] +"l35" -> "l36" [label=[r1:=r1,]>] +"l36" -> "l35" [label=[r1:=r1,]>] +"l37" -> "l26" [label=[r1:=r1,]>] +"l38" -> "l40" [label=[r1:=r1,]>] +"l39" -> "l35" [label=[r1:=r1,]>] +"l40" -> "l9" [label=[r1:=r1,]>] +"l40" -> "l23" [label=[r1:=r1,]>] +"l40" -> "l13" [label=] +"l40" -> "l39" [label=[r1:=r1,]>] +"l40" -> "l41" [label=[r1:=r1,]>] +"l40" -> "l41" [label=[r1:=r1,]>] +"l40" -> "l41" [label=[r1:=r1,]>] +"l40" -> "l41" [label=[r1:=r1,]>] +"l40" -> "l41" [label=[r1:=r1,]>] +"l40" -> "l41" [label=[r1:=r1,]>] +"l41" -> "l40" [label=[r1:=r1,]>] +} diff --git a/experiments/saved_results/servers/ra/sifis-home_phase_1/hyp2.dot b/experiments/saved_results/servers/ra/sifis-home_phase_1/hyp2.dot new file mode 100644 index 00000000..3914ebbb --- /dev/null +++ b/experiments/saved_results/servers/ra/sifis-home_phase_1/hyp2.dot @@ -0,0 +1,47 @@ +digraph RA { +"" [shape=none,label=<>] +"l0" [shape=doublecircle] +"l1" [shape=doublecircle] +"l2" [shape=circle] +"l3" [shape=circle] +"l4" [shape=doublecircle] +"l5" [shape=doublecircle] +"l6" [shape=doublecircle] +"l7" [shape=doublecircle] +"l8" [shape=doublecircle] +"l9" [shape=doublecircle] +"" -> "l0" +"l0" -> "l1" [label=[r1:=p1,]>] +"l0" -> "l4" [label=] +"l0" -> "l4" [label=] +"l0" -> "l4" [label=] +"l0" -> "l4" [label=] +"l0" -> "l4" [label=] +"l0" -> "l4" [label=] +"l0" -> "l4" [label=] +"l0" -> "l5" [label=] +"l1" -> "l6" [label=[r1:=r1,]>] +"l4" -> "l7" [label=] +"l5" -> "l0" [label=] +"l6" -> "l1" [label=[r1:=p1,]>] +"l6" -> "l4" [label=] +"l6" -> "l4" [label=] +"l6" -> "l4" [label=] +"l6" -> "l5" [label=] +"l6" -> "l4" [label=] +"l6" -> "l8" [label=[r1:=r1,]>] +"l6" -> "l8" [label=[r1:=r1,]>] +"l6" -> "l9" [label=[r1:=r1,]>] +"l6" -> "l9" [label=[r1:=r1,]>] +"l7" -> "l1" [label=[r1:=p1,]>] +"l7" -> "l4" [label=] +"l7" -> "l4" [label=] +"l7" -> "l4" [label=] +"l7" -> "l4" [label=] +"l7" -> "l4" [label=] +"l7" -> "l4" [label=] +"l7" -> "l5" [label=] +"l7" -> "l5" [label=] +"l8" -> "l6" [label=[r1:=r1,]>] +"l9" -> "l6" [label=[r1:=r1,]>] +} diff --git a/experiments/saved_results/servers/ra/sifis-home_phase_1/hyp3.dot b/experiments/saved_results/servers/ra/sifis-home_phase_1/hyp3.dot new file mode 100644 index 00000000..d648e757 --- /dev/null +++ b/experiments/saved_results/servers/ra/sifis-home_phase_1/hyp3.dot @@ -0,0 +1,51 @@ +digraph RA { +"" [shape=none,label=<>] +"l0" [shape=doublecircle] +"l1" [shape=doublecircle] +"l2" [shape=circle] +"l3" [shape=circle] +"l4" [shape=doublecircle] +"l5" [shape=doublecircle] +"l6" [shape=doublecircle] +"l7" [shape=doublecircle] +"l8" [shape=doublecircle] +"l9" [shape=doublecircle] +"l10" [shape=doublecircle] +"l11" [shape=doublecircle] +"" -> "l0" +"l0" -> "l1" [label=[r1:=p1,]>] +"l0" -> "l4" [label=] +"l0" -> "l5" [label=] +"l0" -> "l10" [label=] +"l0" -> "l10" [label=] +"l0" -> "l10" [label=] +"l0" -> "l10" [label=] +"l0" -> "l10" [label=] +"l0" -> "l11" [label=[r1:=p1,]>] +"l1" -> "l6" [label=[r1:=r1,]>] +"l4" -> "l7" [label=] +"l5" -> "l0" [label=] +"l6" -> "l1" [label=[r1:=p1,]>] +"l6" -> "l5" [label=] +"l6" -> "l11" [label=[r1:=r1,]>] +"l6" -> "l8" [label=[r1:=r1,]>] +"l6" -> "l8" [label=[r1:=r1,]>] +"l6" -> "l9" [label=[r1:=r1,]>] +"l6" -> "l9" [label=[r1:=r1,]>] +"l6" -> "l11" [label=[r1:=r1,]>] +"l6" -> "l11" [label=[r1:=r1,]>] +"l6" -> "l11" [label=[r1:=r1,]>] +"l7" -> "l1" [label=[r1:=p1,]>] +"l7" -> "l4" [label=] +"l7" -> "l4" [label=] +"l7" -> "l4" [label=] +"l7" -> "l4" [label=] +"l7" -> "l4" [label=] +"l7" -> "l4" [label=] +"l7" -> "l5" [label=] +"l7" -> "l5" [label=] +"l8" -> "l6" [label=[r1:=r1,]>] +"l9" -> "l6" [label=[r1:=r1,]>] +"l10" -> "l0" [label=] +"l11" -> "l6" [label=[r1:=r1,]>] +} diff --git a/experiments/saved_results/servers/ra/sifis-home_phase_1/hyp4.dot b/experiments/saved_results/servers/ra/sifis-home_phase_1/hyp4.dot new file mode 100644 index 00000000..6e9bf993 --- /dev/null +++ b/experiments/saved_results/servers/ra/sifis-home_phase_1/hyp4.dot @@ -0,0 +1,78 @@ +digraph RA { +"" [shape=none,label=<>] +"l0" [shape=doublecircle] +"l1" [shape=doublecircle] +"l2" [shape=circle] +"l3" [shape=circle] +"l4" [shape=doublecircle] +"l5" [shape=doublecircle] +"l6" [shape=doublecircle] +"l7" [shape=doublecircle] +"l8" [shape=doublecircle] +"l9" [shape=doublecircle] +"l10" [shape=doublecircle] +"l11" [shape=doublecircle] +"l12" [shape=doublecircle] +"l13" [shape=doublecircle] +"l14" [shape=doublecircle] +"l15" [shape=doublecircle] +"l16" [shape=doublecircle] +"" -> "l0" +"l0" -> "l1" [label=[r1:=p1,]>] +"l0" -> "l4" [label=] +"l0" -> "l5" [label=] +"l0" -> "l10" [label=] +"l0" -> "l10" [label=] +"l0" -> "l10" [label=] +"l0" -> "l10" [label=] +"l0" -> "l10" [label=] +"l0" -> "l11" [label=[r1:=p1,]>] +"l1" -> "l6" [label=[r1:=r1,]>] +"l4" -> "l7" [label=] +"l5" -> "l0" [label=] +"l6" -> "l1" [label=[r1:=p1,]>] +"l6" -> "l5" [label=] +"l6" -> "l11" [label=[r1:=r1,]>] +"l6" -> "l8" [label=[r1:=r1,]>] +"l6" -> "l8" [label=[r1:=r1,]>] +"l6" -> "l9" [label=[r1:=r1,]>] +"l6" -> "l9" [label=[r1:=r1,]>] +"l6" -> "l11" [label=[r1:=r1,]>] +"l6" -> "l11" [label=[r1:=r1,]>] +"l6" -> "l11" [label=[r1:=r1,]>] +"l7" -> "l1" [label=[r1:=p1,]>] +"l7" -> "l4" [label=] +"l7" -> "l4" [label=] +"l7" -> "l4" [label=] +"l7" -> "l4" [label=] +"l7" -> "l4" [label=] +"l7" -> "l4" [label=] +"l7" -> "l5" [label=] +"l7" -> "l5" [label=] +"l8" -> "l12" [label=[r1:=r1,]>] +"l9" -> "l12" [label=[r1:=r1,]>] +"l10" -> "l0" [label=] +"l11" -> "l12" [label=[r1:=r1,]>] +"l12" -> "l5" [label=] +"l12" -> "l11" [label=[r1:=r1,]>] +"l12" -> "l8" [label=[r1:=r1,]>] +"l12" -> "l11" [label=[r1:=r1,]>] +"l12" -> "l11" [label=[r1:=r1,]>] +"l12" -> "l11" [label=[r1:=r1,]>] +"l12" -> "l11" [label=[r1:=r1,]>] +"l12" -> "l11" [label=[r1:=r1,]>] +"l12" -> "l11" [label=[r1:=r1,]>] +"l12" -> "l13" [label=] +"l13" -> "l14" [label=] +"l14" -> "l1" [label=[r1:=p1,]>] +"l14" -> "l4" [label=] +"l14" -> "l4" [label=] +"l14" -> "l4" [label=] +"l14" -> "l5" [label=] +"l14" -> "l15" [label=] +"l14" -> "l15" [label=] +"l14" -> "l16" [label=] +"l14" -> "l16" [label=] +"l15" -> "l7" [label=] +"l16" -> "l7" [label=] +} diff --git a/experiments/saved_results/servers/ra/sifis-home_phase_1/hyp5.dot b/experiments/saved_results/servers/ra/sifis-home_phase_1/hyp5.dot new file mode 100644 index 00000000..0bb4bd8e --- /dev/null +++ b/experiments/saved_results/servers/ra/sifis-home_phase_1/hyp5.dot @@ -0,0 +1,82 @@ +digraph RA { +"" [shape=none,label=<>] +"l0" [shape=doublecircle] +"l1" [shape=doublecircle] +"l2" [shape=circle] +"l3" [shape=circle] +"l4" [shape=doublecircle] +"l5" [shape=doublecircle] +"l6" [shape=doublecircle] +"l7" [shape=doublecircle] +"l8" [shape=doublecircle] +"l9" [shape=doublecircle] +"l10" [shape=doublecircle] +"l11" [shape=doublecircle] +"l12" [shape=doublecircle] +"l13" [shape=doublecircle] +"l14" [shape=doublecircle] +"l15" [shape=doublecircle] +"l16" [shape=doublecircle] +"l17" [shape=doublecircle] +"l18" [shape=doublecircle] +"" -> "l0" +"l0" -> "l1" [label=[r1:=p1,]>] +"l0" -> "l4" [label=] +"l0" -> "l5" [label=] +"l0" -> "l10" [label=] +"l0" -> "l10" [label=] +"l0" -> "l10" [label=] +"l0" -> "l10" [label=] +"l0" -> "l10" [label=] +"l0" -> "l11" [label=[r1:=p1,]>] +"l1" -> "l6" [label=[r1:=r1,]>] +"l4" -> "l7" [label=] +"l5" -> "l0" [label=] +"l6" -> "l1" [label=[r1:=p1,]>] +"l6" -> "l5" [label=] +"l6" -> "l18" [label=[r1:=r1,]>] +"l6" -> "l8" [label=[r1:=r1,]>] +"l6" -> "l8" [label=[r1:=r1,]>] +"l6" -> "l9" [label=[r1:=r1,]>] +"l6" -> "l9" [label=[r1:=r1,]>] +"l6" -> "l18" [label=[r1:=r1,]>] +"l6" -> "l18" [label=[r1:=r1,]>] +"l6" -> "l18" [label=[r1:=r1,]>] +"l7" -> "l1" [label=[r1:=p1,]>] +"l7" -> "l4" [label=] +"l7" -> "l4" [label=] +"l7" -> "l4" [label=] +"l7" -> "l4" [label=] +"l7" -> "l4" [label=] +"l7" -> "l4" [label=] +"l7" -> "l5" [label=] +"l7" -> "l5" [label=] +"l8" -> "l12" [label=[r1:=r1,]>] +"l9" -> "l12" [label=[r1:=r1,]>] +"l10" -> "l0" [label=] +"l11" -> "l12" [label=[r1:=r1,]>] +"l12" -> "l5" [label=] +"l12" -> "l11" [label=[r1:=r1,]>] +"l12" -> "l8" [label=[r1:=r1,]>] +"l12" -> "l11" [label=[r1:=r1,]>] +"l12" -> "l11" [label=[r1:=r1,]>] +"l12" -> "l11" [label=[r1:=r1,]>] +"l12" -> "l11" [label=[r1:=r1,]>] +"l12" -> "l11" [label=[r1:=r1,]>] +"l12" -> "l11" [label=[r1:=r1,]>] +"l12" -> "l13" [label=] +"l13" -> "l14" [label=] +"l14" -> "l1" [label=[r1:=p1,]>] +"l14" -> "l5" [label=] +"l14" -> "l15" [label=] +"l14" -> "l15" [label=] +"l14" -> "l16" [label=] +"l14" -> "l16" [label=] +"l14" -> "l17" [label=] +"l14" -> "l17" [label=] +"l14" -> "l17" [label=] +"l15" -> "l7" [label=] +"l16" -> "l7" [label=] +"l17" -> "l14" [label=] +"l18" -> "l6" [label=[r1:=r1,]>] +} diff --git a/experiments/saved_results/servers/ra/sifis-home_phase_1/hyp6.dot b/experiments/saved_results/servers/ra/sifis-home_phase_1/hyp6.dot new file mode 100644 index 00000000..83a190de --- /dev/null +++ b/experiments/saved_results/servers/ra/sifis-home_phase_1/hyp6.dot @@ -0,0 +1,86 @@ +digraph RA { +"" [shape=none,label=<>] +"l0" [shape=doublecircle] +"l1" [shape=doublecircle] +"l2" [shape=circle] +"l3" [shape=circle] +"l4" [shape=doublecircle] +"l5" [shape=doublecircle] +"l6" [shape=doublecircle] +"l7" [shape=doublecircle] +"l8" [shape=doublecircle] +"l9" [shape=doublecircle] +"l10" [shape=doublecircle] +"l11" [shape=doublecircle] +"l12" [shape=doublecircle] +"l13" [shape=doublecircle] +"l14" [shape=doublecircle] +"l15" [shape=doublecircle] +"l16" [shape=doublecircle] +"l17" [shape=doublecircle] +"l18" [shape=doublecircle] +"l19" [shape=doublecircle] +"l20" [shape=doublecircle] +"" -> "l0" +"l0" -> "l1" [label=[r1:=p1,]>] +"l0" -> "l4" [label=] +"l0" -> "l5" [label=] +"l0" -> "l10" [label=] +"l0" -> "l10" [label=] +"l0" -> "l10" [label=] +"l0" -> "l10" [label=] +"l0" -> "l10" [label=] +"l0" -> "l11" [label=[r1:=p1,]>] +"l1" -> "l6" [label=[r1:=r1,]>] +"l4" -> "l7" [label=] +"l5" -> "l0" [label=] +"l6" -> "l1" [label=[r1:=p1,]>] +"l6" -> "l8" [label=[r1:=r1,]>] +"l6" -> "l8" [label=[r1:=r1,]>] +"l6" -> "l9" [label=[r1:=r1,]>] +"l6" -> "l9" [label=[r1:=r1,]>] +"l6" -> "l18" [label=[r1:=r1,]>] +"l6" -> "l18" [label=[r1:=r1,]>] +"l6" -> "l18" [label=[r1:=r1,]>] +"l6" -> "l19" [label=[r1:=r1,]>] +"l6" -> "l18" [label=[r1:=r1,]>] +"l7" -> "l1" [label=[r1:=p1,]>] +"l7" -> "l4" [label=] +"l7" -> "l4" [label=] +"l7" -> "l4" [label=] +"l7" -> "l4" [label=] +"l7" -> "l4" [label=] +"l7" -> "l4" [label=] +"l7" -> "l20" [label=] +"l7" -> "l20" [label=] +"l8" -> "l12" [label=[r1:=r1,]>] +"l9" -> "l12" [label=[r1:=r1,]>] +"l10" -> "l0" [label=] +"l11" -> "l12" [label=[r1:=r1,]>] +"l12" -> "l8" [label=[r1:=r1,]>] +"l12" -> "l11" [label=[r1:=r1,]>] +"l12" -> "l11" [label=[r1:=r1,]>] +"l12" -> "l11" [label=[r1:=r1,]>] +"l12" -> "l11" [label=[r1:=r1,]>] +"l12" -> "l11" [label=[r1:=r1,]>] +"l12" -> "l11" [label=[r1:=r1,]>] +"l12" -> "l19" [label=[r1:=r1,]>] +"l12" -> "l11" [label=[r1:=r1,]>] +"l12" -> "l13" [label=] +"l13" -> "l14" [label=] +"l14" -> "l1" [label=[r1:=p1,]>] +"l14" -> "l15" [label=] +"l14" -> "l15" [label=] +"l14" -> "l16" [label=] +"l14" -> "l16" [label=] +"l14" -> "l17" [label=] +"l14" -> "l17" [label=] +"l14" -> "l17" [label=] +"l14" -> "l20" [label=] +"l15" -> "l7" [label=] +"l16" -> "l7" [label=] +"l17" -> "l14" [label=] +"l18" -> "l6" [label=[r1:=r1,]>] +"l19" -> "l6" [label=[r1:=r1,]>] +"l20" -> "l7" [label=] +} diff --git a/experiments/saved_results/servers/ra/sifis-home_phase_1/hyp7.dot b/experiments/saved_results/servers/ra/sifis-home_phase_1/hyp7.dot new file mode 100644 index 00000000..8096ef1c --- /dev/null +++ b/experiments/saved_results/servers/ra/sifis-home_phase_1/hyp7.dot @@ -0,0 +1,107 @@ +digraph RA { +"" [shape=none,label=<>] +"l0" [shape=doublecircle] +"l1" [shape=doublecircle] +"l2" [shape=circle] +"l3" [shape=circle] +"l4" [shape=doublecircle] +"l5" [shape=doublecircle] +"l6" [shape=doublecircle] +"l7" [shape=doublecircle] +"l8" [shape=doublecircle] +"l9" [shape=doublecircle] +"l10" [shape=doublecircle] +"l11" [shape=doublecircle] +"l12" [shape=doublecircle] +"l13" [shape=doublecircle] +"l14" [shape=doublecircle] +"l15" [shape=doublecircle] +"l16" [shape=doublecircle] +"l17" [shape=doublecircle] +"l18" [shape=doublecircle] +"l19" [shape=doublecircle] +"l20" [shape=doublecircle] +"l21" [shape=doublecircle] +"l22" [shape=doublecircle] +"" -> "l0" +"l0" -> "l1" [label=[r1:=p1,]>] +"l0" -> "l4" [label=] +"l0" -> "l5" [label=] +"l0" -> "l10" [label=] +"l0" -> "l10" [label=] +"l0" -> "l10" [label=] +"l0" -> "l10" [label=] +"l0" -> "l10" [label=] +"l0" -> "l11" [label=[r1:=p1,]>] +"l1" -> "l6" [label=[r1:=r1,]>] +"l4" -> "l7" [label=] +"l5" -> "l0" [label=] +"l6" -> "l1" [label=[r1:=p1,]>] +"l6" -> "l8" [label=[r1:=r1,]>] +"l6" -> "l8" [label=[r1:=r1,]>] +"l6" -> "l9" [label=[r1:=r1,]>] +"l6" -> "l9" [label=[r1:=r1,]>] +"l6" -> "l18" [label=[r1:=r1,]>] +"l6" -> "l18" [label=[r1:=r1,]>] +"l6" -> "l18" [label=[r1:=r1,]>] +"l6" -> "l19" [label=[r1:=r1,]>] +"l6" -> "l18" [label=[r1:=r1,]>] +"l7" -> "l1" [label=[r1:=p1,]>] +"l7" -> "l4" [label=] +"l7" -> "l4" [label=] +"l7" -> "l4" [label=] +"l7" -> "l4" [label=] +"l7" -> "l4" [label=] +"l7" -> "l4" [label=] +"l7" -> "l20" [label=] +"l7" -> "l20" [label=] +"l8" -> "l12" [label=[r1:=r1,]>] +"l9" -> "l22" [label=[r1:=r1,]>] +"l10" -> "l0" [label=] +"l11" -> "l22" [label=[r1:=r1,]>] +"l12" -> "l8" [label=[r1:=r1,]>] +"l12" -> "l11" [label=[r1:=r1,]>] +"l12" -> "l11" [label=[r1:=r1,]>] +"l12" -> "l11" [label=[r1:=r1,]>] +"l12" -> "l11" [label=[r1:=r1,]>] +"l12" -> "l11" [label=[r1:=r1,]>] +"l12" -> "l11" [label=[r1:=r1,]>] +"l12" -> "l19" [label=[r1:=r1,]>] +"l12" -> "l11" [label=[r1:=r1,]>] +"l12" -> "l13" [label=] +"l13" -> "l14" [label=] +"l14" -> "l1" [label=[r1:=p1,]>] +"l14" -> "l15" [label=] +"l14" -> "l15" [label=] +"l14" -> "l16" [label=] +"l14" -> "l16" [label=] +"l14" -> "l17" [label=] +"l14" -> "l17" [label=] +"l14" -> "l17" [label=] +"l14" -> "l20" [label=] +"l15" -> "l21" [label=] +"l16" -> "l7" [label=] +"l17" -> "l14" [label=] +"l18" -> "l6" [label=[r1:=r1,]>] +"l19" -> "l6" [label=[r1:=r1,]>] +"l20" -> "l7" [label=] +"l21" -> "l4" [label=] +"l21" -> "l4" [label=] +"l21" -> "l4" [label=] +"l21" -> "l4" [label=] +"l21" -> "l4" [label=] +"l21" -> "l4" [label=] +"l21" -> "l13" [label=] +"l21" -> "l15" [label=] +"l21" -> "l20" [label=] +"l22" -> "l1" [label=[r1:=p1,]>] +"l22" -> "l11" [label=[r1:=r1,]>] +"l22" -> "l11" [label=[r1:=r1,]>] +"l22" -> "l11" [label=[r1:=r1,]>] +"l22" -> "l11" [label=[r1:=r1,]>] +"l22" -> "l11" [label=[r1:=r1,]>] +"l22" -> "l11" [label=[r1:=r1,]>] +"l22" -> "l19" [label=[r1:=r1,]>] +"l22" -> "l11" [label=[r1:=r1,]>] +"l22" -> "l19" [label=[r1:=r1,]>] +} diff --git a/experiments/saved_results/servers/ra/sifis-home_phase_1/hyp8.dot b/experiments/saved_results/servers/ra/sifis-home_phase_1/hyp8.dot new file mode 100644 index 00000000..039ae838 --- /dev/null +++ b/experiments/saved_results/servers/ra/sifis-home_phase_1/hyp8.dot @@ -0,0 +1,111 @@ +digraph RA { +"" [shape=none,label=<>] +"l0" [shape=doublecircle] +"l1" [shape=doublecircle] +"l2" [shape=circle] +"l3" [shape=circle] +"l4" [shape=doublecircle] +"l5" [shape=doublecircle] +"l6" [shape=doublecircle] +"l7" [shape=doublecircle] +"l8" [shape=doublecircle] +"l9" [shape=doublecircle] +"l10" [shape=doublecircle] +"l11" [shape=doublecircle] +"l12" [shape=doublecircle] +"l13" [shape=doublecircle] +"l14" [shape=doublecircle] +"l15" [shape=doublecircle] +"l16" [shape=doublecircle] +"l17" [shape=doublecircle] +"l18" [shape=doublecircle] +"l19" [shape=doublecircle] +"l20" [shape=doublecircle] +"l21" [shape=doublecircle] +"l22" [shape=doublecircle] +"l23" [shape=doublecircle] +"l24" [shape=doublecircle] +"" -> "l0" +"l0" -> "l1" [label=[r1:=p1,]>] +"l0" -> "l4" [label=] +"l0" -> "l5" [label=] +"l0" -> "l10" [label=] +"l0" -> "l10" [label=] +"l0" -> "l10" [label=] +"l0" -> "l10" [label=] +"l0" -> "l10" [label=] +"l0" -> "l11" [label=[r1:=p1,]>] +"l1" -> "l6" [label=[r1:=r1,]>] +"l4" -> "l7" [label=] +"l5" -> "l0" [label=] +"l6" -> "l1" [label=[r1:=p1,]>] +"l6" -> "l8" [label=[r1:=r1,]>] +"l6" -> "l8" [label=[r1:=r1,]>] +"l6" -> "l9" [label=[r1:=r1,]>] +"l6" -> "l9" [label=[r1:=r1,]>] +"l6" -> "l18" [label=[r1:=r1,]>] +"l6" -> "l18" [label=[r1:=r1,]>] +"l6" -> "l18" [label=[r1:=r1,]>] +"l6" -> "l19" [label=[r1:=r1,]>] +"l6" -> "l18" [label=[r1:=r1,]>] +"l7" -> "l1" [label=[r1:=p1,]>] +"l7" -> "l4" [label=] +"l7" -> "l4" [label=] +"l7" -> "l4" [label=] +"l7" -> "l4" [label=] +"l7" -> "l4" [label=] +"l7" -> "l4" [label=] +"l7" -> "l20" [label=] +"l7" -> "l20" [label=] +"l8" -> "l12" [label=[r1:=r1,]>] +"l9" -> "l22" [label=[r1:=r1,]>] +"l10" -> "l0" [label=] +"l11" -> "l22" [label=[r1:=r1,]>] +"l12" -> "l8" [label=[r1:=r1,]>] +"l12" -> "l11" [label=[r1:=r1,]>] +"l12" -> "l11" [label=[r1:=r1,]>] +"l12" -> "l11" [label=[r1:=r1,]>] +"l12" -> "l11" [label=[r1:=r1,]>] +"l12" -> "l11" [label=[r1:=r1,]>] +"l12" -> "l11" [label=[r1:=r1,]>] +"l12" -> "l23" [label=[r1:=r1,]>] +"l12" -> "l11" [label=[r1:=r1,]>] +"l12" -> "l13" [label=] +"l13" -> "l14" [label=] +"l14" -> "l1" [label=[r1:=p1,]>] +"l14" -> "l15" [label=] +"l14" -> "l15" [label=] +"l14" -> "l16" [label=] +"l14" -> "l16" [label=] +"l14" -> "l17" [label=] +"l14" -> "l17" [label=] +"l14" -> "l17" [label=] +"l14" -> "l24" [label=] +"l15" -> "l21" [label=] +"l16" -> "l7" [label=] +"l17" -> "l14" [label=] +"l18" -> "l6" [label=[r1:=r1,]>] +"l19" -> "l6" [label=[r1:=r1,]>] +"l20" -> "l7" [label=] +"l21" -> "l4" [label=] +"l21" -> "l4" [label=] +"l21" -> "l4" [label=] +"l21" -> "l4" [label=] +"l21" -> "l4" [label=] +"l21" -> "l4" [label=] +"l21" -> "l13" [label=] +"l21" -> "l15" [label=] +"l21" -> "l20" [label=] +"l22" -> "l1" [label=[r1:=p1,]>] +"l22" -> "l11" [label=[r1:=r1,]>] +"l22" -> "l11" [label=[r1:=r1,]>] +"l22" -> "l11" [label=[r1:=r1,]>] +"l22" -> "l11" [label=[r1:=r1,]>] +"l22" -> "l11" [label=[r1:=r1,]>] +"l22" -> "l11" [label=[r1:=r1,]>] +"l22" -> "l23" [label=[r1:=r1,]>] +"l22" -> "l11" [label=[r1:=r1,]>] +"l22" -> "l23" [label=[r1:=r1,]>] +"l23" -> "l12" [label=[r1:=r1,]>] +"l24" -> "l14" [label=] +} diff --git a/experiments/saved_results/servers/ra/sifis-home_phase_1/hyp9.dot b/experiments/saved_results/servers/ra/sifis-home_phase_1/hyp9.dot new file mode 100644 index 00000000..8d862a08 --- /dev/null +++ b/experiments/saved_results/servers/ra/sifis-home_phase_1/hyp9.dot @@ -0,0 +1,124 @@ +digraph RA { +"" [shape=none,label=<>] +"l0" [shape=doublecircle] +"l1" [shape=doublecircle] +"l2" [shape=circle] +"l3" [shape=circle] +"l4" [shape=doublecircle] +"l5" [shape=doublecircle] +"l6" [shape=doublecircle] +"l7" [shape=doublecircle] +"l8" [shape=doublecircle] +"l9" [shape=doublecircle] +"l10" [shape=doublecircle] +"l11" [shape=doublecircle] +"l12" [shape=doublecircle] +"l13" [shape=doublecircle] +"l14" [shape=doublecircle] +"l15" [shape=doublecircle] +"l16" [shape=doublecircle] +"l17" [shape=doublecircle] +"l18" [shape=doublecircle] +"l19" [shape=doublecircle] +"l20" [shape=doublecircle] +"l21" [shape=doublecircle] +"l22" [shape=doublecircle] +"l23" [shape=doublecircle] +"l24" [shape=doublecircle] +"l25" [shape=doublecircle] +"l26" [shape=doublecircle] +"" -> "l0" +"l0" -> "l1" [label=[r1:=p1,]>] +"l0" -> "l4" [label=] +"l0" -> "l5" [label=] +"l0" -> "l10" [label=] +"l0" -> "l10" [label=] +"l0" -> "l10" [label=] +"l0" -> "l10" [label=] +"l0" -> "l10" [label=] +"l0" -> "l11" [label=[r1:=p1,]>] +"l1" -> "l6" [label=[r1:=r1,]>] +"l4" -> "l7" [label=] +"l5" -> "l0" [label=] +"l6" -> "l8" [label=[r1:=r1,]>] +"l6" -> "l8" [label=[r1:=r1,]>] +"l6" -> "l9" [label=[r1:=r1,]>] +"l6" -> "l9" [label=[r1:=r1,]>] +"l6" -> "l18" [label=[r1:=r1,]>] +"l6" -> "l18" [label=[r1:=r1,]>] +"l6" -> "l18" [label=[r1:=r1,]>] +"l6" -> "l19" [label=[r1:=r1,]>] +"l6" -> "l18" [label=[r1:=r1,]>] +"l6" -> "l25" [label=[r1:=p1,]>] +"l7" -> "l1" [label=[r1:=p1,]>] +"l7" -> "l4" [label=] +"l7" -> "l4" [label=] +"l7" -> "l4" [label=] +"l7" -> "l4" [label=] +"l7" -> "l4" [label=] +"l7" -> "l4" [label=] +"l7" -> "l20" [label=] +"l7" -> "l20" [label=] +"l8" -> "l12" [label=[r1:=r1,]>] +"l9" -> "l22" [label=[r1:=r1,]>] +"l10" -> "l0" [label=] +"l11" -> "l22" [label=[r1:=r1,]>] +"l12" -> "l8" [label=[r1:=r1,]>] +"l12" -> "l11" [label=[r1:=r1,]>] +"l12" -> "l11" [label=[r1:=r1,]>] +"l12" -> "l11" [label=[r1:=r1,]>] +"l12" -> "l11" [label=[r1:=r1,]>] +"l12" -> "l11" [label=[r1:=r1,]>] +"l12" -> "l11" [label=[r1:=r1,]>] +"l12" -> "l23" [label=[r1:=r1,]>] +"l12" -> "l11" [label=[r1:=r1,]>] +"l12" -> "l13" [label=] +"l13" -> "l14" [label=] +"l14" -> "l15" [label=] +"l14" -> "l15" [label=] +"l14" -> "l16" [label=] +"l14" -> "l16" [label=] +"l14" -> "l17" [label=] +"l14" -> "l17" [label=] +"l14" -> "l17" [label=] +"l14" -> "l24" [label=] +"l14" -> "l25" [label=[r1:=p1,]>] +"l15" -> "l21" [label=] +"l16" -> "l7" [label=] +"l17" -> "l14" [label=] +"l18" -> "l6" [label=[r1:=r1,]>] +"l19" -> "l6" [label=[r1:=r1,]>] +"l20" -> "l7" [label=] +"l21" -> "l4" [label=] +"l21" -> "l4" [label=] +"l21" -> "l4" [label=] +"l21" -> "l4" [label=] +"l21" -> "l4" [label=] +"l21" -> "l4" [label=] +"l21" -> "l13" [label=] +"l21" -> "l15" [label=] +"l21" -> "l20" [label=] +"l22" -> "l1" [label=[r1:=p1,]>] +"l22" -> "l11" [label=[r1:=r1,]>] +"l22" -> "l11" [label=[r1:=r1,]>] +"l22" -> "l11" [label=[r1:=r1,]>] +"l22" -> "l11" [label=[r1:=r1,]>] +"l22" -> "l11" [label=[r1:=r1,]>] +"l22" -> "l11" [label=[r1:=r1,]>] +"l22" -> "l23" [label=[r1:=r1,]>] +"l22" -> "l11" [label=[r1:=r1,]>] +"l22" -> "l23" [label=[r1:=r1,]>] +"l23" -> "l12" [label=[r1:=r1,]>] +"l24" -> "l14" [label=] +"l25" -> "l26" [label=[r1:=r1,]>] +"l26" -> "l8" [label=[r1:=r1,]>] +"l26" -> "l8" [label=[r1:=r1,]>] +"l26" -> "l9" [label=[r1:=r1,]>] +"l26" -> "l9" [label=[r1:=r1,]>] +"l26" -> "l9" [label=[r1:=r1,]>] +"l26" -> "l19" [label=[r1:=r1,]>] +"l26" -> "l17" [label=] +"l26" -> "l17" [label=] +"l26" -> "l17" [label=] +"l26" -> "l25" [label=[r1:=p1,]>] +} diff --git a/experiments/saved_results/servers/ra/sifis-home_phase_1/learnedModel.dot b/experiments/saved_results/servers/ra/sifis-home_phase_1/learnedModel.dot new file mode 100644 index 00000000..beee386f --- /dev/null +++ b/experiments/saved_results/servers/ra/sifis-home_phase_1/learnedModel.dot @@ -0,0 +1,172 @@ +digraph RA { +"" [shape=none,label=<>] +"l0" [shape=doublecircle] +"l1" [shape=doublecircle] +"l2" [shape=circle] +"l3" [shape=circle] +"l4" [shape=doublecircle] +"l5" [shape=doublecircle] +"l6" [shape=doublecircle] +"l7" [shape=doublecircle] +"l8" [shape=doublecircle] +"l9" [shape=doublecircle] +"l10" [shape=doublecircle] +"l11" [shape=doublecircle] +"l12" [shape=doublecircle] +"l13" [shape=doublecircle] +"l14" [shape=doublecircle] +"l15" [shape=doublecircle] +"l16" [shape=doublecircle] +"l17" [shape=doublecircle] +"l18" [shape=doublecircle] +"l19" [shape=doublecircle] +"l20" [shape=doublecircle] +"l21" [shape=doublecircle] +"l22" [shape=doublecircle] +"l23" [shape=doublecircle] +"l24" [shape=doublecircle] +"l25" [shape=doublecircle] +"l26" [shape=doublecircle] +"l27" [shape=doublecircle] +"l28" [shape=doublecircle] +"l29" [shape=doublecircle] +"l30" [shape=doublecircle] +"l31" [shape=doublecircle] +"l32" [shape=doublecircle] +"l33" [shape=doublecircle] +"l34" [shape=doublecircle] +"l35" [shape=doublecircle] +"l36" [shape=doublecircle] +"l37" [shape=doublecircle] +"l38" [shape=doublecircle] +"l39" [shape=doublecircle] +"l40" [shape=doublecircle] +"l41" [shape=doublecircle] +"" -> "l0" +"l0" -> "l1" [label=[r1:=p1,]>] +"l0" -> "l4" [label=] +"l0" -> "l5" [label=] +"l0" -> "l10" [label=] +"l0" -> "l10" [label=] +"l0" -> "l10" [label=] +"l0" -> "l10" [label=] +"l0" -> "l10" [label=] +"l0" -> "l11" [label=[r1:=p1,]>] +"l1" -> "l6" [label=[r1:=r1,]>] +"l4" -> "l7" [label=] +"l5" -> "l0" [label=] +"l6" -> "l8" [label=[r1:=r1,]>] +"l6" -> "l9" [label=[r1:=r1,]>] +"l6" -> "l9" [label=[r1:=r1,]>] +"l6" -> "l18" [label=[r1:=r1,]>] +"l6" -> "l18" [label=[r1:=r1,]>] +"l6" -> "l18" [label=[r1:=r1,]>] +"l6" -> "l19" [label=[r1:=r1,]>] +"l6" -> "l18" [label=[r1:=r1,]>] +"l6" -> "l25" [label=[r1:=p1,]>] +"l6" -> "l29" [label=[r1:=r1,]>] +"l7" -> "l1" [label=[r1:=p1,]>] +"l7" -> "l4" [label=] +"l7" -> "l4" [label=] +"l7" -> "l4" [label=] +"l7" -> "l4" [label=] +"l7" -> "l4" [label=] +"l7" -> "l4" [label=] +"l7" -> "l20" [label=] +"l7" -> "l20" [label=] +"l8" -> "l12" [label=[r1:=r1,]>] +"l9" -> "l22" [label=[r1:=r1,]>] +"l10" -> "l0" [label=] +"l11" -> "l22" [label=[r1:=r1,]>] +"l12" -> "l13" [label=] +"l12" -> "l23" [label=[r1:=r1,]>] +"l12" -> "l32" [label=[r1:=r1,]>] +"l12" -> "l29" [label=[r1:=r1,]>] +"l12" -> "l32" [label=[r1:=r1,]>] +"l12" -> "l32" [label=[r1:=r1,]>] +"l12" -> "l32" [label=[r1:=r1,]>] +"l12" -> "l32" [label=[r1:=r1,]>] +"l12" -> "l32" [label=[r1:=r1,]>] +"l12" -> "l32" [label=[r1:=r1,]>] +"l13" -> "l14" [label=] +"l14" -> "l15" [label=] +"l14" -> "l16" [label=] +"l14" -> "l16" [label=] +"l14" -> "l17" [label=] +"l14" -> "l17" [label=] +"l14" -> "l17" [label=] +"l14" -> "l24" [label=] +"l14" -> "l25" [label=[r1:=p1,]>] +"l14" -> "l30" [label=] +"l15" -> "l21" [label=] +"l16" -> "l7" [label=] +"l17" -> "l14" [label=] +"l18" -> "l6" [label=[r1:=r1,]>] +"l19" -> "l6" [label=[r1:=r1,]>] +"l20" -> "l7" [label=] +"l21" -> "l13" [label=] +"l21" -> "l27" [label=] +"l21" -> "l30" [label=] +"l21" -> "l31" [label=] +"l21" -> "l31" [label=] +"l21" -> "l31" [label=] +"l21" -> "l31" [label=] +"l21" -> "l31" [label=] +"l21" -> "l31" [label=] +"l22" -> "l1" [label=[r1:=p1,]>] +"l22" -> "l11" [label=[r1:=r1,]>] +"l22" -> "l11" [label=[r1:=r1,]>] +"l22" -> "l11" [label=[r1:=r1,]>] +"l22" -> "l11" [label=[r1:=r1,]>] +"l22" -> "l11" [label=[r1:=r1,]>] +"l22" -> "l11" [label=[r1:=r1,]>] +"l22" -> "l28" [label=[r1:=r1,]>] +"l22" -> "l11" [label=[r1:=r1,]>] +"l22" -> "l28" [label=[r1:=r1,]>] +"l23" -> "l12" [label=[r1:=r1,]>] +"l24" -> "l14" [label=] +"l25" -> "l26" [label=[r1:=r1,]>] +"l26" -> "l19" [label=[r1:=r1,]>] +"l26" -> "l33" [label=[r1:=r1,]>] +"l26" -> "l25" [label=[r1:=p1,]>] +"l26" -> "l34" [label=[r1:=r1,]>] +"l26" -> "l34" [label=[r1:=r1,]>] +"l26" -> "l37" [label=[r1:=r1,]>] +"l26" -> "l37" [label=[r1:=r1,]>] +"l26" -> "l37" [label=[r1:=r1,]>] +"l26" -> "l38" [label=[r1:=r1,]>] +"l26" -> "l39" [label=[r1:=r1,]>] +"l27" -> "l21" [label=] +"l28" -> "l22" [label=[r1:=r1,]>] +"l29" -> "l22" [label=[r1:=r1,]>] +"l30" -> "l7" [label=] +"l31" -> "l21" [label=] +"l32" -> "l12" [label=[r1:=r1,]>] +"l33" -> "l6" [label=[r1:=r1,]>] +"l34" -> "l35" [label=[r1:=r1,]>] +"l35" -> "l1" [label=[r1:=p1,]>] +"l35" -> "l9" [label=[r1:=r1,]>] +"l35" -> "l28" [label=[r1:=r1,]>] +"l35" -> "l28" [label=[r1:=r1,]>] +"l35" -> "l36" [label=[r1:=r1,]>] +"l35" -> "l36" [label=[r1:=r1,]>] +"l35" -> "l36" [label=[r1:=r1,]>] +"l35" -> "l36" [label=[r1:=r1,]>] +"l35" -> "l36" [label=[r1:=r1,]>] +"l35" -> "l36" [label=[r1:=r1,]>] +"l36" -> "l35" [label=[r1:=r1,]>] +"l37" -> "l26" [label=[r1:=r1,]>] +"l38" -> "l40" [label=[r1:=r1,]>] +"l39" -> "l35" [label=[r1:=r1,]>] +"l40" -> "l9" [label=[r1:=r1,]>] +"l40" -> "l23" [label=[r1:=r1,]>] +"l40" -> "l13" [label=] +"l40" -> "l39" [label=[r1:=r1,]>] +"l40" -> "l41" [label=[r1:=r1,]>] +"l40" -> "l41" [label=[r1:=r1,]>] +"l40" -> "l41" [label=[r1:=r1,]>] +"l40" -> "l41" [label=[r1:=r1,]>] +"l40" -> "l41" [label=[r1:=r1,]>] +"l40" -> "l41" [label=[r1:=r1,]>] +"l41" -> "l40" [label=[r1:=r1,]>] +} diff --git a/experiments/saved_results/servers/ra/sifis-home_phase_1/learnedModel.pdf b/experiments/saved_results/servers/ra/sifis-home_phase_1/learnedModel.pdf new file mode 100644 index 00000000..df8ae204 Binary files /dev/null and b/experiments/saved_results/servers/ra/sifis-home_phase_1/learnedModel.pdf differ diff --git a/experiments/saved_results/servers/ra/sifis-home_phase_1/learnedModelShortNames.pdf b/experiments/saved_results/servers/ra/sifis-home_phase_1/learnedModelShortNames.pdf new file mode 100644 index 00000000..d6315ca0 Binary files /dev/null and b/experiments/saved_results/servers/ra/sifis-home_phase_1/learnedModelShortNames.pdf differ diff --git a/experiments/saved_results/servers/ra/sifis-home_phase_1/learnedModelbtf.dot b/experiments/saved_results/servers/ra/sifis-home_phase_1/learnedModelbtf.dot new file mode 100644 index 00000000..106ee1bd --- /dev/null +++ b/experiments/saved_results/servers/ra/sifis-home_phase_1/learnedModelbtf.dot @@ -0,0 +1,172 @@ +digraph RA { +"" [shape=none,label=<>] +"l0" [shape=doublecircle] +"l1" [shape=doublecircle] +"l2" [shape=circle] +"l3" [shape=circle] +"l4" [shape=doublecircle] +"l5" [shape=doublecircle] +"l6" [shape=doublecircle] +"l7" [shape=doublecircle] +"l8" [shape=doublecircle] +"l9" [shape=doublecircle] +"l10" [shape=doublecircle] +"l11" [shape=doublecircle] +"l12" [shape=doublecircle] +"l13" [shape=doublecircle] +"l14" [shape=doublecircle] +"l15" [shape=doublecircle] +"l16" [shape=doublecircle] +"l17" [shape=doublecircle] +"l18" [shape=doublecircle] +"l19" [shape=doublecircle] +"l20" [shape=doublecircle] +"l21" [shape=doublecircle] +"l22" [shape=doublecircle] +"l23" [shape=doublecircle] +"l24" [shape=doublecircle] +"l25" [shape=doublecircle] +"l26" [shape=doublecircle] +"l27" [shape=doublecircle] +"l28" [shape=doublecircle] +"l29" [shape=doublecircle] +"l30" [shape=doublecircle] +"l31" [shape=doublecircle] +"l32" [shape=doublecircle] +"l33" [shape=doublecircle] +"l34" [shape=doublecircle] +"l35" [shape=doublecircle] +"l36" [shape=doublecircle] +"l37" [shape=doublecircle] +"l38" [shape=doublecircle] +"l39" [shape=doublecircle] +"l40" [shape=doublecircle] +"l41" [shape=doublecircle] +"" -> "l0" +"l0" -> "l1" [label=[r1:=p1,]>] +"l0" -> "l4" [label=] +"l0" -> "l5" [label=] +"l0" -> "l10" [label=] +"l0" -> "l10" [label=] +"l0" -> "l10" [label=] +"l0" -> "l10" [label=] +"l0" -> "l10" [label=] +"l0" -> "l11" [label=[r1:=p1,]>] +"l1" -> "l6" [label=[r1:=r1,]>] +"l4" -> "l7" [label=] +"l5" -> "l0" [label=] +"l6" -> "l8" [label=[r1:=r1,]>] +"l6" -> "l9" [label=[r1:=r1,]>] +"l6" -> "l9" [label=[r1:=r1,]>] +"l6" -> "l18" [label=[r1:=r1,]>] +"l6" -> "l18" [label=[r1:=r1,]>] +"l6" -> "l18" [label=[r1:=r1,]>] +"l6" -> "l19" [label=[r1:=r1,]>] +"l6" -> "l18" [label=[r1:=r1,]>] +"l6" -> "l25" [label=[r1:=p1,]>] +"l6" -> "l29" [label=[r1:=r1,]>] +"l7" -> "l1" [label=[r1:=p1,]>] +"l7" -> "l4" [label=] +"l7" -> "l4" [label=] +"l7" -> "l4" [label=] +"l7" -> "l4" [label=] +"l7" -> "l4" [label=] +"l7" -> "l4" [label=] +"l7" -> "l20" [label=] +"l7" -> "l20" [label=] +"l8" -> "l12" [label=[r1:=r1,]>] +"l9" -> "l22" [label=[r1:=r1,]>] +"l10" -> "l0" [label=] +"l11" -> "l22" [label=[r1:=r1,]>] +"l12" -> "l13" [label=] +"l12" -> "l23" [label=[r1:=r1,]>] +"l12" -> "l32" [label=[r1:=r1,]>] +"l12" -> "l29" [label=[r1:=r1,]>] +"l12" -> "l32" [label=[r1:=r1,]>] +"l12" -> "l32" [label=[r1:=r1,]>] +"l12" -> "l32" [label=[r1:=r1,]>] +"l12" -> "l32" [label=[r1:=r1,]>] +"l12" -> "l32" [label=[r1:=r1,]>] +"l12" -> "l32" [label=[r1:=r1,]>] +"l13" -> "l14" [label=] +"l14" -> "l15" [label=] +"l14" -> "l16" [label=] +"l14" -> "l16" [label=] +"l14" -> "l17" [label=] +"l14" -> "l17" [label=] +"l14" -> "l17" [label=] +"l14" -> "l24" [label=] +"l14" -> "l25" [label=[r1:=p1,]>] +"l14" -> "l30" [label=] +"l15" -> "l21" [label=] +"l16" -> "l7" [label=] +"l17" -> "l14" [label=] +"l18" -> "l6" [label=[r1:=r1,]>] +"l19" -> "l6" [label=[r1:=r1,]>] +"l20" -> "l7" [label=] +"l21" -> "l13" [label=] +"l21" -> "l27" [label=] +"l21" -> "l30" [label=] +"l21" -> "l31" [label=] +"l21" -> "l31" [label=] +"l21" -> "l31" [label=] +"l21" -> "l31" [label=] +"l21" -> "l31" [label=] +"l21" -> "l31" [label=] +"l22" -> "l1" [label=[r1:=p1,]>] +"l22" -> "l11" [label=[r1:=r1,]>] +"l22" -> "l11" [label=[r1:=r1,]>] +"l22" -> "l11" [label=[r1:=r1,]>] +"l22" -> "l11" [label=[r1:=r1,]>] +"l22" -> "l11" [label=[r1:=r1,]>] +"l22" -> "l11" [label=[r1:=r1,]>] +"l22" -> "l28" [label=[r1:=r1,]>] +"l22" -> "l11" [label=[r1:=r1,]>] +"l22" -> "l28" [label=[r1:=r1,]>] +"l23" -> "l12" [label=[r1:=r1,]>] +"l24" -> "l14" [label=] +"l25" -> "l26" [label=[r1:=r1,]>] +"l26" -> "l19" [label=[r1:=r1,]>] +"l26" -> "l33" [label=[r1:=r1,]>] +"l26" -> "l25" [label=[r1:=p1,]>] +"l26" -> "l34" [label=[r1:=r1,]>] +"l26" -> "l34" [label=[r1:=r1,]>] +"l26" -> "l37" [label=[r1:=r1,]>] +"l26" -> "l37" [label=[r1:=r1,]>] +"l26" -> "l37" [label=[r1:=r1,]>] +"l26" -> "l38" [label=[r1:=r1,]>] +"l26" -> "l39" [label=[r1:=r1,]>] +"l27" -> "l21" [label=] +"l28" -> "l22" [label=[r1:=r1,]>] +"l29" -> "l22" [label=[r1:=r1,]>] +"l30" -> "l7" [label=] +"l31" -> "l21" [label=] +"l32" -> "l12" [label=[r1:=r1,]>] +"l33" -> "l6" [label=[r1:=r1,]>] +"l34" -> "l35" [label=[r1:=r1,]>] +"l35" -> "l1" [label=[r1:=p1,]>] +"l35" -> "l9" [label=[r1:=r1,]>] +"l35" -> "l28" [label=[r1:=r1,]>] +"l35" -> "l28" [label=[r1:=r1,]>] +"l35" -> "l36" [label=[r1:=r1,]>] +"l35" -> "l36" [label=[r1:=r1,]>] +"l35" -> "l36" [label=[r1:=r1,]>] +"l35" -> "l36" [label=[r1:=r1,]>] +"l35" -> "l36" [label=[r1:=r1,]>] +"l35" -> "l36" [label=[r1:=r1,]>] +"l36" -> "l35" [label=[r1:=r1,]>] +"l37" -> "l26" [label=[r1:=r1,]>] +"l38" -> "l40" [label=[r1:=r1,]>] +"l39" -> "l35" [label=[r1:=r1,]>] +"l40" -> "l9" [label=[r1:=r1,]>] +"l40" -> "l23" [label=[r1:=r1,]>] +"l40" -> "l13" [label=] +"l40" -> "l39" [label=[r1:=r1,]>] +"l40" -> "l41" [label=[r1:=r1,]>] +"l40" -> "l41" [label=[r1:=r1,]>] +"l40" -> "l41" [label=[r1:=r1,]>] +"l40" -> "l41" [label=[r1:=r1,]>] +"l40" -> "l41" [label=[r1:=r1,]>] +"l40" -> "l41" [label=[r1:=r1,]>] +"l41" -> "l40" [label=[r1:=r1,]>] +} diff --git a/experiments/saved_results/servers/ra/sifis-home_phase_1/mapper_connection.config b/experiments/saved_results/servers/ra/sifis-home_phase_1/mapper_connection.config new file mode 100644 index 00000000..97827755 --- /dev/null +++ b/experiments/saved_results/servers/ra/sifis-home_phase_1/mapper_connection.config @@ -0,0 +1,153 @@ +# Californium3 CoAP Properties file for EdhocMapper +# +# Random factor for initial CoAP acknowledge timeout. +# Default: 1.5 +COAP.ACK_INIT_RANDOM=1.5 +# Initial CoAP acknowledge timeout. +# Default: 2[s] +# Adjust MAX_ACK_TIMEOUT to add more time +COAP.ACK_TIMEOUT=10[s] +# Scale factor for CoAP acknowledge backoff-timeout. +# Default: 2.0 +COAP.ACK_TIMEOUT_SCALE=2.0 +# Enable automatic failover on "entity too large" response. +# Default: true +COAP.BLOCKWISE_ENTITY_TOO_LARGE_AUTO_FAILOVER=true +# Reuse token for blockwise requests. Ease traceability but may introduce +# vulnerability. +# Default: false +COAP.BLOCKWISE_REUSE_TOKEN=false +# Interval to validate lifetime of blockwise status. +# Default: 5[s] +COAP.BLOCKWISE_STATUS_INTERVAL=5[s] +# Lifetime of blockwise status. +# Default: 5[min] +COAP.BLOCKWISE_STATUS_LIFETIME=5[min] +# Use block2 option strictly, even if block2 is not required. +# Default: false +COAP.BLOCKWISE_STRICT_BLOCK2_OPTION=false +# CoAP port. +# Default: 5683 +COAP.COAP_PORT=5683 +# CoAP DTLS port. +# Default: 5684 +COAP.COAP_SECURE_PORT=5684 +# Congestion-Control algorithm (still experimental). +# [NULL, COCOA, COCOA_STRONG, BASIC_RTO, LINUX_RTO, PEAKHOPPER_RTO]. +# Default: NULL +COAP.CONGESTION_CONTROL_ALGORITHM=NULL +# Crop rotation period. +# Default: 247[s] +COAP.CROP_ROTATION_PERIOD=247[s] +# Deduplicator algorithm. +# [MARK_AND_SWEEP, PEERS_MARK_AND_SWEEP, CROP_ROTATION, NO_DEDUPLICATOR]. +# Default: MARK_AND_SWEEP +COAP.DEDUPLICATOR=MARK_AND_SWEEP +# Automatic replace entries in deduplicator. +# Default: true +COAP.DEDUPLICATOR_AUTO_REPLACE=true +# CoAP maximum exchange lifetime for CON requests. +# Default: 247[s] +COAP.EXCHANGE_LIFETIME=247[s] +# Timespan a multicast server may spread the response. +# Default: 5[s] +COAP.LEISURE=5[s] +# Mark and sweep interval. +# Default: 10[s] +COAP.MARK_AND_SWEEP_INTERVAL=10[s] +# Maximum CoAP acknowledge timeout. +# Default: 1[min] +# Should be: ACK_TIMEOUT <= MAX_ACK_TIMEOUT +COAP.MAX_ACK_TIMEOUT=10[s] +# Maximum number of active peers. +# Default: 150000 +COAP.MAX_ACTIVE_PEERS=150000 +# Maximum transmission latency for messages. +# Default: 100[s] +COAP.MAX_LATENCY=100[s] +# Maximum payload size. +# Default: 1024 +COAP.MAX_MESSAGE_SIZE=1024 +# Maximum inactive period of peer. +# Default: 10[min] +COAP.MAX_PEER_INACTIVITY_PERIOD=10[min] +# Maximum size of resource body. 0 to disable transparent blockwise +# mode. +# Default: 8192 +COAP.MAX_RESOURCE_BODY_SIZE=8192 +# Maximum number of CoAP retransmissions. +# Default: 4 +# Should be >= 0 (0: no retransmissions) +COAP.MAX_RETRANSMIT=0 +# Maximum number of observes on server-side. 0 to disable this limitation. +# Default: 50000 +COAP.MAX_SERVER_OBSERVES=50000 +# Maximum server response delay. +# Default: 250[s] +COAP.MAX_SERVER_RESPONSE_DELAY=250[s] +# Maximum time to wait for ACK or RST after the first transmission of +# a CON message. +# Default: 93[s] +COAP.MAX_TRANSMIT_WAIT=93[s] +# MID tracker. +# [NULL, GROUPED, MAPBASED]. +# Default: GROUPED +COAP.MID_TACKER=GROUPED +# Number of MID tracker groups. +# Default: 16 +COAP.MID_TRACKER_GROUPS=16 +# Base MID for multicast requests. +# Default: 65000 +COAP.MULTICAST_BASE_MID=65000 +# CoAP maximum lifetime for NON requests. +# Default: 145[s] +COAP.NON_LIFETIME=145[s] +# Interval time to check notifications receiver using a CON message. +# Default: 2[min] +COAP.NOTIFICATION_CHECK_INTERVAL=2[min] +# Interval counter to check notifications receiver using a CON message. +# Default: 100 +COAP.NOTIFICATION_CHECK_INTERVAL_COUNT=100 +# Additional time (backoff) to the max-age option +# for waiting for the next notification before reregister. +# Default: 2[s] +COAP.NOTIFICATION_REREGISTRATION_BACKOFF=2[s] +# Maximum concurrent transmissions. +# Default: 1 +COAP.NSTART=1 +# Maximum messages kept per peer for PEERS_MARK_AND_SWEEP. +# Default: 64 +COAP.PEERS_MARK_AND_SWEEP_MESSAGES=64 +# Preferred blocksize for blockwise transfer. +# Default: 512 +COAP.PREFERRED_BLOCK_SIZE=512 +# Probing rate to peers, which didn't response before. Currently not +# used. +# Default: 1.0 +COAP.PROBING_RATE=1.0 +# Protocol stage thread count. +# Default: 1 +COAP.PROTOCOL_STAGE_THREAD_COUNT=1 +# Response matching mode. +# [STRICT, RELAXED, PRINCIPAL, PRINCIPAL_IDENTITY]. +# Default: STRICT +COAP.RESPONSE_MATCHING=STRICT +# Process empty messages strictly according RFC7252, 4.1 as format error. +# Disable to ignore additional data as tokens or options. +# Default: true +COAP.STRICT_EMPTY_MESSAGE_FORMAT=false +# Number of block per TCP-blockwise bulk transfer. +# Default: 1 +COAP.TCP_NUMBER_OF_BULK_BLOCKS=1 +# Limit of token size. +# Default: 8 +COAP.TOKEN_SIZE_LIMIT=8 +# Use message off-loading, when data is not longer required. +# Default: false +COAP.USE_MESSAGE_OFFLOADING=false +# Use initially a random value for MID. +# Default: true +COAP.USE_RANDOM_MID_START=true +# Health status interval. 0 to disable the health status. +# Default: 0[ms] +SYS.HEALTH_STATUS_INTERVAL=0[ms] diff --git a/experiments/saved_results/servers/ra/sifis-home_phase_1/statistics.txt b/experiments/saved_results/servers/ra/sifis-home_phase_1/statistics.txt new file mode 100644 index 00000000..fd97fa9f --- /dev/null +++ b/experiments/saved_results/servers/ra/sifis-home_phase_1/statistics.txt @@ -0,0 +1,132 @@ +=== RUN DESCRIPTION === +Alphabet: [?EDHOC_MESSAGE_1_INPUT[C_I], !EDHOC_MESSAGE_1_OUTPUT[C_I], !EDHOC_MESSAGE_2_OUTPUT[], ?EDHOC_MESSAGE_3_INPUT[], !EDHOC_MESSAGE_3_OUTPUT[], !EDHOC_MESSAGE_4_OUTPUT[], !UNSUCCESSFUL_MESSAGE[], !COAP_EMPTY_MESSAGE_OUTPUT[], !EDHOC_MESSAGE_3_OSCORE_APP_OUTPUT[C_I], ?EDHOC_ERROR_MESSAGE_INPUT[], !COAP_APP_MESSAGE_OUTPUT[], !COAP_MESSAGE_OUTPUT[], !COAP_ERROR_MESSAGE_OUTPUT[], ?COAP_APP_MESSAGE_INPUT[], ?COAP_EMPTY_MESSAGE_INPUT[], !OSCORE_APP_MESSAGE_OUTPUT[], !SOCKET_CLOSED[], !EDHOC_ERROR_MESSAGE_OUTPUT[], ?EDHOC_MESSAGE_2_INPUT[], !DISABLED[], ?EDHOC_MESSAGE_4_INPUT[], !UNSUPPORTED_MESSAGE[], !TIMEOUT[], !UNKNOWN[], ?EDHOC_MESSAGE_3_OSCORE_APP_INPUT[C_I], ?OSCORE_APP_MESSAGE_INPUT[]] + +StateFuzzerConfig Parameters +Help: false +Debug: false +Quiet: false +Output Directory: experiments/results/servers/ra/sifis-home_phase_1 +Fuzzing Client: false + +LearnerConfigStandard Parameters +Alphabet: ./src/main/resources/alphabet_placeholder.xml +Learning Algorithm: RASTAR +Equivalence Algorithms: [IO_RANDOM_WALK] +Max Depth: 1 +Min Length: 5 +Max Length: 15 +Max Equivalence Queries: 1000 +Runs Per Membership Query: 1 +Random Length: 5 +Membership Query Retries: 3 +Log Queries: true +Prob Reset: 0.0 +Test File: null +Seed: 7 +Cache Tests: false +Ce Sanitization: true +Skip Non Det Tests: false +Ce Reruns: 3 +Probabilistic Sanitization: true +Time Limit: null +Test Limit: null +Round Limit: null +IOMode: true +Probability of Choosing a New DataValue: 0.5 +Max Runs: 10000 +Max Depth for Register Automata: 4 +Reset Runs: false +Seed transitions: false +Draw symbols uniformly: false + +SulConfig Parameters +Fuzzing Role: client +Fuzzing Client: true +Response Wait: 100 +Input Response Timeout: null +Command: null +Terminate Command: null +Process Dir: null +Redirect Output Streams: false +Process Trigger: NEW_TEST +Start Wait: 0 + +SulServerConfigStandard Parameters +Connect to: localhost:5694 + +MapperConfig Parameters +Mapper Connection Config: null +Repeating Outputs: null +Socket Closed as Timeout: true +Disabled as Timeout: false +Merge Repeating: true + +EdhocMapperConfig Parameters +Protocol Version: v22 +Combined Message Version: v07 +Edhoc Role: Initiator +Edhoc Coap Resource: .well-known/edhoc +App Coap Resource: light +App Message Code To Coap Server: POST +App Message Payload To Coap Server: 1 +App Message Code To Coap Client: CHANGED +App Message Payload To Coap Client: Server Application Data +Coap Error As Edhoc Error: false +use Content Format: true +use Session Reset: false +use CX Correlation: true +Own Connection Id: 36 +Generate Own Connection Id: true +Force Oscore Sender Id: null +Force Oscore Recipient Id: null + +AuthenticationConfig Parameters +Map Cred Type: X509 +Map Id Cred Type: X5T +Sul Cred Type: X509 +Sul Id Cred Type: X5T +Trust Model: STRICT + +TestVectorAuthenticationConfig Parameters +Test Vector File: experiments/authentication/test_vectors/test_vectors_sifis_home.json +Test Vector Key: test_vector_ed25519_phases_1_3 +Test Vector Peer Key Curve: Ed25519 + +SulAdapterConfig Parameters +Adapter Port: null +Adapter Address: localhost + +=== STATISTICS === +Learning finished: true +Size of the input alphabet: 26 +Number of states: 42 +Number of hypotheses: 16 +Number of inputs: 46482 +Number of tests: 11665 +Number of learning inputs: 6489 +Number of learning tests: 1665 +Number of inputs up to last hypothesis: 29994 +Number of tests up to last hypothesis: 7543 +Time (ms) to learn model: 13819934 +Counterexamples: +CE 1:Query[ε|EDHOC_MESSAGE_4_INPUT[] COAP_ERROR_MESSAGE_OUTPUT[] COAP_EMPTY_MESSAGE_INPUT[] COAP_ERROR_MESSAGE_OUTPUT[] EDHOC_MESSAGE_3_OSCORE_APP_INPUT[0[C_I]] COAP_ERROR_MESSAGE_OUTPUT[] EDHOC_MESSAGE_3_OSCORE_APP_INPUT[1[C_I]] TIMEOUT[] / true] +CE 2:Query[ε|EDHOC_MESSAGE_2_INPUT[] COAP_ERROR_MESSAGE_OUTPUT[] EDHOC_MESSAGE_3_OSCORE_APP_INPUT[0[C_I]] COAP_ERROR_MESSAGE_OUTPUT[] / true] +CE 3:Query[ε|EDHOC_MESSAGE_3_OSCORE_APP_INPUT[0[C_I]] COAP_ERROR_MESSAGE_OUTPUT[] EDHOC_MESSAGE_2_INPUT[] COAP_ERROR_MESSAGE_OUTPUT[] / true] +CE 4:Query[ε|EDHOC_MESSAGE_1_INPUT[0[C_I]] EDHOC_MESSAGE_2_OUTPUT[] COAP_APP_MESSAGE_INPUT[] COAP_ERROR_MESSAGE_OUTPUT[] EDHOC_MESSAGE_4_INPUT[] EDHOC_ERROR_MESSAGE_OUTPUT[] / true] +CE 5:Query[ε|EDHOC_MESSAGE_3_OSCORE_APP_INPUT[0[C_I]] COAP_ERROR_MESSAGE_OUTPUT[] COAP_EMPTY_MESSAGE_INPUT[] COAP_ERROR_MESSAGE_OUTPUT[] EDHOC_MESSAGE_3_OSCORE_APP_INPUT[1[C_I]] TIMEOUT[] EDHOC_MESSAGE_3_OSCORE_APP_INPUT[1[C_I]] TIMEOUT[] / true] +CE 6:Query[ε|EDHOC_ERROR_MESSAGE_INPUT[] TIMEOUT[] EDHOC_MESSAGE_3_OSCORE_APP_INPUT[0[C_I]] COAP_ERROR_MESSAGE_OUTPUT[] EDHOC_ERROR_MESSAGE_INPUT[] TIMEOUT[] / true] +CE 7:Query[ε|EDHOC_MESSAGE_3_OSCORE_APP_INPUT[0[C_I]] COAP_ERROR_MESSAGE_OUTPUT[] COAP_APP_MESSAGE_INPUT[] COAP_ERROR_MESSAGE_OUTPUT[] EDHOC_ERROR_MESSAGE_INPUT[] TIMEOUT[] EDHOC_MESSAGE_4_INPUT[] COAP_ERROR_MESSAGE_OUTPUT[] / true] +CE 8:Query[ε|EDHOC_MESSAGE_1_INPUT[0[C_I]] EDHOC_MESSAGE_2_OUTPUT[] EDHOC_MESSAGE_1_INPUT[0[C_I]] EDHOC_MESSAGE_2_OUTPUT[] COAP_EMPTY_MESSAGE_INPUT[] COAP_ERROR_MESSAGE_OUTPUT[] EDHOC_MESSAGE_3_OSCORE_APP_INPUT[0[C_I]] EDHOC_ERROR_MESSAGE_OUTPUT[] / true] +CE 9:Query[ε|EDHOC_MESSAGE_3_OSCORE_APP_INPUT[0[C_I]] COAP_ERROR_MESSAGE_OUTPUT[] EDHOC_MESSAGE_3_OSCORE_APP_INPUT[1[C_I]] TIMEOUT[] EDHOC_ERROR_MESSAGE_INPUT[] TIMEOUT[] / true] +CE 10:Query[ε|EDHOC_MESSAGE_1_INPUT[0[C_I]] EDHOC_MESSAGE_2_OUTPUT[] COAP_APP_MESSAGE_INPUT[] COAP_ERROR_MESSAGE_OUTPUT[] EDHOC_ERROR_MESSAGE_INPUT[] COAP_EMPTY_MESSAGE_OUTPUT[] EDHOC_ERROR_MESSAGE_INPUT[] TIMEOUT[] / true] +CE 11:Query[ε|EDHOC_MESSAGE_1_INPUT[0[C_I]] EDHOC_MESSAGE_2_OUTPUT[] EDHOC_MESSAGE_3_INPUT[] COAP_EMPTY_MESSAGE_OUTPUT[] EDHOC_MESSAGE_4_INPUT[] COAP_ERROR_MESSAGE_OUTPUT[] EDHOC_ERROR_MESSAGE_INPUT[] COAP_EMPTY_MESSAGE_OUTPUT[] / true] +CE 12:Query[ε|EDHOC_MESSAGE_1_INPUT[0[C_I]] EDHOC_MESSAGE_2_OUTPUT[] EDHOC_MESSAGE_1_INPUT[0[C_I]] EDHOC_MESSAGE_2_OUTPUT[] EDHOC_MESSAGE_3_OSCORE_APP_INPUT[0[C_I]] EDHOC_ERROR_MESSAGE_OUTPUT[] EDHOC_MESSAGE_4_INPUT[] EDHOC_ERROR_MESSAGE_OUTPUT[] / true] +CE 13:Query[ε|EDHOC_MESSAGE_1_INPUT[0[C_I]] EDHOC_MESSAGE_2_OUTPUT[] EDHOC_MESSAGE_1_INPUT[1[C_I]] EDHOC_MESSAGE_2_OUTPUT[] EDHOC_MESSAGE_4_INPUT[] EDHOC_ERROR_MESSAGE_OUTPUT[] EDHOC_MESSAGE_3_OSCORE_APP_INPUT[1[C_I]] EDHOC_ERROR_MESSAGE_OUTPUT[] / true] +CE 14:Query[ε|EDHOC_MESSAGE_1_INPUT[0[C_I]] EDHOC_MESSAGE_2_OUTPUT[] EDHOC_MESSAGE_1_INPUT[0[C_I]] EDHOC_MESSAGE_2_OUTPUT[] COAP_EMPTY_MESSAGE_INPUT[] COAP_ERROR_MESSAGE_OUTPUT[] EDHOC_MESSAGE_3_OSCORE_APP_INPUT[0[C_I]] EDHOC_ERROR_MESSAGE_OUTPUT[] / true] +CE 15:Query[ε|EDHOC_MESSAGE_1_INPUT[0[C_I]] EDHOC_MESSAGE_2_OUTPUT[] EDHOC_MESSAGE_1_INPUT[0[C_I]] EDHOC_MESSAGE_2_OUTPUT[] EDHOC_MESSAGE_3_INPUT[] COAP_EMPTY_MESSAGE_OUTPUT[] EDHOC_MESSAGE_3_OSCORE_APP_INPUT[0[C_I]] EDHOC_ERROR_MESSAGE_OUTPUT[] / true] +Number of inputs when hypothesis was generated: [27, 280, 461, 1306, 1634, 1848, 3093, 3360, 4016, 4382, 4967, 9586, 13503, 15000, 17993, 29994] +Number of tests when hypothesis was generated: [27, 136, 205, 410, 511, 575, 843, 915, 1094, 1188, 1338, 2498, 3481, 3823, 4575, 7543] +Time (ms) when hypothesis was generated: [25091, 143795, 221057, 479728, 573482, 680462, 1036584, 1131784, 1358846, 1482714, 1661585, 3023182, 4161999, 4589182, 5477949, 9001809] +Number of inputs when counterexample was found: [31, 290, 475, 1337, 1638, 1863, 3165, 3452, 4259, 4838, 9067, 13362, 14139, 17924, 29121] +Number of tests when counterexample was found: [28, 139, 209, 418, 512, 579, 861, 938, 1155, 1302, 2363, 3442, 3640, 4554, 7357] +Time (ms) when counterexample was found: [26443, 146342, 226046, 487611, 575331, 685442, 1056810, 1162003, 1431520, 1616081, 2869622, 4122003, 4343425, 5455747, 8767257] diff --git a/experiments/saved_results/servers/ra/uoscore-uedhoc_linux_edhoc_oscore/command.args b/experiments/saved_results/servers/ra/uoscore-uedhoc_linux_edhoc_oscore/command.args new file mode 100644 index 00000000..245aa527 --- /dev/null +++ b/experiments/saved_results/servers/ra/uoscore-uedhoc_linux_edhoc_oscore/command.args @@ -0,0 +1,84 @@ +state-fuzzer-server + + +##### StateFuzzerConfig ##### +-output +${results.learning.servers.ra}/uoscore-uedhoc_linux_edhoc_oscore + + +##### LearnerConfig ##### +-learningAlgorithm +RaStar +-equivalenceAlgorithms +IO_RANDOM_WALK +-logQueries +-alphabet +./src/main/resources/alphabet_placeholder.xml +-maxDepthRA +4 +-probNewDataValue +0.5 +-seed +7 +-timeLimit +PT5H45M + + +##### EdhocMapperConfig ##### +-protocolVersion +v16 +## Mapper Auth ## + +-mapCredType +X509 + +-mapIdCredType +X5T + +## Sul Auth ## + +-sulCredType +X509 + +-sulIdCredType +X5T + +# TestVector +-testVectorJson +${authentication.test_vectors}/test_vectors_v16_p256.json + +-testVectorJsonKey +test_vector_1 + +-testVectorPeerKeyCurve +P256 + +-edhocRole +Initiator + +-appCoapResource +tv1 + +-disableCXCorrelation + +-forceOscoreSenderId +[] + +-forceOscoreRecipientId +01 + + +##### SulConfig ##### +-responseWait +3000 +-processDir +${models.servers}/uoscore-uedhoc +-cmd +./linux-edhoc-oscore-responder-server +-startWait +50 + + +##### EdhocSulServerConfig ##### +-connect +localhost:5683 diff --git a/experiments/saved_results/servers/ra/uoscore-uedhoc_linux_edhoc_oscore/hyp1.dot b/experiments/saved_results/servers/ra/uoscore-uedhoc_linux_edhoc_oscore/hyp1.dot new file mode 100644 index 00000000..fb8ed139 --- /dev/null +++ b/experiments/saved_results/servers/ra/uoscore-uedhoc_linux_edhoc_oscore/hyp1.dot @@ -0,0 +1,20 @@ +digraph RA { +"" [shape=none,label=<>] +"l0" [shape=doublecircle] +"l1" [shape=doublecircle] +"l2" [shape=circle] +"l3" [shape=circle] +"l4" [shape=doublecircle] +"" -> "l0" +"l0" -> "l1" [label=] +"l0" -> "l4" [label=] +"l0" -> "l4" [label=] +"l0" -> "l4" [label=] +"l0" -> "l4" [label=] +"l0" -> "l4" [label=] +"l0" -> "l4" [label=] +"l0" -> "l4" [label=] +"l0" -> "l4" [label=] +"l1" -> "l0" [label=] +"l4" -> "l0" [label=] +} diff --git a/experiments/saved_results/servers/ra/uoscore-uedhoc_linux_edhoc_oscore/hyp2.dot b/experiments/saved_results/servers/ra/uoscore-uedhoc_linux_edhoc_oscore/hyp2.dot new file mode 100644 index 00000000..b20ecdbb --- /dev/null +++ b/experiments/saved_results/servers/ra/uoscore-uedhoc_linux_edhoc_oscore/hyp2.dot @@ -0,0 +1,32 @@ +digraph RA { +"" [shape=none,label=<>] +"l0" [shape=doublecircle] +"l1" [shape=doublecircle] +"l2" [shape=circle] +"l3" [shape=circle] +"l4" [shape=doublecircle] +"l5" [shape=doublecircle] +"l6" [shape=doublecircle] +"" -> "l0" +"l0" -> "l1" [label=] +"l0" -> "l4" [label=] +"l0" -> "l4" [label=] +"l0" -> "l4" [label=] +"l0" -> "l4" [label=] +"l0" -> "l4" [label=] +"l0" -> "l4" [label=] +"l0" -> "l4" [label=] +"l0" -> "l4" [label=] +"l1" -> "l0" [label=] +"l4" -> "l5" [label=] +"l5" -> "l6" [label=] +"l5" -> "l6" [label=] +"l5" -> "l6" [label=] +"l5" -> "l6" [label=] +"l5" -> "l6" [label=] +"l5" -> "l6" [label=] +"l5" -> "l6" [label=] +"l5" -> "l6" [label=] +"l5" -> "l6" [label=] +"l6" -> "l5" [label=] +} diff --git a/experiments/saved_results/servers/ra/uoscore-uedhoc_linux_edhoc_oscore/hyp3.dot b/experiments/saved_results/servers/ra/uoscore-uedhoc_linux_edhoc_oscore/hyp3.dot new file mode 100644 index 00000000..69e83d6f --- /dev/null +++ b/experiments/saved_results/servers/ra/uoscore-uedhoc_linux_edhoc_oscore/hyp3.dot @@ -0,0 +1,42 @@ +digraph RA { +"" [shape=none,label=<>] +"l0" [shape=doublecircle] +"l1" [shape=doublecircle] +"l2" [shape=circle] +"l3" [shape=circle] +"l4" [shape=doublecircle] +"l5" [shape=doublecircle] +"l6" [shape=doublecircle] +"l7" [shape=doublecircle] +"" -> "l0" +"l0" -> "l1" [label=] +"l0" -> "l4" [label=] +"l0" -> "l4" [label=] +"l0" -> "l4" [label=] +"l0" -> "l4" [label=] +"l0" -> "l4" [label=] +"l0" -> "l4" [label=] +"l0" -> "l4" [label=] +"l0" -> "l4" [label=] +"l1" -> "l7" [label=] +"l4" -> "l5" [label=] +"l5" -> "l6" [label=] +"l5" -> "l6" [label=] +"l5" -> "l6" [label=] +"l5" -> "l6" [label=] +"l5" -> "l6" [label=] +"l5" -> "l6" [label=] +"l5" -> "l6" [label=] +"l5" -> "l6" [label=] +"l5" -> "l6" [label=] +"l6" -> "l5" [label=] +"l7" -> "l4" [label=] +"l7" -> "l4" [label=] +"l7" -> "l4" [label=] +"l7" -> "l4" [label=] +"l7" -> "l4" [label=] +"l7" -> "l4" [label=] +"l7" -> "l4" [label=] +"l7" -> "l4" [label=] +"l7" -> "l4" [label=] +} diff --git a/experiments/saved_results/servers/ra/uoscore-uedhoc_linux_edhoc_oscore/hyp4.dot b/experiments/saved_results/servers/ra/uoscore-uedhoc_linux_edhoc_oscore/hyp4.dot new file mode 100644 index 00000000..1b9c4c6a --- /dev/null +++ b/experiments/saved_results/servers/ra/uoscore-uedhoc_linux_edhoc_oscore/hyp4.dot @@ -0,0 +1,58 @@ +digraph RA { +"" [shape=none,label=<>] +"l0" [shape=doublecircle] +"l1" [shape=doublecircle] +"l2" [shape=circle] +"l3" [shape=circle] +"l4" [shape=doublecircle] +"l5" [shape=doublecircle] +"l6" [shape=doublecircle] +"l7" [shape=doublecircle] +"l8" [shape=doublecircle] +"l9" [shape=doublecircle] +"l10" [shape=doublecircle] +"l11" [shape=doublecircle] +"" -> "l0" +"l0" -> "l1" [label=] +"l0" -> "l4" [label=] +"l0" -> "l4" [label=] +"l0" -> "l4" [label=] +"l0" -> "l4" [label=] +"l0" -> "l4" [label=] +"l0" -> "l4" [label=] +"l0" -> "l4" [label=] +"l0" -> "l4" [label=] +"l1" -> "l7" [label=] +"l4" -> "l5" [label=] +"l5" -> "l6" [label=] +"l5" -> "l6" [label=] +"l5" -> "l6" [label=] +"l5" -> "l6" [label=] +"l5" -> "l6" [label=] +"l5" -> "l6" [label=] +"l5" -> "l6" [label=] +"l5" -> "l6" [label=] +"l5" -> "l6" [label=] +"l6" -> "l5" [label=] +"l7" -> "l4" [label=] +"l7" -> "l4" [label=] +"l7" -> "l4" [label=] +"l7" -> "l4" [label=] +"l7" -> "l4" [label=] +"l7" -> "l4" [label=] +"l7" -> "l4" [label=] +"l7" -> "l4" [label=] +"l7" -> "l8" [label=] +"l8" -> "l9" [label=] +"l9" -> "l8" [label=] +"l9" -> "l8" [label=] +"l9" -> "l10" [label=] +"l9" -> "l10" [label=] +"l9" -> "l10" [label=] +"l9" -> "l10" [label=] +"l9" -> "l10" [label=] +"l9" -> "l10" [label=] +"l9" -> "l11" [label=] +"l10" -> "l9" [label=] +"l11" -> "l9" [label=] +} diff --git a/experiments/saved_results/servers/ra/uoscore-uedhoc_linux_edhoc_oscore/hyp5.dot b/experiments/saved_results/servers/ra/uoscore-uedhoc_linux_edhoc_oscore/hyp5.dot new file mode 100644 index 00000000..c88a87eb --- /dev/null +++ b/experiments/saved_results/servers/ra/uoscore-uedhoc_linux_edhoc_oscore/hyp5.dot @@ -0,0 +1,61 @@ +digraph RA { +"" [shape=none,label=<>] +"l0" [shape=doublecircle] +"l1" [shape=doublecircle] +"l2" [shape=circle] +"l3" [shape=circle] +"l4" [shape=doublecircle] +"l5" [shape=doublecircle] +"l6" [shape=doublecircle] +"l7" [shape=doublecircle] +"l8" [shape=doublecircle] +"l9" [shape=doublecircle] +"l10" [shape=doublecircle] +"l11" [shape=doublecircle] +"l12" [shape=doublecircle] +"" -> "l0" +"l0" -> "l1" [label=[r1:=p1,]>] +"l0" -> "l4" [label=] +"l0" -> "l4" [label=] +"l0" -> "l4" [label=] +"l0" -> "l4" [label=] +"l0" -> "l4" [label=] +"l0" -> "l4" [label=] +"l0" -> "l4" [label=] +"l0" -> "l4" [label=] +"l1" -> "l7" [label=[r1:=r1,]>] +"l4" -> "l5" [label=] +"l5" -> "l6" [label=] +"l5" -> "l6" [label=] +"l5" -> "l6" [label=] +"l5" -> "l6" [label=] +"l5" -> "l6" [label=] +"l5" -> "l6" [label=] +"l5" -> "l6" [label=] +"l5" -> "l6" [label=] +"l5" -> "l6" [label=] +"l6" -> "l5" [label=] +"l7" -> "l4" [label=] +"l7" -> "l4" [label=] +"l7" -> "l4" [label=] +"l7" -> "l4" [label=] +"l7" -> "l4" [label=] +"l7" -> "l4" [label=] +"l7" -> "l4" [label=] +"l7" -> "l4" [label=] +"l7" -> "l12" [label=[r1:=r1,]>] +"l7" -> "l8" [label=] +"l8" -> "l9" [label=] +"l9" -> "l8" [label=] +"l9" -> "l8" [label=] +"l9" -> "l10" [label=] +"l9" -> "l10" [label=] +"l9" -> "l10" [label=] +"l9" -> "l10" [label=] +"l9" -> "l10" [label=] +"l9" -> "l10" [label=] +"l9" -> "l11" [label=] +"l10" -> "l9" [label=] +"l11" -> "l9" [label=] +"l12" -> "l7" [label=[r1:=r1,]>] +} diff --git a/experiments/saved_results/servers/ra/uoscore-uedhoc_linux_edhoc_oscore/learnedModel.dot b/experiments/saved_results/servers/ra/uoscore-uedhoc_linux_edhoc_oscore/learnedModel.dot new file mode 100644 index 00000000..c88a87eb --- /dev/null +++ b/experiments/saved_results/servers/ra/uoscore-uedhoc_linux_edhoc_oscore/learnedModel.dot @@ -0,0 +1,61 @@ +digraph RA { +"" [shape=none,label=<>] +"l0" [shape=doublecircle] +"l1" [shape=doublecircle] +"l2" [shape=circle] +"l3" [shape=circle] +"l4" [shape=doublecircle] +"l5" [shape=doublecircle] +"l6" [shape=doublecircle] +"l7" [shape=doublecircle] +"l8" [shape=doublecircle] +"l9" [shape=doublecircle] +"l10" [shape=doublecircle] +"l11" [shape=doublecircle] +"l12" [shape=doublecircle] +"" -> "l0" +"l0" -> "l1" [label=[r1:=p1,]>] +"l0" -> "l4" [label=] +"l0" -> "l4" [label=] +"l0" -> "l4" [label=] +"l0" -> "l4" [label=] +"l0" -> "l4" [label=] +"l0" -> "l4" [label=] +"l0" -> "l4" [label=] +"l0" -> "l4" [label=] +"l1" -> "l7" [label=[r1:=r1,]>] +"l4" -> "l5" [label=] +"l5" -> "l6" [label=] +"l5" -> "l6" [label=] +"l5" -> "l6" [label=] +"l5" -> "l6" [label=] +"l5" -> "l6" [label=] +"l5" -> "l6" [label=] +"l5" -> "l6" [label=] +"l5" -> "l6" [label=] +"l5" -> "l6" [label=] +"l6" -> "l5" [label=] +"l7" -> "l4" [label=] +"l7" -> "l4" [label=] +"l7" -> "l4" [label=] +"l7" -> "l4" [label=] +"l7" -> "l4" [label=] +"l7" -> "l4" [label=] +"l7" -> "l4" [label=] +"l7" -> "l4" [label=] +"l7" -> "l12" [label=[r1:=r1,]>] +"l7" -> "l8" [label=] +"l8" -> "l9" [label=] +"l9" -> "l8" [label=] +"l9" -> "l8" [label=] +"l9" -> "l10" [label=] +"l9" -> "l10" [label=] +"l9" -> "l10" [label=] +"l9" -> "l10" [label=] +"l9" -> "l10" [label=] +"l9" -> "l10" [label=] +"l9" -> "l11" [label=] +"l10" -> "l9" [label=] +"l11" -> "l9" [label=] +"l12" -> "l7" [label=[r1:=r1,]>] +} diff --git a/experiments/saved_results/servers/ra/uoscore-uedhoc_linux_edhoc_oscore/learnedModel.pdf b/experiments/saved_results/servers/ra/uoscore-uedhoc_linux_edhoc_oscore/learnedModel.pdf new file mode 100644 index 00000000..30cd134a Binary files /dev/null and b/experiments/saved_results/servers/ra/uoscore-uedhoc_linux_edhoc_oscore/learnedModel.pdf differ diff --git a/experiments/saved_results/servers/ra/uoscore-uedhoc_linux_edhoc_oscore/learnedModelShortNames.pdf b/experiments/saved_results/servers/ra/uoscore-uedhoc_linux_edhoc_oscore/learnedModelShortNames.pdf new file mode 100644 index 00000000..8250098b Binary files /dev/null and b/experiments/saved_results/servers/ra/uoscore-uedhoc_linux_edhoc_oscore/learnedModelShortNames.pdf differ diff --git a/experiments/saved_results/servers/ra/uoscore-uedhoc_linux_edhoc_oscore/learnedModelbtf.dot b/experiments/saved_results/servers/ra/uoscore-uedhoc_linux_edhoc_oscore/learnedModelbtf.dot new file mode 100644 index 00000000..ff8678a1 --- /dev/null +++ b/experiments/saved_results/servers/ra/uoscore-uedhoc_linux_edhoc_oscore/learnedModelbtf.dot @@ -0,0 +1,61 @@ +digraph RA { +"" [shape=none,label=<>] +"l0" [shape=doublecircle] +"l1" [shape=doublecircle] +"l2" [shape=circle] +"l3" [shape=circle] +"l4" [shape=doublecircle] +"l5" [shape=doublecircle] +"l6" [shape=doublecircle] +"l7" [shape=doublecircle] +"l8" [shape=doublecircle] +"l9" [shape=doublecircle] +"l10" [shape=doublecircle] +"l11" [shape=doublecircle] +"l12" [shape=doublecircle] +"" -> "l0" +"l0" -> "l1" [label=[r1:=p1,]>] +"l0" -> "l4" [label=] +"l0" -> "l4" [label=] +"l0" -> "l4" [label=] +"l0" -> "l4" [label=] +"l0" -> "l4" [label=] +"l0" -> "l4" [label=] +"l0" -> "l4" [label=] +"l0" -> "l4" [label=] +"l1" -> "l7" [label=[r1:=r1,]>] +"l4" -> "l5" [label=] +"l5" -> "l6" [label=] +"l5" -> "l6" [label=] +"l5" -> "l6" [label=] +"l5" -> "l6" [label=] +"l5" -> "l6" [label=] +"l5" -> "l6" [label=] +"l5" -> "l6" [label=] +"l5" -> "l6" [label=] +"l5" -> "l6" [label=] +"l6" -> "l5" [label=] +"l7" -> "l4" [label=] +"l7" -> "l4" [label=] +"l7" -> "l4" [label=] +"l7" -> "l4" [label=] +"l7" -> "l4" [label=] +"l7" -> "l4" [label=] +"l7" -> "l4" [label=] +"l7" -> "l4" [label=] +"l7" -> "l12" [label=[r1:=r1,]>] +"l7" -> "l8" [label=] +"l8" -> "l9" [label=] +"l9" -> "l8" [label=] +"l9" -> "l8" [label=] +"l9" -> "l10" [label=] +"l9" -> "l10" [label=] +"l9" -> "l10" [label=] +"l9" -> "l10" [label=] +"l9" -> "l10" [label=] +"l9" -> "l10" [label=] +"l9" -> "l11" [label=] +"l10" -> "l9" [label=] +"l11" -> "l9" [label=] +"l12" -> "l7" [label=[r1:=r1,]>] +} diff --git a/experiments/saved_results/servers/ra/uoscore-uedhoc_linux_edhoc_oscore/mapper_connection.config b/experiments/saved_results/servers/ra/uoscore-uedhoc_linux_edhoc_oscore/mapper_connection.config new file mode 100644 index 00000000..97827755 --- /dev/null +++ b/experiments/saved_results/servers/ra/uoscore-uedhoc_linux_edhoc_oscore/mapper_connection.config @@ -0,0 +1,153 @@ +# Californium3 CoAP Properties file for EdhocMapper +# +# Random factor for initial CoAP acknowledge timeout. +# Default: 1.5 +COAP.ACK_INIT_RANDOM=1.5 +# Initial CoAP acknowledge timeout. +# Default: 2[s] +# Adjust MAX_ACK_TIMEOUT to add more time +COAP.ACK_TIMEOUT=10[s] +# Scale factor for CoAP acknowledge backoff-timeout. +# Default: 2.0 +COAP.ACK_TIMEOUT_SCALE=2.0 +# Enable automatic failover on "entity too large" response. +# Default: true +COAP.BLOCKWISE_ENTITY_TOO_LARGE_AUTO_FAILOVER=true +# Reuse token for blockwise requests. Ease traceability but may introduce +# vulnerability. +# Default: false +COAP.BLOCKWISE_REUSE_TOKEN=false +# Interval to validate lifetime of blockwise status. +# Default: 5[s] +COAP.BLOCKWISE_STATUS_INTERVAL=5[s] +# Lifetime of blockwise status. +# Default: 5[min] +COAP.BLOCKWISE_STATUS_LIFETIME=5[min] +# Use block2 option strictly, even if block2 is not required. +# Default: false +COAP.BLOCKWISE_STRICT_BLOCK2_OPTION=false +# CoAP port. +# Default: 5683 +COAP.COAP_PORT=5683 +# CoAP DTLS port. +# Default: 5684 +COAP.COAP_SECURE_PORT=5684 +# Congestion-Control algorithm (still experimental). +# [NULL, COCOA, COCOA_STRONG, BASIC_RTO, LINUX_RTO, PEAKHOPPER_RTO]. +# Default: NULL +COAP.CONGESTION_CONTROL_ALGORITHM=NULL +# Crop rotation period. +# Default: 247[s] +COAP.CROP_ROTATION_PERIOD=247[s] +# Deduplicator algorithm. +# [MARK_AND_SWEEP, PEERS_MARK_AND_SWEEP, CROP_ROTATION, NO_DEDUPLICATOR]. +# Default: MARK_AND_SWEEP +COAP.DEDUPLICATOR=MARK_AND_SWEEP +# Automatic replace entries in deduplicator. +# Default: true +COAP.DEDUPLICATOR_AUTO_REPLACE=true +# CoAP maximum exchange lifetime for CON requests. +# Default: 247[s] +COAP.EXCHANGE_LIFETIME=247[s] +# Timespan a multicast server may spread the response. +# Default: 5[s] +COAP.LEISURE=5[s] +# Mark and sweep interval. +# Default: 10[s] +COAP.MARK_AND_SWEEP_INTERVAL=10[s] +# Maximum CoAP acknowledge timeout. +# Default: 1[min] +# Should be: ACK_TIMEOUT <= MAX_ACK_TIMEOUT +COAP.MAX_ACK_TIMEOUT=10[s] +# Maximum number of active peers. +# Default: 150000 +COAP.MAX_ACTIVE_PEERS=150000 +# Maximum transmission latency for messages. +# Default: 100[s] +COAP.MAX_LATENCY=100[s] +# Maximum payload size. +# Default: 1024 +COAP.MAX_MESSAGE_SIZE=1024 +# Maximum inactive period of peer. +# Default: 10[min] +COAP.MAX_PEER_INACTIVITY_PERIOD=10[min] +# Maximum size of resource body. 0 to disable transparent blockwise +# mode. +# Default: 8192 +COAP.MAX_RESOURCE_BODY_SIZE=8192 +# Maximum number of CoAP retransmissions. +# Default: 4 +# Should be >= 0 (0: no retransmissions) +COAP.MAX_RETRANSMIT=0 +# Maximum number of observes on server-side. 0 to disable this limitation. +# Default: 50000 +COAP.MAX_SERVER_OBSERVES=50000 +# Maximum server response delay. +# Default: 250[s] +COAP.MAX_SERVER_RESPONSE_DELAY=250[s] +# Maximum time to wait for ACK or RST after the first transmission of +# a CON message. +# Default: 93[s] +COAP.MAX_TRANSMIT_WAIT=93[s] +# MID tracker. +# [NULL, GROUPED, MAPBASED]. +# Default: GROUPED +COAP.MID_TACKER=GROUPED +# Number of MID tracker groups. +# Default: 16 +COAP.MID_TRACKER_GROUPS=16 +# Base MID for multicast requests. +# Default: 65000 +COAP.MULTICAST_BASE_MID=65000 +# CoAP maximum lifetime for NON requests. +# Default: 145[s] +COAP.NON_LIFETIME=145[s] +# Interval time to check notifications receiver using a CON message. +# Default: 2[min] +COAP.NOTIFICATION_CHECK_INTERVAL=2[min] +# Interval counter to check notifications receiver using a CON message. +# Default: 100 +COAP.NOTIFICATION_CHECK_INTERVAL_COUNT=100 +# Additional time (backoff) to the max-age option +# for waiting for the next notification before reregister. +# Default: 2[s] +COAP.NOTIFICATION_REREGISTRATION_BACKOFF=2[s] +# Maximum concurrent transmissions. +# Default: 1 +COAP.NSTART=1 +# Maximum messages kept per peer for PEERS_MARK_AND_SWEEP. +# Default: 64 +COAP.PEERS_MARK_AND_SWEEP_MESSAGES=64 +# Preferred blocksize for blockwise transfer. +# Default: 512 +COAP.PREFERRED_BLOCK_SIZE=512 +# Probing rate to peers, which didn't response before. Currently not +# used. +# Default: 1.0 +COAP.PROBING_RATE=1.0 +# Protocol stage thread count. +# Default: 1 +COAP.PROTOCOL_STAGE_THREAD_COUNT=1 +# Response matching mode. +# [STRICT, RELAXED, PRINCIPAL, PRINCIPAL_IDENTITY]. +# Default: STRICT +COAP.RESPONSE_MATCHING=STRICT +# Process empty messages strictly according RFC7252, 4.1 as format error. +# Disable to ignore additional data as tokens or options. +# Default: true +COAP.STRICT_EMPTY_MESSAGE_FORMAT=false +# Number of block per TCP-blockwise bulk transfer. +# Default: 1 +COAP.TCP_NUMBER_OF_BULK_BLOCKS=1 +# Limit of token size. +# Default: 8 +COAP.TOKEN_SIZE_LIMIT=8 +# Use message off-loading, when data is not longer required. +# Default: false +COAP.USE_MESSAGE_OFFLOADING=false +# Use initially a random value for MID. +# Default: true +COAP.USE_RANDOM_MID_START=true +# Health status interval. 0 to disable the health status. +# Default: 0[ms] +SYS.HEALTH_STATUS_INTERVAL=0[ms] diff --git a/experiments/saved_results/servers/ra/uoscore-uedhoc_linux_edhoc_oscore/statistics.txt b/experiments/saved_results/servers/ra/uoscore-uedhoc_linux_edhoc_oscore/statistics.txt new file mode 100644 index 00000000..c5b75ade --- /dev/null +++ b/experiments/saved_results/servers/ra/uoscore-uedhoc_linux_edhoc_oscore/statistics.txt @@ -0,0 +1,122 @@ +=== RUN DESCRIPTION === +Alphabet: [?EDHOC_MESSAGE_1_INPUT[C_I], !EDHOC_MESSAGE_1_OUTPUT[C_I], !EDHOC_MESSAGE_2_OUTPUT[], ?EDHOC_MESSAGE_3_INPUT[], !EDHOC_MESSAGE_3_OUTPUT[], !EDHOC_MESSAGE_4_OUTPUT[], !UNSUCCESSFUL_MESSAGE[], !COAP_EMPTY_MESSAGE_OUTPUT[], !EDHOC_MESSAGE_3_OSCORE_APP_OUTPUT[C_I], ?EDHOC_ERROR_MESSAGE_INPUT[], !COAP_APP_MESSAGE_OUTPUT[], !COAP_MESSAGE_OUTPUT[], !COAP_ERROR_MESSAGE_OUTPUT[], ?COAP_APP_MESSAGE_INPUT[], ?COAP_EMPTY_MESSAGE_INPUT[], !OSCORE_APP_MESSAGE_OUTPUT[], !SOCKET_CLOSED[], !EDHOC_ERROR_MESSAGE_OUTPUT[], ?EDHOC_MESSAGE_2_INPUT[], !DISABLED[], ?EDHOC_MESSAGE_4_INPUT[], !UNSUPPORTED_MESSAGE[], !TIMEOUT[], !UNKNOWN[], ?EDHOC_MESSAGE_3_OSCORE_APP_INPUT[C_I], ?OSCORE_APP_MESSAGE_INPUT[]] + +StateFuzzerConfig Parameters +Help: false +Debug: false +Quiet: false +Output Directory: experiments/results/servers/ra/uoscore-uedhoc_linux_edhoc_oscore +Fuzzing Client: false + +LearnerConfigStandard Parameters +Alphabet: ./src/main/resources/alphabet_placeholder.xml +Learning Algorithm: RASTAR +Equivalence Algorithms: [IO_RANDOM_WALK] +Max Depth: 1 +Min Length: 5 +Max Length: 15 +Max Equivalence Queries: 1000 +Runs Per Membership Query: 1 +Random Length: 5 +Membership Query Retries: 3 +Log Queries: true +Prob Reset: 0.0 +Test File: null +Seed: 7 +Cache Tests: false +Ce Sanitization: true +Skip Non Det Tests: false +Ce Reruns: 3 +Probabilistic Sanitization: true +Time Limit: PT5H45M +Test Limit: null +Round Limit: null +IOMode: true +Probability of Choosing a New DataValue: 0.5 +Max Runs: 10000 +Max Depth for Register Automata: 4 +Reset Runs: false +Seed transitions: false +Draw symbols uniformly: false + +SulConfig Parameters +Fuzzing Role: client +Fuzzing Client: true +Response Wait: 100 +Input Response Timeout: null +Command: null +Terminate Command: null +Process Dir: null +Redirect Output Streams: false +Process Trigger: NEW_TEST +Start Wait: 0 + +SulServerConfigStandard Parameters +Connect to: localhost:5683 + +MapperConfig Parameters +Mapper Connection Config: null +Repeating Outputs: null +Socket Closed as Timeout: false +Disabled as Timeout: false +Merge Repeating: true + +EdhocMapperConfig Parameters +Protocol Version: v16 +Combined Message Version: v06 +Edhoc Role: Initiator +Edhoc Coap Resource: .well-known/edhoc +App Coap Resource: tv1 +App Message Code To Coap Server: GET +App Message Payload To Coap Server: +App Message Code To Coap Client: CHANGED +App Message Payload To Coap Client: Server Application Data +Coap Error As Edhoc Error: false +use Content Format: true +use Session Reset: false +use CX Correlation: false +Own Connection Id: 36 +Generate Own Connection Id: true +Force Oscore Sender Id: [] +Force Oscore Recipient Id: 01 + +AuthenticationConfig Parameters +Map Cred Type: X509 +Map Id Cred Type: X5T +Sul Cred Type: X509 +Sul Id Cred Type: X5T +Trust Model: STRICT + +TestVectorAuthenticationConfig Parameters +Test Vector File: experiments/authentication/test_vectors/test_vectors_v16_p256.json +Test Vector Key: test_vector_1 +Test Vector Peer Key Curve: P256 + +SulAdapterConfig Parameters +Adapter Port: null +Adapter Address: localhost + +=== STATISTICS === +Learning finished: false +Reason: time limit reached +Size of the input alphabet: 26 +Number of states: 13 +Number of hypotheses: 5 +Number of inputs: 25476 +Number of tests: 6483 +Number of learning inputs: 1242 +Number of learning tests: 423 +Number of inputs up to last hypothesis: 1796 +Number of tests up to last hypothesis: 563 +Time (ms) to learn model: 20700921 +Counterexamples: +CE 1:Query[ε|EDHOC_MESSAGE_4_INPUT[] TIMEOUT[] COAP_EMPTY_MESSAGE_INPUT[] SOCKET_CLOSED[] / true] +CE 2:Query[ε|EDHOC_MESSAGE_1_INPUT[0[C_I]] EDHOC_MESSAGE_2_OUTPUT[] EDHOC_MESSAGE_1_INPUT[0[C_I]] TIMEOUT[] / true] +CE 3:Query[ε|EDHOC_MESSAGE_1_INPUT[0[C_I]] EDHOC_MESSAGE_2_OUTPUT[] EDHOC_MESSAGE_3_INPUT[] TIMEOUT[] EDHOC_MESSAGE_3_INPUT[] COAP_MESSAGE_OUTPUT[] / true] +CE 4:Query[ε|EDHOC_MESSAGE_1_INPUT[0[C_I]] EDHOC_MESSAGE_2_OUTPUT[] EDHOC_MESSAGE_3_OSCORE_APP_INPUT[1[C_I]] TIMEOUT[] COAP_EMPTY_MESSAGE_INPUT[] TIMEOUT[] / true] +Number of inputs when hypothesis was generated: [27, 104, 184, 870, 1796] +Number of tests when hypothesis was generated: [27, 67, 107, 308, 563] +Time (ms) when hypothesis was generated: [75556, 199976, 306560, 968022, 2007341] +Number of inputs when counterexample was found: [29, 106, 507, 1097] +Number of tests when counterexample was found: [28, 68, 188, 365] +Time (ms) when counterexample was found: [78665, 203093, 558318, 1148117] diff --git a/pom.xml b/pom.xml index 137cbc41..ddc5f401 100644 --- a/pom.xml +++ b/pom.xml @@ -1,7 +1,9 @@ - - + + 4.0.0 com.github.protocolfuzzing @@ -21,7 +23,8 @@ 33.5.0-jre 4.0.4 1.82 - 2.25.3 + 2.22.1 + 0.1-SNAPSHOT @@ -69,14 +72,21 @@ runtime - + org.apache.logging.log4j - log4j-slf4j-impl + log4j-slf4j2-impl ${log4j.version} runtime + + + de.learnlib + ralib + ${ralib.version} + + com.google.code.gson @@ -124,10 +134,17 @@ log4j-core - + org.apache.logging.log4j - log4j-slf4j-impl + log4j-slf4j2-impl + + + + + de.learnlib + ralib + ${ralib.version} @@ -179,7 +196,11 @@ - org.slf4j:slf4j-api + de.learnlib:learnlib-api:jar:* + + + + net.automatalib:automata-api:jar:* @@ -246,10 +267,12 @@ -Werror -Xlint:all + -Xlint:-this-escape -XDcompilePolicy=simple --should-stop=ifError=FLOW -XDaddTypeAnnotationsToSymbol=true - -Xplugin:ErrorProne -Xep:AddressSelection:OFF -Xep:NonApiType:OFF -Xep:WaitNotInLoop:OFF + -Xplugin:ErrorProne -Xep:AddressSelection:OFF -Xep:NonApiType:OFF -Xep:WaitNotInLoop:OFF @@ -282,21 +305,50 @@ maven-assembly-plugin - - - - com.github.protocolfuzzing.edhocfuzzer.Main - - - true - - - - jar-with-dependencies - - + build-mealy + + + + com.github.protocolfuzzing.edhocfuzzer.Main + + + true + + + + jar-with-dependencies + + ${project.artifactId}-${project.version}-mealy + + + single + + verify + + + build-RA + + + + com.github.protocolfuzzing.edhocfuzzer.MainRA + + + true + + + + jar-with-dependencies + + ${project.artifactId}-${project.version}-ra + single diff --git a/scripts/beautify_model.py b/scripts/beautify_model.py index aacae342..1b4504cf 100644 --- a/scripts/beautify_model.py +++ b/scripts/beautify_model.py @@ -1,7 +1,6 @@ import argparse import pydot - def create_pattern_dct(pattern_string): pattern_dct = { 'i': set(), @@ -130,7 +129,7 @@ def replace_symbol(s): def replace_label(label): if label == "" or ' / ' not in label: return label - + i, o = label.strip('\' "').split(' / ') ri = replace_symbol(i) ro = replace_symbol(o) @@ -145,8 +144,7 @@ def replace_label(label): for node in graph.get_nodes(): name = node.get_name() if name.startswith('s'): - if shorten_node_names: - node.set_label('"' + node.get_label().strip('\' "').lstrip('s') + '"') + node.set_label('"' + node.get_label().strip('\' "').lstrip('s') + '"') elif name != initial_hidden_node_name: if graph.del_node(node): @@ -320,6 +318,31 @@ def format_and_write_dot_string(graph_raw_string, initial_hidden_node_name, file # other non-empty line f.write(prefix + line + '\n') +def beautify_ra(args): + replacement_dict = read_replacement_file(args.r, args.replacement_sep) + + input_file = args.i + output_file = args.i if args.overwrite_dot_input else args.i.replace('.dot', 'btf.dot') + + with open(input_file, 'r') as dot_file: + lines = dot_file.readlines() + + for old, new in replacement_dict.items(): + for index, line in enumerate(lines): + lines[index] = line.replace(old, new) + + with open(output_file, 'w') as dot_file: + dot_file.writelines(lines) + + graph, *_ = pydot.graph_from_dot_file(output_file) + + prefix = args.o.replace('.dot', '') if args.o else (args.i.replace('.dot', '') + 'btf') + other_format_pairs = [ (prefix + '.' + fmt, fmt) for fmt in args.other_formats ] + for graph_name, format in other_format_pairs: + graph.write(graph_name, format=format) + print(f"Written {graph_name} with {format} formatting.") + + if __name__ == '__main__': parser = argparse.ArgumentParser( @@ -360,73 +383,77 @@ def format_and_write_dot_string(graph_raw_string, initial_hidden_node_name, file "with the output dot file in case they have the same name") parser.add_argument('--no-dot-output', default=False, action='store_true', help='Do not output the resulting .dot file') parser.add_argument('--other-formats', nargs='*', default=['pdf'], help='Additional output formats other than .dot') + parser.add_argument('--register-automata', default=False, action='store_true', help="Beautify a Register Automata instead of a Mealy Machine.") + parser.set_defaults(register_automata=False) args = parser.parse_args() + if args.register_automata: + beautify_ra(args) + else: + def set_if_default(var, new, default): + return new if var == default else var + + # check same edges op + if args.same_edges_op not in ['stack', 'merge']: + print(f"Invalid --same-edge-op value '{args.same_edges_op}'. Available: stack, merge.") + exit(1) + + if args.html_like_labels: + args.stack_sep = set_if_default(args.stack_sep, '
', '\l ') + args.merge_label_sep = set_if_default(args.merge_label_sep, '
', '\l ') + args.end_padding = set_if_default(args.end_padding, 1, 5) + + # print some visual separators in command line + cmd_line_sep = 100 * '=' + print(cmd_line_sep) + + remove_dct = create_pattern_dct(args.remove_edge_pattern) + original_label_symbol_dct = create_pattern_dct_with_label_symbol(args.set_label_symbol_pattern) + replacement_dct = read_replacement_file(args.r, args.replacement_sep) + + nodes, edge_info_dct, initial_edge, label_symbol_dct = get_info_from_graph( + args.i, not args.disable_shorten_nodes, remove_dct, original_label_symbol_dct, + replacement_dct, args.start_node_name, args.start_edge_label) + + label_info_dct = { + 'same_edges_op': args.same_edges_op, + 'stack_sep': args.stack_sep, + 'merge_input_sep': args.merge_input_sep, + 'merge_label_sep': args.merge_label_sep, + 'start_padding': args.start_padding * " ", + 'end_padding': args.end_padding * " ", + 'html_like_labels': args.html_like_labels + } - def set_if_default(var, new, default): - return new if var == default else var - - # check same edges op - if args.same_edges_op not in ['stack', 'merge']: - print(f"Invalid --same-edge-op value '{args.same_edges_op}'. Available: stack, merge.") - exit(1) - - if args.html_like_labels: - args.stack_sep = set_if_default(args.stack_sep, '
', '\l ') - args.merge_label_sep = set_if_default(args.merge_label_sep, '
', '\l ') - args.end_padding = set_if_default(args.end_padding, 1, 5) - - # print some visual separators in command line - cmd_line_sep = 100 * '=' - print(cmd_line_sep) - - remove_dct = create_pattern_dct(args.remove_edge_pattern) - original_label_symbol_dct = create_pattern_dct_with_label_symbol(args.set_label_symbol_pattern) - replacement_dct = read_replacement_file(args.r, args.replacement_sep) - - nodes, edge_info_dct, initial_edge, label_symbol_dct = get_info_from_graph( - args.i, not args.disable_shorten_nodes, remove_dct, original_label_symbol_dct, - replacement_dct, args.start_node_name, args.start_edge_label) - - label_info_dct = { - 'same_edges_op': args.same_edges_op, - 'stack_sep': args.stack_sep, - 'merge_input_sep': args.merge_input_sep, - 'merge_label_sep': args.merge_label_sep, - 'start_padding': args.start_padding * " ", - 'end_padding': args.end_padding * " ", - 'html_like_labels': args.html_like_labels - } - - new_graph = create_new_graph(nodes, edge_info_dct, initial_edge, label_info_dct, label_symbol_dct) + new_graph = create_new_graph(nodes, edge_info_dct, initial_edge, label_info_dct, label_symbol_dct) - prefix = args.o.replace('.dot', '') if args.o else (args.i.replace('.dot', '') + 'btf') - new_graph_dot_name = prefix + '.dot' - other_format_pairs = [ (prefix + '.' + fmt, fmt) for fmt in args.other_formats ] + prefix = args.o.replace('.dot', '') if args.o else (args.i.replace('.dot', '') + 'btf') + new_graph_dot_name = prefix + '.dot' + other_format_pairs = [ (prefix + '.' + fmt, fmt) for fmt in args.other_formats ] - print(cmd_line_sep) + print(cmd_line_sep) - if not args.no_dot_output: - if args.i == new_graph_dot_name: - print("Output dot file name coincides with the input dot file name") + if not args.no_dot_output: + if args.i == new_graph_dot_name: + print("Output dot file name coincides with the input dot file name") - if not args.overwrite_dot_input: - new_graph_dot_name = new_graph_dot_name.replace('.dot', '') + 'btf.dot' - print(f"The new output dot file name will be {new_graph_dot_name}") - print("Add --overwrite-dot-input option to overwrite the input dot file") - else: - print("Option --overwrite-dot-input is applicable") - print("Input dot file will be overwritten by output dot file") + if not args.overwrite_dot_input: + new_graph_dot_name = new_graph_dot_name.replace('.dot', '') + 'btf.dot' + print(f"The new output dot file name will be {new_graph_dot_name}") + print("Add --overwrite-dot-input option to overwrite the input dot file") + else: + print("Option --overwrite-dot-input is applicable") + print("Input dot file will be overwritten by output dot file") - print(cmd_line_sep) + print(cmd_line_sep) - # alternative without formatting: new_graph.write(new_graph_dot_name, format='raw') - format_and_write_dot_string(new_graph.to_string(), args.start_node_name, new_graph_dot_name) - print(f"Written {new_graph_dot_name}") + # alternative without formatting: new_graph.write(new_graph_dot_name, format='raw') + format_and_write_dot_string(new_graph.to_string(), args.start_node_name, new_graph_dot_name) + print(f"Written {new_graph_dot_name}") - for graph_name, fmt in other_format_pairs: - new_graph.write(graph_name, format=fmt) - print(f"Written {graph_name}") + for graph_name, fmt in other_format_pairs: + new_graph.write(graph_name, format=fmt) + print(f"Written {graph_name}") - print(cmd_line_sep) + print(cmd_line_sep) diff --git a/scripts/beautify_model.sh b/scripts/beautify_model.sh index 1341180e..4f630239 100755 --- a/scripts/beautify_model.sh +++ b/scripts/beautify_model.sh @@ -2,15 +2,17 @@ SCRIPT_DIR="$(cd -- "$(dirname -- "${BASH_SOURCE[0]}")" >/dev/null 2>&1 && pwd)" readonly SCRIPT_DIR -readonly REPL_FILE="${SCRIPT_DIR}/replacements.txt" +REPL_FILE="${SCRIPT_DIR}/replacements.txt" +REPL_FILE_RA="${SCRIPT_DIR}/replacementsRA.txt" readonly PY_SCRIPT="${SCRIPT_DIR}/beautify_model.py" start_edge_label="" +RA_FLAG="" # uncomment next line to remove all edges with transitions '_ / UNSUPPORTED_MESSAGE' # remove_edge_pattern="o_UNSUPPORTED_MESSAGE" -if [[ ${#} = 0 ]]; then - echo "Usage: ${0##*/} [-cI|--clientInitiator] [-cR|--clientResponder] dot_model" +if [ ${#} = 0 ]; then + echo "Usage: ${0##*/} [-cI|--clientInitiator] [-cR|--clientResponder] [-RA|--registerAutomata] dot_model" else while [[ "${1}" =~ ^- ]]; do case ${1} in -cI | --clientInitiator ) @@ -19,6 +21,10 @@ else -cR | --clientResponder ) start_edge_label='"TIMEOUT / COAP_EMPTY_MESSAGE"' ;; + -RA | --registerAutomata ) + REPL_FILE=${REPL_FILE_RA} + RA_FLAG='--register-automata' + ;; * ) echo "Unsupported option ${1}" ;; @@ -36,5 +42,7 @@ else exit 1 fi - python3 "${PY_SCRIPT}" "${1}" -r "${REPL_FILE}" --start-edge-label "${start_edge_label}" #--remove-edge-pattern "${remove_edge_pattern}" + echo "RA_FLAG: ${RA_FLAG} REPL_FILE: ${REPL_FILE}" + + python3 "${PY_SCRIPT}" "${1}" -r "${REPL_FILE}" --start-edge-label "${start_edge_label}" ${RA_FLAG} #--remove-edge-pattern "${remove_edge_pattern}" fi diff --git a/scripts/replacementsRA.txt b/scripts/replacementsRA.txt new file mode 100644 index 00000000..37a5c47b --- /dev/null +++ b/scripts/replacementsRA.txt @@ -0,0 +1,26 @@ +EDHOC_MESSAGE_1_INPUT -> M1 +EDHOC_MESSAGE_2_INPUT -> M2 +EDHOC_MESSAGE_3_INPUT -> M3 +EDHOC_MESSAGE_4_INPUT -> M4 +EDHOC_ERROR_MESSAGE_INPUT -> ERRᴇ +EDHOC_MESSAGE_3_OSCORE_APP_INPUT -> M3APPᴏ +OSCORE_APP_MESSAGE_INPUT -> APPᴏ +COAP_APP_MESSAGE_INPUT -> APPᴄ +COAP_EMPTY_MESSAGE_INPUT -> EMPᴄ +EDHOC_MESSAGE_1_OUTPUT -> M1 +EDHOC_MESSAGE_2_OUTPUT -> M2 +EDHOC_MESSAGE_3_OUTPUT -> M3 +EDHOC_MESSAGE_4_OUTPUT -> M4 +EDHOC_ERROR_MESSAGE_OUTPUT -> ERRᴇ +EDHOC_MESSAGE_3_OSCORE_APP_OUTPUT -> M3APPᴏ +OSCORE_APP_MESSAGE_OUTPUT -> APPᴏ +COAP_APP_MESSAGE_OUTPUT -> APPᴄ +COAP_MESSAGE_OUTPUT -> MSGᴄ +COAP_ERROR_MESSAGE_OUTPUT -> ERRᴄ +COAP_EMPTY_MESSAGE_OUTPUT -> EMPᴄ +UNSUPPORTED_MESSAGE -> ɴᴀ +UNSUCCESSFUL_MESSAGE -> ⨯ +UNKNOWN_MESSAGE -> ? +SOCKET_CLOSED -> ⊥ +TIMEOUT -> ∅ +DISABLED -> DIS \ No newline at end of file diff --git a/scripts/setup_fuzzer.sh b/scripts/setup_fuzzer.sh index 7ff3ca69..712565f8 100755 --- a/scripts/setup_fuzzer.sh +++ b/scripts/setup_fuzzer.sh @@ -22,6 +22,23 @@ setup_psf() { set +e } +setup_ralib() { + # setup RALib + + CHECKOUT="main" + + set -e + cd "${BASE_DIR}" + git clone "https://github.com/LearnLib/ralib" + cd ralib + git checkout ${CHECKOUT} + mvn install -DskipTests=true + + cd "${BASE_DIR}" + rm -rf ./ralib/ + set +e +} + setup_cf_edhoc() { # setup cf-edhoc library @@ -58,7 +75,8 @@ setup_fuzzer() { set -e cd "${BASE_DIR}" mvn clean verify - ln -sf "${BASE_DIR}"/target/edhoc-fuzzer-*-jar-with-dependencies.jar edhoc-fuzzer.jar + ln -sf "${BASE_DIR}"/target/edhoc-fuzzer-*-mealy-jar-with-dependencies.jar edhoc-fuzzer.jar + ln -sf "${BASE_DIR}"/target/edhoc-fuzzer-*-ra-jar-with-dependencies.jar edhoc-fuzzerRA.jar set +e } @@ -68,21 +86,23 @@ usage() { Options (library setup prior to EDHOC-Fuzzer): -p Fetch and setup only protocol-state-fuzzer library -e Fetch and setup only cf-edhoc library - -l Fetch and setup protocol-state-fuzzer and cf-edhoc libraries + -r Fetch and setup only ralib + -l Fetch and setup protocol-state-fuzzer, ralib and cf-edhoc libraries + -f Only setup fuzzer -h Show usage message END exit 0 } -while getopts :pelh flag +while getopts :pelrfh flag do case "${flag}" in - p) setup_psf ;; - e) setup_cf_edhoc ;; - l) setup_psf; setup_cf_edhoc ;; + p) setup_psf; setup_fuzzer ;; + e) setup_cf_edhoc; setup_fuzzer ;; + r) setup_ralib; setup_fuzzer ;; + l) setup_ralib; setup_psf; setup_cf_edhoc; setup_fuzzer ;; + f) setup_fuzzer ;; : | \? | h | *) usage ;; esac done - -setup_fuzzer diff --git a/scripts/setup_sul.sh b/scripts/setup_sul.sh index 12d8c198..03de6c5e 100755 --- a/scripts/setup_sul.sh +++ b/scripts/setup_sul.sh @@ -35,7 +35,7 @@ setup_lakers() { setup_rise() { # rise - CHECKOUT="b08bf12dae965044925eb58ee25717a4d2f8105b" + CHECKOUT="9bdb7561147a36a2064c2f7968291436b742d2e9" PREFIX="${SOURCES_DIR}/californium/cf-edhoc/src" POSTFIX="java/org/eclipse/californium/edhoc" CF_EDHOC_MAIN_DIR="${PREFIX}/main/${POSTFIX}" diff --git a/src/main/java/com/github/protocolfuzzing/edhocfuzzer/EdhocDotProcessor.java b/src/main/java/com/github/protocolfuzzing/edhocfuzzer/EdhocDotProcessor.java index a1557619..3dbbdef2 100644 --- a/src/main/java/com/github/protocolfuzzing/edhocfuzzer/EdhocDotProcessor.java +++ b/src/main/java/com/github/protocolfuzzing/edhocfuzzer/EdhocDotProcessor.java @@ -2,6 +2,8 @@ import com.github.protocolfuzzing.edhocfuzzer.components.sul.mapper.config.EdhocMapperConfig; import com.github.protocolfuzzing.protocolstatefuzzer.components.learner.LearnerResult; +import com.github.protocolfuzzing.protocolstatefuzzer.components.learner.config.LearnerConfig; +import com.github.protocolfuzzing.protocolstatefuzzer.components.learner.config.LearnerConfigRA; import com.github.protocolfuzzing.protocolstatefuzzer.components.sul.mapper.config.MapperConfig; import com.github.protocolfuzzing.protocolstatefuzzer.statefuzzer.core.config.StateFuzzerEnabler; import org.apache.logging.log4j.LogManager; @@ -54,17 +56,24 @@ public static void beautify(LearnerResult learnerResult) { // when Fuzzer is Initiator then SUL is Responder // when Fuzzer is Responder then SUL is Initiator - String cIR = isFuzzerInitiator ? "--clientResponder" : "--clientInitiator"; - commandArgList.add(1, cIR); + String argument = isFuzzerInitiator ? "--clientResponder" : "--clientInitiator"; + + commandArgList.add(1, argument); + } + + LearnerConfig learnerConfig = stateFuzzerEnabler.getLearnerConfig(); + if (learnerConfig instanceof LearnerConfigRA) { + commandArgList.add(1, "--registerAutomata"); } try { LOGGER.info("Running {}", script); + LOGGER.info("Shell script arguments {}", commandArgList); new ProcessBuilder(commandArgList) - .redirectErrorStream(true) - .redirectOutput(ProcessBuilder.Redirect.INHERIT) - .start() - .waitFor(); + .redirectErrorStream(true) + .redirectOutput(ProcessBuilder.Redirect.INHERIT) + .start() + .waitFor(); } catch (IOException | InterruptedException e) { LOGGER.warn("Could not beautify {}: {}", learnedModelPath, e.getMessage()); } diff --git a/src/main/java/com/github/protocolfuzzing/edhocfuzzer/Main.java b/src/main/java/com/github/protocolfuzzing/edhocfuzzer/Main.java index 62e97580..e1b8bc0f 100644 --- a/src/main/java/com/github/protocolfuzzing/edhocfuzzer/Main.java +++ b/src/main/java/com/github/protocolfuzzing/edhocfuzzer/Main.java @@ -7,7 +7,7 @@ public class Main { public static void main(String[] args) { MultiBuilder mb = new MultiBuilder(); - String[] parentLoggers = {Main.class.getPackageName()}; + String[] parentLoggers = { Main.class.getPackageName() }; CommandLineParser commandLineParser = new CommandLineParser<>(mb, mb, mb, mb); commandLineParser.setExternalParentLoggers(parentLoggers); diff --git a/src/main/java/com/github/protocolfuzzing/edhocfuzzer/MainRA.java b/src/main/java/com/github/protocolfuzzing/edhocfuzzer/MainRA.java new file mode 100644 index 00000000..59471c4b --- /dev/null +++ b/src/main/java/com/github/protocolfuzzing/edhocfuzzer/MainRA.java @@ -0,0 +1,17 @@ +package com.github.protocolfuzzing.edhocfuzzer; + +import com.github.protocolfuzzing.protocolstatefuzzer.entrypoints.CommandLineParser; + +import java.util.List; + +public class MainRA { + public static void main(String[] args) { + MultiBuilderRA mb = new MultiBuilderRA(); + String[] parentLoggers = { Main.class.getPackageName() }; + + CommandLineParser commandLineParser = new CommandLineParser<>(mb, mb, mb, mb); + commandLineParser.setExternalParentLoggers(parentLoggers); + + commandLineParser.parse(args, true, List.of(EdhocDotProcessor::beautify)); + } +} diff --git a/src/main/java/com/github/protocolfuzzing/edhocfuzzer/MultiBuilderRA.java b/src/main/java/com/github/protocolfuzzing/edhocfuzzer/MultiBuilderRA.java new file mode 100644 index 00000000..a3cd92e2 --- /dev/null +++ b/src/main/java/com/github/protocolfuzzing/edhocfuzzer/MultiBuilderRA.java @@ -0,0 +1,115 @@ +package com.github.protocolfuzzing.edhocfuzzer; + +import com.github.protocolfuzzing.edhocfuzzer.components.sul.core.EdhocSulBuilderRA; +import com.github.protocolfuzzing.edhocfuzzer.components.sul.core.config.EdhocSulClientConfig; +import com.github.protocolfuzzing.edhocfuzzer.components.sul.core.config.EdhocSulServerConfig; +import com.github.protocolfuzzing.edhocfuzzer.components.sul.mapper.config.EdhocMapperConfig; +import com.github.protocolfuzzing.edhocfuzzer.components.sul.mapper.context.EdhocExecutionContextRA; +import com.github.protocolfuzzing.edhocfuzzer.components.sul.mapper.symbols.EdhocDataTypes; +import com.github.protocolfuzzing.edhocfuzzer.components.sul.mapper.symbols.inputs.MessageInputTypeRA; +import com.github.protocolfuzzing.edhocfuzzer.components.sul.mapper.symbols.outputs.MessageOutputTypeRA; +import com.github.protocolfuzzing.protocolstatefuzzer.components.learner.alphabet.AlphabetBuilderEnum; +import com.github.protocolfuzzing.protocolstatefuzzer.components.learner.alphabet.DataTypeMap; +import com.github.protocolfuzzing.protocolstatefuzzer.components.learner.alphabet.EnumAlphabet; +import com.github.protocolfuzzing.protocolstatefuzzer.components.learner.alphabet.PSFOutputSymbols; +import com.github.protocolfuzzing.protocolstatefuzzer.components.learner.config.LearnerConfigRA; +import com.github.protocolfuzzing.protocolstatefuzzer.components.learner.statistics.RegisterAutomatonWrapper; +import com.github.protocolfuzzing.protocolstatefuzzer.components.sul.core.SulBuilder; +import com.github.protocolfuzzing.protocolstatefuzzer.statefuzzer.core.StateFuzzer; +import com.github.protocolfuzzing.protocolstatefuzzer.statefuzzer.core.StateFuzzerBuilder; +import com.github.protocolfuzzing.protocolstatefuzzer.statefuzzer.core.StateFuzzerComposerRA; +import com.github.protocolfuzzing.protocolstatefuzzer.statefuzzer.core.StateFuzzerRA; +import com.github.protocolfuzzing.protocolstatefuzzer.statefuzzer.core.config.StateFuzzerClientConfig; +import com.github.protocolfuzzing.protocolstatefuzzer.statefuzzer.core.config.StateFuzzerClientConfigStandard; +import com.github.protocolfuzzing.protocolstatefuzzer.statefuzzer.core.config.StateFuzzerConfigBuilder; +import com.github.protocolfuzzing.protocolstatefuzzer.statefuzzer.core.config.StateFuzzerEnabler; +import com.github.protocolfuzzing.protocolstatefuzzer.statefuzzer.core.config.StateFuzzerServerConfig; +import com.github.protocolfuzzing.protocolstatefuzzer.statefuzzer.core.config.StateFuzzerServerConfigStandard; +import com.github.protocolfuzzing.protocolstatefuzzer.statefuzzer.testrunner.core.TestRunner; +import com.github.protocolfuzzing.protocolstatefuzzer.statefuzzer.testrunner.core.TestRunnerBuilder; +import com.github.protocolfuzzing.protocolstatefuzzer.statefuzzer.testrunner.core.config.TestRunnerConfigStandard; +import com.github.protocolfuzzing.protocolstatefuzzer.statefuzzer.testrunner.core.config.TestRunnerEnabler; +import com.github.protocolfuzzing.protocolstatefuzzer.statefuzzer.testrunner.timingprobe.TimingProbe; +import com.github.protocolfuzzing.protocolstatefuzzer.statefuzzer.testrunner.timingprobe.TimingProbeBuilder; +import com.github.protocolfuzzing.protocolstatefuzzer.statefuzzer.testrunner.timingprobe.config.TimingProbeConfigStandard; +import com.github.protocolfuzzing.protocolstatefuzzer.statefuzzer.testrunner.timingprobe.config.TimingProbeEnabler; +import de.learnlib.ralib.data.DataType; +import de.learnlib.ralib.theory.Theory; +import de.learnlib.ralib.tools.theories.IntegerEqualityTheory; +import de.learnlib.ralib.words.PSymbolInstance; +import de.learnlib.ralib.words.ParameterizedSymbol; + +import java.util.LinkedHashMap; +import java.util.Map; + +public class MultiBuilderRA implements + StateFuzzerConfigBuilder, + StateFuzzerBuilder>, + TestRunnerBuilder, + TimingProbeBuilder { + + DataType T_CI = new DataType("C_I", Integer.class); + + protected DataTypeMap dtMap = new DataTypeMap.Builder(EdhocDataTypes.class) + .newDataTypes(EdhocDataTypes.values(), Integer.class) + .build(); + + protected EnumAlphabet alphabet = new EnumAlphabet.Builder(dtMap) + .withInputs(MessageInputTypeRA.values()) + .withOutputs(MessageOutputTypeRA.values()) + .withOutputs(PSFOutputSymbols.values()) + .withInput(MessageInputTypeRA.EDHOC_MESSAGE_1_INPUT, T_CI) + .withInput(MessageInputTypeRA.EDHOC_MESSAGE_3_OSCORE_APP_INPUT, T_CI) + .withOutput(MessageOutputTypeRA.EDHOC_MESSAGE_1_OUTPUT, T_CI) + .withOutput(MessageOutputTypeRA.EDHOC_MESSAGE_3_OSCORE_APP_OUTPUT, T_CI) + .build(); + + protected AlphabetBuilderEnum dummyBuilder = new AlphabetBuilderEnum( + alphabet); + + protected SulBuilder sulBuilder = new EdhocSulBuilderRA(alphabet); + + @Override + public StateFuzzerClientConfig buildClientConfig() { + return new StateFuzzerClientConfigStandard( + new LearnerConfigRA(), + new EdhocSulClientConfig(new EdhocMapperConfig()), + new TestRunnerConfigStandard(), + new TimingProbeConfigStandard()); + } + + @Override + public StateFuzzerServerConfig buildServerConfig() { + return new StateFuzzerServerConfigStandard( + new LearnerConfigRA(), + new EdhocSulServerConfig(new EdhocMapperConfig()), + new TestRunnerConfigStandard(), + new TimingProbeConfigStandard()); + } + + @Override + public StateFuzzer> build( + StateFuzzerEnabler stateFuzzerEnabler) { + @SuppressWarnings("rawtypes") + final Map teachers = new LinkedHashMap<>(); + teachers.put(T_CI, new IntegerEqualityTheory(T_CI)); + return new StateFuzzerRA<>( + new StateFuzzerComposerRA( + stateFuzzerEnabler, + dummyBuilder, sulBuilder, teachers).initialize()); + } + + @Override + public TestRunner build(TestRunnerEnabler testRunnerEnabler) { + // return new TestRunnerStandard<>(testRunnerEnabler, alphabetTransformer, + // sulBuilder, sulWrapper).initialize(); + return null; // FIXME: If this is used we have problems. + } + + @Override + public TimingProbe build(TimingProbeEnabler timingProbeEnabler) { + // return new TimingProbeStandard<>(timingProbeEnabler, alphabetTransformer, + // sulBuilder, sulWrapper).initialize(); + return null; // FIXME: If this is used we have problems. + } +} diff --git a/src/main/java/com/github/protocolfuzzing/edhocfuzzer/components/learner/EdhocAlphabetPojoXmlRA.java b/src/main/java/com/github/protocolfuzzing/edhocfuzzer/components/learner/EdhocAlphabetPojoXmlRA.java new file mode 100644 index 00000000..ae5a9374 --- /dev/null +++ b/src/main/java/com/github/protocolfuzzing/edhocfuzzer/components/learner/EdhocAlphabetPojoXmlRA.java @@ -0,0 +1,60 @@ +package com.github.protocolfuzzing.edhocfuzzer.components.learner; + +import com.github.protocolfuzzing.edhocfuzzer.components.sul.mapper.symbols.inputs.*; +import com.github.protocolfuzzing.protocolstatefuzzer.components.learner.alphabet.xml.AlphabetPojoXml; +import jakarta.xml.bind.annotation.XmlAccessType; +import jakarta.xml.bind.annotation.XmlAccessorType; +import jakarta.xml.bind.annotation.XmlElement; +import jakarta.xml.bind.annotation.XmlElements; +import jakarta.xml.bind.annotation.XmlRootElement; + +import java.util.List; + +@XmlRootElement(name = "alphabet") +@XmlAccessorType(XmlAccessType.FIELD) +public class EdhocAlphabetPojoXmlRA extends AlphabetPojoXml { + @XmlElements(value = { + @XmlElement(type = SymbolXml.class, name = "EdhocMessage1Input"), + @XmlElement(type = SymbolXml.class, name = "EdhocMessage2Input"), + @XmlElement(type = SymbolXml.class, name = "EdhocMessage3Input"), + @XmlElement(type = SymbolXml.class, name = "EdhocMessage4Input"), + @XmlElement(type = SymbolXml.class, name = "EdhocErrorMessageInput"), + @XmlElement(type = SymbolXml.class, name = "EdhocMessage3OscoreAppInput"), + @XmlElement(type = SymbolXml.class, name = "OscoreAppMessageInput"), + @XmlElement(type = SymbolXml.class, name = "CoapAppMessageInput"), + @XmlElement(type = SymbolXml.class, name = "CoapEmptyMessageInput"), + @XmlElement(type = SymbolXml.class, name = "EdhocMessage1"), + @XmlElement(type = SymbolXml.class, name = "EdhocMessage2"), + @XmlElement(type = SymbolXml.class, name = "EdhocMessage3"), + @XmlElement(type = SymbolXml.class, name = "EdhocMessage4"), + @XmlElement(type = SymbolXml.class, name = "EdhocErrorMessage"), + @XmlElement(type = SymbolXml.class, name = "EdhocMessage3OscoreApp"), + @XmlElement(type = SymbolXml.class, name = "OscoreAppMessage"), + @XmlElement(type = SymbolXml.class, name = "CoapAppMessage"), + @XmlElement(type = SymbolXml.class, name = "CoapEmptyMessage"), + @XmlElement(type = SymbolXml.class, name = "Disabled"), + @XmlElement(type = SymbolXml.class, name = "SocketClosed"), + @XmlElement(type = SymbolXml.class, name = "Unknown"), + @XmlElement(type = SymbolXml.class, name = "Timeout"), + @XmlElement(type = SymbolXml.class, name = "CoapErrorMessage"), + @XmlElement(type = SymbolXml.class, name = "CoapEmptyMessage"), + @XmlElement(type = SymbolXml.class, name = "UnsupportedMessage"), + @XmlElement(type = SymbolXml.class, name = "EdhocErrorMessage"), + @XmlElement(type = SymbolXml.class, name = "CoapMessage"), + @XmlElement(type = SymbolXml.class, name = "CoapAppMessage"), + @XmlElement(type = SymbolXml.class, name = "OscoreAppMessage"), + }) + protected List inputs; + + public EdhocAlphabetPojoXmlRA() { + } + + public EdhocAlphabetPojoXmlRA(List inputs) { + this.inputs = inputs; + } + + @Override + public List getInputs() { + return inputs; + } +} diff --git a/src/main/java/com/github/protocolfuzzing/edhocfuzzer/components/sul/core/EdhocSulBuilderRA.java b/src/main/java/com/github/protocolfuzzing/edhocfuzzer/components/sul/core/EdhocSulBuilderRA.java new file mode 100644 index 00000000..d99398de --- /dev/null +++ b/src/main/java/com/github/protocolfuzzing/edhocfuzzer/components/sul/core/EdhocSulBuilderRA.java @@ -0,0 +1,29 @@ +package com.github.protocolfuzzing.edhocfuzzer.components.sul.core; + +import com.github.protocolfuzzing.edhocfuzzer.components.sul.mapper.context.EdhocExecutionContextRA; +import com.github.protocolfuzzing.protocolstatefuzzer.components.learner.alphabet.EnumAlphabet; +import com.github.protocolfuzzing.protocolstatefuzzer.components.sul.core.AbstractSul; +import com.github.protocolfuzzing.protocolstatefuzzer.components.sul.core.SulBuilder; +import com.github.protocolfuzzing.protocolstatefuzzer.components.sul.core.SulWrapper; +import com.github.protocolfuzzing.protocolstatefuzzer.components.sul.core.SulWrapperStandard; +import com.github.protocolfuzzing.protocolstatefuzzer.components.sul.core.config.SulConfig; +import com.github.protocolfuzzing.protocolstatefuzzer.utils.CleanupTasks; +import de.learnlib.ralib.words.PSymbolInstance; + +public class EdhocSulBuilderRA implements SulBuilder { + protected EnumAlphabet alphabet; + + public EdhocSulBuilderRA(EnumAlphabet alphabet) { + this.alphabet = alphabet; + } + + @Override + public AbstractSul buildSul(SulConfig sulConfig, CleanupTasks cleanupTasks) { + return new EdhocSulRA(sulConfig, cleanupTasks, alphabet).initialize(); + } + + @Override + public SulWrapper buildWrapper() { + return new SulWrapperStandard<>(); + } +} diff --git a/src/main/java/com/github/protocolfuzzing/edhocfuzzer/components/sul/core/EdhocSulRA.java b/src/main/java/com/github/protocolfuzzing/edhocfuzzer/components/sul/core/EdhocSulRA.java new file mode 100644 index 00000000..cfa2de35 --- /dev/null +++ b/src/main/java/com/github/protocolfuzzing/edhocfuzzer/components/sul/core/EdhocSulRA.java @@ -0,0 +1,245 @@ +package com.github.protocolfuzzing.edhocfuzzer.components.sul.core; + +import com.github.protocolfuzzing.edhocfuzzer.components.sul.core.config.EdhocSulClientConfig; +import com.github.protocolfuzzing.edhocfuzzer.components.sul.mapper.config.EdhocMapperConfig; +import com.github.protocolfuzzing.edhocfuzzer.components.sul.mapper.config.EdhocMapperConnectionConfig; +import com.github.protocolfuzzing.edhocfuzzer.components.sul.mapper.connectors.ClientMapperConnector; +import com.github.protocolfuzzing.edhocfuzzer.components.sul.mapper.connectors.EdhocMapperConnector; +import com.github.protocolfuzzing.edhocfuzzer.components.sul.mapper.connectors.ServerMapperConnector; +import com.github.protocolfuzzing.edhocfuzzer.components.sul.mapper.context.ClientMapperState; +import com.github.protocolfuzzing.edhocfuzzer.components.sul.mapper.context.EdhocExecutionContextRA; +import com.github.protocolfuzzing.edhocfuzzer.components.sul.mapper.context.EdhocMapperState; +import com.github.protocolfuzzing.edhocfuzzer.components.sul.mapper.context.ServerMapperState; +import com.github.protocolfuzzing.edhocfuzzer.components.sul.mapper.mappers.EdhocInputMapperRA; +import com.github.protocolfuzzing.edhocfuzzer.components.sul.mapper.mappers.EdhocMapperComposerRA; +import com.github.protocolfuzzing.edhocfuzzer.components.sul.mapper.mappers.EdhocOutputMapperRA; +import com.github.protocolfuzzing.edhocfuzzer.components.sul.mapper.symbols.outputs.EdhocOutputBuilderRA; +import com.github.protocolfuzzing.edhocfuzzer.components.sul.mapper.symbols.outputs.EdhocOutputCheckerRA; +import com.github.protocolfuzzing.edhocfuzzer.components.sul.mapper.symbols.outputs.MessageOutputTypeRA; +import com.github.protocolfuzzing.protocolstatefuzzer.components.learner.alphabet.EnumAlphabet; +import com.github.protocolfuzzing.protocolstatefuzzer.components.sul.core.AbstractSul; +import com.github.protocolfuzzing.protocolstatefuzzer.components.sul.core.SulAdapter; +import com.github.protocolfuzzing.protocolstatefuzzer.components.sul.core.config.SulConfig; +import com.github.protocolfuzzing.protocolstatefuzzer.components.sul.core.sulwrappers.DynamicPortProvider; +import com.github.protocolfuzzing.protocolstatefuzzer.utils.CleanupTasks; +import de.learnlib.ralib.words.PSymbolInstance; +import org.apache.logging.log4j.LogManager; +import org.apache.logging.log4j.Logger; +import org.eclipse.californium.core.config.CoapConfig; + +import java.io.IOException; +import java.util.concurrent.TimeUnit; + +public class EdhocSulRA implements AbstractSul { + private static final Logger LOGGER = LogManager.getLogger(); + + protected SulConfig sulConfig; + protected CleanupTasks cleanupTasks; + protected EdhocMapperConfig edhocMapperConfig; + protected EdhocMapperComposerRA edhocMapperComposer; + protected EdhocExecutionContextRA edhocExecutionContext; + protected Long originalTimeout; + protected EdhocMapperState edhocMapperState; + protected EdhocMapperConnector edhocMapperConnector; + protected boolean serverWaitForInitialMessageDone; + protected EnumAlphabet alphabet; + + public EdhocSulRA(SulConfig sulConfig, CleanupTasks cleanupTasks, EnumAlphabet alphabet) { + this.sulConfig = sulConfig; + this.cleanupTasks = cleanupTasks; + this.edhocMapperConfig = (EdhocMapperConfig) sulConfig.getMapperConfig(); + this.originalTimeout = sulConfig.getResponseWait(); + this.alphabet = alphabet; + } + + public EdhocSulRA initialize() { + try { + // Adds also the californium standard configuration + EdhocMapperConnectionConfig mapperConnectionConfig = new EdhocMapperConnectionConfig( + sulConfig.getMapperConfig().getMapperConnectionConfigInputStream()); + + sulConfig.applyDelegate(mapperConnectionConfig); + + // Warn about possible retransmissions + Long coapAckTimeout = mapperConnectionConfig.getConfiguration().get( + CoapConfig.ACK_TIMEOUT, TimeUnit.MILLISECONDS); + + if (originalTimeout > coapAckTimeout) { + LOGGER.warn("Found COAP.ACK_TIMEOUT ({} ms) < responseWait ({} ms)", coapAckTimeout, originalTimeout); + LOGGER.warn("Retransmissions may occur implicitly and may affect the learned model's correctness"); + LOGGER.warn("To avoid them: [COAP.ACK_TIMEOUT > longest wait time] or [COAP.MAX_RETRANSMIT = 0]"); + } + } catch (IOException e) { + LOGGER.error("Exception occurred: " + e.getMessage()); + throw new RuntimeException(e); + } + + // The connector uses the californium standard configuration + if (sulConfig.isFuzzingClient()) { + this.edhocMapperConnector = new ServerMapperConnector(edhocMapperConfig.getHostCoapUri(), + edhocMapperConfig.getEdhocCoapResource(), edhocMapperConfig.getAppCoapResource(), + originalTimeout); + } else { + this.edhocMapperConnector = new ClientMapperConnector(edhocMapperConfig.getEdhocCoapUri(), + edhocMapperConfig.getAppCoapUri(), this.originalTimeout); + } + + this.edhocMapperComposer = new EdhocMapperComposerRA( + new EdhocInputMapperRA(edhocMapperConfig, new EdhocOutputCheckerRA(), edhocMapperConnector), + new EdhocOutputMapperRA(edhocMapperConfig, new EdhocOutputBuilderRA(), edhocMapperConnector, alphabet)); + + return this; + } + + @Override + public SulConfig getSulConfig() { + return sulConfig; + } + + @Override + public CleanupTasks getCleanupTasks() { + return cleanupTasks; + } + + @Override + public EdhocMapperComposerRA getMapper() { + return edhocMapperComposer; + } + + @Override + public void setDynamicPortProvider(DynamicPortProvider dynamicPortProvider) { + throw new RuntimeException("No dynamic port provider available"); + } + + @Override + public DynamicPortProvider getDynamicPortProvider() { + throw new RuntimeException("No dynamic port provider available"); + } + + @Override + public SulAdapter getSulAdapter() { + throw new RuntimeException("No sul adapter available"); + } + + @Override + public void pre() { + LOGGER.debug("SUL 'pre' start"); + + if (sulConfig.isFuzzingClient()) { + ServerMapperConnector serverMapperConnector = (ServerMapperConnector) edhocMapperConnector; + edhocMapperState = new ServerMapperState(edhocMapperConfig, cleanupTasks).initialize(serverMapperConnector); + + serverWaitForInitialMessageDone = false; + cleanupTasks.submit(serverMapperConnector::shutdown); + + EdhocSulClientConfig edhocSulClientConfig = (EdhocSulClientConfig) sulConfig; + long clientWait = edhocSulClientConfig.getClientWait(); + if (clientWait > 0) { + try { + Thread.sleep(clientWait); + } catch (InterruptedException e) { + LOGGER.error("Interrupted 'clientWait' sleep for {} ms", clientWait); + } + } + } else { + ClientMapperConnector clientMapperConnector = (ClientMapperConnector) edhocMapperConnector; + edhocMapperState = new ClientMapperState(edhocMapperConfig, cleanupTasks).initialize(clientMapperConnector); + } + + this.edhocExecutionContext = new EdhocExecutionContextRA(edhocMapperState); + + long startWait = sulConfig.getStartWait(); + if (startWait > 0) { + try { + Thread.sleep(startWait); + } catch (InterruptedException e) { + LOGGER.error("Interrupted 'startWait' sleep for {} ms", startWait); + } + } + + LOGGER.debug("SUL 'pre' end"); + } + + @Override + public void post() { + LOGGER.debug("SUL 'post' start"); + LOGGER.debug("SUL 'post' end"); + } + + @Override + public PSymbolInstance step(PSymbolInstance abstractInput) { + // In case of server mapper, wait for initial message from client + serverWaitForInitialMessage(); + + LOGGER.debug("SUL 'step' start"); + + edhocExecutionContext.addStepContext(); + + if (!edhocExecutionContext.isExecutionEnabled()) { + return edhocMapperComposer.getOutputMapper().disabled(); + } + + PSymbolInstance abstractOutput = executeInput(abstractInput); + + if (edhocMapperComposer.getOutputChecker().isDisabled(abstractOutput) + || !edhocExecutionContext.isExecutionEnabled()) { + // this should lead to a disabled sink state + edhocExecutionContext.disableExecution(); + } + + LOGGER.debug("SUL 'step' end"); + + return abstractOutput; + } + + protected PSymbolInstance executeInput(PSymbolInstance abstractInput) { + boolean timeoutChanged = false; + + // handle timeout from extendedWait and from inputResponse + EdhocInputMapperRA inputMapper = (EdhocInputMapperRA) edhocMapperComposer.getInputMapper(); + if (inputMapper.getTimeoutForSymbol(abstractInput) != 0L) { + edhocMapperConnector.setTimeout(originalTimeout + inputMapper.getTimeoutForSymbol(abstractInput)); + timeoutChanged = true; + } else if (sulConfig.getInputResponseTimeout() != null && + sulConfig.getInputResponseTimeout().containsKey(abstractInput.getBaseSymbol().getName())) { + edhocMapperConnector + .setTimeout(sulConfig.getInputResponseTimeout().get(abstractInput.getBaseSymbol().getName())); + timeoutChanged = true; + } + + PSymbolInstance abstractOutput = edhocMapperComposer.execute(abstractInput, edhocExecutionContext); + + // reset timeout + if (timeoutChanged) { + edhocMapperConnector.setTimeout(originalTimeout); + } + return abstractOutput; + } + + protected void serverWaitForInitialMessage() { + boolean isServer = !edhocMapperState.isCoapClient(); + boolean isResponder = !edhocMapperState.getEdhocSessionPersistent().isInitiator(); + MessageOutputTypeRA expectedMessageType = isResponder ? MessageOutputTypeRA.EDHOC_MESSAGE_1_OUTPUT + : MessageOutputTypeRA.COAP_EMPTY_MESSAGE_OUTPUT; + + if (!isServer || serverWaitForInitialMessageDone) { + return; + } + + ServerMapperConnector serverMapperConnector = (ServerMapperConnector) edhocMapperConnector; + EdhocOutputCheckerRA edhocOutputChecker = edhocMapperComposer.getOutputChecker(); + + serverMapperConnector.waitForClientMessage(); + PSymbolInstance abstractOutput = edhocMapperComposer.getOutputMapper().receiveOutput(edhocExecutionContext); + boolean isExpectedMessage = edhocOutputChecker.isMessage(abstractOutput, expectedMessageType); + + if (!isExpectedMessage) { + throw new RuntimeException("After initial wait, instead of " + expectedMessageType + ", received " + + abstractOutput.getBaseSymbol().getName()); + } + + LOGGER.debug("Received {} from client", expectedMessageType); + serverWaitForInitialMessageDone = true; + } + +} diff --git a/src/main/java/com/github/protocolfuzzing/edhocfuzzer/components/sul/core/protocol/EdhocSessionPersistent.java b/src/main/java/com/github/protocolfuzzing/edhocfuzzer/components/sul/core/protocol/EdhocSessionPersistent.java index 4b71cbea..60b22d44 100644 --- a/src/main/java/com/github/protocolfuzzing/edhocfuzzer/components/sul/core/protocol/EdhocSessionPersistent.java +++ b/src/main/java/com/github/protocolfuzzing/edhocfuzzer/components/sul/core/protocol/EdhocSessionPersistent.java @@ -41,7 +41,8 @@ public class EdhocSessionPersistent extends EdhocSession { protected byte[] forceOscoreSenderId; protected byte[] forceOscoreRecipientId; - @SuppressWarnings("this-escape") + protected byte[] connectionId; + public EdhocSessionPersistent( String sessionUri, boolean initiator, boolean clientInitiated, int method, byte[] connectionId, EdhocEndpointInfoPersistent edhocEndpointInfoPersistent, List peerSupportedCipherSuites, @@ -49,10 +50,11 @@ public EdhocSessionPersistent( byte[] forceOscoreSenderId, byte[] forceOscoreRecipientId) { super(initiator, clientInitiated, method, connectionId, edhocEndpointInfoPersistent.getKeyPairs(), - edhocEndpointInfoPersistent.getIdCreds(), edhocEndpointInfoPersistent.getCreds(), - edhocEndpointInfoPersistent.getSupportedCipherSuites(), peerSupportedCipherSuites, - edhocEndpointInfoPersistent.getSupportedEADs(), edhocEndpointInfoPersistent.getAppProfiles().get(sessionUri), - edhocEndpointInfoPersistent.getTrustModel(), oscoreDB); + edhocEndpointInfoPersistent.getIdCreds(), edhocEndpointInfoPersistent.getCreds(), + edhocEndpointInfoPersistent.getSupportedCipherSuites(), peerSupportedCipherSuites, + edhocEndpointInfoPersistent.getSupportedEADs(), + edhocEndpointInfoPersistent.getAppProfiles().get(sessionUri), + edhocEndpointInfoPersistent.getTrustModel(), oscoreDB); this.sessionUri = sessionUri; this.oscoreUri = edhocEndpointInfoPersistent.getOscoreUri(); @@ -63,6 +65,8 @@ public EdhocSessionPersistent( this.sessionResetEnabled = sessionResetEnabled; this.forceOscoreSenderId = forceOscoreSenderId; this.forceOscoreRecipientId = forceOscoreRecipientId; + this.connectionId = connectionId; + SideProcessor sideProcessor = new SideProcessor( edhocEndpointInfoPersistent.getTrustModel(), @@ -93,38 +97,39 @@ public synchronized void reset() { setEphemeralKey(); // peer dummy info - setPeerConnectionId(new byte[]{0, 0, 0, 0}); - setPeerCred(new byte[]{0, 0, 0, 0}); + setPeerConnectionId(new byte[] { 0, 0, 0, 0 }); + setPeerCred(new byte[] { 0, 0, 0, 0 }); setPeerIdCred(Util.buildIdCredKid(getPeerCred())); - // in order for the ephemeral and long-term keys of the two peers to be of the same curve + // in order for the ephemeral and long-term keys of the two peers to be of the + // same curve // dummy peerEphemeralPublicKey same as own ephemeral key // dummy peerLongTermPublicKey same as own long-term key setPeerEphemeralPublicKey(getEphemeralKey()); setPeerLongTermPublicKey(getKeyPair()); // message1 hash - setHashMessage1(new byte[]{1}); + setHashMessage1(new byte[] { 1 }); // plaintext2 - setPlaintext2(new byte[]{1}); + setPlaintext2(new byte[] { 1 }); // inner key-derivation Keys - setPRK2e(new byte[]{1}); - setPRK3e2m(new byte[]{1}); - setPRK4e3m(new byte[]{1}); + setPRK2e(new byte[] { 1 }); + setPRK3e2m(new byte[] { 1 }); + setPRK4e3m(new byte[] { 1 }); // transcript hashes - setTH2(new byte[]{1}); - setTH3(new byte[]{1}); - setTH4(new byte[]{1}); + setTH2(new byte[] { 1 }); + setTH3(new byte[] { 1 }); + setTH4(new byte[] { 1 }); // key after successful EDHOC execution - setPRKout(new byte[]{1}); - setPRKexporter(new byte[]{1}); + setPRKout(new byte[] { 1 }); + setPRKexporter(new byte[] { 1 }); // message3, to be used for building an EDHOC+OSCORE request - setMessage3(new byte[]{1}); + setMessage3(new byte[] { 1 }); // setup dummy oscore context and reset flag oscoreCtxGenerated = false; @@ -221,7 +226,8 @@ public void cleanMessage3() { } @Override - public byte[] edhocExporter(int label, CBORObject context, int len) throws InvalidKeyException, NoSuchAlgorithmException { + public byte[] edhocExporter(int label, CBORObject context, int len) + throws InvalidKeyException, NoSuchAlgorithmException { if (label < 0 || context.getType() != CBORType.ByteString || len < 0) return null; // do not check for session currentStep @@ -266,4 +272,20 @@ public byte[] getForceOscoreSenderId() { public byte[] getForceOscoreRecipientId() { return forceOscoreRecipientId; } + + public void setConnectionId(byte[] id) { + this.connectionId = id; + this.forceOscoreRecipientId = id; + setPRKexporter(new byte[] { 1 }); + setupOscoreContext(); + } + + /** + * Note: Override to enable modification of connectionId. + * It is private and (in practice) immutable in the parent class EdhocSession. + */ + @Override + public byte[] getConnectionId() { + return this.connectionId; + } } diff --git a/src/main/java/com/github/protocolfuzzing/edhocfuzzer/components/sul/core/protocol/MessageProcessorPersistent.java b/src/main/java/com/github/protocolfuzzing/edhocfuzzer/components/sul/core/protocol/MessageProcessorPersistent.java index 3b6b99f0..bba2de4e 100644 --- a/src/main/java/com/github/protocolfuzzing/edhocfuzzer/components/sul/core/protocol/MessageProcessorPersistent.java +++ b/src/main/java/com/github/protocolfuzzing/edhocfuzzer/components/sul/core/protocol/MessageProcessorPersistent.java @@ -15,10 +15,14 @@ import java.util.*; /** - * Taken and heavily adapted from {@link org.eclipse.californium.edhoc.MessageProcessor}. - * Substitutes the static functions of {@link org.eclipse.californium.edhoc.MessageProcessor} mainly by removing - * field cleanup and purge session calls and by delaying changes to session. The read functions return boolean. - * These functions are no longer static and take their parameters also from the class's field edhocMapperState. + * Taken and heavily adapted from + * {@link org.eclipse.californium.edhoc.MessageProcessor}. + * Substitutes the static functions of + * {@link org.eclipse.californium.edhoc.MessageProcessor} mainly by removing + * field cleanup and purge session calls and by delaying changes to session. The + * read functions return boolean. + * These functions are no longer static and take their parameters also from the + * class's field edhocMapperState. */ public class MessageProcessorPersistent { private static final Logger LOGGER = LogManager.getLogger(); @@ -41,7 +45,10 @@ public enum StructureCodes { UNKNOWN_MESSAGE } - /** Tries to match the byte sequence's structure of CBOR elements with an edhoc message */ + /** + * Tries to match the byte sequence's structure of CBOR elements with an edhoc + * message + */ public StructureCodes messageTypeFromStructure(byte[] sequence) { LOGGER.debug("Start of messageTypeFromStructure"); if (sequence == null) { @@ -62,8 +69,10 @@ public StructureCodes messageTypeFromStructure(byte[] sequence) { return StructureCodes.EDHOC_ERROR_MESSAGE; } - // A CoAP client receives responses from CoAP server without connection identifiers prepended - // A CoAP server receives requests from CoAP clients with C_I or C_R prepended if enabled + // A CoAP client receives responses from CoAP server without connection + // identifiers prepended + // A CoAP server receives requests from CoAP clients with C_I or C_R prepended + // if enabled int cX_offset = edhocMapperState.receiveWithPrependedCX() ? 1 : 0; int messageElementsLength = elements.length - cX_offset; @@ -95,10 +104,12 @@ public StructureCodes messageTypeFromStructure(byte[] sequence) { } } - /* Initiator message functions -- only session of Initiator is modified */ - /** Adapted from {@link org.eclipse.californium.edhoc.MessageProcessor#writeMessage1} */ + /** + * Adapted from + * {@link org.eclipse.californium.edhoc.MessageProcessor#writeMessage1} + */ public byte[] writeMessage1() { LOGGER.debug("Start of writeMessage1"); EdhocSessionPersistent session = edhocMapperState.getEdhocSessionPersistent(); @@ -126,12 +137,15 @@ public byte[] writeMessage1() { int preferredSuite = supportedCipherSuites.get(0); if (peerSupportedCipherSuites == null || peerSupportedCipherSuites.isEmpty()) { - // No SUITES_R has been received, so it is not known what cipher suites the responder supports + // No SUITES_R has been received, so it is not known what cipher suites the + // responder supports // The selected cipher suite is the most preferred by the initiator selectedSuite = preferredSuite; } else { - // SUITES_R has been received, so it is known what cipher suites the responder supports - // Pick the selected cipher suite as the most preferred by the Initiator from the ones + // SUITES_R has been received, so it is known what cipher suites the responder + // supports + // Pick the selected cipher suite as the most preferred by the Initiator from + // the ones // supported by the Responder for (Integer i : supportedCipherSuites) { if (peerSupportedCipherSuites.contains(i)) { @@ -149,7 +163,8 @@ public byte[] writeMessage1() { // Set the selected cipher suite session.setSelectedCipherSuite(selectedSuite); - // Set the asymmetric key pair, CRED and ID_CRED of the Initiator to use in this session + // Set the asymmetric key pair, CRED and ID_CRED of the Initiator to use in this + // session session.setAuthenticationCredential(); // Set the ephemeral keys of the Initiator to use in this session @@ -163,7 +178,8 @@ public byte[] writeMessage1() { suitesI = CBORObject.FromObject(selectedSuite); } else { // SUITES_I is a CBOR array - // The elements are the Initiator's supported cipher suite in decreasing order of preference, + // The elements are the Initiator's supported cipher suite in decreasing order + // of preference, // up until and including the selected suite as last element of the array. suitesI = CBORObject.NewArray(); for (Integer i : supportedCipherSuites) { @@ -178,11 +194,11 @@ public byte[] writeMessage1() { objectList.add(suitesI); // G_X as a CBOR byte string - CBORObject gX = switch(selectedSuite) { + CBORObject gX = switch (selectedSuite) { case Constants.EDHOC_CIPHER_SUITE_0, Constants.EDHOC_CIPHER_SUITE_1 -> - session.getEphemeralKey().PublicKey().get(KeyKeys.OKP_X); + session.getEphemeralKey().PublicKey().get(KeyKeys.OKP_X); case Constants.EDHOC_CIPHER_SUITE_2, Constants.EDHOC_CIPHER_SUITE_3 -> - session.getEphemeralKey().PublicKey().get(KeyKeys.EC2_X); + session.getEphemeralKey().PublicKey().get(KeyKeys.EC2_X); default -> null; }; @@ -198,7 +214,8 @@ public byte[] writeMessage1() { // C_I byte[] connectionIdentifierInitiator = session.getConnectionId(); CBORObject cI = encodeIdentifier(connectionIdentifierInitiator); - LOGGER.debug(EdhocUtil.byteArrayToString("Connection Identifier of the Initiator", connectionIdentifierInitiator)); + LOGGER.debug( + EdhocUtil.byteArrayToString("Connection Identifier of the Initiator", connectionIdentifierInitiator)); LOGGER.debug(EdhocUtil.byteArrayToString("C_I", cI.EncodeToBytes())); objectList.add(cI); @@ -212,10 +229,10 @@ public byte[] writeMessage1() { .containsKey(Constants.SIDE_PROCESSOR_OUTER_ERROR)) { String error = sideProcessor.getResults(Constants.EDHOC_MESSAGE_1, false) - .get(Constants.SIDE_PROCESSOR_OUTER_ERROR) - .get(0) - .get(Constants.SIDE_PROCESSOR_INNER_ERROR_DESCRIPTION) - .AsString(); + .get(Constants.SIDE_PROCESSOR_OUTER_ERROR) + .get(0) + .get(Constants.SIDE_PROCESSOR_INNER_ERROR_DESCRIPTION) + .AsString(); // No need to keep this information any longer in the side processor object sideProcessor.removeResultSet(Constants.EDHOC_MESSAGE_1, Constants.SIDE_PROCESSOR_OUTER_ERROR, false); @@ -249,12 +266,17 @@ public byte[] writeMessage1() { return message1; } - /** Adapted from {@link org.eclipse.californium.edhoc.MessageProcessor#readMessage2} */ + /** + * Adapted from + * {@link org.eclipse.californium.edhoc.MessageProcessor#readMessage2} + */ public boolean readMessage2(byte[] sequence) { LOGGER.debug("Start of readMessage2"); - Map edhocSessions = edhocMapperState.getEdhocEndpointInfoPersistent().getEdhocSessionsPersistent(); + Map edhocSessions = edhocMapperState.getEdhocEndpointInfoPersistent() + .getEdhocSessionsPersistent(); Map peerPublicKeys = edhocMapperState.getEdhocEndpointInfoPersistent().getPeerPublicKeys(); - Map peerCredentials = edhocMapperState.getEdhocEndpointInfoPersistent().getPeerCredentials(); + Map peerCredentials = edhocMapperState.getEdhocEndpointInfoPersistent() + .getPeerCredentials(); Set usedConnectionIds = edhocMapperState.getEdhocEndpointInfoPersistent().getUsedConnectionIds(); Set ownIdCreds = edhocMapperState.getOwnIdCreds(); @@ -284,7 +306,7 @@ public boolean readMessage2(byte[] sequence) { index++; CBORObject cI = objectListRequest[index]; - if (cI.getType() != CBORType.ByteString && cI.getType() != CBORType.Integer) { + if (cI.getType() != CBORType.ByteString && cI.getType() != CBORType.Integer) { LOGGER.error("R_M2: C_I must be a byte string or an integer"); return false; } @@ -296,16 +318,17 @@ public boolean readMessage2(byte[] sequence) { return false; } } else { - // CoAP Client as Initiator when Message 2 is a CoAP response of a previous Message 1 request + // CoAP Client as Initiator when Message 2 is a CoAP response of a previous + // Message 1 request // or CoAP Server as Initiator with correlation with CX is disabled connectionIdentifierInitiator = edhocMapperState.getEdhocSessionPersistent().getConnectionId(); } - LOGGER.debug(EdhocUtil.byteArrayToString("Connection Identifier of the Initiator", connectionIdentifierInitiator)); + LOGGER.debug( + EdhocUtil.byteArrayToString("Connection Identifier of the Initiator", connectionIdentifierInitiator)); CBORObject connectionIdentifierInitiatorCbor = CBORObject.FromObject(connectionIdentifierInitiator); EdhocSessionPersistent session = edhocSessions.get(connectionIdentifierInitiatorCbor); - if (session == null) { LOGGER.error("R_M2: EDHOC session not found"); return false; @@ -338,13 +361,13 @@ public boolean readMessage2(byte[] sequence) { // Ephemeral public key of the Responder int selectedCipherSuite = session.getSelectedCipherSuite(); - OneKey peerEphemeralKey = switch(selectedCipherSuite) { + OneKey peerEphemeralKey = switch (selectedCipherSuite) { case Constants.EDHOC_CIPHER_SUITE_0, Constants.EDHOC_CIPHER_SUITE_1 -> - SharedSecretCalculation.buildCurve25519OneKey(null, gY); + SharedSecretCalculation.buildCurve25519OneKey(null, gY); case Constants.EDHOC_CIPHER_SUITE_2, Constants.EDHOC_CIPHER_SUITE_3 -> - SharedSecretCalculation.buildEcdsa256OneKey(null, gY, null); + SharedSecretCalculation.buildEcdsa256OneKey(null, gY, null); default -> - null; + null; }; if (peerEphemeralKey == null) { @@ -378,11 +401,12 @@ public boolean readMessage2(byte[] sequence) { return false; } - LOGGER.debug(EdhocUtil.byteArrayToString("Connection Identifier of the Responder", connectionIdentifierResponder)); + LOGGER.debug(EdhocUtil.byteArrayToString("Connection Identifier of the Responder", + connectionIdentifierResponder)); LOGGER.debug(EdhocUtil.byteArrayToString("C_R", cR.EncodeToBytes())); if (session.getApplicationProfile().getUsedForOSCORE() - && Arrays.equals(connectionIdentifierInitiator, connectionIdentifierResponder)) { + && Arrays.equals(connectionIdentifierInitiator, connectionIdentifierResponder)) { LOGGER.warn("R_M2: Found C_R equal to C_I in an OSCORE enabled Application Profile"); } } @@ -500,11 +524,12 @@ public boolean readMessage2(byte[] sequence) { return false; } - LOGGER.debug(EdhocUtil.byteArrayToString("Connection Identifier of the Responder", connectionIdentifierResponder)); + LOGGER.debug(EdhocUtil.byteArrayToString("Connection Identifier of the Responder", + connectionIdentifierResponder)); LOGGER.debug(EdhocUtil.byteArrayToString("C_R", cR.EncodeToBytes())); if (session.getApplicationProfile().getUsedForOSCORE() - && Arrays.equals(connectionIdentifierInitiator, connectionIdentifierResponder)) { + && Arrays.equals(connectionIdentifierInitiator, connectionIdentifierResponder)) { LOGGER.warn("R_M2: Found C_R equal to C_I in an OSCORE enabled Application Profile"); } } @@ -581,10 +606,10 @@ public boolean readMessage2(byte[] sequence) { .containsKey(Constants.SIDE_PROCESSOR_OUTER_ERROR)) { String error = sideProcessor.getResults(Constants.EDHOC_MESSAGE_2, false) - .get(Constants.SIDE_PROCESSOR_OUTER_ERROR) - .get(0) - .get(Constants.SIDE_PROCESSOR_INNER_ERROR_DESCRIPTION) - .AsString(); + .get(Constants.SIDE_PROCESSOR_OUTER_ERROR) + .get(0) + .get(Constants.SIDE_PROCESSOR_INNER_ERROR_DESCRIPTION) + .AsString(); // No need to keep this information any longer in the side processor object sideProcessor.removeResultSet(Constants.EDHOC_MESSAGE_2, Constants.SIDE_PROCESSOR_OUTER_ERROR, false); @@ -600,9 +625,9 @@ public boolean readMessage2(byte[] sequence) { .containsKey(Constants.SIDE_PROCESSOR_OUTER_CRED)) { peerCredCBOR = sideProcessor.getResults(Constants.EDHOC_MESSAGE_2, false) - .get(Constants.SIDE_PROCESSOR_OUTER_CRED) - .get(0) - .get(Constants.SIDE_PROCESSOR_INNER_CRED_VALUE); + .get(Constants.SIDE_PROCESSOR_OUTER_CRED) + .get(0) + .get(Constants.SIDE_PROCESSOR_INNER_CRED_VALUE); if (peerCredCBOR == null) { LOGGER.error("R_M2: Unable to retrieve the peer credential from the side processing on message 2"); @@ -666,10 +691,10 @@ public boolean readMessage2(byte[] sequence) { .containsKey(Constants.SIDE_PROCESSOR_OUTER_ERROR)) { String error = sideProcessor.getResults(Constants.EDHOC_MESSAGE_2, true) - .get(Constants.SIDE_PROCESSOR_OUTER_ERROR) - .get(0) - .get(Constants.SIDE_PROCESSOR_INNER_ERROR_DESCRIPTION) - .AsString(); + .get(Constants.SIDE_PROCESSOR_OUTER_ERROR) + .get(0) + .get(Constants.SIDE_PROCESSOR_INNER_ERROR_DESCRIPTION) + .AsString(); // No need to keep this information any longer in the side processor object sideProcessor.removeResultSet(Constants.EDHOC_MESSAGE_2, Constants.SIDE_PROCESSOR_OUTER_ERROR, true); @@ -696,7 +721,10 @@ public boolean readMessage2(byte[] sequence) { return true; } - /** Adapted from {@link org.eclipse.californium.edhoc.MessageProcessor#writeMessage3} */ + /** + * Adapted from + * {@link org.eclipse.californium.edhoc.MessageProcessor#writeMessage3} + */ public byte[] writeMessage3() { LOGGER.debug("Start of writeMessage3"); EdhocSessionPersistent session = edhocMapperState.getEdhocSessionPersistent(); @@ -756,10 +784,10 @@ public byte[] writeMessage3() { .containsKey(Constants.SIDE_PROCESSOR_OUTER_ERROR)) { String error = sideProcessor.getResults(Constants.EDHOC_MESSAGE_3, false) - .get(Constants.SIDE_PROCESSOR_OUTER_ERROR) - .get(0) - .get(Constants.SIDE_PROCESSOR_INNER_ERROR_DESCRIPTION) - .AsString(); + .get(Constants.SIDE_PROCESSOR_OUTER_ERROR) + .get(0) + .get(Constants.SIDE_PROCESSOR_INNER_ERROR_DESCRIPTION) + .AsString(); // No need to keep this information any longer in the side processor object sideProcessor.removeResultSet(Constants.EDHOC_MESSAGE_3, Constants.SIDE_PROCESSOR_OUTER_ERROR, false); @@ -902,10 +930,14 @@ public byte[] writeMessage3() { return message3; } - /** Adapted from {@link org.eclipse.californium.edhoc.MessageProcessor#readMessage4} */ + /** + * Adapted from + * {@link org.eclipse.californium.edhoc.MessageProcessor#readMessage4} + */ public boolean readMessage4(byte[] sequence) { LOGGER.debug("Start of readMessage4"); - Map edhocSessions = edhocMapperState.getEdhocEndpointInfoPersistent().getEdhocSessionsPersistent(); + Map edhocSessions = edhocMapperState.getEdhocEndpointInfoPersistent() + .getEdhocSessionsPersistent(); Set usedConnectionIds = edhocMapperState.getEdhocEndpointInfoPersistent().getUsedConnectionIds(); if (sequence == null || edhocSessions == null || usedConnectionIds == null) { @@ -932,7 +964,7 @@ public boolean readMessage4(byte[] sequence) { // C_I is present as first element of the CBOR sequence index++; if (objectListRequest[index].getType() != CBORType.ByteString - && objectListRequest[index].getType() != CBORType.Integer) { + && objectListRequest[index].getType() != CBORType.Integer) { LOGGER.error("R_M4: C_I must be a byte string or an integer"); return false; } @@ -943,7 +975,8 @@ public boolean readMessage4(byte[] sequence) { return false; } } else { - // CoAP Client as Initiator when Message 4 is a CoAP response of a previous Message 3 request + // CoAP Client as Initiator when Message 4 is a CoAP response of a previous + // Message 3 request // or CoAP Server as Initiator with correlation with CX is disabled connectionIdentifierInitiator = edhocMapperState.getEdhocSessionPersistent().getConnectionId(); } @@ -1002,15 +1035,18 @@ public boolean readMessage4(byte[] sequence) { } LOGGER.debug(EdhocUtil.byteArrayToString("IV", iv4ae)); - byte[] plaintext4 = decryptCiphertext4(session.getSelectedCipherSuite(), externalData, ciphertext4, k4ae, iv4ae); + byte[] plaintext4 = decryptCiphertext4(session.getSelectedCipherSuite(), externalData, ciphertext4, k4ae, + iv4ae); if (plaintext4 == null) { LOGGER.error("R_M4: Decrypting CIPHERTEXT_4"); return false; } LOGGER.debug(EdhocUtil.byteArrayToString("Plaintext retrieved from CIPHERTEXT_4", plaintext4)); - // Parse the outer plaintext as a CBOR sequence. To be valid, this is either the empty plaintext - // or just padding or padding followed by the External Authorization Data EAD_4 possibly + // Parse the outer plaintext as a CBOR sequence. To be valid, this is either the + // empty plaintext + // or just padding or padding followed by the External Authorization Data EAD_4 + // possibly CBORObject[] ead4 = null; if (plaintext4.length > 0) { @@ -1058,13 +1094,14 @@ public boolean readMessage4(byte[] sequence) { .containsKey(Constants.SIDE_PROCESSOR_OUTER_ERROR)) { String error = sideProcessor.getResults(Constants.EDHOC_MESSAGE_4, false) - .get(Constants.SIDE_PROCESSOR_OUTER_ERROR) - .get(0) - .get(Constants.SIDE_PROCESSOR_INNER_ERROR_DESCRIPTION) - .AsString(); + .get(Constants.SIDE_PROCESSOR_OUTER_ERROR) + .get(0) + .get(Constants.SIDE_PROCESSOR_INNER_ERROR_DESCRIPTION) + .AsString(); // No need to keep this information any longer in the side processor object - sideProcessor.removeResultSet(Constants.EDHOC_MESSAGE_4, Constants.SIDE_PROCESSOR_OUTER_ERROR, false); + sideProcessor.removeResultSet(Constants.EDHOC_MESSAGE_4, Constants.SIDE_PROCESSOR_OUTER_ERROR, + false); LOGGER.error("R_M4: Using side processor on message 4: {}", error); return false; @@ -1077,13 +1114,16 @@ public boolean readMessage4(byte[] sequence) { return true; } - /* Responder message functions -- only session of Responder is modified */ - /** Adapted from {@link org.eclipse.californium.edhoc.MessageProcessor#readMessage1} */ + /** + * Adapted from + * {@link org.eclipse.californium.edhoc.MessageProcessor#readMessage1} + */ public boolean readMessage1(byte[] sequence) { LOGGER.debug("Start of readMessage1"); - List supportedCipherSuites = edhocMapperState.getEdhocEndpointInfoPersistent().getSupportedCipherSuites(); + List supportedCipherSuites = edhocMapperState.getEdhocEndpointInfoPersistent() + .getSupportedCipherSuites(); AppProfile appProfile = edhocMapperState.getEdhocSessionPersistent().getApplicationProfile(); if (sequence == null || supportedCipherSuites == null || appProfile == null) { @@ -1107,7 +1147,8 @@ public boolean readMessage1(byte[] sequence) { return false; } - // If the received message is a request and the first element before the actual message_1 is the + // If the received message is a request and the first element before the actual + // message_1 is the // CBOR simple value 'true', it can be skipped if (edhocMapperState.receiveWithPrependedCX()) { index++; @@ -1160,7 +1201,7 @@ public boolean readMessage1(byte[] sequence) { } for (int i = 0; i < objectListRequest[index].size(); i++) { - if(objectListRequest[index].get(i).getType() != CBORType.Integer + if (objectListRequest[index].get(i).getType() != CBORType.Integer || objectListRequest[index].get(i).AsInt32() < 0) { LOGGER.error("R_M1: SUITES_I as an array must have positive integers as elements"); return false; @@ -1169,7 +1210,7 @@ public boolean readMessage1(byte[] sequence) { // The selected cipher suite is the last element of SUITES_I int size = objectListRequest[index].size(); - selectedCipherSuite = objectListRequest[index].get(size-1).AsInt32(); + selectedCipherSuite = objectListRequest[index].get(size - 1).AsInt32(); int firstSharedCipherSuite = -1; // Find the first commonly supported cipher suite, i.e. the cipher suite both @@ -1190,15 +1231,16 @@ public boolean readMessage1(byte[] sequence) { // The Responder does not support any cipher suites in SUITES_I. // SUITES_R will include all the cipher suites supported by the Responder cipherSuitesToOffer = supportedCipherSuites; - } - else { + } else { // SUITES_R will include only the cipher suite supported // by both peers and most preferred by the Initiator. cipherSuitesToOffer = new ArrayList<>(firstSharedCipherSuite); } } else if (firstSharedCipherSuite != selectedCipherSuite) { - // The Responder supports the selected cipher suite, but it has to reply with an EDHOC Error Message - // if it supports a cipher suite more preferred by the Initiator than the selected cipher suite + // The Responder supports the selected cipher suite, but it has to reply with an + // EDHOC Error Message + // if it supports a cipher suite more preferred by the Initiator than the + // selected cipher suite LOGGER.error("R_M1: The selected cipher suite is not supported"); @@ -1247,9 +1289,11 @@ public boolean readMessage1(byte[] sequence) { if (length > 0) { // EAD_1 is present if (hasProtocolVersionLeqV17()) { - ead1 = preParseEADleqV17(objectListRequest, index, edhocMapperState.getEdhocSessionPersistent().getSupportedEADs()); + ead1 = preParseEADleqV17(objectListRequest, index, + edhocMapperState.getEdhocSessionPersistent().getSupportedEADs()); } else { - ead1 = preParseEAD(objectListRequest, index, 1, edhocMapperState.getEdhocSessionPersistent().getSupportedEADs()); + ead1 = preParseEAD(objectListRequest, index, 1, + edhocMapperState.getEdhocSessionPersistent().getSupportedEADs()); } if (ead1 == null) { @@ -1291,13 +1335,14 @@ public boolean readMessage1(byte[] sequence) { .containsKey(Constants.SIDE_PROCESSOR_OUTER_ERROR)) { String error = sideProcessor.getResults(Constants.EDHOC_MESSAGE_1, false) - .get(Constants.SIDE_PROCESSOR_OUTER_ERROR) - .get(0) - .get(Constants.SIDE_PROCESSOR_INNER_ERROR_DESCRIPTION) - .AsString(); + .get(Constants.SIDE_PROCESSOR_OUTER_ERROR) + .get(0) + .get(Constants.SIDE_PROCESSOR_INNER_ERROR_DESCRIPTION) + .AsString(); // No need to keep this information any longer in the side processor object - sideProcessor.removeResultSet(Constants.EDHOC_MESSAGE_1, Constants.SIDE_PROCESSOR_OUTER_ERROR, false); + sideProcessor.removeResultSet(Constants.EDHOC_MESSAGE_1, Constants.SIDE_PROCESSOR_OUTER_ERROR, + false); LOGGER.error("R_M1: Using side processor on message 1: {}", error); return false; @@ -1305,7 +1350,10 @@ public boolean readMessage1(byte[] sequence) { } } - /* Modify session -- Create a new edhocSessionPersistent to replace current session */ + /* + * Modify session -- Create a new edhocSessionPersistent to replace current + * session + */ EdhocSessionPersistent oldSession = edhocMapperState.getEdhocSessionPersistent(); EdhocEndpointInfoPersistent endpointInfo = edhocMapperState.getEdhocEndpointInfoPersistent(); @@ -1319,7 +1367,7 @@ public boolean readMessage1(byte[] sequence) { byte[] connectionIdResponder = oldSession.getConnectionId(); if (edhocMapperState.getEdhocMapperConfig().generateOwnConnectionId()) { connectionIdResponder = Util.getConnectionId(endpointInfo.getUsedConnectionIds(), - endpointInfo.getOscoreDb(), connectionIdInitiator); + endpointInfo.getOscoreDb(), connectionIdInitiator); } EdhocSessionPersistent newSession = new EdhocSessionPersistent(oldSession.getSessionUri(), @@ -1331,20 +1379,21 @@ public boolean readMessage1(byte[] sequence) { // Set the selected cipher suite newSession.setSelectedCipherSuite(selectedCipherSuite); - // Set the asymmetric key pair, CRED and ID_CRED of the Responder to use in this session + // Set the asymmetric key pair, CRED and ID_CRED of the Responder to use in this + // session newSession.setAuthenticationCredential(); // Set the Connection Identifier of the peer newSession.setPeerConnectionId(connectionIdInitiator); // Set the ephemeral public key of the Initiator - OneKey peerEphemeralKey = switch(selectedCipherSuite) { + OneKey peerEphemeralKey = switch (selectedCipherSuite) { case Constants.EDHOC_CIPHER_SUITE_0, Constants.EDHOC_CIPHER_SUITE_1 -> - SharedSecretCalculation.buildCurve25519OneKey(null, gX); + SharedSecretCalculation.buildCurve25519OneKey(null, gX); case Constants.EDHOC_CIPHER_SUITE_2, Constants.EDHOC_CIPHER_SUITE_3 -> - SharedSecretCalculation.buildEcdsa256OneKey(null, gX, null); + SharedSecretCalculation.buildEcdsa256OneKey(null, gX, null); default -> - throw new IllegalStateException("Unexpected value: " + selectedCipherSuite); + throw new IllegalStateException("Unexpected value: " + selectedCipherSuite); }; newSession.setPeerEphemeralPublicKey(peerEphemeralKey); @@ -1372,17 +1421,22 @@ public boolean readMessage1(byte[] sequence) { return true; } - /** Adapted from {@link org.eclipse.californium.edhoc.MessageProcessor#writeMessage2} */ + /** + * Adapted from + * {@link org.eclipse.californium.edhoc.MessageProcessor#writeMessage2} + */ public byte[] writeMessage2() { LOGGER.debug("Start of writeMessage2"); EdhocSessionPersistent session = edhocMapperState.getEdhocSessionPersistent(); List objectList = new ArrayList<>(); - // C_I, if EDHOC message_2 is transported in a CoAP request and CX correlation is enabled + // C_I, if EDHOC message_2 is transported in a CoAP request and CX correlation + // is enabled if (edhocMapperState.sendWithPrependedCX()) { byte[] connectionIdentifierInitiator = session.getPeerConnectionId(); CBORObject cI = encodeIdentifier(connectionIdentifierInitiator); - LOGGER.debug(EdhocUtil.byteArrayToString("Connection Identifier of the Initiator", connectionIdentifierInitiator)); + LOGGER.debug(EdhocUtil.byteArrayToString("Connection Identifier of the Initiator", + connectionIdentifierInitiator)); LOGGER.debug(EdhocUtil.byteArrayToString("C_I", cI.EncodeToBytes())); objectList.add(cI); } @@ -1394,11 +1448,11 @@ public byte[] writeMessage2() { // G_Y as a CBOR byte string int selectedSuite = session.getSelectedCipherSuite(); - CBORObject gY = switch(selectedSuite) { + CBORObject gY = switch (selectedSuite) { case Constants.EDHOC_CIPHER_SUITE_0, Constants.EDHOC_CIPHER_SUITE_1 -> - session.getEphemeralKey().PublicKey().get(KeyKeys.OKP_X); + session.getEphemeralKey().PublicKey().get(KeyKeys.OKP_X); case Constants.EDHOC_CIPHER_SUITE_2, Constants.EDHOC_CIPHER_SUITE_3 -> - session.getEphemeralKey().PublicKey().get(KeyKeys.EC2_X); + session.getEphemeralKey().PublicKey().get(KeyKeys.EC2_X); default -> null; }; @@ -1412,7 +1466,8 @@ public byte[] writeMessage2() { // C_R byte[] connectionIdentifierResponder = session.getConnectionId(); CBORObject cR = encodeIdentifier(connectionIdentifierResponder); - LOGGER.debug(EdhocUtil.byteArrayToString("Connection Identifier of the Responder", connectionIdentifierResponder)); + LOGGER.debug( + EdhocUtil.byteArrayToString("Connection Identifier of the Responder", connectionIdentifierResponder)); LOGGER.debug(EdhocUtil.byteArrayToString("C_R", cR.EncodeToBytes())); // Compute TH_2 @@ -1436,7 +1491,6 @@ public byte[] writeMessage2() { LOGGER.debug(EdhocUtil.byteArrayToString("H(message_1)", hashMessage1)); LOGGER.debug(EdhocUtil.byteArrayToString("TH_2", th2)); - // Compute the key material // Compute the Diffie-Hellman secret G_XY @@ -1483,10 +1537,10 @@ public byte[] writeMessage2() { .containsKey(Constants.SIDE_PROCESSOR_OUTER_ERROR)) { String error = sideProcessor.getResults(Constants.EDHOC_MESSAGE_2, false) - .get(Constants.SIDE_PROCESSOR_OUTER_ERROR) - .get(0) - .get(Constants.SIDE_PROCESSOR_INNER_ERROR_DESCRIPTION) - .AsString(); + .get(Constants.SIDE_PROCESSOR_OUTER_ERROR) + .get(0) + .get(Constants.SIDE_PROCESSOR_INNER_ERROR_DESCRIPTION) + .AsString(); // No need to keep this information any longer in the side processor object sideProcessor.removeResultSet(Constants.EDHOC_MESSAGE_2, Constants.SIDE_PROCESSOR_OUTER_ERROR, false); @@ -1539,7 +1593,8 @@ public byte[] writeMessage2() { } if (session.getIdCred().ContainsKey(HeaderKeys.KID.AsCBOR())) { - // ID_CRED_R uses 'kid', whose value is the only thing to include in the plaintext + // ID_CRED_R uses 'kid', whose value is the only thing to include in the + // plaintext CBORObject kid = session.getIdCred().get(HeaderKeys.KID.AsCBOR()); plaintextElement = encodeIdentifier(kid.GetByteString()); } else { @@ -1558,7 +1613,7 @@ public byte[] writeMessage2() { // Compute KEYSTREAM_2 byte[] keystream2 = computeKeystream2(session, th2, prk2e, plaintext2.length); - if (keystream2== null) { + if (keystream2 == null) { LOGGER.error("W_M2: Computing KEYSTREAM_2"); return null; } @@ -1574,7 +1629,8 @@ public byte[] writeMessage2() { System.arraycopy(gY.GetByteString(), 0, gY_Ciphertext2, 0, gY.GetByteString().length); System.arraycopy(ciphertext2, 0, gY_Ciphertext2, gY.GetByteString().length, ciphertext2.length); - // Wrap the result in a single CBOR byte string, included in the outer CBOR sequence of EDHOC Message 2 + // Wrap the result in a single CBOR byte string, included in the outer CBOR + // sequence of EDHOC Message 2 objectList.add(CBORObject.FromObject(gY_Ciphertext2)); LOGGER.debug(EdhocUtil.byteArrayToString("G_Y | CIPHERTEXT_2", gY_Ciphertext2)); @@ -1587,7 +1643,6 @@ public byte[] writeMessage2() { byte[] message2 = EdhocUtil.buildCBORSequence(objectList); LOGGER.debug(EdhocUtil.byteArrayToString("EDHOC Message 2", message2)); - /* Modify session */ if (!session.isInitiator()) { session.setTH2(th2); @@ -1599,12 +1654,17 @@ public byte[] writeMessage2() { return message2; } - /** Adapted from {@link org.eclipse.californium.edhoc.MessageProcessor#readMessage3} */ + /** + * Adapted from + * {@link org.eclipse.californium.edhoc.MessageProcessor#readMessage3} + */ public boolean readMessage3(byte[] sequence) { LOGGER.debug("Start of readMessage3"); - Map edhocSessions = edhocMapperState.getEdhocEndpointInfoPersistent().getEdhocSessionsPersistent(); + Map edhocSessions = edhocMapperState.getEdhocEndpointInfoPersistent() + .getEdhocSessionsPersistent(); Map peerPublicKeys = edhocMapperState.getEdhocEndpointInfoPersistent().getPeerPublicKeys(); - Map peerCredentials = edhocMapperState.getEdhocEndpointInfoPersistent().getPeerCredentials(); + Map peerCredentials = edhocMapperState.getEdhocEndpointInfoPersistent() + .getPeerCredentials(); Set usedConnectionIds = edhocMapperState.getEdhocEndpointInfoPersistent().getUsedConnectionIds(); if (sequence == null || edhocSessions == null || peerPublicKeys == null || peerCredentials == null @@ -1622,7 +1682,6 @@ public boolean readMessage3(byte[] sequence) { return false; } - /* Consistency checks */ // C_R @@ -1633,7 +1692,7 @@ public boolean readMessage3(byte[] sequence) { // C_R is present as first element of the CBOR sequence index++; if (objectListRequest[index].getType() != CBORType.ByteString - && objectListRequest[index].getType() != CBORType.Integer) { + && objectListRequest[index].getType() != CBORType.Integer) { LOGGER.error("R_M3: C_R must be a byte string or an integer"); return false; } @@ -1644,7 +1703,8 @@ public boolean readMessage3(byte[] sequence) { return false; } } else { - // CoAP Client as Responder when Message 3 is a CoAP response of a previous Message 2 request + // CoAP Client as Responder when Message 3 is a CoAP response of a previous + // Message 2 request // or CoAP Server as Initiator with CX correlation disabled connectionIdentifierResponder = edhocMapperState.getEdhocSessionPersistent().getConnectionId(); } @@ -1695,7 +1755,6 @@ public boolean readMessage3(byte[] sequence) { } LOGGER.debug(EdhocUtil.byteArrayToString("K_3", k3)); - byte[] iv3 = computeKeyOrIV3("IV", session, th3, session.getPRK3e2m()); if (iv3 == null) { LOGGER.error("R_M3: Computing IV_3ae"); @@ -1732,7 +1791,7 @@ public boolean readMessage3(byte[] sequence) { if (hasProtocolVersionLeqV17()) { // Discard possible padding prepended to the plaintext while (baseIndex < plaintextElementList.length - && plaintextElementList[baseIndex].equals(CBORObject.True)) { + && plaintextElementList[baseIndex].equals(CBORObject.True)) { baseIndex++; } } @@ -1807,10 +1866,10 @@ public boolean readMessage3(byte[] sequence) { .containsKey(Constants.SIDE_PROCESSOR_OUTER_ERROR)) { String error = sideProcessor.getResults(Constants.EDHOC_MESSAGE_3, false) - .get(Constants.SIDE_PROCESSOR_OUTER_ERROR) - .get(0) - .get(Constants.SIDE_PROCESSOR_INNER_ERROR_DESCRIPTION) - .AsString(); + .get(Constants.SIDE_PROCESSOR_OUTER_ERROR) + .get(0) + .get(Constants.SIDE_PROCESSOR_INNER_ERROR_DESCRIPTION) + .AsString(); // No need to keep this information any longer in the side processor object sideProcessor.removeResultSet(Constants.EDHOC_MESSAGE_3, Constants.SIDE_PROCESSOR_OUTER_ERROR, false); @@ -1819,16 +1878,17 @@ public boolean readMessage3(byte[] sequence) { return false; } - // If no error occurred, the side processor object includes the authentication credential + // If no error occurred, the side processor object includes the authentication + // credential // of the other peer, if a valid one was found during the side processing CBORObject peerCredCBOR = null; if (sideProcessor.getResults(Constants.EDHOC_MESSAGE_3, false) .containsKey(Integer.valueOf(Constants.SIDE_PROCESSOR_OUTER_CRED))) { peerCredCBOR = sideProcessor.getResults(Constants.EDHOC_MESSAGE_3, false) - .get(Integer.valueOf(Constants.SIDE_PROCESSOR_OUTER_CRED)) - .get(0) - .get(Integer.valueOf(Constants.SIDE_PROCESSOR_INNER_CRED_VALUE)); + .get(Integer.valueOf(Constants.SIDE_PROCESSOR_OUTER_CRED)) + .get(0) + .get(Integer.valueOf(Constants.SIDE_PROCESSOR_INNER_CRED_VALUE)); if (peerCredCBOR == null) { LOGGER.error("R_M3: Unable to retrieve the peer credential from the side processing on message 3"); @@ -1894,10 +1954,10 @@ public boolean readMessage3(byte[] sequence) { .containsKey(Constants.SIDE_PROCESSOR_OUTER_ERROR)) { String error = sideProcessor.getResults(Constants.EDHOC_MESSAGE_3, true) - .get(Constants.SIDE_PROCESSOR_OUTER_ERROR) - .get(0) - .get(Constants.SIDE_PROCESSOR_INNER_ERROR_DESCRIPTION) - .AsString(); + .get(Constants.SIDE_PROCESSOR_OUTER_ERROR) + .get(0) + .get(Constants.SIDE_PROCESSOR_INNER_ERROR_DESCRIPTION) + .AsString(); // No need to keep this information any longer in the side processor object sideProcessor.removeResultSet(Constants.EDHOC_MESSAGE_3, Constants.SIDE_PROCESSOR_OUTER_ERROR, true); @@ -1960,7 +2020,10 @@ public boolean readMessage3(byte[] sequence) { return true; } - /** Adapted from {@link org.eclipse.californium.edhoc.MessageProcessor#writeMessage4} */ + /** + * Adapted from + * {@link org.eclipse.californium.edhoc.MessageProcessor#writeMessage4} + */ public byte[] writeMessage4() { LOGGER.debug("Start of writeMessage4"); EdhocSessionPersistent session = edhocMapperState.getEdhocSessionPersistent(); @@ -1968,7 +2031,8 @@ public byte[] writeMessage4() { /* Start preparing data_4 */ - // C_I, if EDHOC message_4 is transported in a CoAP request and CX correlation is enabled + // C_I, if EDHOC message_4 is transported in a CoAP request and CX correlation + // is enabled if (edhocMapperState.sendWithPrependedCX()) { byte[] connectionIdentifierInitiator = session.getPeerConnectionId(); CBORObject cI = encodeIdentifier(connectionIdentifierInitiator); @@ -2001,10 +2065,10 @@ public byte[] writeMessage4() { .containsKey(Constants.SIDE_PROCESSOR_OUTER_ERROR)) { String error = sideProcessor.getResults(Constants.EDHOC_MESSAGE_4, false) - .get(Constants.SIDE_PROCESSOR_OUTER_ERROR) - .get(0) - .get(Constants.SIDE_PROCESSOR_INNER_ERROR_DESCRIPTION) - .AsString(); + .get(Constants.SIDE_PROCESSOR_OUTER_ERROR) + .get(0) + .get(Constants.SIDE_PROCESSOR_INNER_ERROR_DESCRIPTION) + .AsString(); // No need to keep this information any longer in the side processor object sideProcessor.removeResultSet(Constants.EDHOC_MESSAGE_4, Constants.SIDE_PROCESSOR_OUTER_ERROR, false); @@ -2061,31 +2125,37 @@ public byte[] writeMessage4() { return message4; } - /* Error message functions */ - /** Adapted from {@link org.eclipse.californium.edhoc.MessageProcessor#isErrorMessage} */ + /** + * Adapted from + * {@link org.eclipse.californium.edhoc.MessageProcessor#isErrorMessage} + */ protected boolean hasErrorMessageStructure(CBORObject[] myObjects) { // A CoAP message including an EDHOC error message is a CBOR sequence of - // CX - not true (optional); ERR_CODE - int (mandatory); ERR_INFO - any type (mandatory) + // CX - not true (optional); ERR_CODE - int (mandatory); ERR_INFO - any type + // (mandatory) if (myObjects.length != 3 && myObjects.length != 2) { return false; } if (edhocMapperState.receiveWithPrependedCX()) { // Received by CoAP server - // Error message is a request, this starts with C_X different from 'true' (0xf5), + // Error message is a request, this starts with C_X different from 'true' + // (0xf5), // followed by ERR_CODE as a CBOR integer return !myObjects[0].equals(CBORObject.True) && myObjects[1].getType() == CBORType.Integer; - } - else { + } else { // Received by CoAP client or CoAP server with CX correlation disabled // Error message is a response, this starts with ERR_CODE as a CBOR integer return myObjects[0].getType() == CBORType.Integer; } } - /** Adapted from {@link org.eclipse.californium.edhoc.MessageProcessor#writeErrorMessage} */ + /** + * Adapted from + * {@link org.eclipse.californium.edhoc.MessageProcessor#writeErrorMessage} + */ public byte[] writeErrorMessage(int errorCode, String errMsg) { LOGGER.debug("Start of writeErrorMessage"); @@ -2097,7 +2167,7 @@ public byte[] writeErrorMessage(int errorCode, String errMsg) { } if (cipherSuites != null && cipherSuites.getType() == CBORType.Array) { - for (int i = 0 ; i < cipherSuites.size(); i++) { + for (int i = 0; i < cipherSuites.size(); i++) { if (cipherSuites.get(i).getType() != CBORType.Integer) { return null; } @@ -2106,7 +2176,8 @@ public byte[] writeErrorMessage(int errorCode, String errMsg) { List objectList = new ArrayList<>(); - // Include C_X if error message sent from CoAP Client with CX correlation enabled + // Include C_X if error message sent from CoAP Client with CX correlation + // enabled if (edhocMapperState.sendWithPrependedCX()) { CBORObject cX = encodeIdentifier(edhocMapperState.getEdhocSessionPersistent().getPeerConnectionId()); objectList.add(cX); @@ -2123,7 +2194,8 @@ public byte[] writeErrorMessage(int errorCode, String errMsg) { // Include DIAG_MSG objectList.add(CBORObject.FromObject(errMsg)); } else if (errorCode == Constants.ERR_CODE_WRONG_SELECTED_CIPHER_SUITE) { - // Possibly include cipher suites, this implies that EDHOC Message 1 was good enough + // Possibly include cipher suites, this implies that EDHOC Message 1 was good + // enough // to yield a suite negotiation if (cipherSuites != null) objectList.add(cipherSuites); @@ -2136,7 +2208,10 @@ public byte[] writeErrorMessage(int errorCode, String errMsg) { return payload; } - /** Adapted from {@link org.eclipse.californium.edhoc.MessageProcessor#readErrorMessage} */ + /** + * Adapted from + * {@link org.eclipse.californium.edhoc.MessageProcessor#readErrorMessage} + */ public boolean readErrorMessage(byte[] sequence) { LOGGER.debug("Start of readErrorMessage"); Map edhocSessions = edhocMapperState.getEdhocEndpointInfoPersistent() @@ -2163,7 +2238,8 @@ public boolean readErrorMessage(byte[] sequence) { } if (edhocMapperState.receiveWithPrependedCX()) { - // The connection identifier is expected as first element in the EDHOC Error Message + // The connection identifier is expected as first element in the EDHOC Error + // Message if (objectList[index].getType() != CBORType.ByteString && objectList[index].getType() != CBORType.Integer) { LOGGER.error("R_ERR: Invalid format of C_X"); @@ -2196,17 +2272,17 @@ public boolean readErrorMessage(byte[] sequence) { index++; // Check that the rest of the message is consistent - if (objectList.length == index){ + if (objectList.length == index) { LOGGER.error("R_ERR: ERR_INFO expected but not included"); return false; } - if (objectList.length > (index + 1)){ + if (objectList.length > (index + 1)) { LOGGER.error("R_ERR: Unexpected parameters following ERR_INFO"); return false; } - switch(errorCode) { + switch (errorCode) { case Constants.ERR_CODE_SUCCESS -> { LOGGER.warn("R_ERR: Error code success"); } @@ -2217,14 +2293,15 @@ public boolean readErrorMessage(byte[] sequence) { return false; } String errorMsg = objectList[index].AsString(); - LOGGER.info("ERR_INFO: {} ~ {}", EdhocUtil.byteArrayToString(errorMsg.getBytes(StandardCharsets.UTF_8)), errorMsg); + LOGGER.info("ERR_INFO: {} ~ {}", EdhocUtil.byteArrayToString(errorMsg.getBytes(StandardCharsets.UTF_8)), + errorMsg); } case Constants.ERR_CODE_WRONG_SELECTED_CIPHER_SUITE -> { CBORObject suitesR = objectList[index]; List peerSupportedCipherSuites = new ArrayList<>(); - switch(suitesR.getType()) { + switch (suitesR.getType()) { case Integer -> { peerSupportedCipherSuites.add(suitesR.AsInt32()); } @@ -2257,10 +2334,12 @@ public boolean readErrorMessage(byte[] sequence) { return true; } - /* General util functions */ - /** Adapted from {@link org.eclipse.californium.edhoc.MessageProcessor#encodeIdentifier} */ + /** + * Adapted from + * {@link org.eclipse.californium.edhoc.MessageProcessor#encodeIdentifier} + */ protected CBORObject encodeIdentifier(byte[] identifier) { CBORObject identifierCBOR = null; @@ -2273,13 +2352,14 @@ protected CBORObject encodeIdentifier(byte[] identifier) { int byteValue = EdhocUtil.bytesToInt(identifier); if ((byteValue >= 0 && byteValue <= 23) || (byteValue >= 32 && byteValue <= 55)) { - // The EDHOC connection identifier is in the range 0x00-0x17 or in the range 0x20-0x37. - // That is, it happens to be the serialization of a CBOR integer with numeric value -24..23 + // The EDHOC connection identifier is in the range 0x00-0x17 or in the range + // 0x20-0x37. + // That is, it happens to be the serialization of a CBOR integer with numeric + // value -24..23 // Encode the EDHOC connection identifier as a CBOR integer identifierCBOR = CBORObject.DecodeFromBytes(identifier); - } - else { + } else { // Encode the EDHOC connection identifier as a CBOR byte string identifierCBOR = CBORObject.FromObject(identifier); } @@ -2288,7 +2368,10 @@ protected CBORObject encodeIdentifier(byte[] identifier) { return identifierCBOR; } - /** Adapted from {@link org.eclipse.californium.edhoc.MessageProcessor#decodeIdentifier} */ + /** + * Adapted from + * {@link org.eclipse.californium.edhoc.MessageProcessor#decodeIdentifier} + */ protected byte[] decodeIdentifier(CBORObject identifierCbor) { byte[] identifier = null; @@ -2302,12 +2385,12 @@ protected byte[] decodeIdentifier(CBORObject identifierCbor) { // This EDHOC connection identifier should have been encoded as a CBOR integer identifier = null; } - } - else if (identifierCbor != null && identifierCbor.getType() == CBORType.Integer) { + } else if (identifierCbor != null && identifierCbor.getType() == CBORType.Integer) { identifier = identifierCbor.EncodeToBytes(); if (identifier.length != 1) { - // This EDHOC connection identifier is not valid or was not encoded according to deterministic CBOR + // This EDHOC connection identifier is not valid or was not encoded according to + // deterministic CBOR identifier = null; } @@ -2315,7 +2398,10 @@ else if (identifierCbor != null && identifierCbor.getType() == CBORType.Integer) return identifier; } - /** Adapted from {@link org.eclipse.californium.edhoc.MessageProcessor#computeTH2} */ + /** + * Adapted from + * {@link org.eclipse.californium.edhoc.MessageProcessor#computeTH2} + */ protected byte[] computeTH2(String hashAlgorithm, byte[] gY, byte[] cR, byte[] hashMessage1) { int offset = 0; byte[] hashInput = new byte[gY.length + cR.length + hashMessage1.length]; @@ -2333,7 +2419,10 @@ protected byte[] computeTH2(String hashAlgorithm, byte[] gY, byte[] cR, byte[] h } } - /** Adapted from {@link org.eclipse.californium.edhoc.MessageProcessor#computePRK2e} */ + /** + * Adapted from + * {@link org.eclipse.californium.edhoc.MessageProcessor#computePRK2e} + */ protected byte[] computePRK2e(byte[] th2, byte[] dhSecret, String hashAlgorithm) { if (hashAlgorithm.equals("SHA-256") || hashAlgorithm.equals("SHA-384") || hashAlgorithm.equals("SHA-512")) { try { @@ -2346,25 +2435,29 @@ protected byte[] computePRK2e(byte[] th2, byte[] dhSecret, String hashAlgorithm) return null; } - /** Adapted from {@link org.eclipse.californium.edhoc.MessageProcessor#computePRK3e2m} */ + /** + * Adapted from + * {@link org.eclipse.californium.edhoc.MessageProcessor#computePRK3e2m} + */ protected byte[] computePRK3e2m(EdhocSessionPersistent session, byte[] prk2e, byte[] th2, OneKey peerLongTerm, - OneKey peerEphemeral) { + OneKey peerEphemeral) { byte[] prk3e2m = null; int authenticationMethod = session.getMethod(); if (authenticationMethod == Constants.EDHOC_AUTH_METHOD_0 || authenticationMethod == Constants.EDHOC_AUTH_METHOD_2) { - // The responder uses signatures as authentication method, then PRK_3e2m is equal to PRK_2e + // The responder uses signatures as authentication method, then PRK_3e2m is + // equal to PRK_2e prk3e2m = new byte[prk2e.length]; System.arraycopy(prk2e, 0, prk3e2m, 0, prk2e.length); - } - else if (authenticationMethod == Constants.EDHOC_AUTH_METHOD_1 + } else if (authenticationMethod == Constants.EDHOC_AUTH_METHOD_1 || authenticationMethod == Constants.EDHOC_AUTH_METHOD_3) { - // The responder does not use signatures as authentication method, then PRK_3e2m has to be computed + // The responder does not use signatures as authentication method, then PRK_3e2m + // has to be computed byte[] dhSecret; OneKey privateKey; OneKey publicKey; - if (session.isInitiator()) { + if (session.isInitiator()) { // Use the long-term key of the Responder as public key publicKey = peerLongTerm; @@ -2429,12 +2522,17 @@ else if (authenticationMethod == Constants.EDHOC_AUTH_METHOD_1 return prk3e2m; } - /** Adapted from {@link org.eclipse.californium.edhoc.MessageProcessor#computeMAC2} */ + /** + * Adapted from + * {@link org.eclipse.californium.edhoc.MessageProcessor#computeMAC2} + */ protected byte[] computeMAC2(EdhocSessionPersistent session, byte[] prk3e2m, byte[] th2, - CBORObject cR, CBORObject idCredR, byte[] credR, CBORObject[] ead2) { + CBORObject cR, CBORObject idCredR, byte[] credR, CBORObject[] ead2) { - // Build the CBOR sequence to use for 'context': ( ID_CRED_R, TH_2, CRED_R, ?EAD_2 ) - // The actual 'context' is a CBOR byte string with value the serialization of the CBOR sequence + // Build the CBOR sequence to use for 'context': ( ID_CRED_R, TH_2, CRED_R, + // ?EAD_2 ) + // The actual 'context' is a CBOR byte string with value the serialization of + // the CBOR sequence List objectList = new ArrayList<>(); if (!hasProtocolVersionLeqV22()) { objectList.add(cR); @@ -2469,7 +2567,10 @@ protected byte[] computeMAC2(EdhocSessionPersistent session, byte[] prk3e2m, byt } } - /** Adapted from {@link org.eclipse.californium.edhoc.MessageProcessor#computeExternalData} */ + /** + * Adapted from + * {@link org.eclipse.californium.edhoc.MessageProcessor#computeExternalData} + */ protected byte[] computeExternalData(byte[] th, byte[] cred, CBORObject[] ead) { if (th == null || cred == null) @@ -2499,7 +2600,10 @@ protected byte[] computeExternalData(byte[] th, byte[] cred, CBORObject[] ead) { return EdhocUtil.concatenateByteArrays(externalDataList); } - /** Adapted from {@link org.eclipse.californium.edhoc.MessageProcessor#computeSignatureOrMac2} */ + /** + * Adapted from + * {@link org.eclipse.californium.edhoc.MessageProcessor#computeSignatureOrMac2} + */ protected byte[] computeSignatureOrMac2(EdhocSessionPersistent session, byte[] mac2, byte[] externalData) { // Used by Responder byte[] signatureOrMac2 = null; @@ -2525,8 +2629,9 @@ protected byte[] computeSignatureOrMac2(EdhocSessionPersistent session, byte[] m return null; } - LOGGER.debug(EdhocUtil.byteArrayToString("External Data for signing MAC_2 to produce Signature_or_MAC_2", - externalData)); + LOGGER.debug( + EdhocUtil.byteArrayToString("External Data for signing MAC_2 to produce Signature_or_MAC_2", + externalData)); signatureOrMac2 = EdhocUtil.computeSignature(session.getIdCred(), externalData, mac2, identityKey); @@ -2539,7 +2644,10 @@ protected byte[] computeSignatureOrMac2(EdhocSessionPersistent session, byte[] m return signatureOrMac2; } - /** Adapted from {@link org.eclipse.californium.edhoc.MessageProcessor#computeKeystream2} */ + /** + * Adapted from + * {@link org.eclipse.californium.edhoc.MessageProcessor#computeKeystream2} + */ protected byte[] computeKeystream2(EdhocSessionPersistent session, byte[] th2, byte[] prk2e, int length) { CBORObject context = CBORObject.FromObject(th2); int selectedCipherSuite = session.getSelectedCipherSuite(); @@ -2547,7 +2655,6 @@ protected byte[] computeKeystream2(EdhocSessionPersistent session, byte[] th2, b int hashLength = EdhocSession.getEdhocHashAlgOutputSize(selectedCipherSuite); byte[] keystream2; - if ((!hashAlg.equals("SHA-256") && !hashAlg.equals("SHA-384") && !hashAlg.equals("SHA-512")) || (length <= 255 * hashLength)) { try { @@ -2556,8 +2663,7 @@ protected byte[] computeKeystream2(EdhocSessionPersistent session, byte[] th2, b LOGGER.error("Generating KEYSTREAM_2 (whole): " + e.getMessage()); return null; } - } - else { + } else { byte[] part; int regularPartSize = 255 * hashLength; int lastPartSize = regularPartSize; @@ -2588,9 +2694,12 @@ protected byte[] computeKeystream2(EdhocSessionPersistent session, byte[] th2, b return keystream2; } - /** Adapted from {@link org.eclipse.californium.edhoc.MessageProcessor#verifySignatureOrMac2} */ + /** + * Adapted from + * {@link org.eclipse.californium.edhoc.MessageProcessor#verifySignatureOrMac2} + */ protected boolean verifySignatureOrMac2(EdhocSessionPersistent session, OneKey peerLongTerm, CBORObject peerIdCred, - byte[] signatureOrMac2, byte[] externalData, byte[] mac2) { + byte[] signatureOrMac2, byte[] externalData, byte[] mac2) { // Used by Initiator int authenticationMethod = session.getMethod(); @@ -2621,7 +2730,10 @@ protected boolean verifySignatureOrMac2(EdhocSessionPersistent session, OneKey p return false; } - /** Adapted from {@link org.eclipse.californium.edhoc.MessageProcessor#computeTH3} */ + /** + * Adapted from + * {@link org.eclipse.californium.edhoc.MessageProcessor#computeTH3} + */ protected byte[] computeTH3(String hashAlgorithm, byte[] th2, byte[] plaintext2, byte[] credR) { int inputLength = th2.length + plaintext2.length + credR.length; int offset = 0; @@ -2640,9 +2752,12 @@ protected byte[] computeTH3(String hashAlgorithm, byte[] th2, byte[] plaintext2, } } - /** Adapted from {@link org.eclipse.californium.edhoc.MessageProcessor#computePRK4e3m} */ + /** + * Adapted from + * {@link org.eclipse.californium.edhoc.MessageProcessor#computePRK4e3m} + */ protected byte[] computePRK4e3m(EdhocSessionPersistent session, byte[] prk3e2m, byte[] th3, OneKey peerLongTerm, - OneKey peerEphemeral) { + OneKey peerEphemeral) { byte[] prk4e3m = null; int authenticationMethod = session.getMethod(); @@ -2730,12 +2845,16 @@ protected byte[] computePRK4e3m(EdhocSessionPersistent session, byte[] prk3e2m, return prk4e3m; } - /** Adapted from {@link org.eclipse.californium.edhoc.MessageProcessor#computeMAC3} */ + /** + * Adapted from + * {@link org.eclipse.californium.edhoc.MessageProcessor#computeMAC3} + */ protected byte[] computeMAC3(EdhocSessionPersistent session, byte[] prk4e3m, byte[] th3, CBORObject idCredI, - byte[] credI, CBORObject[] ead3) { + byte[] credI, CBORObject[] ead3) { // Build the CBOR sequence for 'context': ( ID_CRED_I, TH_3, CRED_I, ?EAD_3 ) - // The actual 'context' is a CBOR byte string with value the serialization of the CBOR sequence + // The actual 'context' is a CBOR byte string with value the serialization of + // the CBOR sequence List objectList = new ArrayList<>(); objectList.add(idCredI); objectList.add(CBORObject.FromObject(th3)); @@ -2766,7 +2885,10 @@ protected byte[] computeMAC3(EdhocSessionPersistent session, byte[] prk4e3m, byt } } - /** Adapted from {@link org.eclipse.californium.edhoc.MessageProcessor#computeSignatureOrMac3} */ + /** + * Adapted from + * {@link org.eclipse.californium.edhoc.MessageProcessor#computeSignatureOrMac3} + */ protected byte[] computeSignatureOrMac3(EdhocSessionPersistent session, byte[] mac3, byte[] externalData) { // Used by Initiator byte[] signatureOrMac3 = null; @@ -2792,8 +2914,9 @@ protected byte[] computeSignatureOrMac3(EdhocSessionPersistent session, byte[] m return null; } - LOGGER.debug(EdhocUtil.byteArrayToString("External Data for signing MAC_3 to produce Signature_or_MAC_3", - externalData)); + LOGGER.debug( + EdhocUtil.byteArrayToString("External Data for signing MAC_3 to produce Signature_or_MAC_3", + externalData)); signatureOrMac3 = EdhocUtil.computeSignature(session.getIdCred(), externalData, mac3, identityKey); @@ -2807,8 +2930,11 @@ protected byte[] computeSignatureOrMac3(EdhocSessionPersistent session, byte[] m } - /** Adapted from {@link org.eclipse.californium.edhoc.MessageProcessor#computeKey} - * and {@link org.eclipse.californium.edhoc.MessageProcessor#computeKey} */ + /** + * Adapted from + * {@link org.eclipse.californium.edhoc.MessageProcessor#computeKey} + * and {@link org.eclipse.californium.edhoc.MessageProcessor#computeKey} + */ protected byte[] computeKeyOrIV3(String keyName, EdhocSessionPersistent session, byte[] th3, byte[] prk3e2m) { int selectedCipherSuite = session.getSelectedCipherSuite(); CBORObject context = CBORObject.FromObject(th3); @@ -2817,7 +2943,7 @@ protected byte[] computeKeyOrIV3(String keyName, EdhocSessionPersistent session, int length; int label; - switch(keyName) { + switch (keyName) { case "KEY" -> { name = "K_3"; length = EdhocSession.getKeyLengthEdhocAEAD(selectedCipherSuite); @@ -2845,9 +2971,12 @@ protected byte[] computeKeyOrIV3(String keyName, EdhocSessionPersistent session, } } - /** Adapted from {@link org.eclipse.californium.edhoc.MessageProcessor#computeCiphertext3} */ + /** + * Adapted from + * {@link org.eclipse.californium.edhoc.MessageProcessor#computeCiphertext3} + */ protected byte[] computeCiphertext3(int selectedCipherSuite, byte[] externalData, byte[] plaintext, byte[] k3ae, - byte[] iv3ae) { + byte[] iv3ae) { AlgorithmID alg = EdhocSession.getEdhocAEADAlg(selectedCipherSuite); // Prepare the empty content for the COSE protected header @@ -2861,7 +2990,10 @@ protected byte[] computeCiphertext3(int selectedCipherSuite, byte[] externalData } } - /** Adapted from {@link org.eclipse.californium.edhoc.MessageProcessor#computeTH4} */ + /** + * Adapted from + * {@link org.eclipse.californium.edhoc.MessageProcessor#computeTH4} + */ protected byte[] computeTH4(String hashAlgorithm, byte[] th3, byte[] plaintext3, byte[] credI) { int inputLength = th3.length + plaintext3.length + credI.length; int offset = 0; @@ -2880,7 +3012,10 @@ protected byte[] computeTH4(String hashAlgorithm, byte[] th3, byte[] plaintext3, } } - /** Adapted from {@link org.eclipse.californium.edhoc.MessageProcessor#computePRKout} */ + /** + * Adapted from + * {@link org.eclipse.californium.edhoc.MessageProcessor#computePRKout} + */ protected byte[] computePRKout(EdhocSessionPersistent session, byte[] th4, byte[] prk4e3m) { int selectedCipherSuite = session.getSelectedCipherSuite(); int length = EdhocSession.getEdhocHashAlgOutputSize(selectedCipherSuite); @@ -2894,7 +3029,10 @@ protected byte[] computePRKout(EdhocSessionPersistent session, byte[] th4, byte[ } } - /** Adapted from {@link org.eclipse.californium.edhoc.MessageProcessor#computePRKexporter} */ + /** + * Adapted from + * {@link org.eclipse.californium.edhoc.MessageProcessor#computePRKexporter} + */ protected byte[] computePRKexporter(EdhocSessionPersistent session, byte[] prkOut) { int selectedCipherSuite = session.getSelectedCipherSuite(); int length = EdhocSession.getEdhocHashAlgOutputSize(selectedCipherSuite); @@ -2908,9 +3046,12 @@ protected byte[] computePRKexporter(EdhocSessionPersistent session, byte[] prkOu } } - /** Adapted from {@link org.eclipse.californium.edhoc.MessageProcessor#decryptCiphertext3} */ + /** + * Adapted from + * {@link org.eclipse.californium.edhoc.MessageProcessor#decryptCiphertext3} + */ protected byte[] decryptCiphertext3(int selectedCipherSuite, byte[] externalData, byte[] ciphertext, byte[] k3ae, - byte[] iv3ae) { + byte[] iv3ae) { AlgorithmID alg = EdhocSession.getEdhocAEADAlg(selectedCipherSuite); // Prepare the empty content for the COSE protected header @@ -2924,9 +3065,12 @@ protected byte[] decryptCiphertext3(int selectedCipherSuite, byte[] externalData } } - /** Adapted from {@link org.eclipse.californium.edhoc.MessageProcessor#verifySignatureOrMac3} */ + /** + * Adapted from + * {@link org.eclipse.californium.edhoc.MessageProcessor#verifySignatureOrMac3} + */ protected boolean verifySignatureOrMac3(EdhocSessionPersistent session, OneKey peerLongTerm, CBORObject peerIdCred, - byte[] signatureOrMac3, byte[] externalData, byte[] mac3) { + byte[] signatureOrMac3, byte[] externalData, byte[] mac3) { // Used by Responder int authenticationMethod = session.getMethod(); @@ -2935,8 +3079,7 @@ protected boolean verifySignatureOrMac3(EdhocSessionPersistent session, OneKey p // The initiator does not use signatures as authentication method, // then Signature_or_MAC_3 has to be equal to MAC_3 return Arrays.equals(signatureOrMac3, mac3); - } - else if (authenticationMethod == Constants.EDHOC_AUTH_METHOD_0 + } else if (authenticationMethod == Constants.EDHOC_AUTH_METHOD_0 || authenticationMethod == Constants.EDHOC_AUTH_METHOD_1) { // The initiator uses signatures as authentication method, // then Signature_or_MAC_3 is a signature to verify @@ -2959,8 +3102,11 @@ else if (authenticationMethod == Constants.EDHOC_AUTH_METHOD_0 return false; } - /** Adapted from {@link org.eclipse.californium.edhoc.MessageProcessor#computeKey} - * and {@link org.eclipse.californium.edhoc.MessageProcessor#computeKey} */ + /** + * Adapted from + * {@link org.eclipse.californium.edhoc.MessageProcessor#computeKey} + * and {@link org.eclipse.californium.edhoc.MessageProcessor#computeKey} + */ protected byte[] computeKeyOrIV4(String keyName, EdhocSessionPersistent session, byte[] th4, byte[] prk4e3m) { int selectedCipherSuite = session.getSelectedCipherSuite(); CBORObject context = CBORObject.FromObject(th4); @@ -2969,7 +3115,7 @@ protected byte[] computeKeyOrIV4(String keyName, EdhocSessionPersistent session, int length; int label; - switch(keyName) { + switch (keyName) { case "KEY" -> { name = "K_4"; length = EdhocSession.getKeyLengthEdhocAEAD(selectedCipherSuite); @@ -2997,9 +3143,12 @@ protected byte[] computeKeyOrIV4(String keyName, EdhocSessionPersistent session, } } - /** Adapted from {@link org.eclipse.californium.edhoc.MessageProcessor#computeCiphertext4} */ + /** + * Adapted from + * {@link org.eclipse.californium.edhoc.MessageProcessor#computeCiphertext4} + */ protected byte[] computeCiphertext4(int selectedCipherSuite, byte[] externalData, byte[] plaintext, byte[] k4m, - byte[] iv4m) { + byte[] iv4m) { AlgorithmID alg = EdhocSession.getEdhocAEADAlg(selectedCipherSuite); // Prepare the empty content for the COSE protected header @@ -3013,9 +3162,12 @@ protected byte[] computeCiphertext4(int selectedCipherSuite, byte[] externalData } } - /** Adapted from {@link org.eclipse.californium.edhoc.MessageProcessor#decryptCiphertext4} */ + /** + * Adapted from + * {@link org.eclipse.californium.edhoc.MessageProcessor#decryptCiphertext4} + */ protected byte[] decryptCiphertext4(int selectedCipherSuite, byte[] externalData, byte[] ciphertext, - byte[] k4ae, byte[] iv4ae) { + byte[] k4ae, byte[] iv4ae) { AlgorithmID alg = EdhocSession.getEdhocAEADAlg(selectedCipherSuite); // Prepare the empty content for the COSE protected header @@ -3030,28 +3182,28 @@ protected byte[] decryptCiphertext4(int selectedCipherSuite, byte[] externalData } protected boolean hasProtocolVersionLeqV15() { - return switch(edhocMapperState.getProtocolVersion()) { + return switch (edhocMapperState.getProtocolVersion()) { case v14, v15 -> true; default -> false; }; } protected boolean hasProtocolVersionLeqV17() { - return hasProtocolVersionLeqV15() || switch(edhocMapperState.getProtocolVersion()) { + return hasProtocolVersionLeqV15() || switch (edhocMapperState.getProtocolVersion()) { case v16, v17 -> true; default -> false; }; } protected boolean hasProtocolVersionLeqV19() { - return hasProtocolVersionLeqV17() || switch(edhocMapperState.getProtocolVersion()) { + return hasProtocolVersionLeqV17() || switch (edhocMapperState.getProtocolVersion()) { case v18, v19 -> true; default -> false; }; } protected boolean hasProtocolVersionLeqV22() { - return hasProtocolVersionLeqV19() || switch(edhocMapperState.getProtocolVersion()) { + return hasProtocolVersionLeqV19() || switch (edhocMapperState.getProtocolVersion()) { case v20, v21, v22 -> true; default -> false; }; @@ -3075,7 +3227,8 @@ protected CBORObject[] preParseEADleqV17(CBORObject[] objectList, int baseIndex, for (int i = baseIndex; i < objectList.length; i++) { - // The first element of each pair is an ead_label, and must be a non-zero CBOR integer + // The first element of each pair is an ead_label, and must be a non-zero CBOR + // integer if ((eadIndex & 1) == 0) { if (objectList[i].getType() != CBORType.Integer || objectList[i].AsInt32() == 0) { LOGGER.error("Malformed or Invalid EAD label"); @@ -3094,7 +3247,8 @@ protected CBORObject[] preParseEADleqV17(CBORObject[] objectList, int baseIndex, continue; } - // The second element of each pair is an ead_value, and must be a CBOR byte string + // The second element of each pair is an ead_value, and must be a CBOR byte + // string if ((eadIndex & 1) == 1) { if (objectList[i].getType() != CBORType.ByteString) { LOGGER.error("Malformed or invalid EAD value"); @@ -3126,7 +3280,10 @@ protected CBORObject[] preParseEADleqV17(CBORObject[] objectList, int baseIndex, return eadArray; } - /** Adapted from {@link org.eclipse.californium.edhoc.MessageProcessor#preParseEAD} */ + /** + * Adapted from + * {@link org.eclipse.californium.edhoc.MessageProcessor#preParseEAD} + */ protected CBORObject[] preParseEAD(CBORObject[] objectList, int baseIndex, int msgNum, Set supportedEADs) { int length = objectList.length - baseIndex; CBORObject[] eadArray = new CBORObject[length]; @@ -3139,34 +3296,38 @@ protected CBORObject[] preParseEAD(CBORObject[] objectList, int baseIndex, int m // The actual goal of each step is to go through one EAD item // At each step, the element with index 'i' must be an ead_label - // For EAD items that are supported or non-critical, the corresponding ead_value (if present) is - // handled during the same step, so that the next step will consider the next EAD item, if any + // For EAD items that are supported or non-critical, the corresponding ead_value + // (if present) is + // handled during the same step, so that the next step will consider the next + // EAD item, if any for (int i = baseIndex; i < objectList.length; i++) { CBORObject currObject = objectList[i]; if (currObject.getType() != CBORType.Integer) { - // Each EAD item must start with a CBOR integer encoding the ead_label - LOGGER.error("Malformed or invalid EAD_" + msgNum); - return null; + // Each EAD item must start with a CBOR integer encoding the ead_label + LOGGER.error("Malformed or invalid EAD_" + msgNum); + return null; } - if (i+1 < objectList.length - && objectList[i+1].getType() != CBORType.Integer - && objectList[i+1].getType() != CBORType.ByteString) { + if (i + 1 < objectList.length + && objectList[i + 1].getType() != CBORType.Integer + && objectList[i + 1].getType() != CBORType.ByteString) { - // The immediately following item in the CBOR sequence (if any) must be a CBOR integer or a CBOR byte string - LOGGER.error("Malformed or invalid EAD_" + msgNum); - return null; + // The immediately following item in the CBOR sequence (if any) must be a CBOR + // integer or a CBOR byte string + LOGGER.error("Malformed or invalid EAD_" + msgNum); + return null; } int eadLabel = currObject.AsInt32(); if (eadLabel == Constants.EAD_LABEL_PADDING) { - // This is the padding EAD item and it is not passed to the application for further processing + // This is the padding EAD item and it is not passed to the application for + // further processing LOGGER.debug("EAD Label: {}", eadLabel); - if (i+1 < objectList.length && objectList[i+1].getType() == CBORType.ByteString) { - LOGGER.debug(EdhocUtil.byteArrayToString("EAD Value", objectList[i+1].GetByteString())); + if (i + 1 < objectList.length && objectList[i + 1].getType() == CBORType.ByteString) { + LOGGER.debug(EdhocUtil.byteArrayToString("EAD Value", objectList[i + 1].GetByteString())); // Skip the corresponding ead_value, if present i++; } @@ -3183,7 +3344,7 @@ protected CBORObject[] preParseEAD(CBORObject[] objectList, int baseIndex, int m // The EAD item is non-critical and not supported, // it is not passed to the application for further processing - if (i+1 < objectList.length && objectList[i+1].getType() == CBORType.ByteString) { + if (i + 1 < objectList.length && objectList[i + 1].getType() == CBORType.ByteString) { // This will result in moving to the next EAD item, if any i++; } @@ -3200,19 +3361,20 @@ protected CBORObject[] preParseEAD(CBORObject[] objectList, int baseIndex, int m LOGGER.debug("EAD Label: {}", eadLabel); // Make a hard copy of the ead_value, if present - if (i+1 < objectList.length && objectList[i+1].getType() == CBORType.ByteString) { - byte[] serializedObjectValue = objectList[i+1].EncodeToBytes(); + if (i + 1 < objectList.length && objectList[i + 1].getType() == CBORType.ByteString) { + byte[] serializedObjectValue = objectList[i + 1].EncodeToBytes(); CBORObject elementValue = CBORObject.DecodeFromBytes(serializedObjectValue); eadArray[eadIndex] = elementValue; eadIndex++; - LOGGER.debug(EdhocUtil.byteArrayToString("EAD Value", objectList[i+1].GetByteString())); + LOGGER.debug(EdhocUtil.byteArrayToString("EAD Value", objectList[i + 1].GetByteString())); // This will result in moving to the next EAD item, if any i++; } } - // Prepare the subset of the EAD items to provide to the application for further processing + // Prepare the subset of the EAD items to provide to the application for further + // processing CBORObject[] ret = new CBORObject[eadIndex]; for (int i = 0; i < eadIndex; i++) { ret[i] = eadArray[i]; diff --git a/src/main/java/com/github/protocolfuzzing/edhocfuzzer/components/sul/mapper/context/EdhocExecutionContextRA.java b/src/main/java/com/github/protocolfuzzing/edhocfuzzer/components/sul/mapper/context/EdhocExecutionContextRA.java new file mode 100644 index 00000000..2adc14c6 --- /dev/null +++ b/src/main/java/com/github/protocolfuzzing/edhocfuzzer/components/sul/mapper/context/EdhocExecutionContextRA.java @@ -0,0 +1,18 @@ +package com.github.protocolfuzzing.edhocfuzzer.components.sul.mapper.context; + +import com.github.protocolfuzzing.protocolstatefuzzer.components.sul.mapper.context.ExecutionContextStepped; +import com.github.protocolfuzzing.protocolstatefuzzer.components.sul.mapper.context.StepContext; +import de.learnlib.ralib.words.PSymbolInstance; + +public class EdhocExecutionContextRA extends + ExecutionContextStepped> { + + public EdhocExecutionContextRA(EdhocMapperState state) { + super(state); + } + + @Override + protected StepContext buildStepContext() { + return new StepContext<>(stepContexts.size()); + } +} diff --git a/src/main/java/com/github/protocolfuzzing/edhocfuzzer/components/sul/mapper/context/EdhocMapperState.java b/src/main/java/com/github/protocolfuzzing/edhocfuzzer/components/sul/mapper/context/EdhocMapperState.java index 81e23031..586fe2a5 100644 --- a/src/main/java/com/github/protocolfuzzing/edhocfuzzer/components/sul/mapper/context/EdhocMapperState.java +++ b/src/main/java/com/github/protocolfuzzing/edhocfuzzer/components/sul/mapper/context/EdhocMapperState.java @@ -31,8 +31,10 @@ public abstract class EdhocMapperState { protected int authenticationMethod; // Authentication credentials of this peer - // At the top level, authentication credentials are sorted by key usage of the authentication keys. - // The outer map has label SIGNATURE_KEY or ECDH_KEY for distinguishing the two key usages. + // At the top level, authentication credentials are sorted by key usage of the + // authentication keys. + // The outer map has label SIGNATURE_KEY or ECDH_KEY for distinguishing the two + // key usages. // The asymmetric key pairs of this peer (one per supported curve) protected HashMap> keyPairs = new HashMap<>(); @@ -42,7 +44,8 @@ public abstract class EdhocMapperState { // The authentication credentials of this peer (one per supported curve) protected HashMap> creds = new HashMap<>(); - // Each element is the ID_CRED_X used for an authentication credential associated to this peer + // Each element is the ID_CRED_X used for an authentication credential + // associated to this peer protected Set ownIdCreds = new HashSet<>(); // Authentication credentials of the other peers @@ -55,11 +58,13 @@ public abstract class EdhocMapperState { protected HashMap peerCredentials = new HashMap<>(); // Existing EDHOC Sessions, including completed ones - // The map label is C_X, i.e. the connection identifier offered to the other peer, as a CBOR integer or byte string + // The map label is C_X, i.e. the connection identifier offered to the other + // peer, as a CBOR integer or byte string protected HashMap edhocSessionsPersistent = new HashMap<>(); // Each element is a used Connection Identifier offered to the other peers. - // Connection Identifiers are stored as CBOR integers (if numeric) or as CBOR byte strings (if binary) + // Connection Identifiers are stored as CBOR integers (if numeric) or as CBOR + // byte strings (if binary) protected Set usedConnectionIds = new HashSet<>(); // List of supported cipher suites, in decreasing order of preference. @@ -68,7 +73,8 @@ public abstract class EdhocMapperState { // Set of supported EAD items protected Set supportedEADs = new HashSet<>(); - // The collection of application profiles - The lookup key is the full URI of the EDHOC resource + // The collection of application profiles - The lookup key is the full URI of + // the EDHOC resource protected HashMap appProfiles = new HashMap<>(); // The database of OSCORE Security Contexts @@ -91,7 +97,6 @@ public abstract class EdhocMapperState { protected CleanupTasks cleanupTasks; - @SuppressWarnings("this-escape") public EdhocMapperState(EdhocMapperConfig edhocMapperConfig, String edhocSessionUri, String oscoreUri, CleanupTasks cleanupTasks) { this.edhocMapperConfig = edhocMapperConfig; @@ -133,15 +138,14 @@ public EdhocMapperState(EdhocMapperConfig edhocMapperConfig, String edhocSession edhocEndpointInfoPersistent = new EdhocEndpointInfoPersistent( idCreds, creds, keyPairs, peerPublicKeys, peerCredentials, edhocSessionsPersistent, usedConnectionIds, supportedCipherSuites, supportedEADs, null, trustModel, db, oscoreUri, - OSCORE_REPLAY_WINDOW, MAX_UNFRAGMENTED_SIZE, appProfiles - ); + OSCORE_REPLAY_WINDOW, MAX_UNFRAGMENTED_SIZE, appProfiles); // Set up the authentication credentials Authenticator authenticator; - authenticator = manyFilesAuthIsUsed ? - new ManyFilesAuthenticator(authenticationConfig, edhocEndpointInfoPersistent, ownIdCreds) : - new TestVectorAuthenticator(authenticationConfig, edhocEndpointInfoPersistent, ownIdCreds, + authenticator = manyFilesAuthIsUsed + ? new ManyFilesAuthenticator(authenticationConfig, edhocEndpointInfoPersistent, ownIdCreds) + : new TestVectorAuthenticator(authenticationConfig, edhocEndpointInfoPersistent, ownIdCreds, edhocMapperConfig.isInitiator()); authenticator.setupOwnAuthenticationCredentials(); @@ -158,7 +162,8 @@ public EdhocMapperState(EdhocMapperConfig edhocMapperConfig, String edhocSession boolean isInitiator = edhocMapperConfig.isInitiator(); - // logically isClientInitiated when (isInitiator && isCoapClient()) || (!isInitiator && !isCoapClient()) + // logically isClientInitiated when (isInitiator && isCoapClient()) || + // (!isInitiator && !isCoapClient()) // which simplifies to isClientInitiated when isInitiator == isCoapClient() boolean isClientInitiated = isInitiator == isCoapClient(); @@ -171,7 +176,8 @@ db, new CoapExchanger(), edhocMapperConfig.useSessionReset(), edhocSessionsPersistent.put(CBORObject.FromObject(connectionId), edhocSessionPersistent); if (edhocMapperConfig.getForceOscoreRecipientId() != null) { - // forceRecipientId should point to the session, in order for the session to be accessible from + // forceRecipientId should point to the session, in order for the session to be + // accessible from // the OSCORE context's recipient id as well edhocSessionsPersistent.put(CBORObject.FromObject(edhocMapperConfig.getForceOscoreRecipientId()), edhocSessionPersistent); @@ -230,4 +236,12 @@ public boolean receiveWithPrependedCX() { // only coap server can receive with prepended CX if it is enabled return !isCoapClient() && edhocMapperConfig.useCXCorrelation(); } + + public void updateEdhocSessionsPersistent(byte[] connectionId, EdhocSessionPersistent session) { + CBORObject ci = CBORObject.FromObject(connectionId); + if (!usedConnectionIds.contains(ci)) { + usedConnectionIds.add(ci); + edhocSessionsPersistent.put(ci, session); + } + } } diff --git a/src/main/java/com/github/protocolfuzzing/edhocfuzzer/components/sul/mapper/mappers/EdhocInputMapper.java b/src/main/java/com/github/protocolfuzzing/edhocfuzzer/components/sul/mapper/mappers/EdhocInputMapper.java index 27c8ab36..00fd5a5f 100644 --- a/src/main/java/com/github/protocolfuzzing/edhocfuzzer/components/sul/mapper/mappers/EdhocInputMapper.java +++ b/src/main/java/com/github/protocolfuzzing/edhocfuzzer/components/sul/mapper/mappers/EdhocInputMapper.java @@ -27,9 +27,7 @@ protected void sendMessage(EdhocProtocolMessage message, EdhocExecutionContext c // enable or disable content format EdhocMapperConfig edhocMapperConfig = (EdhocMapperConfig) mapperConfig; - int contentFormat = edhocMapperConfig.useContentFormat() ? - message.getContentFormat(edhocMapperConfig.useOldContentFormat()) : - MediaTypeRegistry.UNDEFINED; + int contentFormat = edhocMapperConfig.useContentFormat() ? message.getContentFormat(edhocMapperConfig.useOldContentFormat()) : MediaTypeRegistry.UNDEFINED; edhocMapperConnector.send(message.getPayload(), message.getPayloadType(), message.getMessageCode(), contentFormat); } diff --git a/src/main/java/com/github/protocolfuzzing/edhocfuzzer/components/sul/mapper/mappers/EdhocInputMapperRA.java b/src/main/java/com/github/protocolfuzzing/edhocfuzzer/components/sul/mapper/mappers/EdhocInputMapperRA.java new file mode 100644 index 00000000..5ff0305d --- /dev/null +++ b/src/main/java/com/github/protocolfuzzing/edhocfuzzer/components/sul/mapper/mappers/EdhocInputMapperRA.java @@ -0,0 +1,184 @@ +package com.github.protocolfuzzing.edhocfuzzer.components.sul.mapper.mappers; + +import com.github.protocolfuzzing.edhocfuzzer.components.sul.core.protocol.EdhocSessionPersistent; +import com.github.protocolfuzzing.edhocfuzzer.components.sul.core.protocol.EdhocUtil; +import com.github.protocolfuzzing.edhocfuzzer.components.sul.core.protocol.MessageProcessorPersistent; +import com.github.protocolfuzzing.edhocfuzzer.components.sul.core.protocol.messages.EdhocProtocolMessage; +import com.github.protocolfuzzing.edhocfuzzer.components.sul.core.protocol.messages.common.CoapAppMessage; +import com.github.protocolfuzzing.edhocfuzzer.components.sul.core.protocol.messages.common.CoapEmptyMessage; +import com.github.protocolfuzzing.edhocfuzzer.components.sul.core.protocol.messages.common.EdhocErrorMessage; +import com.github.protocolfuzzing.edhocfuzzer.components.sul.core.protocol.messages.common.OscoreAppMessage; +import com.github.protocolfuzzing.edhocfuzzer.components.sul.core.protocol.messages.initiator.EdhocMessage1; +import com.github.protocolfuzzing.edhocfuzzer.components.sul.core.protocol.messages.initiator.EdhocMessage3; +import com.github.protocolfuzzing.edhocfuzzer.components.sul.core.protocol.messages.initiator.EdhocMessage3OscoreApp; +import com.github.protocolfuzzing.edhocfuzzer.components.sul.core.protocol.messages.responder.EdhocMessage2; +import com.github.protocolfuzzing.edhocfuzzer.components.sul.core.protocol.messages.responder.EdhocMessage4; +import com.github.protocolfuzzing.edhocfuzzer.components.sul.mapper.config.EdhocMapperConfig; +import com.github.protocolfuzzing.edhocfuzzer.components.sul.mapper.connectors.EdhocMapperConnector; +import com.github.protocolfuzzing.edhocfuzzer.components.sul.mapper.context.EdhocExecutionContextRA; +import com.github.protocolfuzzing.edhocfuzzer.components.sul.mapper.context.EdhocMapperState; +import com.github.protocolfuzzing.edhocfuzzer.components.sul.mapper.symbols.inputs.MessageInputTypeRA; +import com.github.protocolfuzzing.edhocfuzzer.components.sul.mapper.symbols.outputs.EdhocOutputCheckerRA; +import com.github.protocolfuzzing.protocolstatefuzzer.components.sul.mapper.abstractsymbols.OutputChecker; +import com.github.protocolfuzzing.protocolstatefuzzer.components.sul.mapper.config.MapperConfig; +import com.github.protocolfuzzing.protocolstatefuzzer.components.sul.mapper.mappers.InputMapperRA; +import com.upokecenter.cbor.CBORObject; +import de.learnlib.ralib.data.DataValue; +import de.learnlib.ralib.words.InputSymbol; +import de.learnlib.ralib.words.PSymbolInstance; +import de.learnlib.ralib.words.ParameterizedSymbol; +import org.apache.logging.log4j.LogManager; +import org.apache.logging.log4j.Logger; +import org.eclipse.californium.core.coap.MediaTypeRegistry; + +import java.util.EnumMap; + +public class EdhocInputMapperRA extends InputMapperRA { + EdhocMapperConnector edhocMapperConnector; + + private static Logger LOGGER = LogManager.getLogger(); + // protected DataType T_CI = new DataType("C_I", Integer.class); + + protected EnumMap timeoutMap = new EnumMap( + MessageInputTypeRA.class); + + public EdhocInputMapperRA(MapperConfig mapperConfig, EdhocOutputCheckerRA outputChecker, + EdhocMapperConnector edhocMapperConnector) { + super(mapperConfig, outputChecker); + this.edhocMapperConnector = edhocMapperConnector; + } + + @Override + public void sendMessage(EdhocProtocolMessage message, EdhocExecutionContextRA context) { + if (message == null) { + throw new RuntimeException("Null message provided to EdhocInputMapperRA in sendMessage"); + } + + // enable or disable content format + EdhocMapperConfig edhocMapperConfig = (EdhocMapperConfig) mapperConfig; + int contentFormat = edhocMapperConfig.useContentFormat() ? message.getContentFormat(edhocMapperConfig.useOldContentFormat()) + : MediaTypeRegistry.UNDEFINED; + + edhocMapperConnector.send(message.getPayload(), message.getPayloadType(), message.getMessageCode(), + contentFormat); + } + + @Override + public void preSendUpdate(PSymbolInstance input, EdhocExecutionContextRA context) { + String symbolName = input.getBaseSymbol().getName(); + EdhocMapperState mapperState = context.getState(); + + switch (MessageInputTypeRA.valueOf(symbolName)) { + case EDHOC_MESSAGE_1_INPUT -> { + if (mapperState.getEdhocSessionPersistent().isInitiator()) { + // Initiator by sending message 1 starts a new key exchange session + // so previous session state must be cleaned unless reset is disabled + mapperState.getEdhocSessionPersistent().resetIfEnabled(); + } + updateConnectionId(mapperState, input); + } + case EDHOC_MESSAGE_3_OSCORE_APP_INPUT -> { + updateConnectionId(mapperState, input); + // construct Message3 in order to store it in session 'message3' field, + // derive new oscore context and make Message3 available to oscore layer + new MessageProcessorPersistent( + context.getState() + ).writeMessage3(); + } + case + EDHOC_MESSAGE_2_INPUT, + EDHOC_MESSAGE_3_INPUT, + EDHOC_MESSAGE_4_INPUT, + OSCORE_APP_MESSAGE_INPUT, + COAP_APP_MESSAGE_INPUT, + COAP_EMPTY_MESSAGE_INPUT, + EDHOC_ERROR_MESSAGE_INPUT -> {} + } + } + + @Override + public EdhocProtocolMessage generateProtocolMessage(PSymbolInstance input, EdhocExecutionContextRA context) { + ParameterizedSymbol baseSymbol = input.getBaseSymbol(); + String symbolName = baseSymbol.getName(); + if (baseSymbol instanceof InputSymbol) { + // We can construct this here since the switch should always dispatch to only + // one instance. + MessageProcessorPersistent messageProcessor = + new MessageProcessorPersistent(context.getState()); + + return switch (MessageInputTypeRA.valueOf(symbolName)) { + case EDHOC_MESSAGE_1_INPUT -> new EdhocMessage1( + messageProcessor + ); + case EDHOC_MESSAGE_2_INPUT -> new EdhocMessage2( + messageProcessor + ); + case EDHOC_MESSAGE_3_INPUT -> new EdhocMessage3( + messageProcessor + ); + case EDHOC_MESSAGE_3_OSCORE_APP_INPUT -> new EdhocMessage3OscoreApp( + messageProcessor + ); + case EDHOC_MESSAGE_4_INPUT -> new EdhocMessage4( + messageProcessor + ); + case OSCORE_APP_MESSAGE_INPUT -> new OscoreAppMessage( + messageProcessor + ); + case EDHOC_ERROR_MESSAGE_INPUT -> new EdhocErrorMessage( + messageProcessor + ); + case COAP_APP_MESSAGE_INPUT -> new CoapAppMessage( + messageProcessor + ); + case COAP_EMPTY_MESSAGE_INPUT -> new CoapEmptyMessage( + messageProcessor + ); + }; + } + + throw new RuntimeException( + "Input mapper can only map input symbols: " + baseSymbol + " is not an InputSymbol."); + + } + + @Override + public void postReceiveUpdate(PSymbolInstance input, PSymbolInstance output, + OutputChecker outputChecker, EdhocExecutionContextRA context) { + } + + @Override + public void postSendUpdate(PSymbolInstance input, EdhocExecutionContextRA context) { + } + + public void updateConnectionId(EdhocMapperState state, PSymbolInstance input) { + EdhocSessionPersistent session = state.getEdhocSessionPersistent(); + LOGGER.debug("ConnectionId before set: {}", EdhocUtil.bytesToInt(session.getConnectionId())); + + assert input.getParameterValues().length == 1; + DataValue dv = input.getParameterValues()[0]; + CBORObject value = CBORObject.FromObject(dv.getId()); + session.setConnectionId(value.EncodeToBytes()); + + LOGGER.debug("ConnectionId after set: " + + EdhocUtil.bytesToInt(session.getConnectionId())); + + EdhocSessionPersistent new_session = state.getEdhocSessionPersistent(); + byte[] new_CI = session.getConnectionId(); + + state.setEdhocSessionPersistent(new_session); + state.updateEdhocSessionsPersistent(new_CI, new_session); + } + + public long getTimeoutForSymbol(PSymbolInstance input) { + String baseSymbolName = input.getBaseSymbol().getName(); + MessageInputTypeRA key = MessageInputTypeRA.valueOf(baseSymbolName); + return timeoutMap.getOrDefault(key, 0L); + } + + public void setTimeoutForSymbol(PSymbolInstance input, long timeout) { + String baseSymbolName = input.getBaseSymbol().getName(); + MessageInputTypeRA key = MessageInputTypeRA.valueOf(baseSymbolName); + timeoutMap.put(key, timeout); + } +} diff --git a/src/main/java/com/github/protocolfuzzing/edhocfuzzer/components/sul/mapper/mappers/EdhocMapperComposer.java b/src/main/java/com/github/protocolfuzzing/edhocfuzzer/components/sul/mapper/mappers/EdhocMapperComposer.java index f688f2ac..e3af0371 100644 --- a/src/main/java/com/github/protocolfuzzing/edhocfuzzer/components/sul/mapper/mappers/EdhocMapperComposer.java +++ b/src/main/java/com/github/protocolfuzzing/edhocfuzzer/components/sul/mapper/mappers/EdhocMapperComposer.java @@ -5,8 +5,8 @@ import com.github.protocolfuzzing.edhocfuzzer.components.sul.mapper.context.EdhocMapperState; import com.github.protocolfuzzing.edhocfuzzer.components.sul.mapper.symbols.inputs.EdhocInput; import com.github.protocolfuzzing.edhocfuzzer.components.sul.mapper.symbols.outputs.EdhocOutput; -import com.github.protocolfuzzing.edhocfuzzer.components.sul.mapper.symbols.outputs.EdhocOutputBuilder; import com.github.protocolfuzzing.edhocfuzzer.components.sul.mapper.symbols.outputs.EdhocOutputChecker; +import com.github.protocolfuzzing.protocolstatefuzzer.components.sul.mapper.abstractsymbols.OutputBuilder; import com.github.protocolfuzzing.protocolstatefuzzer.components.sul.mapper.mappers.MapperComposer; public class EdhocMapperComposer extends MapperComposer { @@ -20,7 +20,7 @@ public EdhocOutputChecker getOutputChecker() { } @Override - public EdhocOutputBuilder getOutputBuilder() { - return (EdhocOutputBuilder) super.getOutputBuilder(); + public OutputBuilder getOutputBuilder() { + return super.getOutputBuilder(); } } diff --git a/src/main/java/com/github/protocolfuzzing/edhocfuzzer/components/sul/mapper/mappers/EdhocMapperComposerRA.java b/src/main/java/com/github/protocolfuzzing/edhocfuzzer/components/sul/mapper/mappers/EdhocMapperComposerRA.java new file mode 100644 index 00000000..ddd9c8c4 --- /dev/null +++ b/src/main/java/com/github/protocolfuzzing/edhocfuzzer/components/sul/mapper/mappers/EdhocMapperComposerRA.java @@ -0,0 +1,26 @@ +package com.github.protocolfuzzing.edhocfuzzer.components.sul.mapper.mappers; + +import com.github.protocolfuzzing.edhocfuzzer.components.sul.core.protocol.messages.EdhocProtocolMessage; +import com.github.protocolfuzzing.edhocfuzzer.components.sul.mapper.context.EdhocExecutionContextRA; +import com.github.protocolfuzzing.edhocfuzzer.components.sul.mapper.context.EdhocMapperState; +import com.github.protocolfuzzing.edhocfuzzer.components.sul.mapper.symbols.outputs.EdhocOutputCheckerRA; +import com.github.protocolfuzzing.protocolstatefuzzer.components.sul.mapper.abstractsymbols.OutputBuilder; +import com.github.protocolfuzzing.protocolstatefuzzer.components.sul.mapper.mappers.MapperComposerRA; +import de.learnlib.ralib.words.PSymbolInstance; + +public class EdhocMapperComposerRA extends + MapperComposerRA { + public EdhocMapperComposerRA(EdhocInputMapperRA edhocInputMapper, EdhocOutputMapperRA edhocOutputMapper) { + super(edhocInputMapper, edhocOutputMapper); + } + + @Override + public EdhocOutputCheckerRA getOutputChecker() { + return (EdhocOutputCheckerRA) super.getOutputChecker(); + } + + @Override + public OutputBuilder getOutputBuilder() { + return super.getOutputBuilder(); + } +} diff --git a/src/main/java/com/github/protocolfuzzing/edhocfuzzer/components/sul/mapper/mappers/EdhocOutputMapperRA.java b/src/main/java/com/github/protocolfuzzing/edhocfuzzer/components/sul/mapper/mappers/EdhocOutputMapperRA.java new file mode 100644 index 00000000..bffc73ed --- /dev/null +++ b/src/main/java/com/github/protocolfuzzing/edhocfuzzer/components/sul/mapper/mappers/EdhocOutputMapperRA.java @@ -0,0 +1,287 @@ +package com.github.protocolfuzzing.edhocfuzzer.components.sul.mapper.mappers; + +import com.github.protocolfuzzing.edhocfuzzer.components.sul.core.protocol.EdhocUtil; +import com.github.protocolfuzzing.edhocfuzzer.components.sul.core.protocol.MessageProcessorPersistent; +import com.github.protocolfuzzing.edhocfuzzer.components.sul.core.protocol.messages.EdhocProtocolMessage; +import com.github.protocolfuzzing.edhocfuzzer.components.sul.mapper.config.EdhocMapperConfig; +import com.github.protocolfuzzing.edhocfuzzer.components.sul.mapper.connectors.EdhocMapperConnector; +import com.github.protocolfuzzing.edhocfuzzer.components.sul.mapper.connectors.GenericErrorException; +import com.github.protocolfuzzing.edhocfuzzer.components.sul.mapper.connectors.TimeoutException; +import com.github.protocolfuzzing.edhocfuzzer.components.sul.mapper.connectors.UnsuccessfulMessageException; +import com.github.protocolfuzzing.edhocfuzzer.components.sul.mapper.connectors.UnsupportedMessageException; +import com.github.protocolfuzzing.edhocfuzzer.components.sul.mapper.context.EdhocExecutionContextRA; +import com.github.protocolfuzzing.edhocfuzzer.components.sul.mapper.context.EdhocMapperState; +import com.github.protocolfuzzing.edhocfuzzer.components.sul.mapper.symbols.outputs.EdhocOutputBuilderRA; +import com.github.protocolfuzzing.edhocfuzzer.components.sul.mapper.symbols.outputs.MessageOutputTypeRA; +import com.github.protocolfuzzing.protocolstatefuzzer.components.learner.alphabet.EnumAlphabet; +import com.github.protocolfuzzing.protocolstatefuzzer.components.sul.mapper.config.MapperConfig; +import com.github.protocolfuzzing.protocolstatefuzzer.components.sul.mapper.mappers.OutputMapperRA; +import de.learnlib.ralib.data.DataValue; +import de.learnlib.ralib.words.OutputSymbol; +import de.learnlib.ralib.words.PSymbolInstance; +import org.apache.logging.log4j.LogManager; +import org.apache.logging.log4j.Logger; + +import java.nio.charset.StandardCharsets; +import java.util.List; + +public class EdhocOutputMapperRA + extends OutputMapperRA { + private static final Logger LOGGER = LogManager.getLogger(); + + EdhocMapperConnector edhocMapperConnector; + EnumAlphabet alphabet; + + // FIXME: Suppressing the warning that outputBuilder shadows the same name in + // parent. + // This is to allow building unsupportedMessage/unknownMessage. + @SuppressWarnings("HidingField") + EdhocOutputBuilderRA outputBuilder; + + public EdhocOutputMapperRA(MapperConfig mapperConfig, EdhocOutputBuilderRA edhocOutputBuilder, + EdhocMapperConnector edhocMapperConnector, EnumAlphabet alphabet) { + super(mapperConfig, edhocOutputBuilder); + this.edhocMapperConnector = edhocMapperConnector; + this.outputBuilder = edhocOutputBuilder; + this.alphabet = alphabet; + } + + @Override + public PSymbolInstance receiveOutput(EdhocExecutionContextRA context) { + EdhocMapperState edhocMapperState = context.getState(); + byte[] responsePayload; + + try { + responsePayload = edhocMapperConnector.receive(); + } catch (GenericErrorException e) { + return socketClosed(); + } catch (TimeoutException e) { + return timeout(); + } catch (UnsupportedMessageException e) { + // special output to demonstrate that the input message the learner requested + // was unable to be sent and deemed unsupported + return outputBuilder.buildUnsupportedMessage(); + } catch (UnsuccessfulMessageException e) { + // special output to demonstrate that the received message evoked an error + // in a middle layer and did not reach the upper resource in the case of + // server mapper + return outputBuilder.buildUnsuccessfulMessage(); + } + + PSymbolInstance abstractOutput; + + // Check for application related message + // including message 3 combined with oscore + abstractOutput = appOutput(edhocMapperState, responsePayload); + + if (abstractOutput != null) { + return abstractOutput; + } + + // Check for edhoc message + abstractOutput = edhocOutputRA(edhocMapperState, responsePayload); + + if (abstractOutput != null) { + return abstractOutput; + } + + // Check for coap message + abstractOutput = coapOutput(edhocMapperState, responsePayload); + + if (abstractOutput != null) { + return abstractOutput; + } + + return outputBuilder.buildUnknown(); + } + + protected PSymbolInstance appOutput(EdhocMapperState edhocMapperState, byte[] responsePayload) { + String messageType = edhocMapperState.isCoapClient() ? "response" : "request"; + + if (edhocMapperConnector.receivedMsg3WithOscoreApp()) { + // received Message3_OSCORE_APP, from which application data propagated and + // decrypted + LOGGER.info("EDHOC_MESSAGE_3_OSCORE_APP | OSCORE_APP_MESSAGE ({}): {} ~ {}", + messageType, EdhocUtil.byteArrayToString(responsePayload), + new String(responsePayload, StandardCharsets.UTF_8)); + + Integer parameter = EdhocUtil + .bytesToInt(edhocMapperState.getEdhocSessionPersistent().getConnectionId()); + OutputSymbol base = newBaseSymbol(MessageOutputTypeRA.EDHOC_MESSAGE_3_OSCORE_APP_OUTPUT); + + LOGGER.info("Reading as EDHOC Message 3 Oscore App, DataValue: " + parameter); + DataValue value = new DataValue(base.getPtypes()[0], parameter); + + return instanceFromOutputSymbol(base, value); + } + + if (edhocMapperConnector.receivedOscoreAppMessage()) { + /* + * Client Mapper: + * sent oscore protected app data and received oscore protected + * app data, handled by oscore layer, so responsePayload is the + * decrypted response + * + * Server Mapper: + * received oscore-protected request to application data, so + * responsePayload is the decrypted request payload + */ + LOGGER.info("OSCORE_APP_MESSAGE ({}): {} ~ {}", + messageType, EdhocUtil.byteArrayToString(responsePayload), + new String(responsePayload, StandardCharsets.UTF_8)); + + OutputSymbol base = newBaseSymbol(MessageOutputTypeRA.OSCORE_APP_MESSAGE_OUTPUT); + return instanceFromOutputSymbol(base); + + } + + return null; + } + + protected PSymbolInstance edhocOutputRA(EdhocMapperState edhocMapperState, byte[] responsePayload) { + MessageProcessorPersistent messageProcessorPersistent = new MessageProcessorPersistent(edhocMapperState); + boolean ok; + + switch (messageProcessorPersistent.messageTypeFromStructure(responsePayload)) { + case EDHOC_ERROR_MESSAGE -> { + ok = messageProcessorPersistent.readErrorMessage(responsePayload); + OutputSymbol base = newBaseSymbol(MessageOutputTypeRA.EDHOC_ERROR_MESSAGE_OUTPUT); + return instanceAfterCheck(ok, base); + } + + case EDHOC_MESSAGE_1 -> { + ok = messageProcessorPersistent.readMessage1(responsePayload); + + Integer parameter = EdhocUtil + .bytesToInt(edhocMapperState.getEdhocSessionPersistent().getConnectionId()); + OutputSymbol base = newBaseSymbol(MessageOutputTypeRA.EDHOC_MESSAGE_1_OUTPUT); + LOGGER.info("Reading as Message 1, DataValue: " + parameter); + return instanceAfterCheck(ok, base); + } + + case EDHOC_MESSAGE_2 -> { + ok = messageProcessorPersistent.readMessage2(responsePayload); + OutputSymbol base = newBaseSymbol(MessageOutputTypeRA.EDHOC_MESSAGE_2_OUTPUT); + return instanceAfterCheck(ok, base); + } + + case EDHOC_MESSAGE_3_OR_4 -> { + // message may be 3 or 4 + LOGGER.info("Reading as EDHOC Message 3 or 4"); + ok = messageProcessorPersistent.readMessage3(responsePayload); + + if (ok) { + OutputSymbol base = newBaseSymbol(MessageOutputTypeRA.EDHOC_MESSAGE_3_OUTPUT); + return instanceFromOutputSymbol(base); + } + + ok = messageProcessorPersistent.readMessage4(responsePayload); + OutputSymbol base = newBaseSymbol(MessageOutputTypeRA.EDHOC_MESSAGE_4_OUTPUT); + return instanceAfterCheck(ok, base); + } + + case EDHOC_MESSAGE_2_OR_3_OR_4 -> { + // message may be 2 or 3 or 4 + LOGGER.info("Reading as EDHOC Message 2 or 3 or 4"); + ok = messageProcessorPersistent.readMessage2(responsePayload); + if (ok) { + OutputSymbol base = newBaseSymbol(MessageOutputTypeRA.EDHOC_MESSAGE_2_OUTPUT); + return instanceFromOutputSymbol(base); + } + + ok = messageProcessorPersistent.readMessage3(responsePayload); + if (ok) { + OutputSymbol base = newBaseSymbol(MessageOutputTypeRA.EDHOC_MESSAGE_3_OUTPUT); + return instanceFromOutputSymbol(base); + } + + ok = messageProcessorPersistent.readMessage4(responsePayload); + OutputSymbol base = newBaseSymbol(MessageOutputTypeRA.EDHOC_MESSAGE_4_OUTPUT); + return instanceAfterCheck(ok, base); + } + + default -> { + return null; + } + } + } + + protected PSymbolInstance coapOutput(EdhocMapperState edhocMapperState, byte[] responsePayload) { + String messageType = edhocMapperState.isCoapClient() ? "response" : "request"; + + // Check for coap error message + if (edhocMapperConnector.receivedCoapErrorMessage()) { + LOGGER.info("COAP_ERROR_MESSAGE ({}): {} ~ {}", + messageType, EdhocUtil.byteArrayToString(responsePayload), + new String(responsePayload, StandardCharsets.UTF_8)); + return coapError(); + } + + // Check for coap empty message + if (edhocMapperConnector.receivedCoapEmptyMessage()) { + /* + * Client Mapper: + * received empty coap ack, possible when client mapper is + * Initiator and message 3 is the final edhoc message + * + * Server Mapper: + * received empty coap request for some reason + */ + OutputSymbol base = newBaseSymbol(MessageOutputTypeRA.COAP_EMPTY_MESSAGE_OUTPUT); + return instanceFromOutputSymbol(base); + } + + // Check for unprotected coap message + // Must be checked after checking for empty message, because empty message can + // be unprotected + // Application message is any non-error coap message, no distinction based on + // payload + if (edhocMapperConnector.receivedCoapAppMessage()) { + LOGGER.info("COAP_APP_MESSAGE ({}): {} ~ {}", + messageType, EdhocUtil.byteArrayToString(responsePayload), + new String(responsePayload, StandardCharsets.UTF_8)); + OutputSymbol base = newBaseSymbol(MessageOutputTypeRA.COAP_APP_MESSAGE_OUTPUT); + return instanceFromOutputSymbol(base); + } + + // if payload was not empty then a coap message is received + // because no other transport protocol than coap is supported yet + OutputSymbol base = newBaseSymbol(MessageOutputTypeRA.COAP_MESSAGE_OUTPUT); + if (responsePayload != null) { + LOGGER.info("COAP_MESSAGE ({}): {} ~ {}", + messageType, EdhocUtil.byteArrayToString(responsePayload), + new String(responsePayload, StandardCharsets.UTF_8)); + } else { + LOGGER.info("COAP_MESSAGE payload is null."); + } + return instanceAfterCheck(responsePayload != null, base); + } + + protected PSymbolInstance coapError() { + if (((EdhocMapperConfig) mapperConfig).isCoapErrorAsEdhocError()) { + OutputSymbol base = newBaseSymbol(MessageOutputTypeRA.EDHOC_ERROR_MESSAGE_OUTPUT); + return instanceFromOutputSymbol(base); + } else { + OutputSymbol base = newBaseSymbol(MessageOutputTypeRA.COAP_ERROR_MESSAGE_OUTPUT); + return instanceFromOutputSymbol(base); + } + } + + protected OutputSymbol newBaseSymbol(MessageOutputTypeRA enum_member) { + return (OutputSymbol) alphabet.getPSymbol(enum_member); + } + + protected PSymbolInstance instanceAfterCheck(boolean successfulCheck, OutputSymbol baseSymbol, + DataValue... values) { + return successfulCheck ? instanceFromOutputSymbol(baseSymbol, values) : null; + } + + protected PSymbolInstance instanceFromOutputSymbol(OutputSymbol baseSymbol, DataValue... values) { + return new PSymbolInstance(baseSymbol, values); + } + + @Override + protected PSymbolInstance buildOutput(String name, List messages) { + throw new UnsupportedOperationException("Unsupported output builder arguments"); + } +} diff --git a/src/main/java/com/github/protocolfuzzing/edhocfuzzer/components/sul/mapper/symbols/EdhocDataTypes.java b/src/main/java/com/github/protocolfuzzing/edhocfuzzer/components/sul/mapper/symbols/EdhocDataTypes.java new file mode 100644 index 00000000..f61720e3 --- /dev/null +++ b/src/main/java/com/github/protocolfuzzing/edhocfuzzer/components/sul/mapper/symbols/EdhocDataTypes.java @@ -0,0 +1,6 @@ +package com.github.protocolfuzzing.edhocfuzzer.components.sul.mapper.symbols; + +public enum EdhocDataTypes { + T_CI, + T_CR +} diff --git a/src/main/java/com/github/protocolfuzzing/edhocfuzzer/components/sul/mapper/symbols/inputs/DataTypeXml.java b/src/main/java/com/github/protocolfuzzing/edhocfuzzer/components/sul/mapper/symbols/inputs/DataTypeXml.java new file mode 100644 index 00000000..bc2ca20c --- /dev/null +++ b/src/main/java/com/github/protocolfuzzing/edhocfuzzer/components/sul/mapper/symbols/inputs/DataTypeXml.java @@ -0,0 +1,29 @@ +package com.github.protocolfuzzing.edhocfuzzer.components.sul.mapper.symbols.inputs; + +import jakarta.xml.bind.annotation.XmlAccessType; +import jakarta.xml.bind.annotation.XmlAccessorType; + +@XmlAccessorType(XmlAccessType.FIELD) +public class DataTypeXml { + + private String name = null; + + private Class base = null; + + public DataTypeXml(String name, Class base) { + this.name = name; + this.base = base; + } + + public DataTypeXml() { + this(null, null); + } + + public String getName() { + return this.name; + } + + public Class getBase() { + return this.base; + } +} diff --git a/src/main/java/com/github/protocolfuzzing/edhocfuzzer/components/sul/mapper/symbols/inputs/MessageInputTypeRA.java b/src/main/java/com/github/protocolfuzzing/edhocfuzzer/components/sul/mapper/symbols/inputs/MessageInputTypeRA.java new file mode 100644 index 00000000..a777f500 --- /dev/null +++ b/src/main/java/com/github/protocolfuzzing/edhocfuzzer/components/sul/mapper/symbols/inputs/MessageInputTypeRA.java @@ -0,0 +1,13 @@ +package com.github.protocolfuzzing.edhocfuzzer.components.sul.mapper.symbols.inputs; + +public enum MessageInputTypeRA { + EDHOC_MESSAGE_1_INPUT, + EDHOC_MESSAGE_2_INPUT, + EDHOC_MESSAGE_3_INPUT, + EDHOC_MESSAGE_4_INPUT, + EDHOC_ERROR_MESSAGE_INPUT, + EDHOC_MESSAGE_3_OSCORE_APP_INPUT, + OSCORE_APP_MESSAGE_INPUT, + COAP_APP_MESSAGE_INPUT, + COAP_EMPTY_MESSAGE_INPUT +} diff --git a/src/main/java/com/github/protocolfuzzing/edhocfuzzer/components/sul/mapper/symbols/inputs/SymbolXml.java b/src/main/java/com/github/protocolfuzzing/edhocfuzzer/components/sul/mapper/symbols/inputs/SymbolXml.java new file mode 100644 index 00000000..4b147c00 --- /dev/null +++ b/src/main/java/com/github/protocolfuzzing/edhocfuzzer/components/sul/mapper/symbols/inputs/SymbolXml.java @@ -0,0 +1,43 @@ +package com.github.protocolfuzzing.edhocfuzzer.components.sul.mapper.symbols.inputs; + +import jakarta.xml.bind.annotation.XmlElement; +import jakarta.xml.bind.annotation.XmlRootElement; + +@XmlRootElement(name = "Symbol") +public class SymbolXml { + + @XmlElement(name = "Name") + private String name = null; + + @XmlElement(name = "Type") + private Type symbolType = Type.INPUT; + + @XmlElement(name = "DataTypes") + private DataTypeXml[] types = {}; + + public SymbolXml(String name, Type type, DataTypeXml... types) { + this.name = name; + this.symbolType = type; + this.types = types; + } + + public SymbolXml() { + } + + public String getName() { + return this.name; + } + + public DataTypeXml[] getDataTypes() { + return this.types; + } + + public Type getSymbolType() { + return this.symbolType; + } + + public enum Type { + INPUT, + OUTPUT + } +} diff --git a/src/main/java/com/github/protocolfuzzing/edhocfuzzer/components/sul/mapper/symbols/outputs/EdhocOutputBuilderRA.java b/src/main/java/com/github/protocolfuzzing/edhocfuzzer/components/sul/mapper/symbols/outputs/EdhocOutputBuilderRA.java new file mode 100644 index 00000000..c774dfa5 --- /dev/null +++ b/src/main/java/com/github/protocolfuzzing/edhocfuzzer/components/sul/mapper/symbols/outputs/EdhocOutputBuilderRA.java @@ -0,0 +1,48 @@ +package com.github.protocolfuzzing.edhocfuzzer.components.sul.mapper.symbols.outputs; + +import com.github.protocolfuzzing.protocolstatefuzzer.components.learner.alphabet.PSFOutputSymbols; +import com.github.protocolfuzzing.protocolstatefuzzer.components.sul.mapper.abstractsymbols.OutputBuilder; +import de.learnlib.ralib.words.OutputSymbol; +import de.learnlib.ralib.words.PSymbolInstance; + +public class EdhocOutputBuilderRA extends OutputBuilder { + + @Override + public PSymbolInstance buildOutputExact(String name) { + OutputSymbol baseSymbol = new OutputSymbol(name); + return new PSymbolInstance(baseSymbol); + } + + public PSymbolInstance buildOutput(PSFOutputSymbols type) { + OutputSymbol baseSymbol = new OutputSymbol(type.name()); + return new PSymbolInstance(baseSymbol); + } + + public PSymbolInstance buildUnsupportedMessage() { + return buildOutput(PSFOutputSymbols.UNSUPPORTED_MESSAGE); + } + + public PSymbolInstance buildUnsuccessfulMessage() { + return buildOutput(PSFOutputSymbols.UNSUCCESSFUL_MESSAGE); + } + + @Override + public PSymbolInstance buildTimeout() { + return buildOutput(PSFOutputSymbols.TIMEOUT); + } + + @Override + public PSymbolInstance buildUnknown() { + return buildOutput(PSFOutputSymbols.UNKNOWN); + } + + @Override + public PSymbolInstance buildSocketClosed() { + return buildOutput(PSFOutputSymbols.SOCKET_CLOSED); + } + + @Override + public PSymbolInstance buildDisabled() { + return buildOutput(PSFOutputSymbols.DISABLED); + } +} diff --git a/src/main/java/com/github/protocolfuzzing/edhocfuzzer/components/sul/mapper/symbols/outputs/EdhocOutputCheckerRA.java b/src/main/java/com/github/protocolfuzzing/edhocfuzzer/components/sul/mapper/symbols/outputs/EdhocOutputCheckerRA.java new file mode 100644 index 00000000..729a142e --- /dev/null +++ b/src/main/java/com/github/protocolfuzzing/edhocfuzzer/components/sul/mapper/symbols/outputs/EdhocOutputCheckerRA.java @@ -0,0 +1,39 @@ +package com.github.protocolfuzzing.edhocfuzzer.components.sul.mapper.symbols.outputs; + +import com.github.protocolfuzzing.protocolstatefuzzer.components.learner.alphabet.PSFOutputSymbols; +import com.github.protocolfuzzing.protocolstatefuzzer.components.sul.mapper.abstractsymbols.OutputChecker; +import de.learnlib.ralib.words.PSymbolInstance; + +import java.util.Objects; + +public class EdhocOutputCheckerRA implements OutputChecker { + + public > boolean isMessage(PSymbolInstance output, E messageOutputType) { + return Objects.equals(output.getBaseSymbol().getName(), messageOutputType.name()); + } + + @Override + public boolean hasInitialClientMessage(PSymbolInstance output) { + return isMessage(output, MessageOutputTypeRA.EDHOC_MESSAGE_1_OUTPUT); + } + + @Override + public boolean isTimeout(PSymbolInstance output) { + return isMessage(output, PSFOutputSymbols.TIMEOUT); + } + + @Override + public boolean isUnknown(PSymbolInstance output) { + return isMessage(output, PSFOutputSymbols.UNKNOWN); + } + + @Override + public boolean isSocketClosed(PSymbolInstance output) { + return isMessage(output, PSFOutputSymbols.SOCKET_CLOSED); + } + + @Override + public boolean isDisabled(PSymbolInstance output) { + return isMessage(output, PSFOutputSymbols.DISABLED); + } +} diff --git a/src/main/java/com/github/protocolfuzzing/edhocfuzzer/components/sul/mapper/symbols/outputs/EdhocOutputRA.java b/src/main/java/com/github/protocolfuzzing/edhocfuzzer/components/sul/mapper/symbols/outputs/EdhocOutputRA.java new file mode 100644 index 00000000..0c69196b --- /dev/null +++ b/src/main/java/com/github/protocolfuzzing/edhocfuzzer/components/sul/mapper/symbols/outputs/EdhocOutputRA.java @@ -0,0 +1,117 @@ +package com.github.protocolfuzzing.edhocfuzzer.components.sul.mapper.symbols.outputs; + +import com.github.protocolfuzzing.edhocfuzzer.components.sul.core.protocol.messages.EdhocProtocolMessage; +import com.github.protocolfuzzing.protocolstatefuzzer.components.sul.mapper.abstractsymbols.MapperOutput; +import de.learnlib.ralib.data.DataType; +import de.learnlib.ralib.data.DataValue; +import de.learnlib.ralib.words.OutputSymbol; +import de.learnlib.ralib.words.PSymbolInstance; +import de.learnlib.ralib.words.ParameterizedSymbol; + +import java.util.List; + +public class EdhocOutputRA extends PSymbolInstance implements MapperOutput { + List messages; + + public EdhocOutputRA(ParameterizedSymbol baseSymbol, DataValue... parameterValues) { + super(baseSymbol, parameterValues); + } + + public EdhocOutputRA(List messages, ParameterizedSymbol baseSymbol, + DataValue... parameterValues) { + super(baseSymbol, parameterValues); + this.messages = messages; + } + + /** Used only by @link #EdhocOutputBuilderRA. */ + public EdhocOutputRA(String name) { + super(new OutputSymbol(name, new DataType[] {}), new DataValue[] {}); + } + + public EdhocOutputRA(ParameterizedSymbol baseSymbol) { + super(baseSymbol, new DataValue[] {}); + } + + @Override + public boolean equals(Object other) { + if (other instanceof EdhocOutputRA) { + return super.equals((PSymbolInstance) other); + } else { + return false; + } + } + + @Override + public int hashCode() { + return super.hashCode(); + } + + @Override + public boolean isComposite() { + // TODO Auto-generated method stub + return false; + } + + @Override + public boolean isAtomic() { + // TODO Auto-generated method stub + return false; + } + + @Override + public List getMessages() { + return this.messages; + } + + @Override + public String getName() { + return super.getBaseSymbol().getName(); + } + + @Override + public boolean hasMessages() { + return !messages.isEmpty(); + } + + @Override + public List getAtomicOutputs() { + // TODO Auto-generated method stub + throw new UnsupportedOperationException("Unimplemented method 'getAtomicOutputs'"); + } + + @Override + public List getAtomicOutputs(int unrollRepeating) { + // TODO Auto-generated method stub + throw new UnsupportedOperationException("Unimplemented method 'getAtomicOutputs'"); + } + + @Override + public List getAtomicAbstractionStrings() { + // TODO Auto-generated method stub + throw new UnsupportedOperationException("Unimplemented method 'getAtomicAbstractionStrings'"); + } + + @Override + public List getAtomicAbstractionStrings(int unrollRepeating) { + // TODO Auto-generated method stub + throw new UnsupportedOperationException("Unimplemented method 'getAtomicAbstractionStrings'"); + } + + @Override + public boolean isRepeating() { + // TODO Auto-generated method stub + throw new UnsupportedOperationException("Unimplemented method 'isRepeating'"); + } + + @Override + public EdhocOutputRA getRepeatedOutput() { + // TODO Auto-generated method stub + throw new UnsupportedOperationException("Unimplemented method 'getRepeatedOutput'"); + } + + @Override + public String toDetailedString() { + // TODO Auto-generated method stub + throw new UnsupportedOperationException("Unimplemented method 'toDetailedString'"); + } +} diff --git a/src/main/java/com/github/protocolfuzzing/edhocfuzzer/components/sul/mapper/symbols/outputs/MessageOutputTypeRA.java b/src/main/java/com/github/protocolfuzzing/edhocfuzzer/components/sul/mapper/symbols/outputs/MessageOutputTypeRA.java new file mode 100644 index 00000000..b4a828c5 --- /dev/null +++ b/src/main/java/com/github/protocolfuzzing/edhocfuzzer/components/sul/mapper/symbols/outputs/MessageOutputTypeRA.java @@ -0,0 +1,18 @@ +package com.github.protocolfuzzing.edhocfuzzer.components.sul.mapper.symbols.outputs; + +/** + * Messages that can be received. + */ +public enum MessageOutputTypeRA { + EDHOC_MESSAGE_1_OUTPUT, + EDHOC_MESSAGE_2_OUTPUT, + EDHOC_MESSAGE_3_OUTPUT, + EDHOC_MESSAGE_4_OUTPUT, + EDHOC_ERROR_MESSAGE_OUTPUT, + EDHOC_MESSAGE_3_OSCORE_APP_OUTPUT, + OSCORE_APP_MESSAGE_OUTPUT, + COAP_APP_MESSAGE_OUTPUT, + COAP_MESSAGE_OUTPUT, + COAP_ERROR_MESSAGE_OUTPUT, + COAP_EMPTY_MESSAGE_OUTPUT +} diff --git a/src/main/resources/alphabet_placeholder.xml b/src/main/resources/alphabet_placeholder.xml new file mode 100644 index 00000000..49ced98d --- /dev/null +++ b/src/main/resources/alphabet_placeholder.xml @@ -0,0 +1,2 @@ + + diff --git a/src/main/resources/default_fuzzer.properties b/src/main/resources/default_fuzzer.properties index 06f75aa7..70698e22 100644 --- a/src/main/resources/default_fuzzer.properties +++ b/src/main/resources/default_fuzzer.properties @@ -1,6 +1,8 @@ # Properties file storing definitions for various variables used in arguments files -results.learning.clients=experiments/results/clients -results.learning.servers=experiments/results/servers +results.learning.clients.mealy=experiments/results/clients/mealy +results.learning.servers.mealy=experiments/results/servers/mealy +results.learning.clients.ra=experiments/results/clients/ra +results.learning.servers.ra=experiments/results/servers/ra models.clients=experiments/models/clients models.servers=experiments/models/servers alphabets=experiments/alphabets diff --git a/src/main/resources/log4j2.xml b/src/main/resources/log4j2.xml index d89b7ea6..d6531b32 100644 --- a/src/main/resources/log4j2.xml +++ b/src/main/resources/log4j2.xml @@ -6,12 +6,21 @@ + + + + + + + + +