From fbf19d9a78f8ee37cc3e6718ef6de50c04139a73 Mon Sep 17 00:00:00 2001 From: Tristan Claverie Date: Tue, 9 Jan 2024 16:52:42 +0100 Subject: [PATCH] Add Esorics'23 Bluetooth examples (#605) Co-authored-by: tcl --- examples/esorics23-bluetooth/README.md | 451 + examples/esorics23-bluetooth/models/ble.spthy | 14828 ++++++++++++++++ .../esorics23-bluetooth/models/bredr.spthy | 11315 ++++++++++++ .../esorics23-bluetooth/models/mesh.spthy | 6848 +++++++ .../results/results_ble.png | Bin 0 -> 1182637 bytes .../results/results_bredr.png | Bin 0 -> 799976 bytes .../results/results_mesh.png | Bin 0 -> 466985 bytes 7 files changed, 33442 insertions(+) create mode 100644 examples/esorics23-bluetooth/README.md create mode 100644 examples/esorics23-bluetooth/models/ble.spthy create mode 100644 examples/esorics23-bluetooth/models/bredr.spthy create mode 100644 examples/esorics23-bluetooth/models/mesh.spthy create mode 100644 examples/esorics23-bluetooth/results/results_ble.png create mode 100644 examples/esorics23-bluetooth/results/results_bredr.png create mode 100644 examples/esorics23-bluetooth/results/results_mesh.png diff --git a/examples/esorics23-bluetooth/README.md b/examples/esorics23-bluetooth/README.md new file mode 100644 index 000000000..925894bb7 --- /dev/null +++ b/examples/esorics23-bluetooth/README.md @@ -0,0 +1,451 @@ +## Tamarin models of Bluetooth + +This project contains Tamarin models of the different Bluetooth technologies: BR/EDR, BLE and BM. + +The models represent the different key agreements of each Bluetooth technologies. + +All variants of key agreements are represented. + +For the analysis, the interaction of each key agreement with each other is studied. +In the models, different known cryptographic problems affecting Bluetooth have been represented. +Some proposed patches have also been modeled to test for their efficiency. + +This way, the analysis of Tamarin of those models gives an up-to-date view of the security of Bluetooth key agreements. + +## Configuration of the models + +In addition of running all key agreement interactions, it is possible to study Bluetooth key agreements in some configuration. + +A configuration is defined as a set of cryptographic problems that are represented and a set of patches that are applied. + +In BR/EDR, the following configuration macros are defined: + +- NoLowEntropyLegacy: Disables the ability for an attacker to brute-force the PIN used in Legacy PIN Pairing +- NoLowEntropySecure: Disables the ability for an attacker to brute-force the passkey used in Secure Passkey Entry +- InitECDHUnpatched: Represents the fact that the Initiator does not verify the validity of the Responder's public key +- RespECDHUnpatched: Represents the fact that the Responder does not verify the validity of the Initiator's public key + + +In BLE, the following configuration macros are defined: + +- NoLowEntropyLegacy: Disables the ability for an attacker to brute-force the passkey used in Legacy Passkey Entry +- NoLowEntropySecure: Disables the ability for an attacker to brute-force the passkey used in Secure Passkey Entry +- NoMalleableC1: Disables the malleability of the $c1$ commitment function in BLE Legacy Pairing +- InitECDHUnpatched: Represents the fact that the Initiator does not verify the validity of the Responder's public key +- RespECDHUnpatched: Represents the fact that the Responder does not verify the validity of the Initiator's public key +- LowEntropyKeysize: Enables the ability for an attacker to brute-force a key which size had been downgraded + + +In BM, the following configuration macros are defined: + +- NoLowEntropyAuthValue: Disables the ability for an attacker to brute-force AuthValue used in the Provisioning protocol +- NoMalleableCMAC: Disables the malleability of the $CMAC$ commitment function Provisioning +- ProvECDHUnpatched: Represents the fact that the Provisioner does not verify the validity of the Device's public key +- DevECDHUnpatched: Represents the fact that the Device does not verify the validity of the Provisioner's public key +- PatchProvisioning1: Represents a proposed patch of Provisioning: the Provisioner should not accept a reflected confirmation value +- PatchProvisioning2: Represents a proposed patch of Provisioning: the Device computes the commitment value using an inversion of parameters. + +## Tamarin outputs warnings + +For some models, Tamarin will output well-formedness warnings. +This is because the models heavily rely on macros, hence when generating a submodel about half of the file is not copied. + +However, restrictions are usually copied, and some may rely on action facts that are never generated by this submodel. +This only means this restriction is not used by the model, but does not alter the validity of the results. + +## Command lines + +The command lines to run all model in a default configuration are given. +Running them from the CLI will not save the output file and parse the results. +The default configuration considers that : + +- all imperfections exist +- but devices have patched ECDH implementations (this is mandated in the specification) +- 7-bytes keys cannot be brute-forced + +### Number of properties analysed + +In BR/EDR, there are 11 modeled kind of key agreements. +This makes 121 possible interactions because the interaction of each key agreement with each one is studied. +For each interaction, there are 6 properties studied (5 security properties and 1 functional property). +Therefore, running all the commands will prove 726 lemmas (including 605 security properties). + +In BLE, there are 13 modeled kind of key agreements. +This makes 169 possible interactions because the interaction of each key agreement with each one is studied. +For each interaction, there are 6 properties studied (5 security properties and 1 functional property). +Therefore, running all the commands will prove 1014 lemmas (including 845 security properties). + +In Mesh, there are 8 modeled kind of key agreements. +This makes 64 possible interactions because the interaction of each key agreement with each one is studied. +For each interaction, there are 10 properties studied (9 security properties and 1 functional property). +Therefore, running all the commands will prove 640 lemmas (including 576 security properties). + +### BR/EDR + +``` +tamarin-prover bredr.spthy -DInitLeg -DInitLegPINi -DRespLeg -DRespLegPINi -DLegPINiLegPINi -DInputInput --prove +tamarin-prover bredr.spthy -DInitLeg -DInitLegPINi -DRespLeg -DRespLegPINo -DLegPINiLegPINo -DInputOutput --prove +tamarin-prover bredr.spthy -DInitLeg -DInitLegPINi -DRespLeg -DRespLegPINio -DLegPINiLegPINio -DInputInout --prove +tamarin-prover bredr.spthy -DInitLeg -DInitLegPINo -DRespLeg -DRespLegPINi -DLegPINoLegPINi -DOutputInput --prove +tamarin-prover bredr.spthy -DInitLeg -DInitLegPINo -DRespLeg -DRespLegPINo -DLegPINoLegPINo -DOutputOutput --prove +tamarin-prover bredr.spthy -DInitLeg -DInitLegPINo -DRespLeg -DRespLegPINio -DLegPINoLegPINio -DOutputInout --prove +tamarin-prover bredr.spthy -DInitLeg -DInitLegPINio -DRespLeg -DRespLegPINi -DLegPINioLegPINi -DInoutInput --prove +tamarin-prover bredr.spthy -DInitLeg -DInitLegPINio -DRespLeg -DRespLegPINo -DLegPINioLegPINo -DInoutOutput --prove +tamarin-prover bredr.spthy -DInitLeg -DInitLegPINio -DRespLeg -DRespLegPINio -DLegPINioLegPINio -DInoutInout --prove +tamarin-prover bredr.spthy -DInitSec -DInitSecJW -DRespSec -DRespSecJW -DSecJWSecJW --prove +tamarin-prover bredr.spthy -DInitSec -DInitSecJW -DRespSec -DRespSecPE -DRespSecPEi -DSecJWSecPEi --prove +tamarin-prover bredr.spthy -DInitSec -DInitSecJW -DRespSec -DRespSecPE -DRespSecPEo -DSecJWSecPEo --prove +tamarin-prover bredr.spthy -DInitSec -DInitSecJW -DRespSec -DRespSecPE -DRespSecPEio -DSecJWSecPEio --prove +tamarin-prover bredr.spthy -DInitSec -DInitSecJW -DRespSec -DRespSecNC -DSecJWSecNC --prove +tamarin-prover bredr.spthy -DInitSec -DInitSecJW -DRespSec -DRespSecOOB -DRespSecOOBi -DSecJWSecOOBi --prove +tamarin-prover bredr.spthy -DInitSec -DInitSecJW -DRespSec -DRespSecOOB -DRespSecOOBo -DSecJWSecOOBo --prove +tamarin-prover bredr.spthy -DInitSec -DInitSecJW -DRespSec -DRespSecOOB -DRespSecOOBio -DSecJWSecOOBio --prove +tamarin-prover bredr.spthy -DInitSec -DInitSecPE -DInitSecPEi -DRespSec -DRespSecJW -DSecPEiSecJW -DInputInput -DInputOutput -DInputInout --prove +tamarin-prover bredr.spthy -DInitSec -DInitSecPE -DInitSecPEi -DRespSec -DRespSecPE -DRespSecPEi -DSecPEiSecPEi -DInputInput --prove +tamarin-prover bredr.spthy -DInitSec -DInitSecPE -DInitSecPEi -DRespSec -DRespSecPE -DRespSecPEo -DSecPEiSecPEo -DInputOutput --prove +tamarin-prover bredr.spthy -DInitSec -DInitSecPE -DInitSecPEi -DRespSec -DRespSecPE -DRespSecPEio -DSecPEiSecPEio -DInputInout --prove +tamarin-prover bredr.spthy -DInitSec -DInitSecPE -DInitSecPEi -DRespSec -DRespSecNC -DSecPEiSecNC -DInputOutput --prove +tamarin-prover bredr.spthy -DInitSec -DInitSecPE -DInitSecPEi -DRespSec -DRespSecOOB -DRespSecOOBi -DSecPEiSecOOBi -DInputInput -DInputOutput -DInputInout --prove +tamarin-prover bredr.spthy -DInitSec -DInitSecPE -DInitSecPEi -DRespSec -DRespSecOOB -DRespSecOOBo -DSecPEiSecOOBo -DInputInput -DInputOutput -DInputInout --prove +tamarin-prover bredr.spthy -DInitSec -DInitSecPE -DInitSecPEi -DRespSec -DRespSecOOB -DRespSecOOBio -DSecPEiSecOOBio -DInputInput -DInputOutput -DInputInout --prove +tamarin-prover bredr.spthy -DInitSec -DInitSecPE -DInitSecPEo -DRespSec -DRespSecJW -DSecPEoSecJW -DOutputInput -DOutputOutput -DOutputInout --prove +tamarin-prover bredr.spthy -DInitSec -DInitSecPE -DInitSecPEo -DRespSec -DRespSecPE -DRespSecPEi -DSecPEoSecPEi -DOutputInput --prove +tamarin-prover bredr.spthy -DInitSec -DInitSecPE -DInitSecPEo -DRespSec -DRespSecPE -DRespSecPEo -DSecPEoSecPEo -DOutputOutput --prove +tamarin-prover bredr.spthy -DInitSec -DInitSecPE -DInitSecPEo -DRespSec -DRespSecPE -DRespSecPEio -DSecPEoSecPEio -DOutputInout --prove +tamarin-prover bredr.spthy -DInitSec -DInitSecPE -DInitSecPEo -DRespSec -DRespSecNC -DSecPEoSecNC -DOutputOutput --prove +tamarin-prover bredr.spthy -DInitSec -DInitSecPE -DInitSecPEo -DRespSec -DRespSecOOB -DRespSecOOBi -DSecPEoSecOOBi -DOutputInput -DOutputOutput -DOutputInout --prove +tamarin-prover bredr.spthy -DInitSec -DInitSecPE -DInitSecPEo -DRespSec -DRespSecOOB -DRespSecOOBo -DSecPEoSecOOBo -DOutputInput -DOutputOutput -DOutputInout --prove +tamarin-prover bredr.spthy -DInitSec -DInitSecPE -DInitSecPEo -DRespSec -DRespSecOOB -DRespSecOOBio -DSecPEoSecOOBio -DOutputInput -DOutputOutput -DOutputInout --prove +tamarin-prover bredr.spthy -DInitSec -DInitSecPE -DInitSecPEio -DRespSec -DRespSecJW -DSecPEioSecJW -DInoutInput -DInoutOutput -DInoutInout --prove +tamarin-prover bredr.spthy -DInitSec -DInitSecPE -DInitSecPEio -DRespSec -DRespSecPE -DRespSecPEi -DSecPEioSecPEi -DInoutInput --prove +tamarin-prover bredr.spthy -DInitSec -DInitSecPE -DInitSecPEio -DRespSec -DRespSecPE -DRespSecPEo -DSecPEioSecPEo -DInoutOutput --prove +tamarin-prover bredr.spthy -DInitSec -DInitSecPE -DInitSecPEio -DRespSec -DRespSecPE -DRespSecPEio -DSecPEioSecPEio -DInoutInout --prove +tamarin-prover bredr.spthy -DInitSec -DInitSecPE -DInitSecPEio -DRespSec -DRespSecNC -DSecPEioSecNC -DInoutOutput --prove +tamarin-prover bredr.spthy -DInitSec -DInitSecPE -DInitSecPEio -DRespSec -DRespSecOOB -DRespSecOOBi -DSecPEioSecOOBi -DInoutInput -DInoutOutput -DInoutInout --prove +tamarin-prover bredr.spthy -DInitSec -DInitSecPE -DInitSecPEio -DRespSec -DRespSecOOB -DRespSecOOBo -DSecPEioSecOOBo -DInoutInput -DInoutOutput -DInoutInout --prove +tamarin-prover bredr.spthy -DInitSec -DInitSecPE -DInitSecPEio -DRespSec -DRespSecOOB -DRespSecOOBio -DSecPEioSecOOBio -DInoutInput -DInoutOutput -DInoutInout --prove +tamarin-prover bredr.spthy -DInitSec -DInitSecNC -DRespSec -DRespSecJW -DSecNCSecJW -DOutputInput -DOutputOutput -DOutputInout --prove +tamarin-prover bredr.spthy -DInitSec -DInitSecNC -DRespSec -DRespSecPE -DRespSecPEi -DSecNCSecPEi -DOutputInput --prove +tamarin-prover bredr.spthy -DInitSec -DInitSecNC -DRespSec -DRespSecPE -DRespSecPEo -DSecNCSecPEo -DOutputOutput --prove +tamarin-prover bredr.spthy -DInitSec -DInitSecNC -DRespSec -DRespSecPE -DRespSecPEio -DSecNCSecPEio -DOutputInout --prove +tamarin-prover bredr.spthy -DInitSec -DInitSecNC -DRespSec -DRespSecNC -DSecNCSecNC -DOutputOutput --prove +tamarin-prover bredr.spthy -DInitSec -DInitSecNC -DRespSec -DRespSecOOB -DRespSecOOBi -DSecNCSecOOBi -DOutputInput -DOutputOutput -DOutputInout --prove +tamarin-prover bredr.spthy -DInitSec -DInitSecNC -DRespSec -DRespSecOOB -DRespSecOOBo -DSecNCSecOOBo -DOutputInput -DOutputOutput -DOutputInout --prove +tamarin-prover bredr.spthy -DInitSec -DInitSecNC -DRespSec -DRespSecOOB -DRespSecOOBio -DSecNCSecOOBio -DOutputInput -DOutputOutput -DOutputInout --prove +tamarin-prover bredr.spthy -DInitSec -DInitSecOOB -DInitSecOOBi -DRespSec -DRespSecJW -DSecOOBiSecJW --prove +tamarin-prover bredr.spthy -DInitSec -DInitSecOOB -DInitSecOOBi -DRespSec -DRespSecPE -DRespSecPEi -DSecOOBiSecPEi --prove +tamarin-prover bredr.spthy -DInitSec -DInitSecOOB -DInitSecOOBi -DRespSec -DRespSecPE -DRespSecPEo -DSecOOBiSecPEo --prove +tamarin-prover bredr.spthy -DInitSec -DInitSecOOB -DInitSecOOBi -DRespSec -DRespSecPE -DRespSecPEio -DSecOOBiSecPEio --prove +tamarin-prover bredr.spthy -DInitSec -DInitSecOOB -DInitSecOOBi -DRespSec -DRespSecNC -DSecOOBiSecNC --prove +tamarin-prover bredr.spthy -DInitSec -DInitSecOOB -DInitSecOOBi -DRespSec -DRespSecOOB -DRespSecOOBi -DSecOOBiSecOOBi --prove +tamarin-prover bredr.spthy -DInitSec -DInitSecOOB -DInitSecOOBi -DRespSec -DRespSecOOB -DRespSecOOBo -DSecOOBiSecOOBo --prove +tamarin-prover bredr.spthy -DInitSec -DInitSecOOB -DInitSecOOBi -DRespSec -DRespSecOOB -DRespSecOOBio -DSecOOBiSecOOBio --prove +tamarin-prover bredr.spthy -DInitSec -DInitSecOOB -DInitSecOOBo -DRespSec -DRespSecJW -DSecOOBoSecJW --prove +tamarin-prover bredr.spthy -DInitSec -DInitSecOOB -DInitSecOOBo -DRespSec -DRespSecPE -DRespSecPEi -DSecOOBoSecPEi --prove +tamarin-prover bredr.spthy -DInitSec -DInitSecOOB -DInitSecOOBo -DRespSec -DRespSecPE -DRespSecPEo -DSecOOBoSecPEo --prove +tamarin-prover bredr.spthy -DInitSec -DInitSecOOB -DInitSecOOBo -DRespSec -DRespSecPE -DRespSecPEio -DSecOOBoSecPEio --prove +tamarin-prover bredr.spthy -DInitSec -DInitSecOOB -DInitSecOOBo -DRespSec -DRespSecNC -DSecOOBoSecNC --prove +tamarin-prover bredr.spthy -DInitSec -DInitSecOOB -DInitSecOOBo -DRespSec -DRespSecOOB -DRespSecOOBi -DSecOOBoSecOOBi --prove +tamarin-prover bredr.spthy -DInitSec -DInitSecOOB -DInitSecOOBo -DRespSec -DRespSecOOB -DRespSecOOBo -DSecOOBoSecOOBo --prove +tamarin-prover bredr.spthy -DInitSec -DInitSecOOB -DInitSecOOBo -DRespSec -DRespSecOOB -DRespSecOOBio -DSecOOBoSecOOBio --prove +tamarin-prover bredr.spthy -DInitSec -DInitSecOOB -DInitSecOOBio -DRespSec -DRespSecJW -DSecOOBioSecJW --prove +tamarin-prover bredr.spthy -DInitSec -DInitSecOOB -DInitSecOOBio -DRespSec -DRespSecPE -DRespSecPEi -DSecOOBioSecPEi --prove +tamarin-prover bredr.spthy -DInitSec -DInitSecOOB -DInitSecOOBio -DRespSec -DRespSecPE -DRespSecPEo -DSecOOBioSecPEo --prove +tamarin-prover bredr.spthy -DInitSec -DInitSecOOB -DInitSecOOBio -DRespSec -DRespSecPE -DRespSecPEio -DSecOOBioSecPEio --prove +tamarin-prover bredr.spthy -DInitSec -DInitSecOOB -DInitSecOOBio -DRespSec -DRespSecNC -DSecOOBioSecNC --prove +tamarin-prover bredr.spthy -DInitSec -DInitSecOOB -DInitSecOOBio -DRespSec -DRespSecOOB -DRespSecOOBi -DSecOOBioSecOOBi --prove +tamarin-prover bredr.spthy -DInitSec -DInitSecOOB -DInitSecOOBio -DRespSec -DRespSecOOB -DRespSecOOBo -DSecOOBioSecOOBo --prove +tamarin-prover bredr.spthy -DInitSec -DInitSecOOB -DInitSecOOBio -DRespSec -DRespSecOOB -DRespSecOOBio -DSecOOBioSecOOBio --prove +tamarin-prover bredr.spthy -DInitLeg -DInitLegPINi -DRespSec -DRespSecJW -DLegPINiSecJW -DInputInput -DInputOutput -DInputInout --prove +tamarin-prover bredr.spthy -DInitLeg -DInitLegPINi -DRespSec -DRespSecPE -DRespSecPEi -DLegPINiSecPEi -DInputInput --prove +tamarin-prover bredr.spthy -DInitLeg -DInitLegPINi -DRespSec -DRespSecPE -DRespSecPEo -DLegPINiSecPEo -DInputOutput --prove +tamarin-prover bredr.spthy -DInitLeg -DInitLegPINi -DRespSec -DRespSecPE -DRespSecPEio -DLegPINiSecPEio -DInputInout --prove +tamarin-prover bredr.spthy -DInitLeg -DInitLegPINi -DRespSec -DRespSecNC -DLegPINiSecNC -DInputOutput --prove +tamarin-prover bredr.spthy -DInitLeg -DInitLegPINi -DRespSec -DRespSecOOB -DRespSecOOBi -DLegPINiSecOOBi -DInputInput -DInputOutput -DInputInout --prove +tamarin-prover bredr.spthy -DInitLeg -DInitLegPINi -DRespSec -DRespSecOOB -DRespSecOOBo -DLegPINiSecOOBo -DInputInput -DInputOutput -DInputInout --prove +tamarin-prover bredr.spthy -DInitLeg -DInitLegPINi -DRespSec -DRespSecOOB -DRespSecOOBio -DLegPINiSecOOBio -DInputInput -DInputOutput -DInputInout --prove +tamarin-prover bredr.spthy -DInitLeg -DInitLegPINo -DRespSec -DRespSecJW -DLegPINoSecJW -DOutputInput -DOutputOutput -DOutputInout --prove +tamarin-prover bredr.spthy -DInitLeg -DInitLegPINo -DRespSec -DRespSecPE -DRespSecPEi -DLegPINoSecPEi -DOutputInput --prove +tamarin-prover bredr.spthy -DInitLeg -DInitLegPINo -DRespSec -DRespSecPE -DRespSecPEo -DLegPINoSecPEo -DOutputOutput --prove +tamarin-prover bredr.spthy -DInitLeg -DInitLegPINo -DRespSec -DRespSecPE -DRespSecPEio -DLegPINoSecPEio -DOutputInout --prove +tamarin-prover bredr.spthy -DInitLeg -DInitLegPINo -DRespSec -DRespSecNC -DLegPINoSecNC -DOutputOutput --prove +tamarin-prover bredr.spthy -DInitLeg -DInitLegPINo -DRespSec -DRespSecOOB -DRespSecOOBi -DLegPINoSecOOBi -DOutputInput -DOutputOutput -DOutputInout --prove +tamarin-prover bredr.spthy -DInitLeg -DInitLegPINo -DRespSec -DRespSecOOB -DRespSecOOBo -DLegPINoSecOOBo -DOutputInput -DOutputOutput -DOutputInout --prove +tamarin-prover bredr.spthy -DInitLeg -DInitLegPINo -DRespSec -DRespSecOOB -DRespSecOOBio -DLegPINoSecOOBio -DOutputInput -DOutputOutput -DOutputInout --prove +tamarin-prover bredr.spthy -DInitLeg -DInitLegPINio -DRespSec -DRespSecJW -DLegPINioSecJW -DInoutInput -DInoutOutput -DInoutInout --prove +tamarin-prover bredr.spthy -DInitLeg -DInitLegPINio -DRespSec -DRespSecPE -DRespSecPEi -DLegPINioSecPEi -DInoutInput --prove +tamarin-prover bredr.spthy -DInitLeg -DInitLegPINio -DRespSec -DRespSecPE -DRespSecPEo -DLegPINioSecPEo -DInoutOutput --prove +tamarin-prover bredr.spthy -DInitLeg -DInitLegPINio -DRespSec -DRespSecPE -DRespSecPEio -DLegPINioSecPEio -DInoutInout --prove +tamarin-prover bredr.spthy -DInitLeg -DInitLegPINio -DRespSec -DRespSecNC -DLegPINioSecNC -DInoutOutput --prove +tamarin-prover bredr.spthy -DInitLeg -DInitLegPINio -DRespSec -DRespSecOOB -DRespSecOOBi -DLegPINioSecOOBi -DInoutInput -DInoutOutput -DInoutInout --prove +tamarin-prover bredr.spthy -DInitLeg -DInitLegPINio -DRespSec -DRespSecOOB -DRespSecOOBo -DLegPINioSecOOBo -DInoutInput -DInoutOutput -DInoutInout --prove +tamarin-prover bredr.spthy -DInitLeg -DInitLegPINio -DRespSec -DRespSecOOB -DRespSecOOBio -DLegPINioSecOOBio -DInoutInput -DInoutOutput -DInoutInout --prove +tamarin-prover bredr.spthy -DInitSec -DInitSecJW -DRespLeg -DRespLegPINi -DSecJWLegPINi --prove +tamarin-prover bredr.spthy -DInitSec -DInitSecJW -DRespLeg -DRespLegPINo -DSecJWLegPINo --prove +tamarin-prover bredr.spthy -DInitSec -DInitSecJW -DRespLeg -DRespLegPINio -DSecJWLegPINio --prove +tamarin-prover bredr.spthy -DInitSec -DInitSecPE -DInitSecPEi -DRespLeg -DRespLegPINi -DSecPEiLegPINi -DInputInput --prove +tamarin-prover bredr.spthy -DInitSec -DInitSecPE -DInitSecPEi -DRespLeg -DRespLegPINo -DSecPEiLegPINo -DInputOutput --prove +tamarin-prover bredr.spthy -DInitSec -DInitSecPE -DInitSecPEi -DRespLeg -DRespLegPINio -DSecPEiLegPINio -DInputInout --prove +tamarin-prover bredr.spthy -DInitSec -DInitSecPE -DInitSecPEo -DRespLeg -DRespLegPINi -DSecPEoLegPINi -DOutputInput --prove +tamarin-prover bredr.spthy -DInitSec -DInitSecPE -DInitSecPEo -DRespLeg -DRespLegPINo -DSecPEoLegPINo -DOutputOutput --prove +tamarin-prover bredr.spthy -DInitSec -DInitSecPE -DInitSecPEo -DRespLeg -DRespLegPINio -DSecPEoLegPINio -DOutputInout --prove +tamarin-prover bredr.spthy -DInitSec -DInitSecPE -DInitSecPEio -DRespLeg -DRespLegPINi -DSecPEioLegPINi -DInoutInput --prove +tamarin-prover bredr.spthy -DInitSec -DInitSecPE -DInitSecPEio -DRespLeg -DRespLegPINo -DSecPEioLegPINo -DInoutOutput --prove +tamarin-prover bredr.spthy -DInitSec -DInitSecPE -DInitSecPEio -DRespLeg -DRespLegPINio -DSecPEioLegPINio -DInoutInout --prove +tamarin-prover bredr.spthy -DInitSec -DInitSecNC -DRespLeg -DRespLegPINi -DSecNCLegPINi -DOutputInput --prove +tamarin-prover bredr.spthy -DInitSec -DInitSecNC -DRespLeg -DRespLegPINo -DSecNCLegPINo -DOutputOutput --prove +tamarin-prover bredr.spthy -DInitSec -DInitSecNC -DRespLeg -DRespLegPINio -DSecNCLegPINio -DOutputInout --prove +tamarin-prover bredr.spthy -DInitSec -DInitSecOOB -DInitSecOOBi -DRespLeg -DRespLegPINi -DSecOOBiLegPINi --prove +tamarin-prover bredr.spthy -DInitSec -DInitSecOOB -DInitSecOOBi -DRespLeg -DRespLegPINo -DSecOOBiLegPINo --prove +tamarin-prover bredr.spthy -DInitSec -DInitSecOOB -DInitSecOOBi -DRespLeg -DRespLegPINio -DSecOOBiLegPINio --prove +tamarin-prover bredr.spthy -DInitSec -DInitSecOOB -DInitSecOOBo -DRespLeg -DRespLegPINi -DSecOOBoLegPINi --prove +tamarin-prover bredr.spthy -DInitSec -DInitSecOOB -DInitSecOOBo -DRespLeg -DRespLegPINo -DSecOOBoLegPINo --prove +tamarin-prover bredr.spthy -DInitSec -DInitSecOOB -DInitSecOOBo -DRespLeg -DRespLegPINio -DSecOOBoLegPINio --prove +tamarin-prover bredr.spthy -DInitSec -DInitSecOOB -DInitSecOOBio -DRespLeg -DRespLegPINi -DSecOOBioLegPINi --prove +tamarin-prover bredr.spthy -DInitSec -DInitSecOOB -DInitSecOOBio -DRespLeg -DRespLegPINo -DSecOOBioLegPINo --prove +tamarin-prover bredr.spthy -DInitSec -DInitSecOOB -DInitSecOOBio -DRespLeg -DRespLegPINio -DSecOOBioLegPINio --prove +``` + +### BLE + +``` +tamarin-prover ble.spthy -DInitLeg -DInitLegJW -DRespLeg -DRespLegJW -DLegJWLegJW --prove +tamarin-prover ble.spthy -DInitLeg -DInitLegJW -DRespLeg -DRespLegPE -DRespLegPEi -DLegJWLegPEi --prove +tamarin-prover ble.spthy -DInitLeg -DInitLegJW -DRespLeg -DRespLegPE -DRespLegPEo -DLegJWLegPEo --prove +tamarin-prover ble.spthy -DInitLeg -DInitLegJW -DRespLeg -DRespLegPE -DRespLegPEio -DLegJWLegPEio --prove +tamarin-prover ble.spthy -DInitLeg -DInitLegJW -DRespLeg -DRespLegOOB -DLegJWLegOOB --prove +tamarin-prover ble.spthy -DInitLeg -DInitLegPE -DInitLegPEi -DRespLeg -DRespLegJW -DLegPEiLegJW -DInputInput -DInputOutput -DInputInout --prove +tamarin-prover ble.spthy -DInitLeg -DInitLegPE -DInitLegPEi -DRespLeg -DRespLegPE -DRespLegPEi -DLegPEiLegPEi -DInputInput --prove +tamarin-prover ble.spthy -DInitLeg -DInitLegPE -DInitLegPEi -DRespLeg -DRespLegPE -DRespLegPEo -DLegPEiLegPEo -DInputOutput --prove +tamarin-prover ble.spthy -DInitLeg -DInitLegPE -DInitLegPEi -DRespLeg -DRespLegPE -DRespLegPEio -DLegPEiLegPEio -DInputInout --prove +tamarin-prover ble.spthy -DInitLeg -DInitLegPE -DInitLegPEi -DRespLeg -DRespLegOOB -DLegPEiLegOOB -DInputInput -DInputOutput -DInputInout --prove +tamarin-prover ble.spthy -DInitLeg -DInitLegPE -DInitLegPEo -DRespLeg -DRespLegJW -DLegPEoLegJW -DOutputInput -DOutputOutput -DOutputInout --prove +tamarin-prover ble.spthy -DInitLeg -DInitLegPE -DInitLegPEo -DRespLeg -DRespLegPE -DRespLegPEi -DLegPEoLegPEi -DOutputInput --prove +tamarin-prover ble.spthy -DInitLeg -DInitLegPE -DInitLegPEo -DRespLeg -DRespLegPE -DRespLegPEo -DLegPEoLegPEo -DOutputOutput --prove +tamarin-prover ble.spthy -DInitLeg -DInitLegPE -DInitLegPEo -DRespLeg -DRespLegPE -DRespLegPEio -DLegPEoLegPEio -DOutputInout --prove +tamarin-prover ble.spthy -DInitLeg -DInitLegPE -DInitLegPEo -DRespLeg -DRespLegOOB -DLegPEoLegOOB -DOutputInput -DOutputOutput -DOutputInout --prove +tamarin-prover ble.spthy -DInitLeg -DInitLegPE -DInitLegPEio -DRespLeg -DRespLegJW -DLegPEioLegJW -DInoutInput -DInoutOutput -DInoutInout --prove +tamarin-prover ble.spthy -DInitLeg -DInitLegPE -DInitLegPEio -DRespLeg -DRespLegPE -DRespLegPEi -DLegPEioLegPEi -DInoutInput --prove +tamarin-prover ble.spthy -DInitLeg -DInitLegPE -DInitLegPEio -DRespLeg -DRespLegPE -DRespLegPEo -DLegPEioLegPEo -DInoutOutput --prove +tamarin-prover ble.spthy -DInitLeg -DInitLegPE -DInitLegPEio -DRespLeg -DRespLegPE -DRespLegPEio -DLegPEioLegPEio -DInoutInout --prove +tamarin-prover ble.spthy -DInitLeg -DInitLegPE -DInitLegPEio -DRespLeg -DRespLegOOB -DLegPEioLegOOB -DInoutInput -DInoutOutput -DInoutInout --prove +tamarin-prover ble.spthy -DInitLeg -DInitLegOOB -DRespLeg -DRespLegJW -DLegOOBLegJW --prove +tamarin-prover ble.spthy -DInitLeg -DInitLegOOB -DRespLeg -DRespLegPE -DRespLegPEi -DLegOOBLegPEi --prove +tamarin-prover ble.spthy -DInitLeg -DInitLegOOB -DRespLeg -DRespLegPE -DRespLegPEo -DLegOOBLegPEo --prove +tamarin-prover ble.spthy -DInitLeg -DInitLegOOB -DRespLeg -DRespLegPE -DRespLegPEio -DLegOOBLegPEio --prove +tamarin-prover ble.spthy -DInitLeg -DInitLegOOB -DRespLeg -DRespLegOOB -DLegOOBLegOOB --prove +tamarin-prover ble.spthy -DInitSec -DInitSecJW -DRespSec -DRespSecJW -DSecJWSecJW --prove +tamarin-prover ble.spthy -DInitSec -DInitSecJW -DRespSec -DRespSecPE -DRespSecPEi -DSecJWSecPEi --prove +tamarin-prover ble.spthy -DInitSec -DInitSecJW -DRespSec -DRespSecPE -DRespSecPEo -DSecJWSecPEo --prove +tamarin-prover ble.spthy -DInitSec -DInitSecJW -DRespSec -DRespSecPE -DRespSecPEio -DSecJWSecPEio --prove +tamarin-prover ble.spthy -DInitSec -DInitSecJW -DRespSec -DRespSecNC -DSecJWSecNC --prove +tamarin-prover ble.spthy -DInitSec -DInitSecJW -DRespSec -DRespSecOOB -DRespSecOOBi -DSecJWSecOOBi --prove +tamarin-prover ble.spthy -DInitSec -DInitSecJW -DRespSec -DRespSecOOB -DRespSecOOBo -DSecJWSecOOBo --prove +tamarin-prover ble.spthy -DInitSec -DInitSecJW -DRespSec -DRespSecOOB -DRespSecOOBio -DSecJWSecOOBio --prove +tamarin-prover ble.spthy -DInitSec -DInitSecPE -DInitSecPEi -DRespSec -DRespSecJW -DSecPEiSecJW -DInputInput -DInputOutput -DInputInout --prove +tamarin-prover ble.spthy -DInitSec -DInitSecPE -DInitSecPEi -DRespSec -DRespSecPE -DRespSecPEi -DSecPEiSecPEi -DInputInput --prove +tamarin-prover ble.spthy -DInitSec -DInitSecPE -DInitSecPEi -DRespSec -DRespSecPE -DRespSecPEo -DSecPEiSecPEo -DInputOutput --prove +tamarin-prover ble.spthy -DInitSec -DInitSecPE -DInitSecPEi -DRespSec -DRespSecPE -DRespSecPEio -DSecPEiSecPEio -DInputInout --prove +tamarin-prover ble.spthy -DInitSec -DInitSecPE -DInitSecPEi -DRespSec -DRespSecNC -DSecPEiSecNC -DInputOutput --prove +tamarin-prover ble.spthy -DInitSec -DInitSecPE -DInitSecPEi -DRespSec -DRespSecOOB -DRespSecOOBi -DSecPEiSecOOBi -DInputInput -DInputOutput -DInputInout --prove +tamarin-prover ble.spthy -DInitSec -DInitSecPE -DInitSecPEi -DRespSec -DRespSecOOB -DRespSecOOBo -DSecPEiSecOOBo -DInputInput -DInputOutput -DInputInout --prove +tamarin-prover ble.spthy -DInitSec -DInitSecPE -DInitSecPEi -DRespSec -DRespSecOOB -DRespSecOOBio -DSecPEiSecOOBio -DInputInput -DInputOutput -DInputInout --prove +tamarin-prover ble.spthy -DInitSec -DInitSecPE -DInitSecPEo -DRespSec -DRespSecJW -DSecPEoSecJW -DOutputInput -DOutputOutput -DOutputInout --prove +tamarin-prover ble.spthy -DInitSec -DInitSecPE -DInitSecPEo -DRespSec -DRespSecPE -DRespSecPEi -DSecPEoSecPEi -DOutputInput --prove +tamarin-prover ble.spthy -DInitSec -DInitSecPE -DInitSecPEo -DRespSec -DRespSecPE -DRespSecPEo -DSecPEoSecPEo -DOutputOutput --prove +tamarin-prover ble.spthy -DInitSec -DInitSecPE -DInitSecPEo -DRespSec -DRespSecPE -DRespSecPEio -DSecPEoSecPEio -DOutputInout --prove +tamarin-prover ble.spthy -DInitSec -DInitSecPE -DInitSecPEo -DRespSec -DRespSecNC -DSecPEoSecNC -DOutputOutput --prove +tamarin-prover ble.spthy -DInitSec -DInitSecPE -DInitSecPEo -DRespSec -DRespSecOOB -DRespSecOOBi -DSecPEoSecOOBi -DOutputInput -DOutputOutput -DOutputInout --prove +tamarin-prover ble.spthy -DInitSec -DInitSecPE -DInitSecPEo -DRespSec -DRespSecOOB -DRespSecOOBo -DSecPEoSecOOBo -DOutputInput -DOutputOutput -DOutputInout --prove +tamarin-prover ble.spthy -DInitSec -DInitSecPE -DInitSecPEo -DRespSec -DRespSecOOB -DRespSecOOBio -DSecPEoSecOOBio -DOutputInput -DOutputOutput -DOutputInout --prove +tamarin-prover ble.spthy -DInitSec -DInitSecPE -DInitSecPEio -DRespSec -DRespSecJW -DSecPEioSecJW -DInoutInput -DInoutOutput -DInoutInout --prove +tamarin-prover ble.spthy -DInitSec -DInitSecPE -DInitSecPEio -DRespSec -DRespSecPE -DRespSecPEi -DSecPEioSecPEi -DInoutInput --prove +tamarin-prover ble.spthy -DInitSec -DInitSecPE -DInitSecPEio -DRespSec -DRespSecPE -DRespSecPEo -DSecPEioSecPEo -DInoutOutput --prove +tamarin-prover ble.spthy -DInitSec -DInitSecPE -DInitSecPEio -DRespSec -DRespSecPE -DRespSecPEio -DSecPEioSecPEio -DInoutInout --prove +tamarin-prover ble.spthy -DInitSec -DInitSecPE -DInitSecPEio -DRespSec -DRespSecNC -DSecPEioSecNC -DInoutOutput --prove +tamarin-prover ble.spthy -DInitSec -DInitSecPE -DInitSecPEio -DRespSec -DRespSecOOB -DRespSecOOBi -DSecPEioSecOOBi -DInoutInput -DInoutOutput -DInoutInout --prove +tamarin-prover ble.spthy -DInitSec -DInitSecPE -DInitSecPEio -DRespSec -DRespSecOOB -DRespSecOOBo -DSecPEioSecOOBo -DInoutInput -DInoutOutput -DInoutInout --prove +tamarin-prover ble.spthy -DInitSec -DInitSecPE -DInitSecPEio -DRespSec -DRespSecOOB -DRespSecOOBio -DSecPEioSecOOBio -DInoutInput -DInoutOutput -DInoutInout --prove +tamarin-prover ble.spthy -DInitSec -DInitSecNC -DRespSec -DRespSecJW -DSecNCSecJW -DOutputInput -DOutputOutput -DOutputInout --prove +tamarin-prover ble.spthy -DInitSec -DInitSecNC -DRespSec -DRespSecPE -DRespSecPEi -DSecNCSecPEi -DOutputInput --prove +tamarin-prover ble.spthy -DInitSec -DInitSecNC -DRespSec -DRespSecPE -DRespSecPEo -DSecNCSecPEo -DOutputOutput --prove +tamarin-prover ble.spthy -DInitSec -DInitSecNC -DRespSec -DRespSecPE -DRespSecPEio -DSecNCSecPEio -DOutputInout --prove +tamarin-prover ble.spthy -DInitSec -DInitSecNC -DRespSec -DRespSecNC -DSecNCSecNC -DOutputOutput --prove +tamarin-prover ble.spthy -DInitSec -DInitSecNC -DRespSec -DRespSecOOB -DRespSecOOBi -DSecNCSecOOBi -DOutputInput -DOutputOutput -DOutputInout --prove +tamarin-prover ble.spthy -DInitSec -DInitSecNC -DRespSec -DRespSecOOB -DRespSecOOBo -DSecNCSecOOBo -DOutputInput -DOutputOutput -DOutputInout --prove +tamarin-prover ble.spthy -DInitSec -DInitSecNC -DRespSec -DRespSecOOB -DRespSecOOBio -DSecNCSecOOBio -DOutputInput -DOutputOutput -DOutputInout --prove +tamarin-prover ble.spthy -DInitSec -DInitSecOOB -DInitSecOOBi -DRespSec -DRespSecJW -DSecOOBiSecJW --prove +tamarin-prover ble.spthy -DInitSec -DInitSecOOB -DInitSecOOBi -DRespSec -DRespSecPE -DRespSecPEi -DSecOOBiSecPEi --prove +tamarin-prover ble.spthy -DInitSec -DInitSecOOB -DInitSecOOBi -DRespSec -DRespSecPE -DRespSecPEo -DSecOOBiSecPEo --prove +tamarin-prover ble.spthy -DInitSec -DInitSecOOB -DInitSecOOBi -DRespSec -DRespSecPE -DRespSecPEio -DSecOOBiSecPEio --prove +tamarin-prover ble.spthy -DInitSec -DInitSecOOB -DInitSecOOBi -DRespSec -DRespSecNC -DSecOOBiSecNC --prove +tamarin-prover ble.spthy -DInitSec -DInitSecOOB -DInitSecOOBi -DRespSec -DRespSecOOB -DRespSecOOBi -DSecOOBiSecOOBi --prove +tamarin-prover ble.spthy -DInitSec -DInitSecOOB -DInitSecOOBi -DRespSec -DRespSecOOB -DRespSecOOBo -DSecOOBiSecOOBo --prove +tamarin-prover ble.spthy -DInitSec -DInitSecOOB -DInitSecOOBi -DRespSec -DRespSecOOB -DRespSecOOBio -DSecOOBiSecOOBio --prove +tamarin-prover ble.spthy -DInitSec -DInitSecOOB -DInitSecOOBo -DRespSec -DRespSecJW -DSecOOBoSecJW --prove +tamarin-prover ble.spthy -DInitSec -DInitSecOOB -DInitSecOOBo -DRespSec -DRespSecPE -DRespSecPEi -DSecOOBoSecPEi --prove +tamarin-prover ble.spthy -DInitSec -DInitSecOOB -DInitSecOOBo -DRespSec -DRespSecPE -DRespSecPEo -DSecOOBoSecPEo --prove +tamarin-prover ble.spthy -DInitSec -DInitSecOOB -DInitSecOOBo -DRespSec -DRespSecPE -DRespSecPEio -DSecOOBoSecPEio --prove +tamarin-prover ble.spthy -DInitSec -DInitSecOOB -DInitSecOOBo -DRespSec -DRespSecNC -DSecOOBoSecNC --prove +tamarin-prover ble.spthy -DInitSec -DInitSecOOB -DInitSecOOBo -DRespSec -DRespSecOOB -DRespSecOOBi -DSecOOBoSecOOBi --prove +tamarin-prover ble.spthy -DInitSec -DInitSecOOB -DInitSecOOBo -DRespSec -DRespSecOOB -DRespSecOOBo -DSecOOBoSecOOBo --prove +tamarin-prover ble.spthy -DInitSec -DInitSecOOB -DInitSecOOBo -DRespSec -DRespSecOOB -DRespSecOOBio -DSecOOBoSecOOBio --prove +tamarin-prover ble.spthy -DInitSec -DInitSecOOB -DInitSecOOBio -DRespSec -DRespSecJW -DSecOOBioSecJW --prove +tamarin-prover ble.spthy -DInitSec -DInitSecOOB -DInitSecOOBio -DRespSec -DRespSecPE -DRespSecPEi -DSecOOBioSecPEi --prove +tamarin-prover ble.spthy -DInitSec -DInitSecOOB -DInitSecOOBio -DRespSec -DRespSecPE -DRespSecPEo -DSecOOBioSecPEo --prove +tamarin-prover ble.spthy -DInitSec -DInitSecOOB -DInitSecOOBio -DRespSec -DRespSecPE -DRespSecPEio -DSecOOBioSecPEio --prove +tamarin-prover ble.spthy -DInitSec -DInitSecOOB -DInitSecOOBio -DRespSec -DRespSecNC -DSecOOBioSecNC --prove +tamarin-prover ble.spthy -DInitSec -DInitSecOOB -DInitSecOOBio -DRespSec -DRespSecOOB -DRespSecOOBi -DSecOOBioSecOOBi --prove +tamarin-prover ble.spthy -DInitSec -DInitSecOOB -DInitSecOOBio -DRespSec -DRespSecOOB -DRespSecOOBo -DSecOOBioSecOOBo --prove +tamarin-prover ble.spthy -DInitSec -DInitSecOOB -DInitSecOOBio -DRespSec -DRespSecOOB -DRespSecOOBio -DSecOOBioSecOOBio --prove +tamarin-prover ble.spthy -DInitLeg -DInitLegJW -DRespSec -DRespSecJW -DLegJWSecJW --prove +tamarin-prover ble.spthy -DInitLeg -DInitLegJW -DRespSec -DRespSecPE -DRespSecPEi -DLegJWSecPEi --prove +tamarin-prover ble.spthy -DInitLeg -DInitLegJW -DRespSec -DRespSecPE -DRespSecPEo -DLegJWSecPEo --prove +tamarin-prover ble.spthy -DInitLeg -DInitLegJW -DRespSec -DRespSecPE -DRespSecPEio -DLegJWSecPEio --prove +tamarin-prover ble.spthy -DInitLeg -DInitLegJW -DRespSec -DRespSecNC -DLegJWSecNC --prove +tamarin-prover ble.spthy -DInitLeg -DInitLegJW -DRespSec -DRespSecOOB -DRespSecOOBi -DLegJWSecOOBi --prove +tamarin-prover ble.spthy -DInitLeg -DInitLegJW -DRespSec -DRespSecOOB -DRespSecOOBo -DLegJWSecOOBo --prove +tamarin-prover ble.spthy -DInitLeg -DInitLegJW -DRespSec -DRespSecOOB -DRespSecOOBio -DLegJWSecOOBio --prove +tamarin-prover ble.spthy -DInitLeg -DInitLegPE -DInitLegPEi -DRespSec -DRespSecJW -DLegPEiSecJW -DInputInput -DInputOutput -DInputInout --prove +tamarin-prover ble.spthy -DInitLeg -DInitLegPE -DInitLegPEi -DRespSec -DRespSecPE -DRespSecPEi -DLegPEiSecPEi -DInputInput --prove +tamarin-prover ble.spthy -DInitLeg -DInitLegPE -DInitLegPEi -DRespSec -DRespSecPE -DRespSecPEo -DLegPEiSecPEo -DInputOutput --prove +tamarin-prover ble.spthy -DInitLeg -DInitLegPE -DInitLegPEi -DRespSec -DRespSecPE -DRespSecPEio -DLegPEiSecPEio -DInputInout --prove +tamarin-prover ble.spthy -DInitLeg -DInitLegPE -DInitLegPEi -DRespSec -DRespSecNC -DLegPEiSecNC -DInputOutput --prove +tamarin-prover ble.spthy -DInitLeg -DInitLegPE -DInitLegPEi -DRespSec -DRespSecOOB -DRespSecOOBi -DLegPEiSecOOBi -DInputInput -DInputOutput -DInputInout --prove +tamarin-prover ble.spthy -DInitLeg -DInitLegPE -DInitLegPEi -DRespSec -DRespSecOOB -DRespSecOOBo -DLegPEiSecOOBo -DInputInput -DInputOutput -DInputInout --prove +tamarin-prover ble.spthy -DInitLeg -DInitLegPE -DInitLegPEi -DRespSec -DRespSecOOB -DRespSecOOBio -DLegPEiSecOOBio -DInputInput -DInputOutput -DInputInout --prove +tamarin-prover ble.spthy -DInitLeg -DInitLegPE -DInitLegPEo -DRespSec -DRespSecJW -DLegPEoSecJW -DOutputInput -DOutputOutput -DOutputInout --prove +tamarin-prover ble.spthy -DInitLeg -DInitLegPE -DInitLegPEo -DRespSec -DRespSecPE -DRespSecPEi -DLegPEoSecPEi -DOutputInput --prove +tamarin-prover ble.spthy -DInitLeg -DInitLegPE -DInitLegPEo -DRespSec -DRespSecPE -DRespSecPEo -DLegPEoSecPEo -DOutputOutput --prove +tamarin-prover ble.spthy -DInitLeg -DInitLegPE -DInitLegPEo -DRespSec -DRespSecPE -DRespSecPEio -DLegPEoSecPEio -DOutputInout --prove +tamarin-prover ble.spthy -DInitLeg -DInitLegPE -DInitLegPEo -DRespSec -DRespSecNC -DLegPEoSecNC -DOutputOutput --prove +tamarin-prover ble.spthy -DInitLeg -DInitLegPE -DInitLegPEo -DRespSec -DRespSecOOB -DRespSecOOBi -DLegPEoSecOOBi -DOutputInput -DOutputOutput -DOutputInout --prove +tamarin-prover ble.spthy -DInitLeg -DInitLegPE -DInitLegPEo -DRespSec -DRespSecOOB -DRespSecOOBo -DLegPEoSecOOBo -DOutputInput -DOutputOutput -DOutputInout --prove +tamarin-prover ble.spthy -DInitLeg -DInitLegPE -DInitLegPEo -DRespSec -DRespSecOOB -DRespSecOOBio -DLegPEoSecOOBio -DOutputInput -DOutputOutput -DOutputInout --prove +tamarin-prover ble.spthy -DInitLeg -DInitLegPE -DInitLegPEio -DRespSec -DRespSecJW -DLegPEioSecJW -DInoutInput -DInoutOutput -DInoutInout --prove +tamarin-prover ble.spthy -DInitLeg -DInitLegPE -DInitLegPEio -DRespSec -DRespSecPE -DRespSecPEi -DLegPEioSecPEi -DInoutInput --prove +tamarin-prover ble.spthy -DInitLeg -DInitLegPE -DInitLegPEio -DRespSec -DRespSecPE -DRespSecPEo -DLegPEioSecPEo -DInoutOutput --prove +tamarin-prover ble.spthy -DInitLeg -DInitLegPE -DInitLegPEio -DRespSec -DRespSecPE -DRespSecPEio -DLegPEioSecPEio -DInoutInout --prove +tamarin-prover ble.spthy -DInitLeg -DInitLegPE -DInitLegPEio -DRespSec -DRespSecNC -DLegPEioSecNC -DInoutOutput --prove +tamarin-prover ble.spthy -DInitLeg -DInitLegPE -DInitLegPEio -DRespSec -DRespSecOOB -DRespSecOOBi -DLegPEioSecOOBi -DInoutInput -DInoutOutput -DInoutInout --prove +tamarin-prover ble.spthy -DInitLeg -DInitLegPE -DInitLegPEio -DRespSec -DRespSecOOB -DRespSecOOBo -DLegPEioSecOOBo -DInoutInput -DInoutOutput -DInoutInout --prove +tamarin-prover ble.spthy -DInitLeg -DInitLegPE -DInitLegPEio -DRespSec -DRespSecOOB -DRespSecOOBio -DLegPEioSecOOBio -DInoutInput -DInoutOutput -DInoutInout --prove +tamarin-prover ble.spthy -DInitLeg -DInitLegOOB -DRespSec -DRespSecJW -DLegOOBSecJW --prove +tamarin-prover ble.spthy -DInitLeg -DInitLegOOB -DRespSec -DRespSecPE -DRespSecPEi -DLegOOBSecPEi --prove +tamarin-prover ble.spthy -DInitLeg -DInitLegOOB -DRespSec -DRespSecPE -DRespSecPEo -DLegOOBSecPEo --prove +tamarin-prover ble.spthy -DInitLeg -DInitLegOOB -DRespSec -DRespSecPE -DRespSecPEio -DLegOOBSecPEio --prove +tamarin-prover ble.spthy -DInitLeg -DInitLegOOB -DRespSec -DRespSecNC -DLegOOBSecNC --prove +tamarin-prover ble.spthy -DInitLeg -DInitLegOOB -DRespSec -DRespSecOOB -DRespSecOOBi -DLegOOBSecOOBi --prove +tamarin-prover ble.spthy -DInitLeg -DInitLegOOB -DRespSec -DRespSecOOB -DRespSecOOBo -DLegOOBSecOOBo --prove +tamarin-prover ble.spthy -DInitLeg -DInitLegOOB -DRespSec -DRespSecOOB -DRespSecOOBio -DLegOOBSecOOBio --prove +tamarin-prover ble.spthy -DInitSec -DInitSecJW -DRespLeg -DRespLegJW -DSecJWLegJW --prove +tamarin-prover ble.spthy -DInitSec -DInitSecJW -DRespLeg -DRespLegPE -DRespLegPEi -DSecJWLegPEi --prove +tamarin-prover ble.spthy -DInitSec -DInitSecJW -DRespLeg -DRespLegPE -DRespLegPEo -DSecJWLegPEo --prove +tamarin-prover ble.spthy -DInitSec -DInitSecJW -DRespLeg -DRespLegPE -DRespLegPEio -DSecJWLegPEio --prove +tamarin-prover ble.spthy -DInitSec -DInitSecJW -DRespLeg -DRespLegOOB -DSecJWLegOOB --prove +tamarin-prover ble.spthy -DInitSec -DInitSecPE -DInitSecPEi -DRespLeg -DRespLegJW -DSecPEiLegJW -DInputInput -DInputOutput -DInputInout --prove +tamarin-prover ble.spthy -DInitSec -DInitSecPE -DInitSecPEi -DRespLeg -DRespLegPE -DRespLegPEi -DSecPEiLegPEi -DInputInput --prove +tamarin-prover ble.spthy -DInitSec -DInitSecPE -DInitSecPEi -DRespLeg -DRespLegPE -DRespLegPEo -DSecPEiLegPEo -DInputOutput --prove +tamarin-prover ble.spthy -DInitSec -DInitSecPE -DInitSecPEi -DRespLeg -DRespLegPE -DRespLegPEio -DSecPEiLegPEio -DInputInout --prove +tamarin-prover ble.spthy -DInitSec -DInitSecPE -DInitSecPEi -DRespLeg -DRespLegOOB -DSecPEiLegOOB -DInputInput -DInputOutput -DInputInout --prove +tamarin-prover ble.spthy -DInitSec -DInitSecPE -DInitSecPEo -DRespLeg -DRespLegJW -DSecPEoLegJW -DOutputInput -DOutputOutput -DOutputInout --prove +tamarin-prover ble.spthy -DInitSec -DInitSecPE -DInitSecPEo -DRespLeg -DRespLegPE -DRespLegPEi -DSecPEoLegPEi -DOutputInput --prove +tamarin-prover ble.spthy -DInitSec -DInitSecPE -DInitSecPEo -DRespLeg -DRespLegPE -DRespLegPEo -DSecPEoLegPEo -DOutputOutput --prove +tamarin-prover ble.spthy -DInitSec -DInitSecPE -DInitSecPEo -DRespLeg -DRespLegPE -DRespLegPEio -DSecPEoLegPEio -DOutputInout --prove +tamarin-prover ble.spthy -DInitSec -DInitSecPE -DInitSecPEo -DRespLeg -DRespLegOOB -DSecPEoLegOOB -DOutputInput -DOutputOutput -DOutputInout --prove +tamarin-prover ble.spthy -DInitSec -DInitSecPE -DInitSecPEio -DRespLeg -DRespLegJW -DSecPEioLegJW -DInoutInput -DInoutOutput -DInoutInout --prove +tamarin-prover ble.spthy -DInitSec -DInitSecPE -DInitSecPEio -DRespLeg -DRespLegPE -DRespLegPEi -DSecPEioLegPEi -DInoutInput --prove +tamarin-prover ble.spthy -DInitSec -DInitSecPE -DInitSecPEio -DRespLeg -DRespLegPE -DRespLegPEo -DSecPEioLegPEo -DInoutOutput --prove +tamarin-prover ble.spthy -DInitSec -DInitSecPE -DInitSecPEio -DRespLeg -DRespLegPE -DRespLegPEio -DSecPEioLegPEio -DInoutInout --prove +tamarin-prover ble.spthy -DInitSec -DInitSecPE -DInitSecPEio -DRespLeg -DRespLegOOB -DSecPEioLegOOB -DInoutInput -DInoutOutput -DInoutInout --prove +tamarin-prover ble.spthy -DInitSec -DInitSecNC -DRespLeg -DRespLegJW -DSecNCLegJW -DOutputInput -DOutputOutput -DOutputInout --prove +tamarin-prover ble.spthy -DInitSec -DInitSecNC -DRespLeg -DRespLegPE -DRespLegPEi -DSecNCLegPEi -DOutputInput --prove +tamarin-prover ble.spthy -DInitSec -DInitSecNC -DRespLeg -DRespLegPE -DRespLegPEo -DSecNCLegPEo -DOutputOutput --prove +tamarin-prover ble.spthy -DInitSec -DInitSecNC -DRespLeg -DRespLegPE -DRespLegPEio -DSecNCLegPEio -DOutputInout --prove +tamarin-prover ble.spthy -DInitSec -DInitSecNC -DRespLeg -DRespLegOOB -DSecNCLegOOB -DOutputInput -DOutputOutput -DOutputInout --prove +tamarin-prover ble.spthy -DInitSec -DInitSecOOB -DInitSecOOBi -DRespLeg -DRespLegJW -DSecOOBiLegJW --prove +tamarin-prover ble.spthy -DInitSec -DInitSecOOB -DInitSecOOBi -DRespLeg -DRespLegPE -DRespLegPEi -DSecOOBiLegPEi --prove +tamarin-prover ble.spthy -DInitSec -DInitSecOOB -DInitSecOOBi -DRespLeg -DRespLegPE -DRespLegPEo -DSecOOBiLegPEo --prove +tamarin-prover ble.spthy -DInitSec -DInitSecOOB -DInitSecOOBi -DRespLeg -DRespLegPE -DRespLegPEio -DSecOOBiLegPEio --prove +tamarin-prover ble.spthy -DInitSec -DInitSecOOB -DInitSecOOBi -DRespLeg -DRespLegOOB -DSecOOBiLegOOB --prove +tamarin-prover ble.spthy -DInitSec -DInitSecOOB -DInitSecOOBo -DRespLeg -DRespLegJW -DSecOOBoLegJW --prove +tamarin-prover ble.spthy -DInitSec -DInitSecOOB -DInitSecOOBo -DRespLeg -DRespLegPE -DRespLegPEi -DSecOOBoLegPEi --prove +tamarin-prover ble.spthy -DInitSec -DInitSecOOB -DInitSecOOBo -DRespLeg -DRespLegPE -DRespLegPEo -DSecOOBoLegPEo --prove +tamarin-prover ble.spthy -DInitSec -DInitSecOOB -DInitSecOOBo -DRespLeg -DRespLegPE -DRespLegPEio -DSecOOBoLegPEio --prove +tamarin-prover ble.spthy -DInitSec -DInitSecOOB -DInitSecOOBo -DRespLeg -DRespLegOOB -DSecOOBoLegOOB --prove +tamarin-prover ble.spthy -DInitSec -DInitSecOOB -DInitSecOOBio -DRespLeg -DRespLegJW -DSecOOBioLegJW --prove +tamarin-prover ble.spthy -DInitSec -DInitSecOOB -DInitSecOOBio -DRespLeg -DRespLegPE -DRespLegPEi -DSecOOBioLegPEi --prove +tamarin-prover ble.spthy -DInitSec -DInitSecOOB -DInitSecOOBio -DRespLeg -DRespLegPE -DRespLegPEo -DSecOOBioLegPEo --prove +tamarin-prover ble.spthy -DInitSec -DInitSecOOB -DInitSecOOBio -DRespLeg -DRespLegPE -DRespLegPEio -DSecOOBioLegPEio --prove +tamarin-prover ble.spthy -DInitSec -DInitSecOOB -DInitSecOOBio -DRespLeg -DRespLegOOB -DSecOOBioLegOOB --prove +``` + +### Mesh + +``` +tamarin-prover mesh.spthy -DProvEi -DProvEiOOBno -DProvOOBno -DDevEi -DDevEiOOBno -DDevOOBno -DProvECDH -DDevECDH -DEiOOBnoEiOOBno --prove +tamarin-prover mesh.spthy -DProvEi -DProvEiOOBno -DProvOOBno -DDevEi -DDevEiOOBi -DDevOOBi -DProvECDH -DDevECDH -DEiOOBnoEiOOBi --prove +tamarin-prover mesh.spthy -DProvEi -DProvEiOOBno -DProvOOBno -DDevEi -DDevEiOOBo -DDevOOBo -DProvECDH -DDevECDH -DEiOOBnoEiOOBo --prove +tamarin-prover mesh.spthy -DProvEi -DProvEiOOBno -DProvOOBno -DDevEi -DDevEiOOBs -DDevOOBs -DProvECDH -DDevECDH -DEiOOBnoEiOOBs --prove +tamarin-prover mesh.spthy -DProvEi -DProvEiOOBi -DProvOOBi -DDevEi -DDevEiOOBno -DDevOOBno -DProvECDH -DDevECDH -DEiOOBiEiOOBno --prove +tamarin-prover mesh.spthy -DProvEi -DProvEiOOBi -DProvOOBi -DDevEi -DDevEiOOBi -DDevOOBi -DProvECDH -DDevECDH -DEiOOBiEiOOBi --prove +tamarin-prover mesh.spthy -DProvEi -DProvEiOOBi -DProvOOBi -DDevEi -DDevEiOOBo -DDevOOBo -DProvECDH -DDevECDH -DEiOOBiEiOOBo --prove +tamarin-prover mesh.spthy -DProvEi -DProvEiOOBi -DProvOOBi -DDevEi -DDevEiOOBs -DDevOOBs -DProvECDH -DDevECDH -DEiOOBiEiOOBs --prove +tamarin-prover mesh.spthy -DProvEi -DProvEiOOBo -DProvOOBo -DDevEi -DDevEiOOBno -DDevOOBno -DProvECDH -DDevECDH -DEiOOBoEiOOBno --prove +tamarin-prover mesh.spthy -DProvEi -DProvEiOOBo -DProvOOBo -DDevEi -DDevEiOOBi -DDevOOBi -DProvECDH -DDevECDH -DEiOOBoEiOOBi --prove +tamarin-prover mesh.spthy -DProvEi -DProvEiOOBo -DProvOOBo -DDevEi -DDevEiOOBo -DDevOOBo -DProvECDH -DDevECDH -DEiOOBoEiOOBo --prove +tamarin-prover mesh.spthy -DProvEi -DProvEiOOBo -DProvOOBo -DDevEi -DDevEiOOBs -DDevOOBs -DProvECDH -DDevECDH -DEiOOBoEiOOBs --prove +tamarin-prover mesh.spthy -DProvEi -DProvEiOOBs -DProvOOBs -DDevEi -DDevEiOOBno -DDevOOBno -DProvECDH -DDevECDH -DEiOOBsEiOOBno --prove +tamarin-prover mesh.spthy -DProvEi -DProvEiOOBs -DProvOOBs -DDevEi -DDevEiOOBi -DDevOOBi -DProvECDH -DDevECDH -DEiOOBsEiOOBi --prove +tamarin-prover mesh.spthy -DProvEi -DProvEiOOBs -DProvOOBs -DDevEi -DDevEiOOBo -DDevOOBo -DProvECDH -DDevECDH -DEiOOBsEiOOBo --prove +tamarin-prover mesh.spthy -DProvEi -DProvEiOOBs -DProvOOBs -DDevEi -DDevEiOOBs -DDevOOBs -DProvECDH -DDevECDH -DEiOOBsEiOOBs --prove +tamarin-prover mesh.spthy -DProvEi -DProvEiOOBno -DProvOOBno -DDevEo -DDevEoOOBno -DDevOOBno -DProvECDH -DDevECDH -DEiOOBnoEoOOBno --prove +tamarin-prover mesh.spthy -DProvEi -DProvEiOOBno -DProvOOBno -DDevEo -DDevEoOOBi -DDevOOBi -DProvECDH -DDevECDH -DEiOOBnoEoOOBi --prove +tamarin-prover mesh.spthy -DProvEi -DProvEiOOBno -DProvOOBno -DDevEo -DDevEoOOBo -DDevOOBo -DProvECDH -DDevECDH -DEiOOBnoEoOOBo --prove +tamarin-prover mesh.spthy -DProvEi -DProvEiOOBno -DProvOOBno -DDevEo -DDevEoOOBs -DDevOOBs -DProvECDH -DDevECDH -DEiOOBnoEoOOBs --prove +tamarin-prover mesh.spthy -DProvEi -DProvEiOOBi -DProvOOBi -DDevEo -DDevEoOOBno -DDevOOBno -DProvECDH -DDevECDH -DEiOOBiEoOOBno --prove +tamarin-prover mesh.spthy -DProvEi -DProvEiOOBi -DProvOOBi -DDevEo -DDevEoOOBi -DDevOOBi -DProvECDH -DDevECDH -DEiOOBiEoOOBi --prove +tamarin-prover mesh.spthy -DProvEi -DProvEiOOBi -DProvOOBi -DDevEo -DDevEoOOBo -DDevOOBo -DProvECDH -DDevECDH -DEiOOBiEoOOBo --prove +tamarin-prover mesh.spthy -DProvEi -DProvEiOOBi -DProvOOBi -DDevEo -DDevEoOOBs -DDevOOBs -DProvECDH -DDevECDH -DEiOOBiEoOOBs --prove +tamarin-prover mesh.spthy -DProvEi -DProvEiOOBo -DProvOOBo -DDevEo -DDevEoOOBno -DDevOOBno -DProvECDH -DDevECDH -DEiOOBoEoOOBno --prove +tamarin-prover mesh.spthy -DProvEi -DProvEiOOBo -DProvOOBo -DDevEo -DDevEoOOBi -DDevOOBi -DProvECDH -DDevECDH -DEiOOBoEoOOBi --prove +tamarin-prover mesh.spthy -DProvEi -DProvEiOOBo -DProvOOBo -DDevEo -DDevEoOOBo -DDevOOBo -DProvECDH -DDevECDH -DEiOOBoEoOOBo --prove +tamarin-prover mesh.spthy -DProvEi -DProvEiOOBo -DProvOOBo -DDevEo -DDevEoOOBs -DDevOOBs -DProvECDH -DDevECDH -DEiOOBoEoOOBs --prove +tamarin-prover mesh.spthy -DProvEi -DProvEiOOBs -DProvOOBs -DDevEo -DDevEoOOBno -DDevOOBno -DProvECDH -DDevECDH -DEiOOBsEoOOBno --prove +tamarin-prover mesh.spthy -DProvEi -DProvEiOOBs -DProvOOBs -DDevEo -DDevEoOOBi -DDevOOBi -DProvECDH -DDevECDH -DEiOOBsEoOOBi --prove +tamarin-prover mesh.spthy -DProvEi -DProvEiOOBs -DProvOOBs -DDevEo -DDevEoOOBo -DDevOOBo -DProvECDH -DDevECDH -DEiOOBsEoOOBo --prove +tamarin-prover mesh.spthy -DProvEi -DProvEiOOBs -DProvOOBs -DDevEo -DDevEoOOBs -DDevOOBs -DProvECDH -DDevECDH -DEiOOBsEoOOBs --prove +tamarin-prover mesh.spthy -DProvEo -DProvEoOOBno -DProvOOBno -DDevEi -DDevEiOOBno -DDevOOBno -DProvECDH -DDevECDH -DEoOOBnoEiOOBno --prove +tamarin-prover mesh.spthy -DProvEo -DProvEoOOBno -DProvOOBno -DDevEi -DDevEiOOBi -DDevOOBi -DProvECDH -DDevECDH -DEoOOBnoEiOOBi --prove +tamarin-prover mesh.spthy -DProvEo -DProvEoOOBno -DProvOOBno -DDevEi -DDevEiOOBo -DDevOOBo -DProvECDH -DDevECDH -DEoOOBnoEiOOBo --prove +tamarin-prover mesh.spthy -DProvEo -DProvEoOOBno -DProvOOBno -DDevEi -DDevEiOOBs -DDevOOBs -DProvECDH -DDevECDH -DEoOOBnoEiOOBs --prove +tamarin-prover mesh.spthy -DProvEo -DProvEoOOBi -DProvOOBi -DDevEi -DDevEiOOBno -DDevOOBno -DProvECDH -DDevECDH -DEoOOBiEiOOBno --prove +tamarin-prover mesh.spthy -DProvEo -DProvEoOOBi -DProvOOBi -DDevEi -DDevEiOOBi -DDevOOBi -DProvECDH -DDevECDH -DEoOOBiEiOOBi --prove +tamarin-prover mesh.spthy -DProvEo -DProvEoOOBi -DProvOOBi -DDevEi -DDevEiOOBo -DDevOOBo -DProvECDH -DDevECDH -DEoOOBiEiOOBo --prove +tamarin-prover mesh.spthy -DProvEo -DProvEoOOBi -DProvOOBi -DDevEi -DDevEiOOBs -DDevOOBs -DProvECDH -DDevECDH -DEoOOBiEiOOBs --prove +tamarin-prover mesh.spthy -DProvEo -DProvEoOOBo -DProvOOBo -DDevEi -DDevEiOOBno -DDevOOBno -DProvECDH -DDevECDH -DEoOOBoEiOOBno --prove +tamarin-prover mesh.spthy -DProvEo -DProvEoOOBo -DProvOOBo -DDevEi -DDevEiOOBi -DDevOOBi -DProvECDH -DDevECDH -DEoOOBoEiOOBi --prove +tamarin-prover mesh.spthy -DProvEo -DProvEoOOBo -DProvOOBo -DDevEi -DDevEiOOBo -DDevOOBo -DProvECDH -DDevECDH -DEoOOBoEiOOBo --prove +tamarin-prover mesh.spthy -DProvEo -DProvEoOOBo -DProvOOBo -DDevEi -DDevEiOOBs -DDevOOBs -DProvECDH -DDevECDH -DEoOOBoEiOOBs --prove +tamarin-prover mesh.spthy -DProvEo -DProvEoOOBs -DProvOOBs -DDevEi -DDevEiOOBno -DDevOOBno -DProvECDH -DDevECDH -DEoOOBsEiOOBno --prove +tamarin-prover mesh.spthy -DProvEo -DProvEoOOBs -DProvOOBs -DDevEi -DDevEiOOBi -DDevOOBi -DProvECDH -DDevECDH -DEoOOBsEiOOBi --prove +tamarin-prover mesh.spthy -DProvEo -DProvEoOOBs -DProvOOBs -DDevEi -DDevEiOOBo -DDevOOBo -DProvECDH -DDevECDH -DEoOOBsEiOOBo --prove +tamarin-prover mesh.spthy -DProvEo -DProvEoOOBs -DProvOOBs -DDevEi -DDevEiOOBs -DDevOOBs -DProvECDH -DDevECDH -DEoOOBsEiOOBs --prove +tamarin-prover mesh.spthy -DProvEo -DProvEoOOBno -DProvOOBno -DDevEo -DDevEoOOBno -DDevOOBno -DProvECDH -DDevECDH -DEoOOBnoEoOOBno --prove +tamarin-prover mesh.spthy -DProvEo -DProvEoOOBno -DProvOOBno -DDevEo -DDevEoOOBi -DDevOOBi -DProvECDH -DDevECDH -DEoOOBnoEoOOBi --prove +tamarin-prover mesh.spthy -DProvEo -DProvEoOOBno -DProvOOBno -DDevEo -DDevEoOOBo -DDevOOBo -DProvECDH -DDevECDH -DEoOOBnoEoOOBo --prove +tamarin-prover mesh.spthy -DProvEo -DProvEoOOBno -DProvOOBno -DDevEo -DDevEoOOBs -DDevOOBs -DProvECDH -DDevECDH -DEoOOBnoEoOOBs --prove +tamarin-prover mesh.spthy -DProvEo -DProvEoOOBi -DProvOOBi -DDevEo -DDevEoOOBno -DDevOOBno -DProvECDH -DDevECDH -DEoOOBiEoOOBno --prove +tamarin-prover mesh.spthy -DProvEo -DProvEoOOBi -DProvOOBi -DDevEo -DDevEoOOBi -DDevOOBi -DProvECDH -DDevECDH -DEoOOBiEoOOBi --prove +tamarin-prover mesh.spthy -DProvEo -DProvEoOOBi -DProvOOBi -DDevEo -DDevEoOOBo -DDevOOBo -DProvECDH -DDevECDH -DEoOOBiEoOOBo --prove +tamarin-prover mesh.spthy -DProvEo -DProvEoOOBi -DProvOOBi -DDevEo -DDevEoOOBs -DDevOOBs -DProvECDH -DDevECDH -DEoOOBiEoOOBs --prove +tamarin-prover mesh.spthy -DProvEo -DProvEoOOBo -DProvOOBo -DDevEo -DDevEoOOBno -DDevOOBno -DProvECDH -DDevECDH -DEoOOBoEoOOBno --prove +tamarin-prover mesh.spthy -DProvEo -DProvEoOOBo -DProvOOBo -DDevEo -DDevEoOOBi -DDevOOBi -DProvECDH -DDevECDH -DEoOOBoEoOOBi --prove +tamarin-prover mesh.spthy -DProvEo -DProvEoOOBo -DProvOOBo -DDevEo -DDevEoOOBo -DDevOOBo -DProvECDH -DDevECDH -DEoOOBoEoOOBo --prove +tamarin-prover mesh.spthy -DProvEo -DProvEoOOBo -DProvOOBo -DDevEo -DDevEoOOBs -DDevOOBs -DProvECDH -DDevECDH -DEoOOBoEoOOBs --prove +tamarin-prover mesh.spthy -DProvEo -DProvEoOOBs -DProvOOBs -DDevEo -DDevEoOOBno -DDevOOBno -DProvECDH -DDevECDH -DEoOOBsEoOOBno --prove +tamarin-prover mesh.spthy -DProvEo -DProvEoOOBs -DProvOOBs -DDevEo -DDevEoOOBi -DDevOOBi -DProvECDH -DDevECDH -DEoOOBsEoOOBi --prove +tamarin-prover mesh.spthy -DProvEo -DProvEoOOBs -DProvOOBs -DDevEo -DDevEoOOBo -DDevOOBo -DProvECDH -DDevECDH -DEoOOBsEoOOBo --prove +tamarin-prover mesh.spthy -DProvEo -DProvEoOOBs -DProvOOBs -DDevEo -DDevEoOOBs -DDevOOBs -DProvECDH -DDevECDH -DEoOOBsEoOOBs --prove +``` + diff --git a/examples/esorics23-bluetooth/models/ble.spthy b/examples/esorics23-bluetooth/models/ble.spthy new file mode 100644 index 000000000..a34ba7555 --- /dev/null +++ b/examples/esorics23-bluetooth/models/ble.spthy @@ -0,0 +1,14828 @@ +theory BluetoothLowEnergyPairing +begin + +builtins: diffie-hellman, symmetric-encryption + +functions: + aes_cmac/2, // Interface is aes_cmac(key, data) + f4/4, + g2/4, + f5_mackey/6, + f5_ltk/6, + f6/7, + c1/8, // Function used in Legacy Pairing + s1/3, // Function used in Legacy Pairing + split1/1, + split2/1, + recover/2, + low_entropy/1, + reduce_key/2, + e/3, + extract_e/1 + +equations: + f4(u,v,x,z) = aes_cmac(x,), // f4 according to the spec (Vol 3 Part H, 2.2.6) + g2(u,v,x,y) = aes_cmac(x,), // g2 according to the spec (Vol 3 Part H, 2.2.9, p.994 + //f5_mackey(w,n1,n2,kid,a1,a2) = aes_cmac(aes_cmac(w, 'salt'), <'0',n1, n2, kid, a1, a2>), // f5 according to the spec (Vol 3 Part H, 2.2.7) <- Tamarin doesn't like constants in equations + //f5_ltk(w, n1, n2, kid, a1, a2) = aes_cmac(aes_cmac(w, 'salt'), <'1',n1, n2, kid, a1, a2>), // f5 according to the spec (Vol 3 Part H, 2.2.7) <- Tamarin doesn't like constats in equations + f6(w, n1, n2, r, iocap, a1, a2) = aes_cmac(w, ), // f6 according to the spec (Vol 3 Part H 2.2.8) + recover(split1(x), split2(x)) = x, // Allow the attacker to reconstruct the passkey from two halves + extract_e(e(t,s,n)) = n // Representation of a public key, allows the extraction of the public component + +#ifdef NoMalleableC1 +#else +functions: + get_nonce/8 + +equations: + c1(x, get_nonce(cf, x, b, c, d, e, f, g), b, c, d, e, f, g) = cf, // A representation of Rosa's attack on Legacy Pairing malleable commitment + get_nonce(c1(x, n, b, c, d, e, f, g), x, b, c, d, e, f, g) = n // A representation of Rosa's attack on Legacy Pairing malleable commitment +#endif + +rule CreateDevice: + [] + --[]-> + [!Device(<$id,$cap,'strong'>), // Represents a device + Out(<$id,$cap,'strong'>)] // The device announces itself (sort of) + // 'strong": by default, devices want to have a strong key, i.e. 16 bytes + +/* +This represents the messages leading to Pairing (it is very simplified). +Here, the Initiator receives the responder's address and capabilities, +the Responder receives the Initiator's address and capabilities. +*/ +rule InitPreparePairing: + [ + !Device(<$idI, $capI, $keysizeI>), + In(<$idR, $capR, $keysizeR>) + ] + --[ + InitPreparePairing($idI, $capI, $keysizeI, $idR, $capR, $keysizeR) + ]-> + [ + InitPreparePairing($idI, $capI, $keysizeI, $idR, $capR, $keysizeR) + ] + +rule RespPreparePairing: + [ + !Device(<$idR, $capR, $keysizeR>), + In(<$idI, $capI, $keysizeI>) + ] + --[ + RespPreparePairing($idR, $capR, $keysizeR, $idI, $capI, $keysizeI) + ]-> + [ + RespPreparePairing($idR, $capR, $keysizeR, $idI, $capI, $keysizeI) + ] + +/* +* Select the Pairing method. Here, it is one of : +* - Legacy JustWorks (LegJW) +* - Legacy Passkey Entry (LegPE) +* - Legacy Out of Band (LegOOB) +* - Secure JustWorks (SecJW) +* - Secure Passkey Entry (SecPE) +* - Secure NumericComparison (SecNC) +* - Secure Out of Band (SecOOB) +* +* The model restricts the choice to one Pairing method per role (Initiator or Responder) +* through the restrictions InitOnlyOncePairing / RespOnlyOncePairing +* Therefore, only one session can be ran. While not ideal, this prevents a state explosion : +* Even with a much simpler model (one Pairing method), Tamarin runs out of RAM when studying +* an unbounded number of sessions +* +* Possibility: Change the model to create a bounded number of sessions +*/ + +#ifdef InitLegJW +rule InitPrepareLegJW: + [ + InitPreparePairing($idI, $capI, $keysizeI, $idR, $capR, $keysizeR) + ] + --[ + InitOnlyOncePairing(), + InitWillDoLegJW() + ]-> + [ + InitDoLegJW($idI, $capI, $keysizeI, $idR, $capR, $keysizeR) + ] +#endif + +#ifdef RespLegJW +rule RespPrepareLegJW: + [ + RespPreparePairing($idR, $capR, $keysizeR, $idI, $capI, $keysizeI) + ] + --[ + RespOnlyOncePairing(), + RespWillDoLegJW() + ]-> + [ + RespDoLegJW($idR, $capR, $keysizeR, $idI, $capI, $keysizeI) + ] +#endif + + +#ifdef InitLegPE +rule InitPrepareLegPE: + [ + InitPreparePairing($idI, $capI, $keysizeI, $idR, $capR, $keysizeR) + ] + --[ + InitOnlyOncePairing(), + InitWillDoLegPE() + ]-> + [ + InitChooseLegPEMode($idI, $capI, $keysizeI, $idR, $capR, $keysizeR) + ] +#endif + +#ifdef RespLegPE +rule RespPrepareLegPE: + [ + RespPreparePairing($idR, $capR, $keysizeR, $idI, $capI, $keysizeI) + ] + --[ + RespOnlyOncePairing(), + RespWillDoLegPE() + ]-> + [ + RespChooseLegPEMode($idR, $capR, $keysizeR, $idI, $capI, $keysizeI) + ] +#endif + +#ifdef InitLegOOB +rule InitPrepareLegOOB: + [ + InitPreparePairing($idI, $capI, $keysizeI, $idR, $capR, $keysizeR) + ] + --[ + InitOnlyOncePairing(), + InitWillDoLegOOB() + ]-> + [ + InitDoLegOOB($idI, $capI, $keysizeI, $idR, $capR, $keysizeR) + ] +#endif + +#ifdef RespLegOOB +rule RespPrepareLegOOB: + [ + RespPreparePairing($idR, $capR, $keysizeR, $idI, $capI, $keysizeI) + ] + --[ + RespOnlyOncePairing(), + RespWillDoLegOOB() + ]-> + [ + RespDoLegOOB($idR, $capR, $keysizeR, $idI, $capI, $keysizeI) + ] +#endif + +#ifdef InitSecJW +rule InitPrepareSecJW: + [ + InitPreparePairing($idI, $capI, $keysizeI, $idR, $capR, $keysizeR) + ] + --[ + InitOnlyOncePairing(), + InitWillDoSecJW() + ]-> + [ + InitDoSecJW($idI, $capI, $keysizeI, $idR, $capR, $keysizeR), + InitDoECDH($idI, $capI, $keysizeI, $idR, $capR, $keysizeR) + ] +#endif + +#ifdef RespSecJW +rule RespPrepareSecJW: + [ + RespPreparePairing($idR, $capR, $keysizeR, $idI, $capI, $keysizeI) + ] + --[ + RespOnlyOncePairing(), + RespWillDoSecJW() + ]-> + [ + RespDoSecJW($idR, $capR, $keysizeR, $idI, $capI, $keysizeI), + RespDoECDH($idR, $capR, $keysizeR, $idI, $capI, $keysizeI) + ] +#endif + +#ifdef InitSecPE +rule InitPrepareSecPE: + [ + InitPreparePairing($idI, $capI, $keysizeI, $idR, $capR, $keysizeR) + ] + --[ + InitOnlyOncePairing(), + InitWillDoSecPE() + ]-> + [ + InitDoSecPE($idI, $capI, $keysizeI, $idR, $capR, $keysizeR), + InitChooseSecPEMode($idI, $capI, $keysizeI, $idR, $capR, $keysizeR) + ] +#endif + +#ifdef RespSecPE +rule RespPrepareSecPE: + [ + RespPreparePairing($idR, $capR, $keysizeR, $idI, $capI, $keysizeI) + ] + --[ + RespOnlyOncePairing(), + RespWillDoSecPE() + ]-> + [ + RespDoSecPE($idR, $capR, $keysizeR, $idI, $capI, $keysizeI), + RespChooseSecPEMode($idR, $capR, $keysizeR, $idI, $capI, $keysizeI) + ] +#endif + +#ifdef InitSecNC +rule InitPrepareSecNC: + [ + InitPreparePairing($idI, $capI, $keysizeI, $idR, $capR, $keysizeR) + ] + --[ + InitOnlyOncePairing(), + InitWillDoSecNC() + ]-> + [ + InitDoSecNC($idI, $capI, $keysizeI, $idR, $capR, $keysizeR), + InitDoECDH($idI, $capI, $keysizeI, $idR, $capR, $keysizeR) + ] +#endif + +#ifdef RespSecNC +rule RespPrepareSecNC: + [ + RespPreparePairing($idR, $capR, $keysizeR, $idI, $capI, $keysizeI) + ] + --[ + RespOnlyOncePairing(), + RespWillDoSecNC() + ]-> + [ + RespDoSecNC($idR, $capR, $keysizeR, $idI, $capI, $keysizeI), + RespDoECDH($idR, $capR, $keysizeR, $idI, $capI, $keysizeI) + ] +#endif + +#ifdef InitSecOOB +rule InitPrepareSecOOB: + [ + InitPreparePairing($idI, $capI, $keysizeI, $idR, $capR, $keysizeR) + ] + --[ + InitOnlyOncePairing(), + InitWillDoSecOOB() + ]-> + [ + InitDoSecOOB($idI, $capI, $keysizeI, $idR, $capR, $keysizeR), + InitChooseOOBMode($idI, $capI, $keysizeI, $idR, $capR, $keysizeR) + ] +#endif + +#ifdef RespSecOOB +rule RespPrepareSecOOB: + [ + RespPreparePairing($idR, $capR, $keysizeR, $idI, $capI, $keysizeI) + ] + --[ + RespOnlyOncePairing(), + RespWillDoSecOOB() + ]-> + [ + RespDoSecOOB($idR, $capR, $keysizeR, $idI, $capI, $keysizeI), + RespChooseOOBMode($idR, $capR, $keysizeR, $idI, $capI, $keysizeI) + ] +#endif + +/* + * This dispatches the Initiator and Responder to the chosen variant + * of the PE Pairing method. + * The possibility are: + * - PEi : Passkey Entry, can take inputs from the user + * - PEo : Passkey Entry, device outputs to the user + * - PEio : Passkey Entry, device can take inputs or outputs to the user +*/ + +#ifdef InitLegPEi +rule InitDoLegPEi: + [ + InitChooseLegPEMode($idI, $capI, $keysizeI, $idR, $capR, $keysizeR) + ] + --[ + InitLegPEOnlyOnce(), + InitWillDoLegPEi() + ]-> + [ + InitWaitUserInput(), + InitTriggerUserInteraction(), + InitReadyPE($idI, $capI, $keysizeI, $idR, $capR, $keysizeR) + ] +#endif + +#ifdef InitLegPEo +rule InitDoLegPEo: + [ + InitChooseLegPEMode($idI, $capI, $keysizeI, $idR, $capR, $keysizeR), + Fr(~passkey) + ] + --[ + InitLegPEOnlyOnce(), + InitWillDoLegPEo() + ]-> + [ + InitWaitUserConfirm(~passkey), + InitTriggerUserInteraction(), + InitReadyPE($idI, $capI, $keysizeI, $idR, $capR, $keysizeR) + ] +#endif + +#ifdef InitLegPEio +rule InitDoLegPEio: + [ + InitChooseLegPEMode($idI, $capI, $keysizeI, $idR, $capR, $keysizeR), + Fr(~passkey) + ] + --[ + InitLegPEOnlyOnce(), + InitWillDoLegPEio() + ]-> + [ + InitWaitUserInout(~passkey), + InitTriggerUserInteraction(), + InitReadyPE($idI, $capI, $keysizeI, $idR, $capR, $keysizeR) + ] +#endif + +#ifdef RespLegPEi +rule RespDoLegPEi: + [ + RespChooseLegPEMode($idR, $capR, $keysizeR, $idI, $capI, $keysizeI) + ] + --[ + RespLegPEOnlyOnce(), + RespWillDoLegPEi() + ]-> + [ + RespWaitUserInput(), + RespTriggerUserInteraction(), + RespReadyPE($idR, $capR, $keysizeR, $idI, $capI, $keysizeI) + ] +#endif + +#ifdef RespLegPEo +rule RespDoLegPEo: + [ + RespChooseLegPEMode($idR, $capR, $keysizeR, $idI, $capI, $keysizeI), + Fr(~passkey) + ] + --[ + RespLegPEOnlyOnce(), + RespWillDoLegPEo() + ]-> + [ + RespWaitUserConfirm(~passkey), + RespTriggerUserInteraction(), + RespReadyPE($idR, $capR, $keysizeR, $idI, $capI, $keysizeI) + ] +#endif + +#ifdef RespLegPEio +rule RespDoLegPEio: + [ + RespChooseLegPEMode($idR, $capR, $keysizeR, $idI, $capI, $keysizeI), + Fr(~passkey) + ] + --[ + RespLegPEOnlyOnce(), + RespWillDoLegPEio() + ]-> + [ + RespWaitUserInout(~passkey), + RespTriggerUserInteraction(), + RespReadyPE($idR, $capR, $keysizeR, $idI, $capI, $keysizeI) + ] +#endif + +#ifdef InitSecPEi +rule InitChooseSecPEi: + [ + InitChooseSecPEMode($idI, $capI, $keysizeI, $idR, $capR, $keysizeR) + ] + --[ + InitSecPEOnlyOnce(), + InitWillDoSecPEi() + ]-> + [ + InitWaitUserInput(), + InitDoSecPEi($idI, $capI, $keysizeI, $idR, $capR, $keysizeR), + InitDoECDH($idI, $capI, $keysizeI, $idR, $capR, $keysizeR) + ] +#endif + +#ifdef InitSecPEo +rule InitChooseSecPEo: + [ + InitChooseSecPEMode($idI, $capI, $keysizeI, $idR, $capR, $keysizeR), + Fr(~passkey) + ] + --[ + InitSecPEOnlyOnce(), + InitWillDoSecPEo() + ]-> + [ + InitWaitUserConfirm(~passkey), + InitDoSecPEo($idI, $capI, $keysizeI, $idR, $capR, $keysizeR), + InitDoECDH($idI, $capI, $keysizeI, $idR, $capR, $keysizeR) + ] +#endif + +#ifdef InitSecPEio +rule InitChooseSecPEio: + [ + InitChooseSecPEMode($idI, $capI, $keysizeI, $idR, $capR, $keysizeR), + Fr(~passkey) + ] + --[ + InitSecPEOnlyOnce(), + InitWillDoSecPEio() + ]-> + [ + InitWaitUserInout(~passkey), + InitDoSecPEio($idI, $capI, $keysizeI, $idR, $capR, $keysizeR), + InitDoECDH($idI, $capI, $keysizeI, $idR, $capR, $keysizeR) + ] +#endif + +#ifdef RespSecPEi +rule RespChooseSecPEi: + [ + RespChooseSecPEMode($idR, $capR, $keysizeR, $idI, $capI, $keysizeI) + ] + --[ + RespSecPEOnlyOnce(), + RespWillDoSecPEi() + ]-> + [ + RespWaitUserInput(), + RespDoSecPEi($idR, $capR, $keysizeR, $idI, $capI, $keysizeI), + RespDoECDH($idR, $capR, $keysizeR, $idI, $capI, $keysizeI) + ] +#endif + +#ifdef RespSecPEo +rule RespChooseSecPEo: + [ + RespChooseSecPEMode($idR, $capR, $keysizeR, $idI, $capI, $keysizeI), + Fr(~passkey) + ] + --[ + RespSecPEOnlyOnce(), + RespWillDoSecPEo() + ]-> + [ + RespWaitUserConfirm(~passkey), + RespDoSecPEo($idR, $capR, $keysizeR, $idI, $capI, $keysizeI), + RespDoECDH($idR, $capR, $keysizeR, $idI, $capI, $keysizeI) + ] +#endif + +#ifdef RespSecPEio +rule RespChooseSecPEio: + [ + RespChooseSecPEMode($idR, $capR, $keysizeR, $idI, $capI, $keysizeI), + Fr(~passkey) + ] + --[ + RespSecPEOnlyOnce(), + RespWillDoSecPEio() + ]-> + [ + RespWaitUserInout(~passkey), + RespDoSecPEio($idR, $capR, $keysizeR, $idI, $capI, $keysizeI), + RespDoECDH($idR, $capR, $keysizeR, $idI, $capI, $keysizeI) + ] +#endif + +/* + * This dispatches the Initiator and Responder to the chosen variant + * of the Secure OOB Pairing method. + * The possibility are: + * - OOBi : OOB, device expects input OOB data + * - OOBo : OOB, device outputs OOB data + * - OOBio : OOB, device expects and outputs OOB data +*/ +#ifdef InitSecOOBi +rule InitChooseSecOOBi: + [ + InitChooseOOBMode($idI, $capI, $keysizeI, $idR, $capR, $keysizeR) + ] + --[ + InitSecOOBOnlyOnce(), + InitWillDoSecOOBi() + ]-> + [ + InitDoSecOOBi($idI, $capI, $keysizeI, $idR, $capR, $keysizeR), + InitDoECDH($idI, $capI, $keysizeI, $idR, $capR, $keysizeR) + ] +#endif + +#ifdef InitSecOOBo +rule InitChooseSecOOBo: + [ + InitChooseOOBMode($idI, $capI, $keysizeI, $idR, $capR, $keysizeR) + ] + --[ + InitSecOOBOnlyOnce(), + InitWillDoSecOOBo() + ]-> + [ + InitDoSecOOBo($idI, $capI, $keysizeI, $idR, $capR, $keysizeR), + InitDoECDH($idI, $capI, $keysizeI, $idR, $capR, $keysizeR) + ] +#endif + +#ifdef InitSecOOBio +rule InitChooseSecOOBio: + [ + InitChooseOOBMode($idI, $capI, $keysizeI, $idR, $capR, $keysizeR) + ] + --[ + InitSecOOBOnlyOnce(), + InitWillDoSecOOBio() + ]-> + [ + InitDoSecOOBio($idI, $capI, $keysizeI, $idR, $capR, $keysizeR), + InitDoECDH($idI, $capI, $keysizeI, $idR, $capR, $keysizeR) + ] +#endif + +#ifdef RespSecOOBi +rule RespChooseSecOOBi: + [ + RespChooseOOBMode($idR, $capR, $keysizeR, $idI, $capI, $keysizeI) + ] + --[ + RespSecOOBOnlyOnce(), + RespWillDoSecOOBi() + ]-> + [ + RespDoSecOOBi($idR, $capR, $keysizeR, $idI, $capI, $keysizeI), + RespDoECDH($idR, $capR, $keysizeR, $idI, $capI, $keysizeI) + ] +#endif + +#ifdef RespSecOOBo +rule RespChooseSecOOBo: + [ + RespChooseOOBMode($idR, $capR, $keysizeR, $idI, $capI, $keysizeI) + ] + --[ + RespSecOOBOnlyOnce(), + RespWillDoSecOOBo() + ]-> + [ + RespDoSecOOBo($idR, $capR, $keysizeR, $idI, $capI, $keysizeI), + RespDoECDH($idR, $capR, $keysizeR, $idI, $capI, $keysizeI) + ] +#endif + +#ifdef RespSecOOBio +rule RespChooseSecOOBio: + [ + RespChooseOOBMode($idR, $capR, $keysizeR, $idI, $capI, $keysizeI) + ] + --[ + RespSecOOBOnlyOnce(), + RespWillDoSecOOBio() + ]-> + [ + RespDoSecOOBio($idR, $capR, $keysizeR, $idI, $capI, $keysizeI), + RespDoECDH($idR, $capR, $keysizeR, $idI, $capI, $keysizeI) + ] +#endif + +/* Legacy Pairing +*/ +#ifdef InitLegJW +rule InitStartLegJW: + [ + InitDoLegJW($idI, $capI, $keysizeI, $idR, $capR, $keysizeR) + ] + --[ + InitStartLegJW($idI, $capI, $keysizeI, $idR, $capR, $keysizeR) + ]-> + [ + InitDoLegPairing($idI, $capI, $keysizeI, $idR, $capR, $keysizeR, 'zero') // In JW, the value 'TK' is a null bitstring + ] +#endif + +#ifdef RespLegJW +rule RespStartLegJW: + [ + RespDoLegJW($idR, $capR, $keysizeR, $idI, $capI, $keysizeI) + ] + --[ + RespStartLegJW($idR, $capR, $keysizeR, $idI, $capI, $keysizeI) + ]-> + [ + RespDoLegPairing($idR, $capR, $keysizeR, $idI, $capI, $keysizeI, 'zero') // In JW, the value 'TK' is a null bitstring + ] +#endif + +#ifdef InitLegPE +rule InitStartLegPE: + [ + InitReadyPE($idI, $capI, $keysizeI, $idR, $capR, $keysizeR), + InitUserProceed(passkey) + ] + --[ + InitStartLegPE($idI, $capI, $keysizeI, $idR, $capR, $keysizeR, passkey), + LowEntropy(passkey) + ]-> + [ + InitDoLegPairing($idI, $capI, $keysizeI, $idR, $capR, $keysizeR, low_entropy(passkey)), // In PE, the value 'TK' is the passkey + LowEntropy(passkey) + ] +#endif + +#ifdef RespLegPE +rule RespStartLegPE: + [ + RespReadyPE($idR, $capR, $keysizeR, $idI, $capI, $keysizeI), + RespUserProceed(passkey) + ] + --[ + RespStartLegPE($idR, $capR, $keysizeR, $idI, $capI, $keysizeI, passkey), + LowEntropy(passkey) + ]-> + [ + RespDoLegPairing($idR, $capR, $keysizeR, $idI, $capI, $keysizeI, low_entropy(passkey)), // In PE, the value 'TK' is the passkey + LowEntropy(passkey) + ] +#endif + +#ifdef InitLegOOB +rule InitStartLegOOB: + [ + InitDoLegOOB($idI, $capI, $keysizeI, $idR, $capR, $keysizeR), + Fr(~oob) + ] + --[ + InitStartLegOOB($idI, $capI, $keysizeI, $idR, $capR, $keysizeR, ~oob), + LegOOBChannel(~oob) + ]-> + [ + InitDoLegPairing($idI, $capI, $keysizeI, $idR, $capR, $keysizeR, ~oob), // In OOB, the value 'TK' is the OOB data + LegOOBChannel(~oob) + ] +#endif + +#ifdef RespLegOOB +rule RespStartLegOOB: + [ + RespDoLegOOB($idR, $capR, $keysizeR, $idI, $capI, $keysizeI), + LegOOBChannel(~oob) // Assume the Initiator sent the OOB data to the responder somehow + ] + --[ + RespStartLegOOB($idR, $capR, $keysizeR, $idI, $capI, $keysizeI, ~oob) + ]-> + [ + RespDoLegPairing($idR, $capR, $keysizeR, $idI, $capI, $keysizeI, ~oob) // In OOB, the value 'TK' is the OOB data + ] +#endif + + +/* Start of Legacy Pairing protocol */ + +#ifdef InitLeg +rule InitPairingConfirm: + let Ci = c1(TK, ~ni, $capI, $capR, $idI, $idR, $keysizeI, $keysizeR) in + [ + InitDoLegPairing($idI, $capI, $keysizeI, $idR, $capR, $keysizeR, TK), + Fr(~ni) + ] + --[ + InitSentConfirm($idI, $capI, $keysizeI, $idR, $capR, $keysizeR, TK, ~ni, Ci) + ]-> + [ + InitSentConfirm($idI, $capI, $keysizeI, $idR, $capR, $keysizeR, TK, ~ni, Ci), + Out(Ci) + ] + +rule InitPairingRandom: + [ + InitSentConfirm($idI, $capI, $keysizeI, $idR, $capR, $keysizeR, TK, ~ni, Ci), + In(Cr) + ] + --[ + InitSentRandom($idI, $capI, $keysizeI, $idR, $capR, $keysizeR, TK, ~ni, Ci, Cr) + ]-> + [ + InitSentRandom($idI, $capI, $keysizeI, $idR, $capR, $keysizeR, TK, ~ni, Ci, Cr), + Out(~ni) + ] + +rule InitEndPairing: + let computed_Cr = c1(TK, nr, $capI, $capR, $idI, $idR, $keysizeI, $keysizeR) in + [ + InitSentRandom($idI, $capI, $keysizeI, $idR, $capR, $keysizeR, TK, ~ni, Ci, computed_Cr), // Verify equality of Cr, computed_Cr + In(nr) + ] + --[ + InitDonePairing($idI, $capI, $keysizeI, $idR, $capR, $keysizeR, TK, ~ni, nr, Ci, computed_Cr) + ]-> + [ + InitDonePairing($idI, $capI, $keysizeI, $idR, $capR, $keysizeR, TK, ~ni, nr, Ci, computed_Cr) + ] + +rule InitLegChooseKeysize: + [ + InitDonePairing($idI, $capI, $keysizeI, $idR, $capR, $keysizeR, TK, ~ni, nr, Ci, Cr) + ] + --[ + ]-> + [ + InitChooseKeysize($keysizeI, $keysizeR), + InitExpectKeysize($idI, $capI, $keysizeI, $idR, $capR, $keysizeR, TK, ~ni, nr, Ci, Cr) + ] + +rule InitDeriveSTK: + let stk = reduce_key(s1(TK, ~ni, nr), chosenKeysize) in + [ + InitExpectKeysize($idI, $capI, $keysizeI, $idR, $capR, $keysizeR, TK, ~ni, nr, Ci, Cr), + InitSelectKeysize(chosenKeysize) + ] + --[ + InitiatorFinishedLegPairing($idI, $capI, $keysizeI, $idR, $capR, $keysizeR, TK, ~ni, nr, stk) + ]-> + [ + InitiatorFinishedLegPairing($idI, $capI, $keysizeI, $idR, $capR, $keysizeR, TK, ~ni, nr, stk), + ReduceKeysize(chosenKeysize, stk), + Out(senc('init', stk)) + ] +#endif + + +#ifdef RespLeg +rule RespPairingConfirm: + let Cr = c1(TK, ~nr, $capI, $capR, $idI, $idR, $keysizeI, $keysizeR) in + [ + RespDoLegPairing($idR, $capR, $keysizeR, $idI, $capI, $keysizeI, TK), + Fr(~nr), + In(Ci) + ] + --[ + RespSentConfirm($idR, $capR, $keysizeR, $idI, $capI, $keysizeI, TK, ~nr, Cr, Ci) + ]-> + [ + RespSentConfirm($idR, $capR, $keysizeR, $idI, $capI, $keysizeI, TK, ~nr, Cr, Ci), + Out(Cr) + ] + +rule RespPairingRandom: + let computed_Ci = c1(TK, ni, $capI, $capR, $idI, $idR, $keysizeI, $keysizeR) in + [ + RespSentConfirm($idR, $capR, $keysizeR, $idI, $capI, $keysizeI, TK, ~nr, Cr, computed_Ci), // verify the matching between Ci and computed_Ci + In(ni) + ] + --[ + RespSentRandom($idR, $capR, $keysizeR, $idI, $capI, $keysizeI, TK, ~nr, ni, Cr, computed_Ci) + ]-> + [ + RespSentRandom($idR, $capR, $keysizeR, $idI, $capI, $keysizeI, TK, ~nr, ni, Cr, computed_Ci), + Out(~nr) + ] + +rule RespLegChooseKeysize: + [ + RespSentRandom($idR, $capR, $keysizeR, $idI, $capI, $keysizeI, TK, ~nr, ni, Cr, Ci) + ] + --> + [ + RespChooseKeysize($keysizeR, $keysizeI), + RespExpectKeysize($idR, $capR, $keysizeR, $idI, $capI, $keysizeI, TK, ~ni, nr, Ci, Cr) + ] + +rule RespDeriveSTK: + let stk = reduce_key(s1(TK, ni, ~nr), chosenKeysize) in + [ + RespExpectKeysize($idR, $capR, $keysizeR, $idI, $capI, $keysizeI, TK, ~ni, nr, Ci, Cr), + RespSelectKeysize(chosenKeysize) + ] + --[ + ResponderFinishedLegPairing($idR, $capR, $keysizeR, $idI, $capI, $keysizeI, TK, ~nr, ni, stk) + ]-> + [ + ResponderFinishedLegPairing($idR, $capR, $keysizeR, $idI, $capI, $keysizeI, TK, ~nr, ni, stk), + ReduceKeysize(chosenKeysize, stk), + Out(senc('resp', stk)) + ] +#endif + +/* +* Public key exchange, common for all Secure Pairing protocols +* The Initiator sends its public key, and receives the one from +* the Responder: +* I -> R: pkI = is * G +* R -> I: pkR = rs * G +* dh = is * rs * G = rs * pkI = is * pkR +*/ + +#ifdef InitSec +rule InitSendPublicKey: + let pkI = in + [ + InitDoECDH($idI, $capI, $keysizeI, $idR, $capR, $keysizeR), + Fr(~is) + ] + --[ + InitBeginECDH($idI, $capI, $keysizeI, $idR, $capR, $keysizeR, ~is, pkI) + ]-> + [ + InitBeginECDH($idI, $capI, $keysizeI, $idR, $capR, $keysizeR, ~is, pkI), + Out(pkI) + ] + +rule InitRecvPublicKey: + [ + InitBeginECDH($idI, $capI, $keysizeI, $idR, $capR, $keysizeR, ~is, pkI), + In(pkR) + ] + --[ + InitComputeECDH( $idI, $capI, $keysizeI, $idR, $capR, $keysizeR, pkI, pkR, ~is) + ]-> + [ + InitComputeECDH( $idI, $capI, $keysizeI, $idR, $capR, $keysizeR, pkI, pkR, ~is) + ] + +rule InitDeriveNormalDHKey: + let + pkRx = e('C', DH_neutral, n) + dhkey = e('C', r, n^~is) // In Bluetooth, only X is taken + in + [ + InitComputeECDH( $idI, $capI, $keysizeI, $idR, $capR, $keysizeR, , , ~is), + In(r) + ] + --[ + ValidPt(pkRx,pkRy), Raised('C', DH_neutral, r, ~is), + InitEndECDH($idI, $capI, $keysizeI, $idR, $capR, $keysizeR, pkIx, pkRx, dhkey) // Once DHKey is computed, only x-coordinate is used in the rest of the protocol + ]-> + [ + InitEndECDH($idI, $capI, $keysizeI, $idR, $capR, $keysizeR, pkIx, pkRx, dhkey) // Once DHKey is computed, only x-coordinate is used in the rest of the protocol + ] +#endif + +#ifdef InitECDHUnpatched +rule InitDeriveInvalidDHKey: + let + pkRx = e(otx,osx,orx) + pkRy = e(oty,osy,ory) + dhkey = e(tx, rx, nx^~is) // In Bluetooth, only X is taken + in + [ + InitComputeECDH( $idI, $capI, $keysizeI, $idR, $capR, $keysizeR, , , ~is), + In() + ] + --[ + InvalidPt(pkRx,pkRy), Raised(, , , ~is), + InitEndECDH($idI, $capI, $keysizeI, $idR, $capR, $keysizeR, pkIx, pkRx, dhkey) // Once DHKey is computed, only x-coordinate is used in the rest of the protocol + ]-> + [ + InitEndECDH($idI, $capI, $keysizeI, $idR, $capR, $keysizeR, pkIx, pkRx, dhkey) // Once DHKey is computed, only x-coordinate is used in the rest of the protocol + ] +#endif + +#ifdef RespSec +rule RespSendPublicKey: + let + pkR = + in + [ + RespDoECDH($idR, $capR, $keysizeR, $idI, $capI, $keysizeI), + Fr(~rs), + In(pkI) + ] + --[ + RespComputeECDH($idR, $capR, $keysizeR, $idI, $capI, $keysizeI, pkR, pkI, ~rs) + ]-> + [ + RespComputeECDH($idR, $capR, $keysizeR, $idI, $capI, $keysizeI, pkR, pkI, ~rs), + Out(pkR) + ] + +rule RespDeriveNormalDHKey: + let + pkIx = e('C', DH_neutral, n) + dhkey = e('C', r, n^~rs) // In Bluetooth, only X is taken + in + [ + RespComputeECDH( $idR, $capR, $keysizeR, $idI, $capI, $keysizeI, , , ~rs), + In(r) + ] + --[ + ValidPt(pkIx,pkIy), Raised('C', DH_neutral, r, ~rs), + RespEndECDH($idR, $capR, $keysizeR, $idI, $capI, $keysizeI, pkRx, pkIx, dhkey) // Once DHKey is computed, only x-coordinate is used in the rest of the protocol + ]-> + [ + RespEndECDH($idR, $capR, $keysizeR, $idI, $capI, $keysizeI, pkRx, pkIx, dhkey) // Once DHKey is computed, only x-coordinate is used in the rest of the protocol + ] +#endif + +#ifdef RespECDHUnpatched +rule RespDeriveInvalidDHKey: + let + pkIx = e(otx,osx,orx) + pkIy = e(oty,osy,ory) + dhkey = e(tx, rx, nx^~rs) // In Bluetooth, only X is taken + in + [ + RespComputeECDH( $idR, $capR, $keysizeR, $idI, $capI, $keysizeI, , , ~rs), + In() + ] + --[ + InvalidPt(pkIx,pkIy), Raised(, , , ~rs), + RespEndECDH($idR, $capR, $keysizeR, $idI, $capI, $keysizeI, pkRx, pkIx, dhkey) // Once DHKey is computed, only x-coordinate is used in the rest of the protocol + ]-> + [ + RespEndECDH($idR, $capR, $keysizeR, $idI, $capI, $keysizeI, pkRx, pkIx, dhkey) // Once DHKey is computed, only x-coordinate is used in the rest of the protocol + ] +#endif + +/* +* For the Secure Passkey Entry which requires it, we start the user interaction here. +* That is, we trigger the role to have the Passkey Entry user interaction +*/ + +#ifdef InitSecPE +rule InitTriggerSecPE: + [ + InitEndECDH($idI, $capI, $keysizeI, $idR, $capR, $keysizeR, pkI, pkR, dh), // The Initiator has ended the ECDH exchange + InitDoSecPE($idI, $capI, $keysizeI, $idR, $capR, $keysizeR) // The Initiator is doing a PE protocol + ] + --[]-> + [ + InitTriggerUserInteraction(), + InitReadySecPE($idI, $capI, $keysizeI, $idR, $capR, $keysizeR, pkI, pkR, dh) + ] +#endif + +#ifdef RespSecPE +rule RespTriggerSecPE: + [ + RespEndECDH($idR, $capR, $keysizeR, $idI, $capI, $keysizeI, pkR, pkI, dh), // The Initiator has ended the ECDH exchange + RespDoSecPE($idR, $capR, $keysizeR, $idI, $capI, $keysizeI) // The Initiator is doing a PE protocol + ] + --[]-> + [ + RespTriggerUserInteraction(), + RespReadySecPE($idR, $capR, $keysizeR, $idI, $capI, $keysizeI, pkR, pkI, dh) + ] +#endif + +/* +* This implements the Secure JustWorks method +* Devices using this method do not require a user interaction. +* The protocol is the following : +* R -> I: f4(pkR, pkI, nr, '0') +* I -> R: ni +* R -> I: nr +*/ + +#ifdef RespSecJW +rule RespSecJWSendConfirm: + let Cr = f4(pkR, pkI, ~nr, '0') in + [ + RespEndECDH($idR, $capR, $keysizeR, $idI, $capI, $keysizeI, pkR, pkI, dh), + Fr(~nr) + ] + --[ + RespSecJWSendConfirm($idR, $capR, $keysizeR, $idI, $capI, $keysizeI, pkR, pkI, dh, ~nr, Cr) + ]-> + [ + RespSecJWSendConfirm($idR, $capR, $keysizeR, $idI, $capI, $keysizeI, pkR, pkI, dh, ~nr, Cr), + Out(Cr) + ] + +rule RespSecJWSendRandom: + [ + RespSecJWSendConfirm($idR, $capR, $keysizeR, $idI, $capI, $keysizeI, pkR, pkI, dh, ~nr, Cr), + In(ni) + ] + --[ + RespSecJWSendRandom($idR, $capR, $keysizeR, $idI, $capI, $keysizeI, pkR, pkI, dh, ~nr, ni), + RespSecJWDone($idR, $capR, $keysizeR, $idI, $capI, $keysizeI, pkR, pkI, dh, ~nr, ni), + RespEndedStep2($idR, $capR, $keysizeR, $idI, $capI, $keysizeI, pkR, pkI, dh, ~nr, ni, '0', '0') + ]-> + [ + RespSecJWSendRandom($idR, $capR, $keysizeR, $idI, $capI, $keysizeI, pkR, pkI, dh, ~nr, ni), + RespEndedStep2($idR, $capR, $keysizeR, $idI, $capI, $keysizeI, pkR, pkI, dh, ~nr, ni, '0', '0'), // Responder ended step2, ra and rb = 0 in JW mode + Out(~nr) + ] +#endif + +#ifdef InitSecJW +rule InitSecJWSendRandom: + [ + InitEndECDH($idI, $capI, $keysizeI, $idR, $capR, $keysizeR, pkI, pkR, dh), + Fr(~ni), + In(Cr) + ] + --[ + InitSecJWSendRandom($idI, $capI, $keysizeI, $idR, $capR, $keysizeR, pkI, pkR, dh, ~ni, Cr) + ]-> + [ + InitSecJWSendRandom($idI, $capI, $keysizeI, $idR, $capR, $keysizeR, pkI, pkR, dh, ~ni, Cr), + Out(~ni) + ] + + +rule InitSecJWRecvRandom: + let computed_Cr = f4(pkR, pkI, nr, '0') in + [ + InitSecJWSendRandom($idI, $capI, $keysizeI, $idR, $capR, $keysizeR, pkI, pkR, dh, ~ni, computed_Cr), + In(nr) + ] + --[ + InitSecJWRecvRandom($idI, $capI, $keysizeI, $idR, $capR, $keysizeR, pkI, pkR, dh, ~ni, nr), + InitSecJWDone($idI, $capI, $keysizeI, $idR, $capR, $keysizeR, pkI, pkR, dh, ~ni, nr), + InitEndedStep2($idI, $capI, $keysizeI, $idR, $capR, $keysizeR, pkI, pkR, dh, ~ni, nr, '0', '0') + ]-> + [ + InitSecJWRecvRandom($idI, $capI, $keysizeI, $idR, $capR, $keysizeR, pkI, pkR, dh, ~ni, nr), + InitEndedStep2($idI, $capI, $keysizeI, $idR, $capR, $keysizeR, pkI, pkR, dh, ~ni, nr, '0', '0') // Responder ended step2, ra and rb = 0 in JW mode + ] +#endif + +/* +* Implement the Secure Passkey Entry method +* The protocol is based on commitment rounds, using the passkey. +* The passkey is always 20 bits long (by the specification) +* notation b0(passkey) represents the first bit of the passkey, b1(passkey) is the second bit, ... +* Round 0: +* I -> R: f4(pkI, pkR, ni0, b0(passkey) +* R -> I: f4(pkR, pkI, nr0, b0(passkey) +* I -> R: ni0 +* R -> I: nr0 +* Round 1: +* I -> R: f4(pkI, pkR, ni1, b1(passkey) +* R -> I: f4(pkR, pkI, nr1, b1(passkey) +* I -> R: ni1 +* R -> I: nr1 +* ... +* +* Nonces are drawn at random for each round. +* In this model, we use a reduced version of the Passkey Entry protocol, which consists +* of only two rounds. +* The passkey is split in two using functions split1/1 and split2/1 +*/ + +#ifdef InitSecPE +rule InitSecPESendConfirm1: + let Ci = f4(pkI, pkR, ~ni, split1(passkey)) in + [ + InitReadySecPE($idI, $capI, $keysizeI, $idR, $capR, $keysizeR, pkI, pkR, dh), // Initiator is ready to perform PE protocol + InitUserProceed(passkey), // The passkey is provided to the Initiator + Fr(~ni) + ] + --[]-> + [ + InitSecPESendConfirm1($idI, $capI, $keysizeI, $idR, $capR, $keysizeR, pkI, pkR, dh, passkey, ~ni, Ci), + LowEntropyf4(pkI, pkR, ~ni, split1(passkey)), + Out(Ci) + ] + +rule InitSecPESendRandom1: + [ + InitSecPESendConfirm1($idI, $capI, $keysizeI, $idR, $capR, $keysizeR, pkI, pkR, dh, passkey, ~ni, Ci), + In(Cr) + ] + --[]-> + [ + InitSecPESendRandom1($idI, $capI, $keysizeI, $idR, $capR, $keysizeR, pkI, pkR, dh, passkey, ~ni, Ci, Cr), + Out(~ni) + ] + +rule InitSecPERecvRandom1: + let computed_Cr = f4(pkR, pkI, nr, split1(passkey)) in + [ + InitSecPESendRandom1($idI, $capI, $keysizeI, $idR, $capR, $keysizeR, pkI, pkR, dh, passkey, ~ni, Ci, computed_Cr), + In(nr) + ] + --[ + ]-> + [ + InitSecPEEndPart1($idI, $capI, $keysizeI, $idR, $capR, $keysizeR, pkI, pkR, dh, passkey) + ] + +rule InitSecPESendConfirm2: + let Ci = f4(pkI, pkR, ~ni, split2(passkey)) in + [ + InitSecPEEndPart1($idI, $capI, $keysizeI, $idR, $capR, $keysizeR, pkI, pkR, dh, passkey), + Fr(~ni) + ] + --[]-> + [ + InitSecPESendConfirm2($idI, $capI, $keysizeI, $idR, $capR, $keysizeR, pkI, pkR, dh, passkey, ~ni, Ci), + LowEntropyf4(pkI, pkR, ~ni, split2(passkey)), + Out(Ci) + ] + +rule InitSecPESendRandom2: + [ + InitSecPESendConfirm2($idI, $capI, $keysizeI, $idR, $capR, $keysizeR, pkI, pkR, dh, passkey, ~ni, Ci), + In(Cr) + ] + --[]-> + [ + InitSecPESendRandom2($idI, $capI, $keysizeI, $idR, $capR, $keysizeR, pkI, pkR, dh, passkey, ~ni, Ci, Cr), + Out(~ni) + ] + +rule InitSecPERecvRandom2: + let computed_Cr = f4(pkR, pkI, nr, split2(passkey)) in + [ + InitSecPESendRandom2($idI, $capI, $keysizeI, $idR, $capR, $keysizeR, pkI, pkR, dh, passkey, ~ni, Ci, computed_Cr), + In(nr) + ] + --[ + InitSecPEDone($idI, $capI, $keysizeI, $idR, $capR, $keysizeR, pkI, pkR, dh, ~ni, nr, passkey), + InitEndedStep2($idI, $capI, $keysizeI, $idR, $capR, $keysizeR, pkI, pkR, dh, ~ni, nr, passkey, passkey) + ]-> + [ + InitEndedStep2($idI, $capI, $keysizeI, $idR, $capR, $keysizeR, pkI, pkR, dh, ~ni, nr, passkey, passkey) + ] +#endif + +#ifdef RespSecPE +rule RespSecPESendConfirm1: + let Cr = f4(pkR, pkI, ~nr, split1(passkey)) in + [ + RespReadySecPE($idR, $capR, $keysizeR, $idI, $capI, $keysizeI, pkR, pkI, dh), // Initiator is ready to perform PE protocol + RespUserProceed(passkey), // The passkey is provided to the Initiator + Fr(~nr), + In(Ci) + ] + --[]-> + [ + RespSecPESendConfirm1($idR, $capR, $keysizeR, $idI, $capI, $keysizeI, pkR, pkI, dh, passkey, ~nr, Cr, Ci), + LowEntropyf4(pkR, pkI, ~nr, split1(passkey)), + Out(Cr) + ] + +rule RespSecPESendRandom1: + let computed_Ci = f4(pkI, pkR, ni, split1(passkey)) in + [ + RespSecPESendConfirm1($idR, $capR, $keysizeR, $idI, $capI, $keysizeI, pkR, pkI, dh, passkey, ~nr, Cr, computed_Ci), + In(ni) + ] + --[ + ]-> + [ + RespSecPEEndPart1($idR, $capR, $keysizeR, $idI, $capI, $keysizeI, pkR, pkI, dh, passkey), + Out(~nr) + ] + +rule RespSecPESendConfirm2: + let Cr = f4(pkR, pkI, ~nr, split2(passkey)) in + [ + RespSecPEEndPart1($idR, $capR, $keysizeR, $idI, $capI, $keysizeI, pkR, pkI, dh, passkey), // Initiator is ready to perform PE protocol + Fr(~nr), + In(Ci) + ] + --[]-> + [ + RespSecPESendConfirm2($idR, $capR, $keysizeR, $idI, $capI, $keysizeI, pkR, pkI, dh, passkey, ~nr, Cr, Ci), + LowEntropyf4(pkR, pkI, ~nr, split2(passkey)), + Out(Cr) + ] + +rule RespSecPESendRandom2: + let computed_Ci = f4(pkI, pkR, ni, split2(passkey)) in + [ + RespSecPESendConfirm2($idR, $capR, $keysizeR, $idI, $capI, $keysizeI, pkR, pkI, dh, passkey, ~nr, Cr, computed_Ci), + In(ni) + ] + --[ + RespSecPEDone($idR, $capR, $keysizeR, $idI, $capI, $keysizeI, pkR, pkI, dh, ~nr, ni, passkey), + RespEndedStep2($idR, $capR, $keysizeR, $idI, $capI, $keysizeI, pkR, pkI, dh, ~nr, ni, passkey, passkey) + ]-> + [ + RespEndedStep2($idR, $capR, $keysizeR, $idI, $capI, $keysizeI, pkR, pkI, dh, ~nr, ni, passkey, passkey), + Out(~nr) + ] +#endif + +#ifdef NoLowEntropySecure // If flag NoLowEntropySecure is used, this rule won't be written +#else +rule Oracle_f4: + let verif_val = f4(pk1, pk2, n, s) in + [ + LowEntropyf4(pk1, pk2, n, s), + In(pk1), + In(pk2), + In(n), + In(verif_val) + ] + --[ + AttackerRecoveredPasskey(s) + ]-> + [ + Out(s) + ] +#endif + +#ifdef NoLowEntropyLegacy // If flag NoLowEntropyLegacy, this rule won't be written +#else +rule Oracle_passkey: + let C = c1(low_entropy(passkey), N, capI, capR, idI, idR, keysizeI, keysizeR) in + [ + LowEntropy(passkey), + In(C), + In(N), + In(capI), + In(capR), + In(idI), + In(idR), + In(keysizeI), + In(keysizeR) + ] + --[ + AttackerRecoveredPasskey(passkey) + ]-> + [ + Out(passkey) + ] +#endif + +#ifdef LowEntropyKeysize// If flag LowEntropyKeysize, this rule will be written +rule Oracle_key: + [ + ReduceKeysize('weak', key) + ] + --[ + AttackerRecoveredKey(key) + ]-> + [ + Out(key) + ] +#endif + +/* +* Numeric Comparison method +* This protocol is similar to the Secure JustWorks protocol, but the user is +* then presented a code to verify that the Pairing was done correctly +* R -> I: f4(pkR, pkI, nr, '0') +* I -> R: ni +* R -> I: nr +*/ + + +#ifdef RespSecNC +rule RespSecNCSendConfirm: + let Cr = f4(pkR, pkI, ~nr, '0') in + [ + RespEndECDH($idR, $capR, $keysizeR, $idI, $capI, $keysizeI, pkR, pkI, dh), + Fr(~nr) + ] + --[ + RespSecNCSendConfirm($idR, $capR, $keysizeR, $idI, $capI, $keysizeI, pkR, pkI, dh, ~nr, Cr) + ]-> + [ + RespSecNCSendConfirm($idR, $capR, $keysizeR, $idI, $capI, $keysizeI, pkR, pkI, dh, ~nr, Cr), + Out(Cr) + ] + +rule RespSecNCSendRandom: + let code = g2(pkI, pkR, ni, ~nr) in + [ + RespSecNCSendConfirm($idR, $capR, $keysizeR, $idI, $capI, $keysizeI, pkR, pkI, dh, ~nr, Cr), + In(ni) + ] + --[ + RespSecNCSendRandom($idR, $capR, $keysizeR, $idI, $capI, $keysizeI, pkR, pkI, dh, ~nr, ni) + ]-> + [ + RespNCWaitConfirm($idR, $capR, $keysizeR, $idI, $capI, $keysizeI, pkR, pkI, dh, ~nr, ni), + RespWaitUserConfirm(code), + RespTriggerUserInteraction(), + Out(~nr) + ] + +rule RespSecNCDone: + [ + RespNCWaitConfirm($idR, $capR, $keysizeR, $idI, $capI, $keysizeI, pkR, pkI, dh, ~nr, ni), + RespUserProceed(code) + ] + --[ + RespSecNCDone($idR, $capR, $keysizeR, $idI, $capI, $keysizeI, pkR, pkI, dh, ~nr, ni), + RespEndedStep2($idR, $capR, $keysizeR, $idI, $capI, $keysizeI, pkR, pkI, dh, ~nr, ni, '0', '0') + ]-> + [ + RespEndedStep2($idR, $capR, $keysizeR, $idI, $capI, $keysizeI, pkR, pkI, dh, ~nr, ni, '0', '0') // Initiator ended step2, ra and rb = 0 in JW mode + ] +#endif + + +#ifdef InitSecNC +rule InitSecNCSendRandom: + [ + InitEndECDH($idI, $capI, $keysizeI, $idR, $capR, $keysizeR, pkI, pkR, dh), + Fr(~ni), + In(Cr) + ] + --[ + InitSecNCSendRandom($idI, $capI, $keysizeI, $idR, $capR, $keysizeR, pkI, pkR, dh, ~ni, Cr) + ]-> + [ + InitSecNCSendRandom($idI, $capI, $keysizeI, $idR, $capR, $keysizeR, pkI, pkR, dh, ~ni, Cr), + Out(~ni) + ] + +rule InitSecNCRecvRandom: + let + computed_Cr = f4(pkR, pkI, nr, '0') + code = g2(pkI, pkR, ~ni, nr) + in + [ + InitSecNCSendRandom($idI, $capI, $keysizeI, $idR, $capR, $keysizeR, pkI, pkR, dh, ~ni, computed_Cr), + In(nr) + ] + --[ + InitSecNCRecvRandom($idI, $capI, $keysizeI, $idR, $capR, $keysizeR, pkI, pkR, dh, ~ni, nr) + ]-> + [ + InitNCWaitConfirm($idI, $capI, $keysizeI, $idR, $capR, $keysizeR, pkI, pkR, dh, ~ni, nr), + InitWaitUserConfirm(code), + InitTriggerUserInteraction() + ] + +rule InitSecNCDone: + [ + InitNCWaitConfirm($idI, $capI, $keysizeI, $idR, $capR, $keysizeR, pkI, pkR, dh, ~ni, nr), + InitUserProceed(code) + ] + --[ + InitSecNCDone($idI, $capI, $keysizeI, $idR, $capR, $keysizeR, pkI, pkR, dh, ~ni, nr), + InitEndedStep2($idI, $capI, $keysizeI, $idR, $capR, $keysizeR, pkI, pkR, dh, ~ni, nr, '0', '0') + ]-> + [ + InitEndedStep2($idI, $capI, $keysizeI, $idR, $capR, $keysizeR, pkI, pkR, dh, ~ni, nr, '0', '0') // Initiator ended step2, ra and rb = 0 in JW mode + ] +#endif + +/* +* Out of Band Pairing method. +* The exact exchange will depend on the choice done for the OOB method. +* If OOBi is used, the device expects an input message +* If OOBo is used, the device sends a message +* If OOBio is used, the device sends a message and expects an input message +* +* Once the OOB exchange is done, both device exchange a nonce, starting from the Initiator: +* I -> R: ni +* R -> I: nr +*/ + +#ifdef InitSecOOBi +rule InitDoSecOOBi: + [ + InitEndECDH($idI, $capI, $keysizeI, $idR, $capR, $keysizeR, pkI, pkR, dh), + InitDoSecOOBi($idI, $capI, $keysizeI, $idR, $capR, $keysizeR) + ] + --[ + ]-> + [ + InitWaitOOBInput(), + InitReadySecOOB($idI, $capI, $keysizeI, $idR, $capR, $keysizeR, pkI, pkR, dh) + ] +#endif + +#ifdef InitSecOOBo +rule InitDoSecOOBo: + [ + InitEndECDH($idI, $capI, $keysizeI, $idR, $capR, $keysizeR, pkI, pkR, dh), + InitDoSecOOBo($idI, $capI, $keysizeI, $idR, $capR, $keysizeR) + ] + --[ + ]-> + [ + InitWaitOOBOutput(), + InitReadySecOOB($idI, $capI, $keysizeI, $idR, $capR, $keysizeR, pkI, pkR, dh) + ] +#endif + +#ifdef InitSecOOBio +rule InitDoSecOOBio: + [ + InitEndECDH($idI, $capI, $keysizeI, $idR, $capR, $keysizeR, pkI, pkR, dh), + InitDoSecOOBio($idI, $capI, $keysizeI, $idR, $capR, $keysizeR) + ] + --[ + ]-> + [ + InitWaitOOBInout(), + InitReadySecOOB($idI, $capI, $keysizeI, $idR, $capR, $keysizeR, pkI, pkR, dh) + ] +#endif + +#ifdef RespSecOOBi +rule RespDoSecOOBi: + [ + RespEndECDH($idR, $capR, $keysizeR, $idI, $capI, $keysizeI, pkR, pkI, dh), + RespDoSecOOBi($idR, $capR, $keysizeR, $idI, $capI, $keysizeI) + ] + --[ + ]-> + [ + RespWaitOOBInput(), + RespReadySecOOB($idR, $capR, $keysizeR, $idI, $capI, $keysizeI, pkR, pkI, dh) + ] +#endif + +#ifdef RespSecOOBo +rule RespDoSecOOBo: + [ + RespEndECDH($idR, $capR, $keysizeR, $idI, $capI, $keysizeI, pkR, pkI, dh), + RespDoSecOOBo($idR, $capR, $keysizeR, $idI, $capI, $keysizeI) + ] + --[ + ]-> + [ + RespWaitOOBOutput(), + RespReadySecOOB($idR, $capR, $keysizeR, $idI, $capI, $keysizeI, pkR, pkI, dh) + ] +#endif + +#ifdef RespSecOOBio +rule RespDoSecOOBio: + [ + RespEndECDH($idR, $capR, $keysizeR, $idI, $capI, $keysizeI, pkR, pkI, dh), + RespDoSecOOBio($idR, $capR, $keysizeR, $idI, $capI, $keysizeI) + ] + --[ + ]-> + [ + RespWaitOOBInout(), + RespReadySecOOB($idR, $capR, $keysizeR, $idI, $capI, $keysizeI, pkR, pkI, dh) + ] +#endif + +#ifdef InitSecOOB +rule InitSecOOBOut: + let Ci = f4(pkI, pkI, ~ri, '0') in + [ + InitReadySecOOB($idI, $capI, $keysizeI, $idR, $capR, $keysizeR, pkI, pkR, dh), + InitWaitOOBOutput(), + Fr(~ri) + ] + --[ + InitSentOOB($idI, $capI, $keysizeI, $idR, $capR, $keysizeR, pkI, pkR, dh, ~ri, Ci) + ]-> + [ + InitDoneSecOOBexchange($idI, $capI, $keysizeI, $idR, $capR, $keysizeR, pkI, pkR, dh, ~ri, '0'), + InitOOBchannel(<$idI, ~ri, Ci>) + ] + +rule InitSecOOBin: + let computed_Cr = f4(pkR, pkR, ~rr, '0') in + [ + InitReadySecOOB($idI, $capI, $keysizeI, $idR, $capR, $keysizeR, pkI, pkR, dh), + InitWaitOOBInput(), + RespOOBchannel(<$idR, ~rr, computed_Cr>) + ] + --[ + ]-> + [ + InitDoneSecOOBexchange($idI, $capI, $keysizeI, $idR, $capR, $keysizeR, pkI, pkR, dh, '0', ~rr) + ] + +rule InitSecOOBinout_out: + let Ci = f4(pkI, pkI, ~ri, '0') in + [ + InitReadySecOOB($idI, $capI, $keysizeI, $idR, $capR, $keysizeR, pkI, pkR, dh), + InitWaitOOBInout(), + Fr(~ri) + ] + --[ + ]-> + [ + InitDoneSecOOBinout_out($idI, $capI, $keysizeI, $idR, $capR, $keysizeR, pkI, pkR, dh, ~ri), + InitOOBchannel(<$idI, ~ri, Ci>) + ] + +rule InitSecOOBinout_in: + let computed_Cr = f4(pkR, pkR, ~rr, '0') in + [ + InitDoneSecOOBinout_out($idI, $capI, $keysizeI, $idR, $capR, $keysizeR, pkI, pkR, dh, ~ri), + RespOOBchannel(<$idR, ~rr, computed_Cr>) + ] + --[ + ]-> + [ + InitDoneSecOOBexchange($idI, $capI, $keysizeI, $idR, $capR, $keysizeR, pkI, pkR, dh, ~ri, ~rr) + ] + +rule InitSecOOBSendRandom: + [ + InitDoneSecOOBexchange($idI, $capI, $keysizeI, $idR, $capR, $keysizeR, pkI, pkR, dh, ri, rr), + Fr(~ni) + ] + --[]-> + [ + InitSecOOBSendRandom($idI, $capI, $keysizeI, $idR, $capR, $keysizeR, pkI, pkR, dh, ri, rr, ~ni), + Out(~ni) + ] + +rule InitSecOOBRecvRandom: + [ + InitSecOOBSendRandom($idI, $capI, $keysizeI, $idR, $capR, $keysizeR, pkI, pkR, dh, ri, rr, ~ni), + In(nr) + ] + --[ + InitSecOOBDone($idI, $capI, $keysizeI, $idR, $capR, $keysizeR, pkI, pkR, dh, ~ni, nr, ri, rr), + InitEndedStep2($idI, $capI, $keysizeI, $idR, $capR, $keysizeR, pkI, pkR, dh, ~ni, nr, ri, rr) + ]-> + [ + InitEndedStep2($idI, $capI, $keysizeI, $idR, $capR, $keysizeR, pkI, pkR, dh, ~ni, nr, ri, rr) + ] +#endif + +#ifdef RespSecOOB +rule RespSecOOBOut: + let Cr = f4(pkR, pkR, ~rr, '0') in + [ + RespReadySecOOB($idR, $capR, $keysizeR, $idI, $capI, $keysizeI, pkR, pkI, dh), + RespWaitOOBOutput(), + Fr(~rr) + ] + --[ + RespSentSecOOB($idR, $capR, $keysizeR, $idI, $capI, $keysizeI, pkR, pkI, dh, ~rr, Cr) + ]-> + [ + RespDoneSecOOBexchange($idR, $capR, $keysizeR, $idI, $capI, $keysizeI, pkR, pkI, dh, ~rr, '0'), + RespOOBchannel(<$idR, ~rr, Cr>) + ] + +rule RespSecOOBin: + let computed_Ci = f4(pkI, pkI, ~ri, '0') in + [ + RespReadySecOOB($idR, $capR, $keysizeR, $idI, $capI, $keysizeI, pkR, pkI, dh), + RespWaitOOBInput(), + InitOOBchannel(<$idI, ~ri, computed_Ci>) + ] + --[ + ]-> + [ + RespDoneSecOOBexchange($idR, $capR, $keysizeR, $idI, $capI, $keysizeI, pkR, pkI, dh, '0', ~ri) + ] + +rule RespSecOOBinout_out: + let Cr = f4(pkR, pkR, ~rr, '0') in + [ + RespReadySecOOB($idR, $capR, $keysizeR, $idI, $capI, $keysizeI, pkR, pkI, dh), + RespWaitOOBInout(), + Fr(~rr) + ] + --[ + ]-> + [ + RespDoneSecOOBinout_out($idR, $capR, $keysizeR, $idI, $capI, $keysizeI, pkR, pkI, dh, ~rr), + RespOOBchannel(<$idR, ~rr, Cr>) + ] + +rule RespSecOOBinout_in: + let computed_Ci = f4(pkI, pkI, ~ri, '0') in + [ + RespDoneSecOOBinout_out($idR, $capR, $keysizeR, $idI, $capI, $keysizeI, pkR, pkI, dh, ~rr), + InitOOBchannel(<$idI, ~ri, computed_Ci>) + ] + --[ + ]-> + [ + RespDoneSecOOBexchange($idR, $capR, $keysizeR, $idI, $capI, $keysizeI, pkR, pkI, dh, ~rr, ~ri) + ] + +rule RespSecOOBSendRandom: + [ + RespDoneSecOOBexchange($idR, $capR, $keysizeR, $idI, $capI, $keysizeI, pkR, pkI, dh, rr, ri), + Fr(~nr), + In(ni) + ] + --[ + RespSecOOBDone($idR, $capR, $keysizeR, $idI, $capI, $keysizeI, pkR, pkI, dh, ~nr, ni, rr, ri), + RespEndedStep2($idR, $capR, $keysizeR, $idI, $capI, $keysizeI, pkR, pkI, dh, ~nr, ni, rr, ri) + ]-> + [ + RespSecOOBSendRandom($idR, $capR, $keysizeR, $idI, $capI, $keysizeI, pkR, pkI, dh, rr, ri, ~nr, ni), + Out(~nr), + RespEndedStep2($idR, $capR, $keysizeR, $idI, $capI, $keysizeI, pkR, pkI, dh, ~nr, ni, rr, ri) + ] +#endif + +/* +* DHKeyCheck, this is a key confirmation step +*/ + +#ifdef InitSec +rule InitDHKeyCheck: + let + //mackey = f5_mackey(dh, ~ni, nr, 'btle', $idI, $idR) + ei = f6(dh, ~ni, nr, rr, $capI, $idI, $idR) // Compute DHKeyCheck confirmation value + in + [ + InitEndedStep2($idI, $capI, $keysizeI, $idR, $capR, $keysizeR, pkI, pkR, dh, ~ni, nr, ri, rr) // Initiator needs to be done with step2 + ] + --[ InitDHKeyCheck($idI, $capI, $keysizeI, $idR, $capR, $keysizeR, pkI, pkR, dh, ~ni, nr, ri, rr, ei) ]-> // Intermediate fact + [ + InitSendDHKeyCheck($idI, $capI, $keysizeI, $idR, $capR, $keysizeR, pkI, pkR, dh, ~ni, nr, ri, rr, ei), // Initiator has sent its dhkey check + Out(ei) // Send the DHKey Check on the channel + ] + +rule InitDoneDHKeyCheck: + let + //mackey = f5_mackey(dh, ~ni, nr, 'btle', $idI, $idR) + computed_er = f6(dh, nr, ~ni, ri, $capR, $idR, $idI) + in + [ + InitSendDHKeyCheck($idI, $capI, $keysizeI, $idR, $capR, $keysizeR, pkI, pkR, dh, ~ni, nr, ri, rr, ei), + In(computed_er) + ] + --[ + InitDoneDHKeyCheck($idI, $capI, $keysizeI, $idR, $capR, $keysizeR, pkI, pkR, dh, ~ni, nr, ri, rr, ei, computed_er) + ]-> + [ + InitEndedDHKeyCheck($idI, $capI, $keysizeI, $idR, $capR, $keysizeR, pkI, pkR, dh, ~ni, nr) + ] +#endif + +#ifdef RespSec +rule RespDHKeyCheck: + let + //mackey = f5_mackey(dh, ni, ~nr, 'btle', $idI, $idR) + er = f6(dh, ~nr, ni, ri, $capR, $idR, $idI) + computed_ei = f6(dh, ni, ~nr, rr, $capI, $idI, $idR) + in + [ + RespEndedStep2($idR, $capR, $keysizeR, $idI, $capI, $keysizeI, pkR, pkI, dh, ~nr, ni, rr, ri), + In(computed_ei) + ] + --[ + RespDoneDHKeyCheck($idR, $capR, $keysizeR, $idI, $capI, $keysizeI, pkR, pkI, dh, ~nr, ni, rr, ri, er, computed_ei) + ]-> + [ + RespEndedDHKeyCheck($idR, $capR, $keysizeR, $idI, $capI, $keysizeI, pkR, pkI, dh, ~nr, ni), + Out(er) + ] +#endif + + +/* +Technically, ni should be the nonce sent by the central and nr should be the nonce sent by the peripheral +idI should be the address of the central and idR the address of the peripheral. + +Here, we assume Initiator == Central and Responder == Peripheral but that may not be always true + +Also, the session key derivation and authentication is not performed here. +*/ + +#ifdef InitSec +rule InitSecChooseKeysize: + [ + InitEndedDHKeyCheck($idI, $capI, $keysizeI, $idR, $capR, $keysizeR, pkI, pkR, dh, ~ni, nr) + ] + --> + [ + InitChooseKeysize($keysizeI, $keysizeR), + InitSecExpectKeysize($idI, $capI, $keysizeI, $idR, $capR, $keysizeR, pkI, pkR, dh, ~ni, nr) + ] + +rule InitSecSendmsg: + let ltk = reduce_key(f5_ltk(dh, ~ni, nr, 'btle', $idI, $idR), chosenKeysize) in + [ + InitSecExpectKeysize($idI, $capI, $keysizeI, $idR, $capR, $keysizeR, pkI, pkR, dh, ~ni, nr), + InitSelectKeysize(chosenKeysize) + ] + --[ + InitiatorFinishedSecPairing($idI, $capI, $keysizeI, $idR, $capR, $keysizeR, pkI, pkR, dh, ltk), + InitiatorSecSentMessage(ltk, 'init') + ]-> + [ + InitiatorFinishedSecPairing($idI, $capI, $keysizeI, $idR, $capR, $keysizeR, pkI, pkR, dh, ltk), + ReduceKeysize(chosenKeysize, ltk), + Out(senc('init',ltk)) + ] +#endif + +#ifdef RespSec +rule RespSecChooseKeysize: + [ + RespEndedDHKeyCheck($idR, $capR, $keysizeR, $idI, $capI, $keysizeI, pkR, pkI, dh, ~nr, ni) + ] + --> + [ + RespChooseKeysize($keysizeR, $keysizeI), + RespSecExpectKeysize($idR, $capR, $keysizeR, $idI, $capI, $keysizeI, pkR, pkI, dh, ~nr, ni) + ] + + +rule RespSecSendmsg: + let ltk = reduce_key(f5_ltk(dh, ni, ~nr, 'btle', $idI, $idR), chosenKeysize) in + [ + RespSecExpectKeysize($idR, $capR, $keysizeR, $idI, $capI, $keysizeI, pkR, pkI, dh, ~nr, ni), + RespSelectKeysize(chosenKeysize), + In(senc('init', ltk)) + ] + --[ + ResponderFinishedSecPairing($idR, $capR, $keysizeR, $idI, $capI, $keysizeI, pkR, pkI, dh, ltk), + ResponderSentMessage(ltk, 'resp') + ]-> + [ + ResponderFinishedSecPairing($idR, $capR, $keysizeR, $idI, $capI, $keysizeI, pkR, pkI, dh, ltk), + ReduceKeysize(chosenKeysize, ltk), + Out(senc('resp',ltk)) + ] +#endif + +/* User interactions */ +/* This is used to represent user interactions in Bluetooth +Devices can have an output, input or input/output capability. +There are four facts that are used to represent interactions: +- InitUserWaitInput(): Initiator waits passkey input from user +- RespUserWaitInput(): Responder waits passkey input from user +- InitUserWaitConfirm(passkey): Initiator waits continuation of the protocol, it chooses passkey +- RespUserWaitConfirm(passkey): Responder waits continuation of the protocol, it chooses passkey +- InitUserWaitInout(passkey): Initiator waits continuation of the protocol +- RespUserWaitInout(passkey): Responder waits the continuation of the protocol + +We note that not both devices choose the passkey, in practice only one does. +However, the choice depends on the capabilities of the other device. +This is why when two devices have triggered UserWaitInout(passkey), only one passkey is propagated in the following +rules, to model the choice that was done at the beginning of the protocol. + +The possible combinations are: +InitUserWaitInput - RespUserWaitInput -> Valid interaction in PE, user selects a passkey and inputs it in both +InitUserWaitInput - RespUserWaitConfirm -> Valid interaction in PE, user copies the responder's passkey into initiator +InitUserWaitConfirm - RespUserWaitInput -> Valid interaction in PE, user copies the initiator's passkey into responder +InitUserWaitConfirm - RespUserWaitConfirm -> Valid interaction in NC, user verifies that both code match + -> May also occur in PEo/PEio - PEo/PEio, in which case it is valid +*/ + +#ifdef InputInput +rule UserInputInitInputResp: + [Fr(~passkey), + InitTriggerUserInteraction(),InitWaitUserInput(), + RespTriggerUserInteraction(),RespWaitUserInput()] + --[]-> + [InitUserProceed(~passkey),RespUserProceed(~passkey)] +#endif + +#ifdef InputOutput +rule UserInputInitConfirmResp: + [InitTriggerUserInteraction(),InitWaitUserInput(), + RespTriggerUserInteraction(),RespWaitUserConfirm(passkey)] + --[]-> + [InitUserProceed(passkey),RespUserProceed(passkey)] +#endif + +#ifdef InputInout +rule UserInputInitInoutResp: + [InitTriggerUserInteraction(),InitWaitUserInput(), + RespTriggerUserInteraction(),RespWaitUserInout(passkey)] + --[]-> + [InitUserProceed(passkey),RespUserProceed(passkey)] +#endif + +#ifdef OutputInput +rule UserConfirmInitInputResp: + [InitTriggerUserInteraction(),InitWaitUserConfirm(passkey), + RespTriggerUserInteraction(),RespWaitUserInput()] + --[]-> + [InitUserProceed(passkey),RespUserProceed(passkey)] +#endif + +#ifdef OutputInout +rule UserConfirmInitInoutResp: + [InitTriggerUserInteraction(),InitWaitUserConfirm(passkeyi), + RespTriggerUserInteraction(),RespWaitUserInout(passkeyr)] + --[]-> + [InitUserProceed(passkeyi),RespUserProceed(passkeyi)] +#endif + +#ifdef InoutInput +rule UserInoutInitInputResp: + [InitTriggerUserInteraction(),InitWaitUserInout(passkey), + RespTriggerUserInteraction(),RespWaitUserInput()] + --[]-> + [InitUserProceed(passkey),RespUserProceed(passkey)] +#endif + +#ifdef InoutOutput +rule UserInoutInitConfirmResp: + [InitTriggerUserInteraction(),InitWaitUserInout(passkeyi), + RespTriggerUserInteraction(),RespWaitUserConfirm(passkeyr)] + --[]-> + [InitUserProceed(passkeyr),RespUserProceed(passkeyr)] +#endif + +#ifdef InoutInout +rule UserInoutInitInoutResp: + [InitTriggerUserInteraction(),InitWaitUserInout(passkeyi), + RespTriggerUserInteraction(),RespWaitUserInout(passkeyr)] + --[]-> + [InitUserProceed(passkeyi),RespUserProceed(passkeyi)] +#endif + +#ifdef OutputOutput +// This represents Numeric Comparison protocol +rule UserConfirmInitConfirmResp: + [InitTriggerUserInteraction(),InitWaitUserConfirm(vi), + RespTriggerUserInteraction(),RespWaitUserConfirm(vi)] + --[]-> + [InitUserProceed(vi),RespUserProceed(vi)] +#endif + +/* Keysize selection, used for all protocols. The lower keysize is chosen. +Although the keysize is a byte with values 7-16 in BLE specifications, +in this model we use weak/strong keysize. Hence, there are 4 possible combinations. */ + +rule RespSelectKeysizeSS: + [RespChooseKeysize('strong', 'strong')] --> [RespSelectKeysize('strong')] + +rule RespSelectKeysizeSW: + [RespChooseKeysize('strong', 'weak')] --> [RespSelectKeysize('weak')] + +rule RespSelectKeysizeWS: + [RespChooseKeysize('weak', 'strong')] --> [RespSelectKeysize('weak')] + +rule RespSelectKeysizeWW: + [RespChooseKeysize('weak', 'weak')] --> [RespSelectKeysize('weak')] + +rule InitSelectKeysizeSS: + [InitChooseKeysize('strong', 'strong')] --> [InitSelectKeysize('strong')] + +rule InitSelectKeysizeSW: + [InitChooseKeysize('strong', 'weak')] --> [InitSelectKeysize('weak')] + +rule InitSelectKeysizeWS: + [InitChooseKeysize('weak', 'strong')] --> [InitSelectKeysize('weak')] + +rule InitSelectKeysizeWW: + [InitChooseKeysize('weak', 'weak')] --> [InitSelectKeysize('weak')] + + + +/* Those two restrictions limit to one honest initiator and one +honest responder. This helps having a finished analysis */ +restriction InitOnlyOncePairing: +"All #i #j. InitOnlyOncePairing() @i & InitOnlyOncePairing() @j ==> #i = #j" + +restriction RespOnlyOncePairing: +"All #i #j. RespOnlyOncePairing() @i & RespOnlyOncePairing() @j ==> #i = #j" + +#ifdef InitLegPE +restriction InitLegPEOnlyOnce: +"All #i #j . InitLegPEOnlyOnce() @i & InitLegPEOnlyOnce() @j ==> #i = #j" +#endif + +#ifdef RespLegPE +restriction RespLegPEOnlyOnce: +"All #i #j . RespLegPEOnlyOnce() @i & RespLegPEOnlyOnce() @j ==> #i = #j" +#endif + +#ifdef InitSecPE +restriction InitSecPEOnlyOnce: +"All #i #j. InitSecPEOnlyOnce() @i & InitSecPEOnlyOnce() @j ==> #i = #j" +#endif + +#ifdef RespSecPE +restriction RespSecPEOnlyOnce: +"All #i #j. RespSecPEOnlyOnce() @i & RespSecPEOnlyOnce() @j ==> #i = #j" +#endif + +#ifdef InitSecOOB +restriction InitSecOOBOnlyOnce: +"All #i #j. InitSecOOBOnlyOnce() @i & InitSecOOBOnlyOnce() @j ==> #i = #j" +#endif + +#ifdef RespSecOOB +restriction RespSecOOBOnlyOnce: +"All #i #j. RespSecOOBOnlyOnce() @i & RespSecOOBOnlyOnce() @j ==> #i = #j" +#endif + +// For ECDH model +restriction DHConsistency: + "All t s r1 r2 y #i #j . + Raised(t,s,r1,y) @ i & Raised(t,s,r2,y) @j + ==> r1 = r2" + +restriction DHIdentity: + "All t r y #i . + Raised(t,DH_neutral,r,y) @ i ==> r = DH_neutral" + +restriction ValidPt: + "∀ x y #i. + (ValidPt(x,y) @ #i) ⇒ (x = y)" + +restriction InvalidPt: + "∀ x #i. + (InvalidPt(x,x) @ #i) ⇒ F" + +/*************************************/ +/* Lemmas about LegJW-LegJW exchange */ +/*************************************/ + +#ifdef LegJWLegJW +lemma legJW_legJW_functional: exists-trace +" + Ex #i1 #i2 . + InitWillDoLegJW()[+] @i1 & RespWillDoLegJW()[+] @i2 & + (Ex idI1 idR1 capI1 capR1 ksI1 ksR1 tk1 ni1 nr1 stk1 idI2 idR2 capI2 capR2 ksI2 ksR2 tk2 ni2 nr2 stk2 #j1 #j2 . + InitiatorFinishedLegPairing(idI1, capI1, ksI1, idR1, capR1, ksR1, tk1, ni1, nr1, stk1) @j1 & + ResponderFinishedLegPairing(idR2, capR2, ksR2, idI2, capI2, ksI2, tk2, nr2, ni2, stk2) @j2 + ) +" + +lemma legJW_legJW_auth_init: +" + All #i1 #i2 . + InitWillDoLegJW()[+] @i1 & RespWillDoLegJW()[+] @i2 ==> + (All idI idR capI capR ksI ksR tk ni nr stk #k1 . + InitiatorFinishedLegPairing(idI, capI, ksI, idR, capR, ksR, tk, ni, nr, stk) @k1 ==> + (Ex ci cr #k2 . + RespSentRandom(idR, capR, ksR, idI, capI, ksI, tk, nr, ni, cr, ci) @k2 + ) + ) +" + +lemma legJW_legJW_auth_resp: +" + All #i1 #i2 . + InitWillDoLegJW()[+] @i1 & RespWillDoLegJW()[+] @i2 ==> + (All idI idR capI capR ksI ksR tk ni nr stk #k1 . + ResponderFinishedLegPairing(idR, capR, ksR, idI, capI, ksI, tk, nr, ni, stk) @k1 ==> + (Ex ci cr #k2 . + InitSentRandom(idI, capI, ksI, idR, capR, ksR, tk, ni, ci, cr) @k2 + ) + ) +" + +lemma legJW_legJW_weaksecret_init: +" + All #i1 #i2 . + InitWillDoLegJW()[+] @i1 & RespWillDoLegJW()[+] @i2 ==> + (All idI idR capI capR ksI ksR tk ni nr stk #k1 . + InitiatorFinishedLegPairing(idI, capI, ksI, idR, capR, ksR, tk, ni, nr, stk) @k1 ==> + not (Ex #k2 . K(stk) @k2 ) + ) +" + +lemma legJW_legJW_weaksecret_resp: +" + All #i1 #i2 . + InitWillDoLegJW()[+] @i1 & RespWillDoLegJW()[+] @i2 ==> + (All idI idR capI capR ksI ksR tk ni nr stk #k1 . + ResponderFinishedLegPairing(idR, capR, ksR, idI, capI, ksI, tk, nr, ni, stk) @k1 ==> + not (Ex #k2 . K(stk) @k2 ) + ) +" + +lemma legJW_legJW_double_impersonation: +" + All #i1 #i2 . + InitWillDoLegJW()[+] @i1 & RespWillDoLegJW()[+] @i2 ==> + (All idI1 idR1 capI1 capR1 ksI1 ksR1 tk1 ni1 nr1 stk1 idI2 idR2 capI2 capR2 ksI2 ksR2 tk2 ni2 nr2 stk2 #j1 #j2 . + InitiatorFinishedLegPairing(idI1, capI1, ksI1, idR1, capR1, ksR1, tk1, ni1, nr1, stk1) @j1 & + ResponderFinishedLegPairing(idR2, capR2, ksR2, idI2, capI2, ksI2, tk2, nr2, ni2, stk2) @j2 ==> + not (Ex #k1 #k2 . + K(stk1) @k1 & K(stk2) @k2 + ) + ) +" + +#endif + +/*****************************************/ +/* End lemmas about LegJW-LegJW exchange */ +/*****************************************/ + +/**************************************/ +/* Lemmas about LegJW-LegPEi exchange */ +/**************************************/ + +#ifdef LegJWLegPEi +lemma legJW_legPEi_functional: exists-trace +" + Ex #i1 #i2 . + InitWillDoLegJW()[+] @i1 & RespWillDoLegPEi()[+] @i2 & + (Ex idI1 idR1 capI1 capR1 ksI1 ksR1 tk1 ni1 nr1 stk1 idI2 idR2 capI2 capR2 ksI2 ksR2 tk2 ni2 nr2 stk2 #j1 #j2 . + InitiatorFinishedLegPairing(idI1, capI1, ksI1, idR1, capR1, ksR1, tk1, ni1, nr1, stk1) @j1 & + ResponderFinishedLegPairing(idR2, capR2, ksR2, idI2, capI2, ksI2, tk2, nr2, ni2, stk2) @j2 + ) +" + +lemma legJW_legPEi_auth_init: +" + All #i1 #i2 . + InitWillDoLegJW()[+] @i1 & RespWillDoLegPEi()[+] @i2 ==> + (All idI idR capI capR ksI ksR tk ni nr stk #k1 . + InitiatorFinishedLegPairing(idI, capI, ksI, idR, capR, ksR, tk, ni, nr, stk) @k1 ==> + (Ex ci cr #k2 . + RespSentRandom(idR, capR, ksR, idI, capI, ksI, tk, nr, ni, cr, ci) @k2 + ) + ) +" + +lemma legJW_legPEi_auth_resp: +" + All #i1 #i2 . + InitWillDoLegJW()[+] @i1 & RespWillDoLegPEi()[+] @i2 ==> + (All idI idR capI capR ksI ksR tk ni nr stk #k1 . + ResponderFinishedLegPairing(idR, capR, ksR, idI, capI, ksI, tk, nr, ni, stk) @k1 ==> + (Ex ci cr #k2 . + InitSentRandom(idI, capI, ksI, idR, capR, ksR, tk, ni, ci, cr) @k2 + ) + ) +" + +lemma legJW_legPEi_weaksecret_init: +" + All #i1 #i2 . + InitWillDoLegJW()[+] @i1 & RespWillDoLegPEi()[+] @i2 ==> + (All idI idR capI capR ksI ksR tk ni nr stk #k1 . + InitiatorFinishedLegPairing(idI, capI, ksI, idR, capR, ksR, tk, ni, nr, stk) @k1 ==> + not (Ex #k2 . K(stk) @k2 ) + ) +" + +lemma legJW_legPEi_weaksecret_resp: +" + All #i1 #i2 . + InitWillDoLegJW()[+] @i1 & RespWillDoLegPEi()[+] @i2 ==> + (All idI idR capI capR ksI ksR tk ni nr stk #k1 . + ResponderFinishedLegPairing(idR, capR, ksR, idI, capI, ksI, tk, nr, ni, stk) @k1 ==> + not (Ex #k2 . K(stk) @k2 ) + ) +" + +lemma legJW_legPEi_double_impersonation: +" + All #i1 #i2 . + InitWillDoLegJW()[+] @i1 & RespWillDoLegPEi()[+] @i2 ==> + (All idI1 idR1 capI1 capR1 ksI1 ksR1 tk1 ni1 nr1 stk1 idI2 idR2 capI2 capR2 ksI2 ksR2 tk2 ni2 nr2 stk2 #j1 #j2 . + InitiatorFinishedLegPairing(idI1, capI1, ksI1, idR1, capR1, ksR1, tk1, ni1, nr1, stk1) @j1 & + ResponderFinishedLegPairing(idR2, capR2, ksR2, idI2, capI2, ksI2, tk2, nr2, ni2, stk2) @j2 ==> + not (Ex #k1 #k2 . + K(stk1) @k1 & K(stk2) @k2 + ) + ) +" + +#endif + +/******************************************/ +/* End lemmas about LegJW-LegPEi exchange */ +/******************************************/ + +/**************************************/ +/* Lemmas about LegJW-LegPEo exchange */ +/**************************************/ + +#ifdef LegJWLegPEo +lemma legJW_legPEo_functional: exists-trace +" + Ex #i1 #i2 . + InitWillDoLegJW()[+] @i1 & RespWillDoLegPEo()[+] @i2 & + (Ex idI1 idR1 capI1 capR1 ksI1 ksR1 tk1 ni1 nr1 stk1 idI2 idR2 capI2 capR2 ksI2 ksR2 tk2 ni2 nr2 stk2 #j1 #j2 . + InitiatorFinishedLegPairing(idI1, capI1, ksI1, idR1, capR1, ksR1, tk1, ni1, nr1, stk1) @j1 & + ResponderFinishedLegPairing(idR2, capR2, ksR2, idI2, capI2, ksI2, tk2, nr2, ni2, stk2) @j2 + ) +" + +lemma legJW_legPEo_auth_init: +" + All #i1 #i2 . + InitWillDoLegJW()[+] @i1 & RespWillDoLegPEo()[+] @i2 ==> + (All idI idR capI capR ksI ksR tk ni nr stk #k1 . + InitiatorFinishedLegPairing(idI, capI, ksI, idR, capR, ksR, tk, ni, nr, stk) @k1 ==> + (Ex ci cr #k2 . + RespSentRandom(idR, capR, ksR, idI, capI, ksI, tk, nr, ni, cr, ci) @k2 + ) + ) +" + +lemma legJW_legPEo_auth_resp: +" + All #i1 #i2 . + InitWillDoLegJW()[+] @i1 & RespWillDoLegPEo()[+] @i2 ==> + (All idI idR capI capR ksI ksR tk ni nr stk #k1 . + ResponderFinishedLegPairing(idR, capR, ksR, idI, capI, ksI, tk, nr, ni, stk) @k1 ==> + (Ex ci cr #k2 . + InitSentRandom(idI, capI, ksI, idR, capR, ksR, tk, ni, ci, cr) @k2 + ) + ) +" + +lemma legJW_legPEo_weaksecret_init: +" + All #i1 #i2 . + InitWillDoLegJW()[+] @i1 & RespWillDoLegPEo()[+] @i2 ==> + (All idI idR capI capR ksI ksR tk ni nr stk #k1 . + InitiatorFinishedLegPairing(idI, capI, ksI, idR, capR, ksR, tk, ni, nr, stk) @k1 ==> + not (Ex #k2 . K(stk) @k2 ) + ) +" + +lemma legJW_legPEo_weaksecret_resp: +" + All #i1 #i2 . + InitWillDoLegJW()[+] @i1 & RespWillDoLegPEo()[+] @i2 ==> + (All idI idR capI capR ksI ksR tk ni nr stk #k1 . + ResponderFinishedLegPairing(idR, capR, ksR, idI, capI, ksI, tk, nr, ni, stk) @k1 ==> + not (Ex #k2 . K(stk) @k2 ) + ) +" + +lemma legJW_legPEo_double_impersonation: +" + All #i1 #i2 . + InitWillDoLegJW()[+] @i1 & RespWillDoLegPEo()[+] @i2 ==> + (All idI1 idR1 capI1 capR1 ksI1 ksR1 tk1 ni1 nr1 stk1 idI2 idR2 capI2 capR2 ksI2 ksR2 tk2 ni2 nr2 stk2 #j1 #j2 . + InitiatorFinishedLegPairing(idI1, capI1, ksI1, idR1, capR1, ksR1, tk1, ni1, nr1, stk1) @j1 & + ResponderFinishedLegPairing(idR2, capR2, ksR2, idI2, capI2, ksI2, tk2, nr2, ni2, stk2) @j2 ==> + not (Ex #k1 #k2 . + K(stk1) @k1 & K(stk2) @k2 + ) + ) +" + +#endif + +/******************************************/ +/* End lemmas about LegJW-LegPEo exchange */ +/******************************************/ + +/***************************************/ +/* Lemmas about LegJW-LegPEio exchange */ +/***************************************/ + +#ifdef LegJWLegPEio +lemma legJW_legPEio_functional: exists-trace +" + Ex #i1 #i2 . + InitWillDoLegJW()[+] @i1 & RespWillDoLegPEio()[+] @i2 & + (Ex idI1 idR1 capI1 capR1 ksI1 ksR1 tk1 ni1 nr1 stk1 idI2 idR2 capI2 capR2 ksI2 ksR2 tk2 ni2 nr2 stk2 #j1 #j2 . + InitiatorFinishedLegPairing(idI1, capI1, ksI1, idR1, capR1, ksR1, tk1, ni1, nr1, stk1) @j1 & + ResponderFinishedLegPairing(idR2, capR2, ksR2, idI2, capI2, ksI2, tk2, nr2, ni2, stk2) @j2 + ) +" + +lemma legJW_legPEio_auth_init: +" + All #i1 #i2 . + InitWillDoLegJW()[+] @i1 & RespWillDoLegPEio()[+] @i2 ==> + (All idI idR capI capR ksI ksR tk ni nr stk #k1 . + InitiatorFinishedLegPairing(idI, capI, ksI, idR, capR, ksR, tk, ni, nr, stk) @k1 ==> + (Ex ci cr #k2 . + RespSentRandom(idR, capR, ksR, idI, capI, ksI, tk, nr, ni, cr, ci) @k2 + ) + ) +" + +lemma legJW_legPEio_auth_resp: +" + All #i1 #i2 . + InitWillDoLegJW()[+] @i1 & RespWillDoLegPEio()[+] @i2 ==> + (All idI idR capI capR ksI ksR tk ni nr stk #k1 . + ResponderFinishedLegPairing(idR, capR, ksR, idI, capI, ksI, tk, nr, ni, stk) @k1 ==> + (Ex ci cr #k2 . + InitSentRandom(idI, capI, ksI, idR, capR, ksR, tk, ni, ci, cr) @k2 + ) + ) +" + +lemma legJW_legPEio_weaksecret_init: +" + All #i1 #i2 . + InitWillDoLegJW()[+] @i1 & RespWillDoLegPEio()[+] @i2 ==> + (All idI idR capI capR ksI ksR tk ni nr stk #k1 . + InitiatorFinishedLegPairing(idI, capI, ksI, idR, capR, ksR, tk, ni, nr, stk) @k1 ==> + not (Ex #k2 . K(stk) @k2 ) + ) +" + +lemma legJW_legPEio_weaksecret_resp: +" + All #i1 #i2 . + InitWillDoLegJW()[+] @i1 & RespWillDoLegPEio()[+] @i2 ==> + (All idI idR capI capR ksI ksR tk ni nr stk #k1 . + ResponderFinishedLegPairing(idR, capR, ksR, idI, capI, ksI, tk, nr, ni, stk) @k1 ==> + not (Ex #k2 . K(stk) @k2 ) + ) +" + +lemma legJW_legPEio_double_impersonation: +" + All #i1 #i2 . + InitWillDoLegJW()[+] @i1 & RespWillDoLegPEio()[+] @i2 ==> + (All idI1 idR1 capI1 capR1 ksI1 ksR1 tk1 ni1 nr1 stk1 idI2 idR2 capI2 capR2 ksI2 ksR2 tk2 ni2 nr2 stk2 #j1 #j2 . + InitiatorFinishedLegPairing(idI1, capI1, ksI1, idR1, capR1, ksR1, tk1, ni1, nr1, stk1) @j1 & + ResponderFinishedLegPairing(idR2, capR2, ksR2, idI2, capI2, ksI2, tk2, nr2, ni2, stk2) @j2 ==> + not (Ex #k1 #k2 . + K(stk1) @k1 & K(stk2) @k2 + ) + ) +" + +#endif + +/*******************************************/ +/* End lemmas about LegJW-LegPEio exchange */ +/*******************************************/ + +/**************************************/ +/* Lemmas about LegJW-LegOOB exchange */ +/**************************************/ + +#ifdef LegJWLegOOB +lemma legJW_legOOB_functional: exists-trace +" + Ex #i1 #i2 . + InitWillDoLegJW()[+] @i1 & RespWillDoLegOOB()[+] @i2 & + (Ex idI1 idR1 capI1 capR1 ksI1 ksR1 tk1 ni1 nr1 stk1 idI2 idR2 capI2 capR2 ksI2 ksR2 tk2 ni2 nr2 stk2 #j1 #j2 . + InitiatorFinishedLegPairing(idI1, capI1, ksI1, idR1, capR1, ksR1, tk1, ni1, nr1, stk1) @j1 & + ResponderFinishedLegPairing(idR2, capR2, ksR2, idI2, capI2, ksI2, tk2, nr2, ni2, stk2) @j2 + ) +" + +lemma legJW_legOOB_auth_init: +" + All #i1 #i2 . + InitWillDoLegJW()[+] @i1 & RespWillDoLegOOB()[+] @i2 ==> + (All idI idR capI capR ksI ksR tk ni nr stk #k1 . + InitiatorFinishedLegPairing(idI, capI, ksI, idR, capR, ksR, tk, ni, nr, stk) @k1 ==> + (Ex ci cr #k2 . + RespSentRandom(idR, capR, ksR, idI, capI, ksI, tk, nr, ni, cr, ci) @k2 + ) + ) +" + +lemma legJW_legOOB_auth_resp: +" + All #i1 #i2 . + InitWillDoLegJW()[+] @i1 & RespWillDoLegOOB()[+] @i2 ==> + (All idI idR capI capR ksI ksR tk ni nr stk #k1 . + ResponderFinishedLegPairing(idR, capR, ksR, idI, capI, ksI, tk, nr, ni, stk) @k1 ==> + (Ex ci cr #k2 . + InitSentRandom(idI, capI, ksI, idR, capR, ksR, tk, ni, ci, cr) @k2 + ) + ) +" + +lemma legJW_legOOB_weaksecret_init: +" + All #i1 #i2 . + InitWillDoLegJW()[+] @i1 & RespWillDoLegOOB()[+] @i2 ==> + (All idI idR capI capR ksI ksR tk ni nr stk #k1 . + InitiatorFinishedLegPairing(idI, capI, ksI, idR, capR, ksR, tk, ni, nr, stk) @k1 ==> + not (Ex #k2 . K(stk) @k2 ) + ) +" + +lemma legJW_legOOB_weaksecret_resp: +" + All #i1 #i2 . + InitWillDoLegJW()[+] @i1 & RespWillDoLegOOB()[+] @i2 ==> + (All idI idR capI capR ksI ksR tk ni nr stk #k1 . + ResponderFinishedLegPairing(idR, capR, ksR, idI, capI, ksI, tk, nr, ni, stk) @k1 ==> + not (Ex #k2 . K(stk) @k2 ) + ) +" + +lemma legJW_legOOB_double_impersonation: +" + All #i1 #i2 . + InitWillDoLegJW()[+] @i1 & RespWillDoLegOOB()[+] @i2 ==> + (All idI1 idR1 capI1 capR1 ksI1 ksR1 tk1 ni1 nr1 stk1 idI2 idR2 capI2 capR2 ksI2 ksR2 tk2 ni2 nr2 stk2 #j1 #j2 . + InitiatorFinishedLegPairing(idI1, capI1, ksI1, idR1, capR1, ksR1, tk1, ni1, nr1, stk1) @j1 & + ResponderFinishedLegPairing(idR2, capR2, ksR2, idI2, capI2, ksI2, tk2, nr2, ni2, stk2) @j2 ==> + not (Ex #k1 #k2 . + K(stk1) @k1 & K(stk2) @k2 + ) + ) +" + +#endif + +/******************************************/ +/* End lemmas about LegJW-LegOOB exchange */ +/******************************************/ + +/**************************************/ +/* Lemmas about LegPEi-LegJW exchange */ +/**************************************/ + +#ifdef LegPEiLegJW +lemma legPEi_legJW_functional: exists-trace +" + Ex #i1 #i2 . + InitWillDoLegPEi()[+] @i1 & RespWillDoLegJW()[+] @i2 & + (Ex idI1 idR1 capI1 capR1 ksI1 ksR1 tk1 ni1 nr1 stk1 idI2 idR2 capI2 capR2 ksI2 ksR2 tk2 ni2 nr2 stk2 #j1 #j2 . + InitiatorFinishedLegPairing(idI1, capI1, ksI1, idR1, capR1, ksR1, tk1, ni1, nr1, stk1) @j1 & + ResponderFinishedLegPairing(idR2, capR2, ksR2, idI2, capI2, ksI2, tk2, nr2, ni2, stk2) @j2 + ) +" + +lemma legPEi_legJW_auth_init: +" + All #i1 #i2 . + InitWillDoLegPEi()[+] @i1 & RespWillDoLegJW()[+] @i2 ==> + (All idI idR capI capR ksI ksR tk ni nr stk #k1 . + InitiatorFinishedLegPairing(idI, capI, ksI, idR, capR, ksR, tk, ni, nr, stk) @k1 ==> + (Ex ci cr #k2 . + RespSentRandom(idR, capR, ksR, idI, capI, ksI, tk, nr, ni, cr, ci) @k2 + ) + ) +" + +lemma legPEi_legJW_auth_resp: +" + All #i1 #i2 . + InitWillDoLegPEi()[+] @i1 & RespWillDoLegJW()[+] @i2 ==> + (All idI idR capI capR ksI ksR tk ni nr stk #k1 . + ResponderFinishedLegPairing(idR, capR, ksR, idI, capI, ksI, tk, nr, ni, stk) @k1 ==> + (Ex ci cr #k2 . + InitSentRandom(idI, capI, ksI, idR, capR, ksR, tk, ni, ci, cr) @k2 + ) + ) +" + +lemma legPEi_legJW_weaksecret_init: +" + All #i1 #i2 . + InitWillDoLegPEi()[+] @i1 & RespWillDoLegJW()[+] @i2 ==> + (All idI idR capI capR ksI ksR tk ni nr stk #k1 . + InitiatorFinishedLegPairing(idI, capI, ksI, idR, capR, ksR, tk, ni, nr, stk) @k1 ==> + not (Ex #k2 . K(stk) @k2 ) + ) +" + +lemma legPEi_legJW_weaksecret_resp: +" + All #i1 #i2 . + InitWillDoLegPEi()[+] @i1 & RespWillDoLegJW()[+] @i2 ==> + (All idI idR capI capR ksI ksR tk ni nr stk #k1 . + ResponderFinishedLegPairing(idR, capR, ksR, idI, capI, ksI, tk, nr, ni, stk) @k1 ==> + not (Ex #k2 . K(stk) @k2 ) + ) +" + +lemma legPEi_legJW_double_impersonation: +" + All #i1 #i2 . + InitWillDoLegPEi()[+] @i1 & RespWillDoLegJW()[+] @i2 ==> + (All idI1 idR1 capI1 capR1 ksI1 ksR1 tk1 ni1 nr1 stk1 idI2 idR2 capI2 capR2 ksI2 ksR2 tk2 ni2 nr2 stk2 #j1 #j2 . + InitiatorFinishedLegPairing(idI1, capI1, ksI1, idR1, capR1, ksR1, tk1, ni1, nr1, stk1) @j1 & + ResponderFinishedLegPairing(idR2, capR2, ksR2, idI2, capI2, ksI2, tk2, nr2, ni2, stk2) @j2 ==> + not (Ex #k1 #k2 . + K(stk1) @k1 & K(stk2) @k2 + ) + ) +" + +#endif + +/******************************************/ +/* End lemmas about LegPEi-LegJW exchange */ +/******************************************/ + +/***************************************/ +/* Lemmas about LegPEi-LegPEi exchange */ +/***************************************/ + +#ifdef LegPEiLegPEi +lemma legPEi_legPEi_functional: exists-trace +" + Ex #i1 #i2 . + InitWillDoLegPEi()[+] @i1 & RespWillDoLegPEi()[+] @i2 & + (Ex idI1 idR1 capI1 capR1 ksI1 ksR1 tk1 ni1 nr1 stk1 idI2 idR2 capI2 capR2 ksI2 ksR2 tk2 ni2 nr2 stk2 #j1 #j2 . + InitiatorFinishedLegPairing(idI1, capI1, ksI1, idR1, capR1, ksR1, tk1, ni1, nr1, stk1) @j1 & + ResponderFinishedLegPairing(idR2, capR2, ksR2, idI2, capI2, ksI2, tk2, nr2, ni2, stk2) @j2 + ) +" + +lemma legPEi_legPEi_auth_init: +" + All #i1 #i2 . + InitWillDoLegPEi()[+] @i1 & RespWillDoLegPEi()[+] @i2 ==> + (All idI idR capI capR ksI ksR tk ni nr stk #k1 . + InitiatorFinishedLegPairing(idI, capI, ksI, idR, capR, ksR, tk, ni, nr, stk) @k1 ==> + (Ex ci cr #k2 . + RespSentRandom(idR, capR, ksR, idI, capI, ksI, tk, nr, ni, cr, ci) @k2 + ) + ) +" + +lemma legPEi_legPEi_auth_resp: +" + All #i1 #i2 . + InitWillDoLegPEi()[+] @i1 & RespWillDoLegPEi()[+] @i2 ==> + (All idI idR capI capR ksI ksR tk ni nr stk #k1 . + ResponderFinishedLegPairing(idR, capR, ksR, idI, capI, ksI, tk, nr, ni, stk) @k1 ==> + (Ex ci cr #k2 . + InitSentRandom(idI, capI, ksI, idR, capR, ksR, tk, ni, ci, cr) @k2 + ) + ) +" + +lemma legPEi_legPEi_weaksecret_init: +" + All #i1 #i2 . + InitWillDoLegPEi()[+] @i1 & RespWillDoLegPEi()[+] @i2 ==> + (All idI idR capI capR ksI ksR tk ni nr stk #k1 . + InitiatorFinishedLegPairing(idI, capI, ksI, idR, capR, ksR, tk, ni, nr, stk) @k1 ==> + not (Ex #k2 . K(stk) @k2 ) + ) +" + +lemma legPEi_legPEi_weaksecret_resp: +" + All #i1 #i2 . + InitWillDoLegPEi()[+] @i1 & RespWillDoLegPEi()[+] @i2 ==> + (All idI idR capI capR ksI ksR tk ni nr stk #k1 . + ResponderFinishedLegPairing(idR, capR, ksR, idI, capI, ksI, tk, nr, ni, stk) @k1 ==> + not (Ex #k2 . K(stk) @k2 ) + ) +" + +lemma legPEi_legPEi_double_impersonation: +" + All #i1 #i2 . + InitWillDoLegPEi()[+] @i1 & RespWillDoLegPEi()[+] @i2 ==> + (All idI1 idR1 capI1 capR1 ksI1 ksR1 tk1 ni1 nr1 stk1 idI2 idR2 capI2 capR2 ksI2 ksR2 tk2 ni2 nr2 stk2 #j1 #j2 . + InitiatorFinishedLegPairing(idI1, capI1, ksI1, idR1, capR1, ksR1, tk1, ni1, nr1, stk1) @j1 & + ResponderFinishedLegPairing(idR2, capR2, ksR2, idI2, capI2, ksI2, tk2, nr2, ni2, stk2) @j2 ==> + not (Ex #k1 #k2 . + K(stk1) @k1 & K(stk2) @k2 + ) + ) +" + +#endif + +/*******************************************/ +/* End lemmas about LegPEi-LegPEi exchange */ +/*******************************************/ + +/***************************************/ +/* Lemmas about LegPEi-LegPEo exchange */ +/***************************************/ + +#ifdef LegPEiLegPEo +lemma legPEi_legPEo_functional: exists-trace +" + Ex #i1 #i2 . + InitWillDoLegPEi()[+] @i1 & RespWillDoLegPEo()[+] @i2 & + (Ex idI1 idR1 capI1 capR1 ksI1 ksR1 tk1 ni1 nr1 stk1 idI2 idR2 capI2 capR2 ksI2 ksR2 tk2 ni2 nr2 stk2 #j1 #j2 . + InitiatorFinishedLegPairing(idI1, capI1, ksI1, idR1, capR1, ksR1, tk1, ni1, nr1, stk1) @j1 & + ResponderFinishedLegPairing(idR2, capR2, ksR2, idI2, capI2, ksI2, tk2, nr2, ni2, stk2) @j2 + ) +" + +lemma legPEi_legPEo_auth_init: +" + All #i1 #i2 . + InitWillDoLegPEi()[+] @i1 & RespWillDoLegPEo()[+] @i2 ==> + (All idI idR capI capR ksI ksR tk ni nr stk #k1 . + InitiatorFinishedLegPairing(idI, capI, ksI, idR, capR, ksR, tk, ni, nr, stk) @k1 ==> + (Ex ci cr #k2 . + RespSentRandom(idR, capR, ksR, idI, capI, ksI, tk, nr, ni, cr, ci) @k2 + ) + ) +" + +lemma legPEi_legPEo_auth_resp: +" + All #i1 #i2 . + InitWillDoLegPEi()[+] @i1 & RespWillDoLegPEo()[+] @i2 ==> + (All idI idR capI capR ksI ksR tk ni nr stk #k1 . + ResponderFinishedLegPairing(idR, capR, ksR, idI, capI, ksI, tk, nr, ni, stk) @k1 ==> + (Ex ci cr #k2 . + InitSentRandom(idI, capI, ksI, idR, capR, ksR, tk, ni, ci, cr) @k2 + ) + ) +" + +lemma legPEi_legPEo_weaksecret_init: +" + All #i1 #i2 . + InitWillDoLegPEi()[+] @i1 & RespWillDoLegPEo()[+] @i2 ==> + (All idI idR capI capR ksI ksR tk ni nr stk #k1 . + InitiatorFinishedLegPairing(idI, capI, ksI, idR, capR, ksR, tk, ni, nr, stk) @k1 ==> + not (Ex #k2 . K(stk) @k2 ) + ) +" + +lemma legPEi_legPEo_weaksecret_resp: +" + All #i1 #i2 . + InitWillDoLegPEi()[+] @i1 & RespWillDoLegPEo()[+] @i2 ==> + (All idI idR capI capR ksI ksR tk ni nr stk #k1 . + ResponderFinishedLegPairing(idR, capR, ksR, idI, capI, ksI, tk, nr, ni, stk) @k1 ==> + not (Ex #k2 . K(stk) @k2 ) + ) +" + +lemma legPEi_legPEo_double_impersonation: +" + All #i1 #i2 . + InitWillDoLegPEi()[+] @i1 & RespWillDoLegPEo()[+] @i2 ==> + (All idI1 idR1 capI1 capR1 ksI1 ksR1 tk1 ni1 nr1 stk1 idI2 idR2 capI2 capR2 ksI2 ksR2 tk2 ni2 nr2 stk2 #j1 #j2 . + InitiatorFinishedLegPairing(idI1, capI1, ksI1, idR1, capR1, ksR1, tk1, ni1, nr1, stk1) @j1 & + ResponderFinishedLegPairing(idR2, capR2, ksR2, idI2, capI2, ksI2, tk2, nr2, ni2, stk2) @j2 ==> + not (Ex #k1 #k2 . + K(stk1) @k1 & K(stk2) @k2 + ) + ) +" + +#endif + +/*******************************************/ +/* End lemmas about LegPEi-LegPEo exchange */ +/*******************************************/ + +/****************************************/ +/* Lemmas about LegPEi-LegPEio exchange */ +/****************************************/ + +#ifdef LegPEiLegPEio +lemma legPEi_legPEio_functional: exists-trace +" + Ex #i1 #i2 . + InitWillDoLegPEi()[+] @i1 & RespWillDoLegPEio()[+] @i2 & + (Ex idI1 idR1 capI1 capR1 ksI1 ksR1 tk1 ni1 nr1 stk1 idI2 idR2 capI2 capR2 ksI2 ksR2 tk2 ni2 nr2 stk2 #j1 #j2 . + InitiatorFinishedLegPairing(idI1, capI1, ksI1, idR1, capR1, ksR1, tk1, ni1, nr1, stk1) @j1 & + ResponderFinishedLegPairing(idR2, capR2, ksR2, idI2, capI2, ksI2, tk2, nr2, ni2, stk2) @j2 + ) +" + +lemma legPEi_legPEio_auth_init: +" + All #i1 #i2 . + InitWillDoLegPEi()[+] @i1 & RespWillDoLegPEio()[+] @i2 ==> + (All idI idR capI capR ksI ksR tk ni nr stk #k1 . + InitiatorFinishedLegPairing(idI, capI, ksI, idR, capR, ksR, tk, ni, nr, stk) @k1 ==> + (Ex ci cr #k2 . + RespSentRandom(idR, capR, ksR, idI, capI, ksI, tk, nr, ni, cr, ci) @k2 + ) + ) +" + +lemma legPEi_legPEio_auth_resp: +" + All #i1 #i2 . + InitWillDoLegPEi()[+] @i1 & RespWillDoLegPEio()[+] @i2 ==> + (All idI idR capI capR ksI ksR tk ni nr stk #k1 . + ResponderFinishedLegPairing(idR, capR, ksR, idI, capI, ksI, tk, nr, ni, stk) @k1 ==> + (Ex ci cr #k2 . + InitSentRandom(idI, capI, ksI, idR, capR, ksR, tk, ni, ci, cr) @k2 + ) + ) +" + +lemma legPEi_legPEio_weaksecret_init: +" + All #i1 #i2 . + InitWillDoLegPEi()[+] @i1 & RespWillDoLegPEio()[+] @i2 ==> + (All idI idR capI capR ksI ksR tk ni nr stk #k1 . + InitiatorFinishedLegPairing(idI, capI, ksI, idR, capR, ksR, tk, ni, nr, stk) @k1 ==> + not (Ex #k2 . K(stk) @k2 ) + ) +" + +lemma legPEi_legPEio_weaksecret_resp: +" + All #i1 #i2 . + InitWillDoLegPEi()[+] @i1 & RespWillDoLegPEio()[+] @i2 ==> + (All idI idR capI capR ksI ksR tk ni nr stk #k1 . + ResponderFinishedLegPairing(idR, capR, ksR, idI, capI, ksI, tk, nr, ni, stk) @k1 ==> + not (Ex #k2 . K(stk) @k2 ) + ) +" + +lemma legPEi_legPEio_double_impersonation: +" + All #i1 #i2 . + InitWillDoLegPEi()[+] @i1 & RespWillDoLegPEio()[+] @i2 ==> + (All idI1 idR1 capI1 capR1 ksI1 ksR1 tk1 ni1 nr1 stk1 idI2 idR2 capI2 capR2 ksI2 ksR2 tk2 ni2 nr2 stk2 #j1 #j2 . + InitiatorFinishedLegPairing(idI1, capI1, ksI1, idR1, capR1, ksR1, tk1, ni1, nr1, stk1) @j1 & + ResponderFinishedLegPairing(idR2, capR2, ksR2, idI2, capI2, ksI2, tk2, nr2, ni2, stk2) @j2 ==> + not (Ex #k1 #k2 . + K(stk1) @k1 & K(stk2) @k2 + ) + ) +" + +#endif + +/********************************************/ +/* End lemmas about LegPEi-LegPEio exchange */ +/********************************************/ + +/***************************************/ +/* Lemmas about LegPEi-LegOOB exchange */ +/***************************************/ + +#ifdef LegPEiLegOOB +lemma legPEi_legOOB_functional: exists-trace +" + Ex #i1 #i2 . + InitWillDoLegPEi()[+] @i1 & RespWillDoLegOOB()[+] @i2 & + (Ex idI1 idR1 capI1 capR1 ksI1 ksR1 tk1 ni1 nr1 stk1 idI2 idR2 capI2 capR2 ksI2 ksR2 tk2 ni2 nr2 stk2 #j1 #j2 . + InitiatorFinishedLegPairing(idI1, capI1, ksI1, idR1, capR1, ksR1, tk1, ni1, nr1, stk1) @j1 & + ResponderFinishedLegPairing(idR2, capR2, ksR2, idI2, capI2, ksI2, tk2, nr2, ni2, stk2) @j2 + ) +" + +lemma legPEi_legOOB_auth_init: +" + All #i1 #i2 . + InitWillDoLegPEi()[+] @i1 & RespWillDoLegOOB()[+] @i2 ==> + (All idI idR capI capR ksI ksR tk ni nr stk #k1 . + InitiatorFinishedLegPairing(idI, capI, ksI, idR, capR, ksR, tk, ni, nr, stk) @k1 ==> + (Ex ci cr #k2 . + RespSentRandom(idR, capR, ksR, idI, capI, ksI, tk, nr, ni, cr, ci) @k2 + ) + ) +" + +lemma legPEi_legOOB_auth_resp: +" + All #i1 #i2 . + InitWillDoLegPEi()[+] @i1 & RespWillDoLegOOB()[+] @i2 ==> + (All idI idR capI capR ksI ksR tk ni nr stk #k1 . + ResponderFinishedLegPairing(idR, capR, ksR, idI, capI, ksI, tk, nr, ni, stk) @k1 ==> + (Ex ci cr #k2 . + InitSentRandom(idI, capI, ksI, idR, capR, ksR, tk, ni, ci, cr) @k2 + ) + ) +" + +lemma legPEi_legOOB_weaksecret_init: +" + All #i1 #i2 . + InitWillDoLegPEi()[+] @i1 & RespWillDoLegOOB()[+] @i2 ==> + (All idI idR capI capR ksI ksR tk ni nr stk #k1 . + InitiatorFinishedLegPairing(idI, capI, ksI, idR, capR, ksR, tk, ni, nr, stk) @k1 ==> + not (Ex #k2 . K(stk) @k2 ) + ) +" + +lemma legPEi_legOOB_weaksecret_resp: +" + All #i1 #i2 . + InitWillDoLegPEi()[+] @i1 & RespWillDoLegOOB()[+] @i2 ==> + (All idI idR capI capR ksI ksR tk ni nr stk #k1 . + ResponderFinishedLegPairing(idR, capR, ksR, idI, capI, ksI, tk, nr, ni, stk) @k1 ==> + not (Ex #k2 . K(stk) @k2 ) + ) +" + +lemma legPEi_legOOB_double_impersonation: +" + All #i1 #i2 . + InitWillDoLegPEi()[+] @i1 & RespWillDoLegOOB()[+] @i2 ==> + (All idI1 idR1 capI1 capR1 ksI1 ksR1 tk1 ni1 nr1 stk1 idI2 idR2 capI2 capR2 ksI2 ksR2 tk2 ni2 nr2 stk2 #j1 #j2 . + InitiatorFinishedLegPairing(idI1, capI1, ksI1, idR1, capR1, ksR1, tk1, ni1, nr1, stk1) @j1 & + ResponderFinishedLegPairing(idR2, capR2, ksR2, idI2, capI2, ksI2, tk2, nr2, ni2, stk2) @j2 ==> + not (Ex #k1 #k2 . + K(stk1) @k1 & K(stk2) @k2 + ) + ) +" + +#endif + +/*******************************************/ +/* End lemmas about LegPEi-LegOOB exchange */ +/*******************************************/ + +/**************************************/ +/* Lemmas about LegPEo-LegJW exchange */ +/**************************************/ + +#ifdef LegPEoLegJW +lemma legPEo_legJW_functional: exists-trace +" + Ex #i1 #i2 . + InitWillDoLegPEo()[+] @i1 & RespWillDoLegJW()[+] @i2 & + (Ex idI1 idR1 capI1 capR1 ksI1 ksR1 tk1 ni1 nr1 stk1 idI2 idR2 capI2 capR2 ksI2 ksR2 tk2 ni2 nr2 stk2 #j1 #j2 . + InitiatorFinishedLegPairing(idI1, capI1, ksI1, idR1, capR1, ksR1, tk1, ni1, nr1, stk1) @j1 & + ResponderFinishedLegPairing(idR2, capR2, ksR2, idI2, capI2, ksI2, tk2, nr2, ni2, stk2) @j2 + ) +" + +lemma legPEo_legJW_auth_init: +" + All #i1 #i2 . + InitWillDoLegPEo()[+] @i1 & RespWillDoLegJW()[+] @i2 ==> + (All idI idR capI capR ksI ksR tk ni nr stk #k1 . + InitiatorFinishedLegPairing(idI, capI, ksI, idR, capR, ksR, tk, ni, nr, stk) @k1 ==> + (Ex ci cr #k2 . + RespSentRandom(idR, capR, ksR, idI, capI, ksI, tk, nr, ni, cr, ci) @k2 + ) + ) +" + +lemma legPEo_legJW_auth_resp: +" + All #i1 #i2 . + InitWillDoLegPEo()[+] @i1 & RespWillDoLegJW()[+] @i2 ==> + (All idI idR capI capR ksI ksR tk ni nr stk #k1 . + ResponderFinishedLegPairing(idR, capR, ksR, idI, capI, ksI, tk, nr, ni, stk) @k1 ==> + (Ex ci cr #k2 . + InitSentRandom(idI, capI, ksI, idR, capR, ksR, tk, ni, ci, cr) @k2 + ) + ) +" + +lemma legPEo_legJW_weaksecret_init: +" + All #i1 #i2 . + InitWillDoLegPEo()[+] @i1 & RespWillDoLegJW()[+] @i2 ==> + (All idI idR capI capR ksI ksR tk ni nr stk #k1 . + InitiatorFinishedLegPairing(idI, capI, ksI, idR, capR, ksR, tk, ni, nr, stk) @k1 ==> + not (Ex #k2 . K(stk) @k2 ) + ) +" + +lemma legPEo_legJW_weaksecret_resp: +" + All #i1 #i2 . + InitWillDoLegPEo()[+] @i1 & RespWillDoLegJW()[+] @i2 ==> + (All idI idR capI capR ksI ksR tk ni nr stk #k1 . + ResponderFinishedLegPairing(idR, capR, ksR, idI, capI, ksI, tk, nr, ni, stk) @k1 ==> + not (Ex #k2 . K(stk) @k2 ) + ) +" + +lemma legPEo_legJW_double_impersonation: +" + All #i1 #i2 . + InitWillDoLegPEo()[+] @i1 & RespWillDoLegJW()[+] @i2 ==> + (All idI1 idR1 capI1 capR1 ksI1 ksR1 tk1 ni1 nr1 stk1 idI2 idR2 capI2 capR2 ksI2 ksR2 tk2 ni2 nr2 stk2 #j1 #j2 . + InitiatorFinishedLegPairing(idI1, capI1, ksI1, idR1, capR1, ksR1, tk1, ni1, nr1, stk1) @j1 & + ResponderFinishedLegPairing(idR2, capR2, ksR2, idI2, capI2, ksI2, tk2, nr2, ni2, stk2) @j2 ==> + not (Ex #k1 #k2 . + K(stk1) @k1 & K(stk2) @k2 + ) + ) +" + +#endif + +/******************************************/ +/* End lemmas about LegPEo-LegJW exchange */ +/******************************************/ + +/***************************************/ +/* Lemmas about LegPEo-LegPEi exchange */ +/***************************************/ + +#ifdef LegPEoLegPEi +lemma legPEo_legPEi_functional: exists-trace +" + Ex #i1 #i2 . + InitWillDoLegPEo()[+] @i1 & RespWillDoLegPEi()[+] @i2 & + (Ex idI1 idR1 capI1 capR1 ksI1 ksR1 tk1 ni1 nr1 stk1 idI2 idR2 capI2 capR2 ksI2 ksR2 tk2 ni2 nr2 stk2 #j1 #j2 . + InitiatorFinishedLegPairing(idI1, capI1, ksI1, idR1, capR1, ksR1, tk1, ni1, nr1, stk1) @j1 & + ResponderFinishedLegPairing(idR2, capR2, ksR2, idI2, capI2, ksI2, tk2, nr2, ni2, stk2) @j2 + ) +" + +lemma legPEo_legPEi_auth_init: +" + All #i1 #i2 . + InitWillDoLegPEo()[+] @i1 & RespWillDoLegPEi()[+] @i2 ==> + (All idI idR capI capR ksI ksR tk ni nr stk #k1 . + InitiatorFinishedLegPairing(idI, capI, ksI, idR, capR, ksR, tk, ni, nr, stk) @k1 ==> + (Ex ci cr #k2 . + RespSentRandom(idR, capR, ksR, idI, capI, ksI, tk, nr, ni, cr, ci) @k2 + ) + ) +" + +lemma legPEo_legPEi_auth_resp: +" + All #i1 #i2 . + InitWillDoLegPEo()[+] @i1 & RespWillDoLegPEi()[+] @i2 ==> + (All idI idR capI capR ksI ksR tk ni nr stk #k1 . + ResponderFinishedLegPairing(idR, capR, ksR, idI, capI, ksI, tk, nr, ni, stk) @k1 ==> + (Ex ci cr #k2 . + InitSentRandom(idI, capI, ksI, idR, capR, ksR, tk, ni, ci, cr) @k2 + ) + ) +" + +lemma legPEo_legPEi_weaksecret_init: +" + All #i1 #i2 . + InitWillDoLegPEo()[+] @i1 & RespWillDoLegPEi()[+] @i2 ==> + (All idI idR capI capR ksI ksR tk ni nr stk #k1 . + InitiatorFinishedLegPairing(idI, capI, ksI, idR, capR, ksR, tk, ni, nr, stk) @k1 ==> + not (Ex #k2 . K(stk) @k2 ) + ) +" + +lemma legPEo_legPEi_weaksecret_resp: +" + All #i1 #i2 . + InitWillDoLegPEo()[+] @i1 & RespWillDoLegPEi()[+] @i2 ==> + (All idI idR capI capR ksI ksR tk ni nr stk #k1 . + ResponderFinishedLegPairing(idR, capR, ksR, idI, capI, ksI, tk, nr, ni, stk) @k1 ==> + not (Ex #k2 . K(stk) @k2 ) + ) +" + +lemma legPEo_legPEi_double_impersonation: +" + All #i1 #i2 . + InitWillDoLegPEo()[+] @i1 & RespWillDoLegPEi()[+] @i2 ==> + (All idI1 idR1 capI1 capR1 ksI1 ksR1 tk1 ni1 nr1 stk1 idI2 idR2 capI2 capR2 ksI2 ksR2 tk2 ni2 nr2 stk2 #j1 #j2 . + InitiatorFinishedLegPairing(idI1, capI1, ksI1, idR1, capR1, ksR1, tk1, ni1, nr1, stk1) @j1 & + ResponderFinishedLegPairing(idR2, capR2, ksR2, idI2, capI2, ksI2, tk2, nr2, ni2, stk2) @j2 ==> + not (Ex #k1 #k2 . + K(stk1) @k1 & K(stk2) @k2 + ) + ) +" + +#endif + +/*******************************************/ +/* End lemmas about LegPEo-LegPEi exchange */ +/*******************************************/ + +/***************************************/ +/* Lemmas about LegPEo-LegPEo exchange */ +/***************************************/ + +#ifdef LegPEoLegPEo +lemma legPEo_legPEo_functional: exists-trace +" + Ex #i1 #i2 . + InitWillDoLegPEo()[+] @i1 & RespWillDoLegPEo()[+] @i2 & + (Ex idI1 idR1 capI1 capR1 ksI1 ksR1 tk1 ni1 nr1 stk1 idI2 idR2 capI2 capR2 ksI2 ksR2 tk2 ni2 nr2 stk2 #j1 #j2 . + InitiatorFinishedLegPairing(idI1, capI1, ksI1, idR1, capR1, ksR1, tk1, ni1, nr1, stk1) @j1 & + ResponderFinishedLegPairing(idR2, capR2, ksR2, idI2, capI2, ksI2, tk2, nr2, ni2, stk2) @j2 + ) +" + +lemma legPEo_legPEo_auth_init: +" + All #i1 #i2 . + InitWillDoLegPEo()[+] @i1 & RespWillDoLegPEo()[+] @i2 ==> + (All idI idR capI capR ksI ksR tk ni nr stk #k1 . + InitiatorFinishedLegPairing(idI, capI, ksI, idR, capR, ksR, tk, ni, nr, stk) @k1 ==> + (Ex ci cr #k2 . + RespSentRandom(idR, capR, ksR, idI, capI, ksI, tk, nr, ni, cr, ci) @k2 + ) + ) +" + +lemma legPEo_legPEo_auth_resp: +" + All #i1 #i2 . + InitWillDoLegPEo()[+] @i1 & RespWillDoLegPEo()[+] @i2 ==> + (All idI idR capI capR ksI ksR tk ni nr stk #k1 . + ResponderFinishedLegPairing(idR, capR, ksR, idI, capI, ksI, tk, nr, ni, stk) @k1 ==> + (Ex ci cr #k2 . + InitSentRandom(idI, capI, ksI, idR, capR, ksR, tk, ni, ci, cr) @k2 + ) + ) +" + +lemma legPEo_legPEo_weaksecret_init: +" + All #i1 #i2 . + InitWillDoLegPEo()[+] @i1 & RespWillDoLegPEo()[+] @i2 ==> + (All idI idR capI capR ksI ksR tk ni nr stk #k1 . + InitiatorFinishedLegPairing(idI, capI, ksI, idR, capR, ksR, tk, ni, nr, stk) @k1 ==> + not (Ex #k2 . K(stk) @k2 ) + ) +" + +lemma legPEo_legPEo_weaksecret_resp: +" + All #i1 #i2 . + InitWillDoLegPEo()[+] @i1 & RespWillDoLegPEo()[+] @i2 ==> + (All idI idR capI capR ksI ksR tk ni nr stk #k1 . + ResponderFinishedLegPairing(idR, capR, ksR, idI, capI, ksI, tk, nr, ni, stk) @k1 ==> + not (Ex #k2 . K(stk) @k2 ) + ) +" + +lemma legPEo_legPEo_double_impersonation: +" + All #i1 #i2 . + InitWillDoLegPEo()[+] @i1 & RespWillDoLegPEo()[+] @i2 ==> + (All idI1 idR1 capI1 capR1 ksI1 ksR1 tk1 ni1 nr1 stk1 idI2 idR2 capI2 capR2 ksI2 ksR2 tk2 ni2 nr2 stk2 #j1 #j2 . + InitiatorFinishedLegPairing(idI1, capI1, ksI1, idR1, capR1, ksR1, tk1, ni1, nr1, stk1) @j1 & + ResponderFinishedLegPairing(idR2, capR2, ksR2, idI2, capI2, ksI2, tk2, nr2, ni2, stk2) @j2 ==> + not (Ex #k1 #k2 . + K(stk1) @k1 & K(stk2) @k2 + ) + ) +" + +#endif + +/*******************************************/ +/* End lemmas about LegPEo-LegPEo exchange */ +/*******************************************/ + +/****************************************/ +/* Lemmas about LegPEo-LegPEio exchange */ +/****************************************/ + +#ifdef LegPEoLegPEio +lemma legPEo_legPEio_functional: exists-trace +" + Ex #i1 #i2 . + InitWillDoLegPEo()[+] @i1 & RespWillDoLegPEio()[+] @i2 & + (Ex idI1 idR1 capI1 capR1 ksI1 ksR1 tk1 ni1 nr1 stk1 idI2 idR2 capI2 capR2 ksI2 ksR2 tk2 ni2 nr2 stk2 #j1 #j2 . + InitiatorFinishedLegPairing(idI1, capI1, ksI1, idR1, capR1, ksR1, tk1, ni1, nr1, stk1) @j1 & + ResponderFinishedLegPairing(idR2, capR2, ksR2, idI2, capI2, ksI2, tk2, nr2, ni2, stk2) @j2 + ) +" + +lemma legPEo_legPEio_auth_init: +" + All #i1 #i2 . + InitWillDoLegPEo()[+] @i1 & RespWillDoLegPEio()[+] @i2 ==> + (All idI idR capI capR ksI ksR tk ni nr stk #k1 . + InitiatorFinishedLegPairing(idI, capI, ksI, idR, capR, ksR, tk, ni, nr, stk) @k1 ==> + (Ex ci cr #k2 . + RespSentRandom(idR, capR, ksR, idI, capI, ksI, tk, nr, ni, cr, ci) @k2 + ) + ) +" + +lemma legPEo_legPEio_auth_resp: +" + All #i1 #i2 . + InitWillDoLegPEo()[+] @i1 & RespWillDoLegPEio()[+] @i2 ==> + (All idI idR capI capR ksI ksR tk ni nr stk #k1 . + ResponderFinishedLegPairing(idR, capR, ksR, idI, capI, ksI, tk, nr, ni, stk) @k1 ==> + (Ex ci cr #k2 . + InitSentRandom(idI, capI, ksI, idR, capR, ksR, tk, ni, ci, cr) @k2 + ) + ) +" + +lemma legPEo_legPEio_weaksecret_init: +" + All #i1 #i2 . + InitWillDoLegPEo()[+] @i1 & RespWillDoLegPEio()[+] @i2 ==> + (All idI idR capI capR ksI ksR tk ni nr stk #k1 . + InitiatorFinishedLegPairing(idI, capI, ksI, idR, capR, ksR, tk, ni, nr, stk) @k1 ==> + not (Ex #k2 . K(stk) @k2 ) + ) +" + +lemma legPEo_legPEio_weaksecret_resp: +" + All #i1 #i2 . + InitWillDoLegPEo()[+] @i1 & RespWillDoLegPEio()[+] @i2 ==> + (All idI idR capI capR ksI ksR tk ni nr stk #k1 . + ResponderFinishedLegPairing(idR, capR, ksR, idI, capI, ksI, tk, nr, ni, stk) @k1 ==> + not (Ex #k2 . K(stk) @k2 ) + ) +" + +lemma legPEo_legPEio_double_impersonation: +" + All #i1 #i2 . + InitWillDoLegPEo()[+] @i1 & RespWillDoLegPEio()[+] @i2 ==> + (All idI1 idR1 capI1 capR1 ksI1 ksR1 tk1 ni1 nr1 stk1 idI2 idR2 capI2 capR2 ksI2 ksR2 tk2 ni2 nr2 stk2 #j1 #j2 . + InitiatorFinishedLegPairing(idI1, capI1, ksI1, idR1, capR1, ksR1, tk1, ni1, nr1, stk1) @j1 & + ResponderFinishedLegPairing(idR2, capR2, ksR2, idI2, capI2, ksI2, tk2, nr2, ni2, stk2) @j2 ==> + not (Ex #k1 #k2 . + K(stk1) @k1 & K(stk2) @k2 + ) + ) +" + +#endif + +/********************************************/ +/* End lemmas about LegPEo-LegPEio exchange */ +/********************************************/ + +/***************************************/ +/* Lemmas about LegPEo-LegOOB exchange */ +/***************************************/ + +#ifdef LegPEoLegOOB +lemma legPEo_legOOB_functional: exists-trace +" + Ex #i1 #i2 . + InitWillDoLegPEo()[+] @i1 & RespWillDoLegOOB()[+] @i2 & + (Ex idI1 idR1 capI1 capR1 ksI1 ksR1 tk1 ni1 nr1 stk1 idI2 idR2 capI2 capR2 ksI2 ksR2 tk2 ni2 nr2 stk2 #j1 #j2 . + InitiatorFinishedLegPairing(idI1, capI1, ksI1, idR1, capR1, ksR1, tk1, ni1, nr1, stk1) @j1 & + ResponderFinishedLegPairing(idR2, capR2, ksR2, idI2, capI2, ksI2, tk2, nr2, ni2, stk2) @j2 + ) +" + +lemma legPEo_legOOB_auth_init: +" + All #i1 #i2 . + InitWillDoLegPEo()[+] @i1 & RespWillDoLegOOB()[+] @i2 ==> + (All idI idR capI capR ksI ksR tk ni nr stk #k1 . + InitiatorFinishedLegPairing(idI, capI, ksI, idR, capR, ksR, tk, ni, nr, stk) @k1 ==> + (Ex ci cr #k2 . + RespSentRandom(idR, capR, ksR, idI, capI, ksI, tk, nr, ni, cr, ci) @k2 + ) + ) +" + +lemma legPEo_legOOB_auth_resp: +" + All #i1 #i2 . + InitWillDoLegPEo()[+] @i1 & RespWillDoLegOOB()[+] @i2 ==> + (All idI idR capI capR ksI ksR tk ni nr stk #k1 . + ResponderFinishedLegPairing(idR, capR, ksR, idI, capI, ksI, tk, nr, ni, stk) @k1 ==> + (Ex ci cr #k2 . + InitSentRandom(idI, capI, ksI, idR, capR, ksR, tk, ni, ci, cr) @k2 + ) + ) +" + +lemma legPEo_legOOB_weaksecret_init: +" + All #i1 #i2 . + InitWillDoLegPEo()[+] @i1 & RespWillDoLegOOB()[+] @i2 ==> + (All idI idR capI capR ksI ksR tk ni nr stk #k1 . + InitiatorFinishedLegPairing(idI, capI, ksI, idR, capR, ksR, tk, ni, nr, stk) @k1 ==> + not (Ex #k2 . K(stk) @k2 ) + ) +" + +lemma legPEo_legOOB_weaksecret_resp: +" + All #i1 #i2 . + InitWillDoLegPEo()[+] @i1 & RespWillDoLegOOB()[+] @i2 ==> + (All idI idR capI capR ksI ksR tk ni nr stk #k1 . + ResponderFinishedLegPairing(idR, capR, ksR, idI, capI, ksI, tk, nr, ni, stk) @k1 ==> + not (Ex #k2 . K(stk) @k2 ) + ) +" + +lemma legPEo_legOOB_double_impersonation: +" + All #i1 #i2 . + InitWillDoLegPEo()[+] @i1 & RespWillDoLegOOB()[+] @i2 ==> + (All idI1 idR1 capI1 capR1 ksI1 ksR1 tk1 ni1 nr1 stk1 idI2 idR2 capI2 capR2 ksI2 ksR2 tk2 ni2 nr2 stk2 #j1 #j2 . + InitiatorFinishedLegPairing(idI1, capI1, ksI1, idR1, capR1, ksR1, tk1, ni1, nr1, stk1) @j1 & + ResponderFinishedLegPairing(idR2, capR2, ksR2, idI2, capI2, ksI2, tk2, nr2, ni2, stk2) @j2 ==> + not (Ex #k1 #k2 . + K(stk1) @k1 & K(stk2) @k2 + ) + ) +" + +#endif + +/*******************************************/ +/* End lemmas about LegPEo-LegOOB exchange */ +/*******************************************/ + +/***************************************/ +/* Lemmas about LegPEio-LegJW exchange */ +/***************************************/ + +#ifdef LegPEioLegJW +lemma legPEio_legJW_functional: exists-trace +" + Ex #i1 #i2 . + InitWillDoLegPEio()[+] @i1 & RespWillDoLegJW()[+] @i2 & + (Ex idI1 idR1 capI1 capR1 ksI1 ksR1 tk1 ni1 nr1 stk1 idI2 idR2 capI2 capR2 ksI2 ksR2 tk2 ni2 nr2 stk2 #j1 #j2 . + InitiatorFinishedLegPairing(idI1, capI1, ksI1, idR1, capR1, ksR1, tk1, ni1, nr1, stk1) @j1 & + ResponderFinishedLegPairing(idR2, capR2, ksR2, idI2, capI2, ksI2, tk2, nr2, ni2, stk2) @j2 + ) +" + +lemma legPEio_legJW_auth_init: +" + All #i1 #i2 . + InitWillDoLegPEio()[+] @i1 & RespWillDoLegJW()[+] @i2 ==> + (All idI idR capI capR ksI ksR tk ni nr stk #k1 . + InitiatorFinishedLegPairing(idI, capI, ksI, idR, capR, ksR, tk, ni, nr, stk) @k1 ==> + (Ex ci cr #k2 . + RespSentRandom(idR, capR, ksR, idI, capI, ksI, tk, nr, ni, cr, ci) @k2 + ) + ) +" + +lemma legPEio_legJW_auth_resp: +" + All #i1 #i2 . + InitWillDoLegPEio()[+] @i1 & RespWillDoLegJW()[+] @i2 ==> + (All idI idR capI capR ksI ksR tk ni nr stk #k1 . + ResponderFinishedLegPairing(idR, capR, ksR, idI, capI, ksI, tk, nr, ni, stk) @k1 ==> + (Ex ci cr #k2 . + InitSentRandom(idI, capI, ksI, idR, capR, ksR, tk, ni, ci, cr) @k2 + ) + ) +" + +lemma legPEio_legJW_weaksecret_init: +" + All #i1 #i2 . + InitWillDoLegPEio()[+] @i1 & RespWillDoLegJW()[+] @i2 ==> + (All idI idR capI capR ksI ksR tk ni nr stk #k1 . + InitiatorFinishedLegPairing(idI, capI, ksI, idR, capR, ksR, tk, ni, nr, stk) @k1 ==> + not (Ex #k2 . K(stk) @k2 ) + ) +" + +lemma legPEio_legJW_weaksecret_resp: +" + All #i1 #i2 . + InitWillDoLegPEio()[+] @i1 & RespWillDoLegJW()[+] @i2 ==> + (All idI idR capI capR ksI ksR tk ni nr stk #k1 . + ResponderFinishedLegPairing(idR, capR, ksR, idI, capI, ksI, tk, nr, ni, stk) @k1 ==> + not (Ex #k2 . K(stk) @k2 ) + ) +" + +lemma legPEio_legJW_double_impersonation: +" + All #i1 #i2 . + InitWillDoLegPEio()[+] @i1 & RespWillDoLegJW()[+] @i2 ==> + (All idI1 idR1 capI1 capR1 ksI1 ksR1 tk1 ni1 nr1 stk1 idI2 idR2 capI2 capR2 ksI2 ksR2 tk2 ni2 nr2 stk2 #j1 #j2 . + InitiatorFinishedLegPairing(idI1, capI1, ksI1, idR1, capR1, ksR1, tk1, ni1, nr1, stk1) @j1 & + ResponderFinishedLegPairing(idR2, capR2, ksR2, idI2, capI2, ksI2, tk2, nr2, ni2, stk2) @j2 ==> + not (Ex #k1 #k2 . + K(stk1) @k1 & K(stk2) @k2 + ) + ) +" + +#endif + +/*******************************************/ +/* End lemmas about LegPEio-LegJW exchange */ +/*******************************************/ + +/****************************************/ +/* Lemmas about LegPEio-LegPEi exchange */ +/****************************************/ + +#ifdef LegPEioLegPEi +lemma legPEio_legPEi_functional: exists-trace +" + Ex #i1 #i2 . + InitWillDoLegPEio()[+] @i1 & RespWillDoLegPEi()[+] @i2 & + (Ex idI1 idR1 capI1 capR1 ksI1 ksR1 tk1 ni1 nr1 stk1 idI2 idR2 capI2 capR2 ksI2 ksR2 tk2 ni2 nr2 stk2 #j1 #j2 . + InitiatorFinishedLegPairing(idI1, capI1, ksI1, idR1, capR1, ksR1, tk1, ni1, nr1, stk1) @j1 & + ResponderFinishedLegPairing(idR2, capR2, ksR2, idI2, capI2, ksI2, tk2, nr2, ni2, stk2) @j2 + ) +" + +lemma legPEio_legPEi_auth_init: +" + All #i1 #i2 . + InitWillDoLegPEio()[+] @i1 & RespWillDoLegPEi()[+] @i2 ==> + (All idI idR capI capR ksI ksR tk ni nr stk #k1 . + InitiatorFinishedLegPairing(idI, capI, ksI, idR, capR, ksR, tk, ni, nr, stk) @k1 ==> + (Ex ci cr #k2 . + RespSentRandom(idR, capR, ksR, idI, capI, ksI, tk, nr, ni, cr, ci) @k2 + ) + ) +" + +lemma legPEio_legPEi_auth_resp: +" + All #i1 #i2 . + InitWillDoLegPEio()[+] @i1 & RespWillDoLegPEi()[+] @i2 ==> + (All idI idR capI capR ksI ksR tk ni nr stk #k1 . + ResponderFinishedLegPairing(idR, capR, ksR, idI, capI, ksI, tk, nr, ni, stk) @k1 ==> + (Ex ci cr #k2 . + InitSentRandom(idI, capI, ksI, idR, capR, ksR, tk, ni, ci, cr) @k2 + ) + ) +" + +lemma legPEio_legPEi_weaksecret_init: +" + All #i1 #i2 . + InitWillDoLegPEio()[+] @i1 & RespWillDoLegPEi()[+] @i2 ==> + (All idI idR capI capR ksI ksR tk ni nr stk #k1 . + InitiatorFinishedLegPairing(idI, capI, ksI, idR, capR, ksR, tk, ni, nr, stk) @k1 ==> + not (Ex #k2 . K(stk) @k2 ) + ) +" + +lemma legPEio_legPEi_weaksecret_resp: +" + All #i1 #i2 . + InitWillDoLegPEio()[+] @i1 & RespWillDoLegPEi()[+] @i2 ==> + (All idI idR capI capR ksI ksR tk ni nr stk #k1 . + ResponderFinishedLegPairing(idR, capR, ksR, idI, capI, ksI, tk, nr, ni, stk) @k1 ==> + not (Ex #k2 . K(stk) @k2 ) + ) +" + +lemma legPEio_legPEi_double_impersonation: +" + All #i1 #i2 . + InitWillDoLegPEio()[+] @i1 & RespWillDoLegPEi()[+] @i2 ==> + (All idI1 idR1 capI1 capR1 ksI1 ksR1 tk1 ni1 nr1 stk1 idI2 idR2 capI2 capR2 ksI2 ksR2 tk2 ni2 nr2 stk2 #j1 #j2 . + InitiatorFinishedLegPairing(idI1, capI1, ksI1, idR1, capR1, ksR1, tk1, ni1, nr1, stk1) @j1 & + ResponderFinishedLegPairing(idR2, capR2, ksR2, idI2, capI2, ksI2, tk2, nr2, ni2, stk2) @j2 ==> + not (Ex #k1 #k2 . + K(stk1) @k1 & K(stk2) @k2 + ) + ) +" + +#endif + +/********************************************/ +/* End lemmas about LegPEio-LegPEi exchange */ +/********************************************/ + +/****************************************/ +/* Lemmas about LegPEio-LegPEo exchange */ +/****************************************/ + +#ifdef LegPEioLegPEo +lemma legPEio_legPEo_functional: exists-trace +" + Ex #i1 #i2 . + InitWillDoLegPEio()[+] @i1 & RespWillDoLegPEo()[+] @i2 & + (Ex idI1 idR1 capI1 capR1 ksI1 ksR1 tk1 ni1 nr1 stk1 idI2 idR2 capI2 capR2 ksI2 ksR2 tk2 ni2 nr2 stk2 #j1 #j2 . + InitiatorFinishedLegPairing(idI1, capI1, ksI1, idR1, capR1, ksR1, tk1, ni1, nr1, stk1) @j1 & + ResponderFinishedLegPairing(idR2, capR2, ksR2, idI2, capI2, ksI2, tk2, nr2, ni2, stk2) @j2 + ) +" + +lemma legPEio_legPEo_auth_init: +" + All #i1 #i2 . + InitWillDoLegPEio()[+] @i1 & RespWillDoLegPEo()[+] @i2 ==> + (All idI idR capI capR ksI ksR tk ni nr stk #k1 . + InitiatorFinishedLegPairing(idI, capI, ksI, idR, capR, ksR, tk, ni, nr, stk) @k1 ==> + (Ex ci cr #k2 . + RespSentRandom(idR, capR, ksR, idI, capI, ksI, tk, nr, ni, cr, ci) @k2 + ) + ) +" + +lemma legPEio_legPEo_auth_resp: +" + All #i1 #i2 . + InitWillDoLegPEio()[+] @i1 & RespWillDoLegPEo()[+] @i2 ==> + (All idI idR capI capR ksI ksR tk ni nr stk #k1 . + ResponderFinishedLegPairing(idR, capR, ksR, idI, capI, ksI, tk, nr, ni, stk) @k1 ==> + (Ex ci cr #k2 . + InitSentRandom(idI, capI, ksI, idR, capR, ksR, tk, ni, ci, cr) @k2 + ) + ) +" + +lemma legPEio_legPEo_weaksecret_init: +" + All #i1 #i2 . + InitWillDoLegPEio()[+] @i1 & RespWillDoLegPEo()[+] @i2 ==> + (All idI idR capI capR ksI ksR tk ni nr stk #k1 . + InitiatorFinishedLegPairing(idI, capI, ksI, idR, capR, ksR, tk, ni, nr, stk) @k1 ==> + not (Ex #k2 . K(stk) @k2 ) + ) +" + +lemma legPEio_legPEo_weaksecret_resp: +" + All #i1 #i2 . + InitWillDoLegPEio()[+] @i1 & RespWillDoLegPEo()[+] @i2 ==> + (All idI idR capI capR ksI ksR tk ni nr stk #k1 . + ResponderFinishedLegPairing(idR, capR, ksR, idI, capI, ksI, tk, nr, ni, stk) @k1 ==> + not (Ex #k2 . K(stk) @k2 ) + ) +" + +lemma legPEio_legPEo_double_impersonation: +" + All #i1 #i2 . + InitWillDoLegPEio()[+] @i1 & RespWillDoLegPEo()[+] @i2 ==> + (All idI1 idR1 capI1 capR1 ksI1 ksR1 tk1 ni1 nr1 stk1 idI2 idR2 capI2 capR2 ksI2 ksR2 tk2 ni2 nr2 stk2 #j1 #j2 . + InitiatorFinishedLegPairing(idI1, capI1, ksI1, idR1, capR1, ksR1, tk1, ni1, nr1, stk1) @j1 & + ResponderFinishedLegPairing(idR2, capR2, ksR2, idI2, capI2, ksI2, tk2, nr2, ni2, stk2) @j2 ==> + not (Ex #k1 #k2 . + K(stk1) @k1 & K(stk2) @k2 + ) + ) +" + +#endif + +/********************************************/ +/* End lemmas about LegPEio-LegPEo exchange */ +/********************************************/ + +/*****************************************/ +/* Lemmas about LegPEio-LegPEio exchange */ +/*****************************************/ + +#ifdef LegPEioLegPEio +lemma legPEio_legPEio_functional: exists-trace +" + Ex #i1 #i2 . + InitWillDoLegPEio()[+] @i1 & RespWillDoLegPEio()[+] @i2 & + (Ex idI1 idR1 capI1 capR1 ksI1 ksR1 tk1 ni1 nr1 stk1 idI2 idR2 capI2 capR2 ksI2 ksR2 tk2 ni2 nr2 stk2 #j1 #j2 . + InitiatorFinishedLegPairing(idI1, capI1, ksI1, idR1, capR1, ksR1, tk1, ni1, nr1, stk1) @j1 & + ResponderFinishedLegPairing(idR2, capR2, ksR2, idI2, capI2, ksI2, tk2, nr2, ni2, stk2) @j2 + ) +" + +lemma legPEio_legPEio_auth_init: +" + All #i1 #i2 . + InitWillDoLegPEio()[+] @i1 & RespWillDoLegPEio()[+] @i2 ==> + (All idI idR capI capR ksI ksR tk ni nr stk #k1 . + InitiatorFinishedLegPairing(idI, capI, ksI, idR, capR, ksR, tk, ni, nr, stk) @k1 ==> + (Ex ci cr #k2 . + RespSentRandom(idR, capR, ksR, idI, capI, ksI, tk, nr, ni, cr, ci) @k2 + ) + ) +" + +lemma legPEio_legPEio_auth_resp: +" + All #i1 #i2 . + InitWillDoLegPEio()[+] @i1 & RespWillDoLegPEio()[+] @i2 ==> + (All idI idR capI capR ksI ksR tk ni nr stk #k1 . + ResponderFinishedLegPairing(idR, capR, ksR, idI, capI, ksI, tk, nr, ni, stk) @k1 ==> + (Ex ci cr #k2 . + InitSentRandom(idI, capI, ksI, idR, capR, ksR, tk, ni, ci, cr) @k2 + ) + ) +" + +lemma legPEio_legPEio_weaksecret_init: +" + All #i1 #i2 . + InitWillDoLegPEio()[+] @i1 & RespWillDoLegPEio()[+] @i2 ==> + (All idI idR capI capR ksI ksR tk ni nr stk #k1 . + InitiatorFinishedLegPairing(idI, capI, ksI, idR, capR, ksR, tk, ni, nr, stk) @k1 ==> + not (Ex #k2 . K(stk) @k2 ) + ) +" + +lemma legPEio_legPEio_weaksecret_resp: +" + All #i1 #i2 . + InitWillDoLegPEio()[+] @i1 & RespWillDoLegPEio()[+] @i2 ==> + (All idI idR capI capR ksI ksR tk ni nr stk #k1 . + ResponderFinishedLegPairing(idR, capR, ksR, idI, capI, ksI, tk, nr, ni, stk) @k1 ==> + not (Ex #k2 . K(stk) @k2 ) + ) +" + +lemma legPEio_legPEio_double_impersonation: +" + All #i1 #i2 . + InitWillDoLegPEio()[+] @i1 & RespWillDoLegPEio()[+] @i2 ==> + (All idI1 idR1 capI1 capR1 ksI1 ksR1 tk1 ni1 nr1 stk1 idI2 idR2 capI2 capR2 ksI2 ksR2 tk2 ni2 nr2 stk2 #j1 #j2 . + InitiatorFinishedLegPairing(idI1, capI1, ksI1, idR1, capR1, ksR1, tk1, ni1, nr1, stk1) @j1 & + ResponderFinishedLegPairing(idR2, capR2, ksR2, idI2, capI2, ksI2, tk2, nr2, ni2, stk2) @j2 ==> + not (Ex #k1 #k2 . + K(stk1) @k1 & K(stk2) @k2 + ) + ) +" + +#endif + +/*********************************************/ +/* End lemmas about LegPEio-LegPEio exchange */ +/*********************************************/ + +/****************************************/ +/* Lemmas about LegPEio-LegOOB exchange */ +/****************************************/ + +#ifdef LegPEioLegOOB +lemma legPEio_legOOB_functional: exists-trace +" + Ex #i1 #i2 . + InitWillDoLegPEio()[+] @i1 & RespWillDoLegOOB()[+] @i2 & + (Ex idI1 idR1 capI1 capR1 ksI1 ksR1 tk1 ni1 nr1 stk1 idI2 idR2 capI2 capR2 ksI2 ksR2 tk2 ni2 nr2 stk2 #j1 #j2 . + InitiatorFinishedLegPairing(idI1, capI1, ksI1, idR1, capR1, ksR1, tk1, ni1, nr1, stk1) @j1 & + ResponderFinishedLegPairing(idR2, capR2, ksR2, idI2, capI2, ksI2, tk2, nr2, ni2, stk2) @j2 + ) +" + +lemma legPEio_legOOB_auth_init: +" + All #i1 #i2 . + InitWillDoLegPEio()[+] @i1 & RespWillDoLegOOB()[+] @i2 ==> + (All idI idR capI capR ksI ksR tk ni nr stk #k1 . + InitiatorFinishedLegPairing(idI, capI, ksI, idR, capR, ksR, tk, ni, nr, stk) @k1 ==> + (Ex ci cr #k2 . + RespSentRandom(idR, capR, ksR, idI, capI, ksI, tk, nr, ni, cr, ci) @k2 + ) + ) +" + +lemma legPEio_legOOB_auth_resp: +" + All #i1 #i2 . + InitWillDoLegPEio()[+] @i1 & RespWillDoLegOOB()[+] @i2 ==> + (All idI idR capI capR ksI ksR tk ni nr stk #k1 . + ResponderFinishedLegPairing(idR, capR, ksR, idI, capI, ksI, tk, nr, ni, stk) @k1 ==> + (Ex ci cr #k2 . + InitSentRandom(idI, capI, ksI, idR, capR, ksR, tk, ni, ci, cr) @k2 + ) + ) +" + +lemma legPEio_legOOB_weaksecret_init: +" + All #i1 #i2 . + InitWillDoLegPEio()[+] @i1 & RespWillDoLegOOB()[+] @i2 ==> + (All idI idR capI capR ksI ksR tk ni nr stk #k1 . + InitiatorFinishedLegPairing(idI, capI, ksI, idR, capR, ksR, tk, ni, nr, stk) @k1 ==> + not (Ex #k2 . K(stk) @k2 ) + ) +" + +lemma legPEio_legOOB_weaksecret_resp: +" + All #i1 #i2 . + InitWillDoLegPEio()[+] @i1 & RespWillDoLegOOB()[+] @i2 ==> + (All idI idR capI capR ksI ksR tk ni nr stk #k1 . + ResponderFinishedLegPairing(idR, capR, ksR, idI, capI, ksI, tk, nr, ni, stk) @k1 ==> + not (Ex #k2 . K(stk) @k2 ) + ) +" + +lemma legPEio_legOOB_double_impersonation: +" + All #i1 #i2 . + InitWillDoLegPEio()[+] @i1 & RespWillDoLegOOB()[+] @i2 ==> + (All idI1 idR1 capI1 capR1 ksI1 ksR1 tk1 ni1 nr1 stk1 idI2 idR2 capI2 capR2 ksI2 ksR2 tk2 ni2 nr2 stk2 #j1 #j2 . + InitiatorFinishedLegPairing(idI1, capI1, ksI1, idR1, capR1, ksR1, tk1, ni1, nr1, stk1) @j1 & + ResponderFinishedLegPairing(idR2, capR2, ksR2, idI2, capI2, ksI2, tk2, nr2, ni2, stk2) @j2 ==> + not (Ex #k1 #k2 . + K(stk1) @k1 & K(stk2) @k2 + ) + ) +" + +#endif + +/********************************************/ +/* End lemmas about LegPEio-LegOOB exchange */ +/********************************************/ + +/**************************************/ +/* Lemmas about LegOOB-LegJW exchange */ +/**************************************/ + +#ifdef LegOOBLegJW +lemma legOOB_legJW_functional: exists-trace +" + Ex #i1 #i2 . + InitWillDoLegOOB()[+] @i1 & RespWillDoLegJW()[+] @i2 & + (Ex idI1 idR1 capI1 capR1 ksI1 ksR1 tk1 ni1 nr1 stk1 idI2 idR2 capI2 capR2 ksI2 ksR2 tk2 ni2 nr2 stk2 #j1 #j2 . + InitiatorFinishedLegPairing(idI1, capI1, ksI1, idR1, capR1, ksR1, tk1, ni1, nr1, stk1) @j1 & + ResponderFinishedLegPairing(idR2, capR2, ksR2, idI2, capI2, ksI2, tk2, nr2, ni2, stk2) @j2 + ) +" + +lemma legOOB_legJW_auth_init: +" + All #i1 #i2 . + InitWillDoLegOOB()[+] @i1 & RespWillDoLegJW()[+] @i2 ==> + (All idI idR capI capR ksI ksR tk ni nr stk #k1 . + InitiatorFinishedLegPairing(idI, capI, ksI, idR, capR, ksR, tk, ni, nr, stk) @k1 ==> + (Ex ci cr #k2 . + RespSentRandom(idR, capR, ksR, idI, capI, ksI, tk, nr, ni, cr, ci) @k2 + ) + ) +" + +lemma legOOB_legJW_auth_resp: +" + All #i1 #i2 . + InitWillDoLegOOB()[+] @i1 & RespWillDoLegJW()[+] @i2 ==> + (All idI idR capI capR ksI ksR tk ni nr stk #k1 . + ResponderFinishedLegPairing(idR, capR, ksR, idI, capI, ksI, tk, nr, ni, stk) @k1 ==> + (Ex ci cr #k2 . + InitSentRandom(idI, capI, ksI, idR, capR, ksR, tk, ni, ci, cr) @k2 + ) + ) +" + +lemma legOOB_legJW_weaksecret_init: +" + All #i1 #i2 . + InitWillDoLegOOB()[+] @i1 & RespWillDoLegJW()[+] @i2 ==> + (All idI idR capI capR ksI ksR tk ni nr stk #k1 . + InitiatorFinishedLegPairing(idI, capI, ksI, idR, capR, ksR, tk, ni, nr, stk) @k1 ==> + not (Ex #k2 . K(stk) @k2 ) + ) +" + +lemma legOOB_legJW_weaksecret_resp: +" + All #i1 #i2 . + InitWillDoLegOOB()[+] @i1 & RespWillDoLegJW()[+] @i2 ==> + (All idI idR capI capR ksI ksR tk ni nr stk #k1 . + ResponderFinishedLegPairing(idR, capR, ksR, idI, capI, ksI, tk, nr, ni, stk) @k1 ==> + not (Ex #k2 . K(stk) @k2 ) + ) +" + +lemma legOOB_legJW_double_impersonation: +" + All #i1 #i2 . + InitWillDoLegOOB()[+] @i1 & RespWillDoLegJW()[+] @i2 ==> + (All idI1 idR1 capI1 capR1 ksI1 ksR1 tk1 ni1 nr1 stk1 idI2 idR2 capI2 capR2 ksI2 ksR2 tk2 ni2 nr2 stk2 #j1 #j2 . + InitiatorFinishedLegPairing(idI1, capI1, ksI1, idR1, capR1, ksR1, tk1, ni1, nr1, stk1) @j1 & + ResponderFinishedLegPairing(idR2, capR2, ksR2, idI2, capI2, ksI2, tk2, nr2, ni2, stk2) @j2 ==> + not (Ex #k1 #k2 . + K(stk1) @k1 & K(stk2) @k2 + ) + ) +" + +#endif + +/******************************************/ +/* End lemmas about LegOOB-LegJW exchange */ +/******************************************/ + +/***************************************/ +/* Lemmas about LegOOB-LegPEi exchange */ +/***************************************/ + +#ifdef LegOOBLegPEi +lemma legOOB_legPEi_functional: exists-trace +" + Ex #i1 #i2 . + InitWillDoLegOOB()[+] @i1 & RespWillDoLegPEi()[+] @i2 & + (Ex idI1 idR1 capI1 capR1 ksI1 ksR1 tk1 ni1 nr1 stk1 idI2 idR2 capI2 capR2 ksI2 ksR2 tk2 ni2 nr2 stk2 #j1 #j2 . + InitiatorFinishedLegPairing(idI1, capI1, ksI1, idR1, capR1, ksR1, tk1, ni1, nr1, stk1) @j1 & + ResponderFinishedLegPairing(idR2, capR2, ksR2, idI2, capI2, ksI2, tk2, nr2, ni2, stk2) @j2 + ) +" + +lemma legOOB_legPEi_auth_init: +" + All #i1 #i2 . + InitWillDoLegOOB()[+] @i1 & RespWillDoLegPEi()[+] @i2 ==> + (All idI idR capI capR ksI ksR tk ni nr stk #k1 . + InitiatorFinishedLegPairing(idI, capI, ksI, idR, capR, ksR, tk, ni, nr, stk) @k1 ==> + (Ex ci cr #k2 . + RespSentRandom(idR, capR, ksR, idI, capI, ksI, tk, nr, ni, cr, ci) @k2 + ) + ) +" + +lemma legOOB_legPEi_auth_resp: +" + All #i1 #i2 . + InitWillDoLegOOB()[+] @i1 & RespWillDoLegPEi()[+] @i2 ==> + (All idI idR capI capR ksI ksR tk ni nr stk #k1 . + ResponderFinishedLegPairing(idR, capR, ksR, idI, capI, ksI, tk, nr, ni, stk) @k1 ==> + (Ex ci cr #k2 . + InitSentRandom(idI, capI, ksI, idR, capR, ksR, tk, ni, ci, cr) @k2 + ) + ) +" + +lemma legOOB_legPEi_weaksecret_init: +" + All #i1 #i2 . + InitWillDoLegOOB()[+] @i1 & RespWillDoLegPEi()[+] @i2 ==> + (All idI idR capI capR ksI ksR tk ni nr stk #k1 . + InitiatorFinishedLegPairing(idI, capI, ksI, idR, capR, ksR, tk, ni, nr, stk) @k1 ==> + not (Ex #k2 . K(stk) @k2 ) + ) +" + +lemma legOOB_legPEi_weaksecret_resp: +" + All #i1 #i2 . + InitWillDoLegOOB()[+] @i1 & RespWillDoLegPEi()[+] @i2 ==> + (All idI idR capI capR ksI ksR tk ni nr stk #k1 . + ResponderFinishedLegPairing(idR, capR, ksR, idI, capI, ksI, tk, nr, ni, stk) @k1 ==> + not (Ex #k2 . K(stk) @k2 ) + ) +" + +lemma legOOB_legPEi_double_impersonation: +" + All #i1 #i2 . + InitWillDoLegOOB()[+] @i1 & RespWillDoLegPEi()[+] @i2 ==> + (All idI1 idR1 capI1 capR1 ksI1 ksR1 tk1 ni1 nr1 stk1 idI2 idR2 capI2 capR2 ksI2 ksR2 tk2 ni2 nr2 stk2 #j1 #j2 . + InitiatorFinishedLegPairing(idI1, capI1, ksI1, idR1, capR1, ksR1, tk1, ni1, nr1, stk1) @j1 & + ResponderFinishedLegPairing(idR2, capR2, ksR2, idI2, capI2, ksI2, tk2, nr2, ni2, stk2) @j2 ==> + not (Ex #k1 #k2 . + K(stk1) @k1 & K(stk2) @k2 + ) + ) +" + +#endif + +/*******************************************/ +/* End lemmas about LegOOB-LegPEi exchange */ +/*******************************************/ + +/***************************************/ +/* Lemmas about LegOOB-LegPEo exchange */ +/***************************************/ + +#ifdef LegOOBLegPEo +lemma legOOB_legPEo_functional: exists-trace +" + Ex #i1 #i2 . + InitWillDoLegOOB()[+] @i1 & RespWillDoLegPEo()[+] @i2 & + (Ex idI1 idR1 capI1 capR1 ksI1 ksR1 tk1 ni1 nr1 stk1 idI2 idR2 capI2 capR2 ksI2 ksR2 tk2 ni2 nr2 stk2 #j1 #j2 . + InitiatorFinishedLegPairing(idI1, capI1, ksI1, idR1, capR1, ksR1, tk1, ni1, nr1, stk1) @j1 & + ResponderFinishedLegPairing(idR2, capR2, ksR2, idI2, capI2, ksI2, tk2, nr2, ni2, stk2) @j2 + ) +" + +lemma legOOB_legPEo_auth_init: +" + All #i1 #i2 . + InitWillDoLegOOB()[+] @i1 & RespWillDoLegPEo()[+] @i2 ==> + (All idI idR capI capR ksI ksR tk ni nr stk #k1 . + InitiatorFinishedLegPairing(idI, capI, ksI, idR, capR, ksR, tk, ni, nr, stk) @k1 ==> + (Ex ci cr #k2 . + RespSentRandom(idR, capR, ksR, idI, capI, ksI, tk, nr, ni, cr, ci) @k2 + ) + ) +" + +lemma legOOB_legPEo_auth_resp: +" + All #i1 #i2 . + InitWillDoLegOOB()[+] @i1 & RespWillDoLegPEo()[+] @i2 ==> + (All idI idR capI capR ksI ksR tk ni nr stk #k1 . + ResponderFinishedLegPairing(idR, capR, ksR, idI, capI, ksI, tk, nr, ni, stk) @k1 ==> + (Ex ci cr #k2 . + InitSentRandom(idI, capI, ksI, idR, capR, ksR, tk, ni, ci, cr) @k2 + ) + ) +" + +lemma legOOB_legPEo_weaksecret_init: +" + All #i1 #i2 . + InitWillDoLegOOB()[+] @i1 & RespWillDoLegPEo()[+] @i2 ==> + (All idI idR capI capR ksI ksR tk ni nr stk #k1 . + InitiatorFinishedLegPairing(idI, capI, ksI, idR, capR, ksR, tk, ni, nr, stk) @k1 ==> + not (Ex #k2 . K(stk) @k2 ) + ) +" + +lemma legOOB_legPEo_weaksecret_resp: +" + All #i1 #i2 . + InitWillDoLegOOB()[+] @i1 & RespWillDoLegPEo()[+] @i2 ==> + (All idI idR capI capR ksI ksR tk ni nr stk #k1 . + ResponderFinishedLegPairing(idR, capR, ksR, idI, capI, ksI, tk, nr, ni, stk) @k1 ==> + not (Ex #k2 . K(stk) @k2 ) + ) +" + +lemma legOOB_legPEo_double_impersonation: +" + All #i1 #i2 . + InitWillDoLegOOB()[+] @i1 & RespWillDoLegPEo()[+] @i2 ==> + (All idI1 idR1 capI1 capR1 ksI1 ksR1 tk1 ni1 nr1 stk1 idI2 idR2 capI2 capR2 ksI2 ksR2 tk2 ni2 nr2 stk2 #j1 #j2 . + InitiatorFinishedLegPairing(idI1, capI1, ksI1, idR1, capR1, ksR1, tk1, ni1, nr1, stk1) @j1 & + ResponderFinishedLegPairing(idR2, capR2, ksR2, idI2, capI2, ksI2, tk2, nr2, ni2, stk2) @j2 ==> + not (Ex #k1 #k2 . + K(stk1) @k1 & K(stk2) @k2 + ) + ) +" + +#endif + +/*******************************************/ +/* End lemmas about LegOOB-LegPEo exchange */ +/*******************************************/ + +/****************************************/ +/* Lemmas about LegOOB-LegPEio exchange */ +/****************************************/ + +#ifdef LegOOBLegPEio +lemma legOOB_legPEio_functional: exists-trace +" + Ex #i1 #i2 . + InitWillDoLegOOB()[+] @i1 & RespWillDoLegPEio()[+] @i2 & + (Ex idI1 idR1 capI1 capR1 ksI1 ksR1 tk1 ni1 nr1 stk1 idI2 idR2 capI2 capR2 ksI2 ksR2 tk2 ni2 nr2 stk2 #j1 #j2 . + InitiatorFinishedLegPairing(idI1, capI1, ksI1, idR1, capR1, ksR1, tk1, ni1, nr1, stk1) @j1 & + ResponderFinishedLegPairing(idR2, capR2, ksR2, idI2, capI2, ksI2, tk2, nr2, ni2, stk2) @j2 + ) +" + +lemma legOOB_legPEio_auth_init: +" + All #i1 #i2 . + InitWillDoLegOOB()[+] @i1 & RespWillDoLegPEio()[+] @i2 ==> + (All idI idR capI capR ksI ksR tk ni nr stk #k1 . + InitiatorFinishedLegPairing(idI, capI, ksI, idR, capR, ksR, tk, ni, nr, stk) @k1 ==> + (Ex ci cr #k2 . + RespSentRandom(idR, capR, ksR, idI, capI, ksI, tk, nr, ni, cr, ci) @k2 + ) + ) +" + +lemma legOOB_legPEio_auth_resp: +" + All #i1 #i2 . + InitWillDoLegOOB()[+] @i1 & RespWillDoLegPEio()[+] @i2 ==> + (All idI idR capI capR ksI ksR tk ni nr stk #k1 . + ResponderFinishedLegPairing(idR, capR, ksR, idI, capI, ksI, tk, nr, ni, stk) @k1 ==> + (Ex ci cr #k2 . + InitSentRandom(idI, capI, ksI, idR, capR, ksR, tk, ni, ci, cr) @k2 + ) + ) +" + +lemma legOOB_legPEio_weaksecret_init: +" + All #i1 #i2 . + InitWillDoLegOOB()[+] @i1 & RespWillDoLegPEio()[+] @i2 ==> + (All idI idR capI capR ksI ksR tk ni nr stk #k1 . + InitiatorFinishedLegPairing(idI, capI, ksI, idR, capR, ksR, tk, ni, nr, stk) @k1 ==> + not (Ex #k2 . K(stk) @k2 ) + ) +" + +lemma legOOB_legPEio_weaksecret_resp: +" + All #i1 #i2 . + InitWillDoLegOOB()[+] @i1 & RespWillDoLegPEio()[+] @i2 ==> + (All idI idR capI capR ksI ksR tk ni nr stk #k1 . + ResponderFinishedLegPairing(idR, capR, ksR, idI, capI, ksI, tk, nr, ni, stk) @k1 ==> + not (Ex #k2 . K(stk) @k2 ) + ) +" + +lemma legOOB_legPEio_double_impersonation: +" + All #i1 #i2 . + InitWillDoLegOOB()[+] @i1 & RespWillDoLegPEio()[+] @i2 ==> + (All idI1 idR1 capI1 capR1 ksI1 ksR1 tk1 ni1 nr1 stk1 idI2 idR2 capI2 capR2 ksI2 ksR2 tk2 ni2 nr2 stk2 #j1 #j2 . + InitiatorFinishedLegPairing(idI1, capI1, ksI1, idR1, capR1, ksR1, tk1, ni1, nr1, stk1) @j1 & + ResponderFinishedLegPairing(idR2, capR2, ksR2, idI2, capI2, ksI2, tk2, nr2, ni2, stk2) @j2 ==> + not (Ex #k1 #k2 . + K(stk1) @k1 & K(stk2) @k2 + ) + ) +" + +#endif + +/********************************************/ +/* End lemmas about LegOOB-LegPEio exchange */ +/********************************************/ + +/***************************************/ +/* Lemmas about LegOOB-LegOOB exchange */ +/***************************************/ + +#ifdef LegOOBLegOOB +lemma legOOB_legOOB_functional: exists-trace +" + Ex #i1 #i2 . + InitWillDoLegOOB()[+] @i1 & RespWillDoLegOOB()[+] @i2 & + (Ex idI1 idR1 capI1 capR1 ksI1 ksR1 tk1 ni1 nr1 stk1 idI2 idR2 capI2 capR2 ksI2 ksR2 tk2 ni2 nr2 stk2 #j1 #j2 . + InitiatorFinishedLegPairing(idI1, capI1, ksI1, idR1, capR1, ksR1, tk1, ni1, nr1, stk1) @j1 & + ResponderFinishedLegPairing(idR2, capR2, ksR2, idI2, capI2, ksI2, tk2, nr2, ni2, stk2) @j2 + ) +" + +lemma legOOB_legOOB_auth_init: +" + All #i1 #i2 . + InitWillDoLegOOB()[+] @i1 & RespWillDoLegOOB()[+] @i2 ==> + (All idI idR capI capR ksI ksR tk ni nr stk #k1 . + InitiatorFinishedLegPairing(idI, capI, ksI, idR, capR, ksR, tk, ni, nr, stk) @k1 ==> + (Ex ci cr #k2 . + RespSentRandom(idR, capR, ksR, idI, capI, ksI, tk, nr, ni, cr, ci) @k2 + ) + ) +" + +lemma legOOB_legOOB_auth_resp: +" + All #i1 #i2 . + InitWillDoLegOOB()[+] @i1 & RespWillDoLegOOB()[+] @i2 ==> + (All idI idR capI capR ksI ksR tk ni nr stk #k1 . + ResponderFinishedLegPairing(idR, capR, ksR, idI, capI, ksI, tk, nr, ni, stk) @k1 ==> + (Ex ci cr #k2 . + InitSentRandom(idI, capI, ksI, idR, capR, ksR, tk, ni, ci, cr) @k2 + ) + ) +" + +lemma legOOB_legOOB_weaksecret_init: +" + All #i1 #i2 . + InitWillDoLegOOB()[+] @i1 & RespWillDoLegOOB()[+] @i2 ==> + (All idI idR capI capR ksI ksR tk ni nr stk #k1 . + InitiatorFinishedLegPairing(idI, capI, ksI, idR, capR, ksR, tk, ni, nr, stk) @k1 ==> + not (Ex #k2 . K(stk) @k2 ) + ) +" + +lemma legOOB_legOOB_weaksecret_resp: +" + All #i1 #i2 . + InitWillDoLegOOB()[+] @i1 & RespWillDoLegOOB()[+] @i2 ==> + (All idI idR capI capR ksI ksR tk ni nr stk #k1 . + ResponderFinishedLegPairing(idR, capR, ksR, idI, capI, ksI, tk, nr, ni, stk) @k1 ==> + not (Ex #k2 . K(stk) @k2 ) + ) +" + +lemma legOOB_legOOB_double_impersonation: +" + All #i1 #i2 . + InitWillDoLegOOB()[+] @i1 & RespWillDoLegOOB()[+] @i2 ==> + (All idI1 idR1 capI1 capR1 ksI1 ksR1 tk1 ni1 nr1 stk1 idI2 idR2 capI2 capR2 ksI2 ksR2 tk2 ni2 nr2 stk2 #j1 #j2 . + InitiatorFinishedLegPairing(idI1, capI1, ksI1, idR1, capR1, ksR1, tk1, ni1, nr1, stk1) @j1 & + ResponderFinishedLegPairing(idR2, capR2, ksR2, idI2, capI2, ksI2, tk2, nr2, ni2, stk2) @j2 ==> + not (Ex #k1 #k2 . + K(stk1) @k1 & K(stk2) @k2 + ) + ) +" + +#endif + +/*******************************************/ +/* End lemmas about LegOOB-LegOOB exchange */ +/*******************************************/ + +/*************************************/ +/* Lemmas about SecJW-SecJW exchange */ +/*************************************/ + +#ifdef SecJWSecJW +lemma secJW_secJW_functional: exists-trace +" + Ex #i1 #i2 . + InitWillDoSecJW()[+] @i1 & RespWillDoSecJW()[+] @i2 & + (Ex idI1 idR1 capI1 capR1 ksI1 ksR1 pkI1 pkR1 dh1 ltk1 idI2 idR2 capI2 capR2 ksI2 ksR2 pkI2 pkR2 dh2 ltk2 #j1 #j2 . + InitiatorFinishedSecPairing(idI1, capI1, ksI1, idR1, capR1, ksR1, pkI1, pkR1, dh1, ltk1) @j1 & + ResponderFinishedSecPairing(idR2, capR2, ksI2, idI2, capI2, ksR2, pkR2, pkI2, dh2, ltk2) @j2 + ) +" + +lemma secJW_secJW_auth_init: +" + All #i1 #i2 . + InitWillDoSecJW()[+] @i1 & RespWillDoSecJW()[+] @i2 ==> + (All idI idR capI capR ksI ksR pkI pkR dh ltk #k1 . + InitiatorFinishedSecPairing(idI, capI, ksI, idR, capR, ksR, pkI, pkR, dh, ltk) @k1 ==> + (Ex ni nr ri rr ei er #k2 . + RespDoneDHKeyCheck(idR, capR, ksR, idI, capI, ksI, pkR, pkI, dh, nr, ni, rr, ri, er, ei) @k2 + ) + ) +" + +lemma secJW_secJW_auth_resp: +" + All #i1 #i2 . + InitWillDoSecJW()[+] @i1 & RespWillDoSecJW()[+] @i2 ==> + (All idI idR capI capR ksI ksR pkI pkR dh ltk #k1 . + ResponderFinishedSecPairing(idR, capR, ksR, idI, capI, ksI, pkR, pkI, dh, ltk) @k1 ==> + (Ex #k2 . + InitiatorFinishedSecPairing(idI, capI, ksI, idR, capR, ksR, pkI, pkR, dh, ltk) @k2 + ) + ) +" + +lemma secJW_secJW_weaksecret_init: +" + All #i1 #i2 . + InitWillDoSecJW()[+] @i1 & RespWillDoSecJW()[+] @i2 ==> + (All idI idR capI capR ksI ksR pkI pkR dh ltk #k1 . + InitiatorFinishedSecPairing(idI, capI, ksI, idR, capR, ksR, pkI, pkR, dh, ltk) @k1 ==> + not (Ex #k2 . K(ltk) @k2) + ) +" + +lemma secJW_secJW_weaksecret_resp: +" + All #i1 #i2 . + InitWillDoSecJW()[+] @i1 & RespWillDoSecJW()[+] @i2 ==> + (All idI idR capI capR ksI ksR pkI pkR dh ltk #k1 . + ResponderFinishedSecPairing(idR, capR, ksR, idI, capI, ksI, pkR, pkI, dh, ltk) @k1 ==> + not (Ex #k2 . K(ltk) @k2) + ) +" + +lemma secJW_secJW_double_impersonation: +" + All #i1 #i2 . + InitWillDoSecJW()[+] @i1 & RespWillDoSecJW()[+] @i2 ==> + (All idI1 idR1 capI1 capR1 ksI1 ksR1 pkI1 pkR1 dh1 ltk1 idI2 idR2 capI2 capR2 ksI2 ksR2 pkI2 pkR2 dh2 ltk2 #j1 #j2 . + InitiatorFinishedSecPairing(idI1, capI1, ksI1, idR1, capR1, ksR1, pkI1, pkR1, dh1, ltk1) @j1 & + ResponderFinishedSecPairing(idR2, capR2, ksR2, idI2, capI2, ksI2, pkR2, pkI2, dh2, ltk2) @j2 ==> + not (Ex #k1 #k2 . + K(ltk1) @k1 & K(ltk2) @k2 + ) + ) +" + +#endif + +/*****************************************/ +/* End lemmas about SecJW-SecJW exchange */ +/*****************************************/ + +/**************************************/ +/* Lemmas about SecJW-SecPEi exchange */ +/**************************************/ + +#ifdef SecJWSecPEi +lemma secJW_secPEi_functional: exists-trace +" + Ex #i1 #i2 . + InitWillDoSecJW()[+] @i1 & RespWillDoSecPEi()[+] @i2 & + (Ex idI1 idR1 capI1 capR1 ksI1 ksR1 pkI1 pkR1 dh1 ltk1 idI2 idR2 capI2 capR2 ksI2 ksR2 pkI2 pkR2 dh2 ltk2 #j1 #j2 . + InitiatorFinishedSecPairing(idI1, capI1, ksI1, idR1, capR1, ksR1, pkI1, pkR1, dh1, ltk1) @j1 & + ResponderFinishedSecPairing(idR2, capR2, ksI2, idI2, capI2, ksR2, pkR2, pkI2, dh2, ltk2) @j2 + ) +" + +lemma secJW_secPEi_auth_init: +" + All #i1 #i2 . + InitWillDoSecJW()[+] @i1 & RespWillDoSecPEi()[+] @i2 ==> + (All idI idR capI capR ksI ksR pkI pkR dh ltk #k1 . + InitiatorFinishedSecPairing(idI, capI, ksI, idR, capR, ksR, pkI, pkR, dh, ltk) @k1 ==> + (Ex ni nr ri rr ei er #k2 . + RespDoneDHKeyCheck(idR, capR, ksR, idI, capI, ksI, pkR, pkI, dh, nr, ni, rr, ri, er, ei) @k2 + ) + ) +" + +lemma secJW_secPEi_auth_resp: +" + All #i1 #i2 . + InitWillDoSecJW()[+] @i1 & RespWillDoSecPEi()[+] @i2 ==> + (All idI idR capI capR ksI ksR pkI pkR dh ltk #k1 . + ResponderFinishedSecPairing(idR, capR, ksR, idI, capI, ksI, pkR, pkI, dh, ltk) @k1 ==> + (Ex #k2 . + InitiatorFinishedSecPairing(idI, capI, ksI, idR, capR, ksR, pkI, pkR, dh, ltk) @k2 + ) + ) +" + +lemma secJW_secPEi_weaksecret_init: +" + All #i1 #i2 . + InitWillDoSecJW()[+] @i1 & RespWillDoSecPEi()[+] @i2 ==> + (All idI idR capI capR ksI ksR pkI pkR dh ltk #k1 . + InitiatorFinishedSecPairing(idI, capI, ksI, idR, capR, ksR, pkI, pkR, dh, ltk) @k1 ==> + not (Ex #k2 . K(ltk) @k2) + ) +" + +lemma secJW_secPEi_weaksecret_resp: +" + All #i1 #i2 . + InitWillDoSecJW()[+] @i1 & RespWillDoSecPEi()[+] @i2 ==> + (All idI idR capI capR ksI ksR pkI pkR dh ltk #k1 . + ResponderFinishedSecPairing(idR, capR, ksR, idI, capI, ksI, pkR, pkI, dh, ltk) @k1 ==> + not (Ex #k2 . K(ltk) @k2) + ) +" + +lemma secJW_secPEi_double_impersonation: +" + All #i1 #i2 . + InitWillDoSecJW()[+] @i1 & RespWillDoSecPEi()[+] @i2 ==> + (All idI1 idR1 capI1 capR1 ksI1 ksR1 pkI1 pkR1 dh1 ltk1 idI2 idR2 capI2 capR2 ksI2 ksR2 pkI2 pkR2 dh2 ltk2 #j1 #j2 . + InitiatorFinishedSecPairing(idI1, capI1, ksI1, idR1, capR1, ksR1, pkI1, pkR1, dh1, ltk1) @j1 & + ResponderFinishedSecPairing(idR2, capR2, ksR2, idI2, capI2, ksI2, pkR2, pkI2, dh2, ltk2) @j2 ==> + not (Ex #k1 #k2 . + K(ltk1) @k1 & K(ltk2) @k2 + ) + ) +" + +#endif + +/******************************************/ +/* End lemmas about SecJW-SecPEi exchange */ +/******************************************/ + +/**************************************/ +/* Lemmas about SecJW-SecPEo exchange */ +/**************************************/ + +#ifdef SecJWSecPEo +lemma secJW_secPEo_functional: exists-trace +" + Ex #i1 #i2 . + InitWillDoSecJW()[+] @i1 & RespWillDoSecPEo()[+] @i2 & + (Ex idI1 idR1 capI1 capR1 ksI1 ksR1 pkI1 pkR1 dh1 ltk1 idI2 idR2 capI2 capR2 ksI2 ksR2 pkI2 pkR2 dh2 ltk2 #j1 #j2 . + InitiatorFinishedSecPairing(idI1, capI1, ksI1, idR1, capR1, ksR1, pkI1, pkR1, dh1, ltk1) @j1 & + ResponderFinishedSecPairing(idR2, capR2, ksI2, idI2, capI2, ksR2, pkR2, pkI2, dh2, ltk2) @j2 + ) +" + +lemma secJW_secPEo_auth_init: +" + All #i1 #i2 . + InitWillDoSecJW()[+] @i1 & RespWillDoSecPEo()[+] @i2 ==> + (All idI idR capI capR ksI ksR pkI pkR dh ltk #k1 . + InitiatorFinishedSecPairing(idI, capI, ksI, idR, capR, ksR, pkI, pkR, dh, ltk) @k1 ==> + (Ex ni nr ri rr ei er #k2 . + RespDoneDHKeyCheck(idR, capR, ksR, idI, capI, ksI, pkR, pkI, dh, nr, ni, rr, ri, er, ei) @k2 + ) + ) +" + +lemma secJW_secPEo_auth_resp: +" + All #i1 #i2 . + InitWillDoSecJW()[+] @i1 & RespWillDoSecPEo()[+] @i2 ==> + (All idI idR capI capR ksI ksR pkI pkR dh ltk #k1 . + ResponderFinishedSecPairing(idR, capR, ksR, idI, capI, ksI, pkR, pkI, dh, ltk) @k1 ==> + (Ex #k2 . + InitiatorFinishedSecPairing(idI, capI, ksI, idR, capR, ksR, pkI, pkR, dh, ltk) @k2 + ) + ) +" + +lemma secJW_secPEo_weaksecret_init: +" + All #i1 #i2 . + InitWillDoSecJW()[+] @i1 & RespWillDoSecPEo()[+] @i2 ==> + (All idI idR capI capR ksI ksR pkI pkR dh ltk #k1 . + InitiatorFinishedSecPairing(idI, capI, ksI, idR, capR, ksR, pkI, pkR, dh, ltk) @k1 ==> + not (Ex #k2 . K(ltk) @k2) + ) +" + +lemma secJW_secPEo_weaksecret_resp: +" + All #i1 #i2 . + InitWillDoSecJW()[+] @i1 & RespWillDoSecPEo()[+] @i2 ==> + (All idI idR capI capR ksI ksR pkI pkR dh ltk #k1 . + ResponderFinishedSecPairing(idR, capR, ksR, idI, capI, ksI, pkR, pkI, dh, ltk) @k1 ==> + not (Ex #k2 . K(ltk) @k2) + ) +" + +lemma secJW_secPEo_double_impersonation: +" + All #i1 #i2 . + InitWillDoSecJW()[+] @i1 & RespWillDoSecPEo()[+] @i2 ==> + (All idI1 idR1 capI1 capR1 ksI1 ksR1 pkI1 pkR1 dh1 ltk1 idI2 idR2 capI2 capR2 ksI2 ksR2 pkI2 pkR2 dh2 ltk2 #j1 #j2 . + InitiatorFinishedSecPairing(idI1, capI1, ksI1, idR1, capR1, ksR1, pkI1, pkR1, dh1, ltk1) @j1 & + ResponderFinishedSecPairing(idR2, capR2, ksR2, idI2, capI2, ksI2, pkR2, pkI2, dh2, ltk2) @j2 ==> + not (Ex #k1 #k2 . + K(ltk1) @k1 & K(ltk2) @k2 + ) + ) +" + +#endif + +/******************************************/ +/* End lemmas about SecJW-SecPEo exchange */ +/******************************************/ + +/***************************************/ +/* Lemmas about SecJW-SecPEio exchange */ +/***************************************/ + +#ifdef SecJWSecPEio +lemma secJW_secPEio_functional: exists-trace +" + Ex #i1 #i2 . + InitWillDoSecJW()[+] @i1 & RespWillDoSecPEio()[+] @i2 & + (Ex idI1 idR1 capI1 capR1 ksI1 ksR1 pkI1 pkR1 dh1 ltk1 idI2 idR2 capI2 capR2 ksI2 ksR2 pkI2 pkR2 dh2 ltk2 #j1 #j2 . + InitiatorFinishedSecPairing(idI1, capI1, ksI1, idR1, capR1, ksR1, pkI1, pkR1, dh1, ltk1) @j1 & + ResponderFinishedSecPairing(idR2, capR2, ksI2, idI2, capI2, ksR2, pkR2, pkI2, dh2, ltk2) @j2 + ) +" + +lemma secJW_secPEio_auth_init: +" + All #i1 #i2 . + InitWillDoSecJW()[+] @i1 & RespWillDoSecPEio()[+] @i2 ==> + (All idI idR capI capR ksI ksR pkI pkR dh ltk #k1 . + InitiatorFinishedSecPairing(idI, capI, ksI, idR, capR, ksR, pkI, pkR, dh, ltk) @k1 ==> + (Ex ni nr ri rr ei er #k2 . + RespDoneDHKeyCheck(idR, capR, ksR, idI, capI, ksI, pkR, pkI, dh, nr, ni, rr, ri, er, ei) @k2 + ) + ) +" + +lemma secJW_secPEio_auth_resp: +" + All #i1 #i2 . + InitWillDoSecJW()[+] @i1 & RespWillDoSecPEio()[+] @i2 ==> + (All idI idR capI capR ksI ksR pkI pkR dh ltk #k1 . + ResponderFinishedSecPairing(idR, capR, ksR, idI, capI, ksI, pkR, pkI, dh, ltk) @k1 ==> + (Ex #k2 . + InitiatorFinishedSecPairing(idI, capI, ksI, idR, capR, ksR, pkI, pkR, dh, ltk) @k2 + ) + ) +" + +lemma secJW_secPEio_weaksecret_init: +" + All #i1 #i2 . + InitWillDoSecJW()[+] @i1 & RespWillDoSecPEio()[+] @i2 ==> + (All idI idR capI capR ksI ksR pkI pkR dh ltk #k1 . + InitiatorFinishedSecPairing(idI, capI, ksI, idR, capR, ksR, pkI, pkR, dh, ltk) @k1 ==> + not (Ex #k2 . K(ltk) @k2) + ) +" + +lemma secJW_secPEio_weaksecret_resp: +" + All #i1 #i2 . + InitWillDoSecJW()[+] @i1 & RespWillDoSecPEio()[+] @i2 ==> + (All idI idR capI capR ksI ksR pkI pkR dh ltk #k1 . + ResponderFinishedSecPairing(idR, capR, ksR, idI, capI, ksI, pkR, pkI, dh, ltk) @k1 ==> + not (Ex #k2 . K(ltk) @k2) + ) +" + +lemma secJW_secPEio_double_impersonation: +" + All #i1 #i2 . + InitWillDoSecJW()[+] @i1 & RespWillDoSecPEio()[+] @i2 ==> + (All idI1 idR1 capI1 capR1 ksI1 ksR1 pkI1 pkR1 dh1 ltk1 idI2 idR2 capI2 capR2 ksI2 ksR2 pkI2 pkR2 dh2 ltk2 #j1 #j2 . + InitiatorFinishedSecPairing(idI1, capI1, ksI1, idR1, capR1, ksR1, pkI1, pkR1, dh1, ltk1) @j1 & + ResponderFinishedSecPairing(idR2, capR2, ksR2, idI2, capI2, ksI2, pkR2, pkI2, dh2, ltk2) @j2 ==> + not (Ex #k1 #k2 . + K(ltk1) @k1 & K(ltk2) @k2 + ) + ) +" + +#endif + +/*******************************************/ +/* End lemmas about SecJW-SecPEio exchange */ +/*******************************************/ + +/*************************************/ +/* Lemmas about SecJW-SecNC exchange */ +/*************************************/ + +#ifdef SecJWSecNC +lemma secJW_secNC_functional: exists-trace +" + Ex #i1 #i2 . + InitWillDoSecJW()[+] @i1 & RespWillDoSecNC()[+] @i2 & + (Ex idI1 idR1 capI1 capR1 ksI1 ksR1 pkI1 pkR1 dh1 ltk1 idI2 idR2 capI2 capR2 ksI2 ksR2 pkI2 pkR2 dh2 ltk2 #j1 #j2 . + InitiatorFinishedSecPairing(idI1, capI1, ksI1, idR1, capR1, ksR1, pkI1, pkR1, dh1, ltk1) @j1 & + ResponderFinishedSecPairing(idR2, capR2, ksI2, idI2, capI2, ksR2, pkR2, pkI2, dh2, ltk2) @j2 + ) +" + +lemma secJW_secNC_auth_init: +" + All #i1 #i2 . + InitWillDoSecJW()[+] @i1 & RespWillDoSecNC()[+] @i2 ==> + (All idI idR capI capR ksI ksR pkI pkR dh ltk #k1 . + InitiatorFinishedSecPairing(idI, capI, ksI, idR, capR, ksR, pkI, pkR, dh, ltk) @k1 ==> + (Ex ni nr ri rr ei er #k2 . + RespDoneDHKeyCheck(idR, capR, ksR, idI, capI, ksI, pkR, pkI, dh, nr, ni, rr, ri, er, ei) @k2 + ) + ) +" + +lemma secJW_secNC_auth_resp: +" + All #i1 #i2 . + InitWillDoSecJW()[+] @i1 & RespWillDoSecNC()[+] @i2 ==> + (All idI idR capI capR ksI ksR pkI pkR dh ltk #k1 . + ResponderFinishedSecPairing(idR, capR, ksR, idI, capI, ksI, pkR, pkI, dh, ltk) @k1 ==> + (Ex #k2 . + InitiatorFinishedSecPairing(idI, capI, ksI, idR, capR, ksR, pkI, pkR, dh, ltk) @k2 + ) + ) +" + +lemma secJW_secNC_weaksecret_init: +" + All #i1 #i2 . + InitWillDoSecJW()[+] @i1 & RespWillDoSecNC()[+] @i2 ==> + (All idI idR capI capR ksI ksR pkI pkR dh ltk #k1 . + InitiatorFinishedSecPairing(idI, capI, ksI, idR, capR, ksR, pkI, pkR, dh, ltk) @k1 ==> + not (Ex #k2 . K(ltk) @k2) + ) +" + +lemma secJW_secNC_weaksecret_resp: +" + All #i1 #i2 . + InitWillDoSecJW()[+] @i1 & RespWillDoSecNC()[+] @i2 ==> + (All idI idR capI capR ksI ksR pkI pkR dh ltk #k1 . + ResponderFinishedSecPairing(idR, capR, ksR, idI, capI, ksI, pkR, pkI, dh, ltk) @k1 ==> + not (Ex #k2 . K(ltk) @k2) + ) +" + +lemma secJW_secNC_double_impersonation: +" + All #i1 #i2 . + InitWillDoSecJW()[+] @i1 & RespWillDoSecNC()[+] @i2 ==> + (All idI1 idR1 capI1 capR1 ksI1 ksR1 pkI1 pkR1 dh1 ltk1 idI2 idR2 capI2 capR2 ksI2 ksR2 pkI2 pkR2 dh2 ltk2 #j1 #j2 . + InitiatorFinishedSecPairing(idI1, capI1, ksI1, idR1, capR1, ksR1, pkI1, pkR1, dh1, ltk1) @j1 & + ResponderFinishedSecPairing(idR2, capR2, ksR2, idI2, capI2, ksI2, pkR2, pkI2, dh2, ltk2) @j2 ==> + not (Ex #k1 #k2 . + K(ltk1) @k1 & K(ltk2) @k2 + ) + ) +" + +#endif + +/*****************************************/ +/* End lemmas about SecJW-SecNC exchange */ +/*****************************************/ + +/***************************************/ +/* Lemmas about SecJW-SecOOBi exchange */ +/***************************************/ + +#ifdef SecJWSecOOBi +lemma secJW_secOOBi_functional: exists-trace +" + Ex #i1 #i2 . + InitWillDoSecJW()[+] @i1 & RespWillDoSecOOBi()[+] @i2 & + (Ex idI1 idR1 capI1 capR1 ksI1 ksR1 pkI1 pkR1 dh1 ltk1 idI2 idR2 capI2 capR2 ksI2 ksR2 pkI2 pkR2 dh2 ltk2 #j1 #j2 . + InitiatorFinishedSecPairing(idI1, capI1, ksI1, idR1, capR1, ksR1, pkI1, pkR1, dh1, ltk1) @j1 & + ResponderFinishedSecPairing(idR2, capR2, ksI2, idI2, capI2, ksR2, pkR2, pkI2, dh2, ltk2) @j2 + ) +" + +lemma secJW_secOOBi_auth_init: +" + All #i1 #i2 . + InitWillDoSecJW()[+] @i1 & RespWillDoSecOOBi()[+] @i2 ==> + (All idI idR capI capR ksI ksR pkI pkR dh ltk #k1 . + InitiatorFinishedSecPairing(idI, capI, ksI, idR, capR, ksR, pkI, pkR, dh, ltk) @k1 ==> + (Ex ni nr ri rr ei er #k2 . + RespDoneDHKeyCheck(idR, capR, ksR, idI, capI, ksI, pkR, pkI, dh, nr, ni, rr, ri, er, ei) @k2 + ) + ) +" + +lemma secJW_secOOBi_auth_resp: +" + All #i1 #i2 . + InitWillDoSecJW()[+] @i1 & RespWillDoSecOOBi()[+] @i2 ==> + (All idI idR capI capR ksI ksR pkI pkR dh ltk #k1 . + ResponderFinishedSecPairing(idR, capR, ksR, idI, capI, ksI, pkR, pkI, dh, ltk) @k1 ==> + (Ex #k2 . + InitiatorFinishedSecPairing(idI, capI, ksI, idR, capR, ksR, pkI, pkR, dh, ltk) @k2 + ) + ) +" + +lemma secJW_secOOBi_weaksecret_init: +" + All #i1 #i2 . + InitWillDoSecJW()[+] @i1 & RespWillDoSecOOBi()[+] @i2 ==> + (All idI idR capI capR ksI ksR pkI pkR dh ltk #k1 . + InitiatorFinishedSecPairing(idI, capI, ksI, idR, capR, ksR, pkI, pkR, dh, ltk) @k1 ==> + not (Ex #k2 . K(ltk) @k2) + ) +" + +lemma secJW_secOOBi_weaksecret_resp: +" + All #i1 #i2 . + InitWillDoSecJW()[+] @i1 & RespWillDoSecOOBi()[+] @i2 ==> + (All idI idR capI capR ksI ksR pkI pkR dh ltk #k1 . + ResponderFinishedSecPairing(idR, capR, ksR, idI, capI, ksI, pkR, pkI, dh, ltk) @k1 ==> + not (Ex #k2 . K(ltk) @k2) + ) +" + +lemma secJW_secOOBi_double_impersonation: +" + All #i1 #i2 . + InitWillDoSecJW()[+] @i1 & RespWillDoSecOOBi()[+] @i2 ==> + (All idI1 idR1 capI1 capR1 ksI1 ksR1 pkI1 pkR1 dh1 ltk1 idI2 idR2 capI2 capR2 ksI2 ksR2 pkI2 pkR2 dh2 ltk2 #j1 #j2 . + InitiatorFinishedSecPairing(idI1, capI1, ksI1, idR1, capR1, ksR1, pkI1, pkR1, dh1, ltk1) @j1 & + ResponderFinishedSecPairing(idR2, capR2, ksR2, idI2, capI2, ksI2, pkR2, pkI2, dh2, ltk2) @j2 ==> + not (Ex #k1 #k2 . + K(ltk1) @k1 & K(ltk2) @k2 + ) + ) +" + +#endif + +/*******************************************/ +/* End lemmas about SecJW-SecOOBi exchange */ +/*******************************************/ + +/***************************************/ +/* Lemmas about SecJW-SecOOBo exchange */ +/***************************************/ + +#ifdef SecJWSecOOBo +lemma secJW_secOOBo_functional: exists-trace +" + Ex #i1 #i2 . + InitWillDoSecJW()[+] @i1 & RespWillDoSecOOBo()[+] @i2 & + (Ex idI1 idR1 capI1 capR1 ksI1 ksR1 pkI1 pkR1 dh1 ltk1 idI2 idR2 capI2 capR2 ksI2 ksR2 pkI2 pkR2 dh2 ltk2 #j1 #j2 . + InitiatorFinishedSecPairing(idI1, capI1, ksI1, idR1, capR1, ksR1, pkI1, pkR1, dh1, ltk1) @j1 & + ResponderFinishedSecPairing(idR2, capR2, ksI2, idI2, capI2, ksR2, pkR2, pkI2, dh2, ltk2) @j2 + ) +" + +lemma secJW_secOOBo_auth_init: +" + All #i1 #i2 . + InitWillDoSecJW()[+] @i1 & RespWillDoSecOOBo()[+] @i2 ==> + (All idI idR capI capR ksI ksR pkI pkR dh ltk #k1 . + InitiatorFinishedSecPairing(idI, capI, ksI, idR, capR, ksR, pkI, pkR, dh, ltk) @k1 ==> + (Ex ni nr ri rr ei er #k2 . + RespDoneDHKeyCheck(idR, capR, ksR, idI, capI, ksI, pkR, pkI, dh, nr, ni, rr, ri, er, ei) @k2 + ) + ) +" + +lemma secJW_secOOBo_auth_resp: +" + All #i1 #i2 . + InitWillDoSecJW()[+] @i1 & RespWillDoSecOOBo()[+] @i2 ==> + (All idI idR capI capR ksI ksR pkI pkR dh ltk #k1 . + ResponderFinishedSecPairing(idR, capR, ksR, idI, capI, ksI, pkR, pkI, dh, ltk) @k1 ==> + (Ex #k2 . + InitiatorFinishedSecPairing(idI, capI, ksI, idR, capR, ksR, pkI, pkR, dh, ltk) @k2 + ) + ) +" + +lemma secJW_secOOBo_weaksecret_init: +" + All #i1 #i2 . + InitWillDoSecJW()[+] @i1 & RespWillDoSecOOBo()[+] @i2 ==> + (All idI idR capI capR ksI ksR pkI pkR dh ltk #k1 . + InitiatorFinishedSecPairing(idI, capI, ksI, idR, capR, ksR, pkI, pkR, dh, ltk) @k1 ==> + not (Ex #k2 . K(ltk) @k2) + ) +" + +lemma secJW_secOOBo_weaksecret_resp: +" + All #i1 #i2 . + InitWillDoSecJW()[+] @i1 & RespWillDoSecOOBo()[+] @i2 ==> + (All idI idR capI capR ksI ksR pkI pkR dh ltk #k1 . + ResponderFinishedSecPairing(idR, capR, ksR, idI, capI, ksI, pkR, pkI, dh, ltk) @k1 ==> + not (Ex #k2 . K(ltk) @k2) + ) +" + +lemma secJW_secOOBo_double_impersonation: +" + All #i1 #i2 . + InitWillDoSecJW()[+] @i1 & RespWillDoSecOOBo()[+] @i2 ==> + (All idI1 idR1 capI1 capR1 ksI1 ksR1 pkI1 pkR1 dh1 ltk1 idI2 idR2 capI2 capR2 ksI2 ksR2 pkI2 pkR2 dh2 ltk2 #j1 #j2 . + InitiatorFinishedSecPairing(idI1, capI1, ksI1, idR1, capR1, ksR1, pkI1, pkR1, dh1, ltk1) @j1 & + ResponderFinishedSecPairing(idR2, capR2, ksR2, idI2, capI2, ksI2, pkR2, pkI2, dh2, ltk2) @j2 ==> + not (Ex #k1 #k2 . + K(ltk1) @k1 & K(ltk2) @k2 + ) + ) +" + +#endif + +/*******************************************/ +/* End lemmas about SecJW-SecOOBo exchange */ +/*******************************************/ + +/****************************************/ +/* Lemmas about SecJW-SecOOBio exchange */ +/****************************************/ + +#ifdef SecJWSecOOBio +lemma secJW_secOOBio_functional: exists-trace +" + Ex #i1 #i2 . + InitWillDoSecJW()[+] @i1 & RespWillDoSecOOBio()[+] @i2 & + (Ex idI1 idR1 capI1 capR1 ksI1 ksR1 pkI1 pkR1 dh1 ltk1 idI2 idR2 capI2 capR2 ksI2 ksR2 pkI2 pkR2 dh2 ltk2 #j1 #j2 . + InitiatorFinishedSecPairing(idI1, capI1, ksI1, idR1, capR1, ksR1, pkI1, pkR1, dh1, ltk1) @j1 & + ResponderFinishedSecPairing(idR2, capR2, ksI2, idI2, capI2, ksR2, pkR2, pkI2, dh2, ltk2) @j2 + ) +" + +lemma secJW_secOOBio_auth_init: +" + All #i1 #i2 . + InitWillDoSecJW()[+] @i1 & RespWillDoSecOOBio()[+] @i2 ==> + (All idI idR capI capR ksI ksR pkI pkR dh ltk #k1 . + InitiatorFinishedSecPairing(idI, capI, ksI, idR, capR, ksR, pkI, pkR, dh, ltk) @k1 ==> + (Ex ni nr ri rr ei er #k2 . + RespDoneDHKeyCheck(idR, capR, ksR, idI, capI, ksI, pkR, pkI, dh, nr, ni, rr, ri, er, ei) @k2 + ) + ) +" + +lemma secJW_secOOBio_auth_resp: +" + All #i1 #i2 . + InitWillDoSecJW()[+] @i1 & RespWillDoSecOOBio()[+] @i2 ==> + (All idI idR capI capR ksI ksR pkI pkR dh ltk #k1 . + ResponderFinishedSecPairing(idR, capR, ksR, idI, capI, ksI, pkR, pkI, dh, ltk) @k1 ==> + (Ex #k2 . + InitiatorFinishedSecPairing(idI, capI, ksI, idR, capR, ksR, pkI, pkR, dh, ltk) @k2 + ) + ) +" + +lemma secJW_secOOBio_weaksecret_init: +" + All #i1 #i2 . + InitWillDoSecJW()[+] @i1 & RespWillDoSecOOBio()[+] @i2 ==> + (All idI idR capI capR ksI ksR pkI pkR dh ltk #k1 . + InitiatorFinishedSecPairing(idI, capI, ksI, idR, capR, ksR, pkI, pkR, dh, ltk) @k1 ==> + not (Ex #k2 . K(ltk) @k2) + ) +" + +lemma secJW_secOOBio_weaksecret_resp: +" + All #i1 #i2 . + InitWillDoSecJW()[+] @i1 & RespWillDoSecOOBio()[+] @i2 ==> + (All idI idR capI capR ksI ksR pkI pkR dh ltk #k1 . + ResponderFinishedSecPairing(idR, capR, ksR, idI, capI, ksI, pkR, pkI, dh, ltk) @k1 ==> + not (Ex #k2 . K(ltk) @k2) + ) +" + +lemma secJW_secOOBio_double_impersonation: +" + All #i1 #i2 . + InitWillDoSecJW()[+] @i1 & RespWillDoSecOOBio()[+] @i2 ==> + (All idI1 idR1 capI1 capR1 ksI1 ksR1 pkI1 pkR1 dh1 ltk1 idI2 idR2 capI2 capR2 ksI2 ksR2 pkI2 pkR2 dh2 ltk2 #j1 #j2 . + InitiatorFinishedSecPairing(idI1, capI1, ksI1, idR1, capR1, ksR1, pkI1, pkR1, dh1, ltk1) @j1 & + ResponderFinishedSecPairing(idR2, capR2, ksR2, idI2, capI2, ksI2, pkR2, pkI2, dh2, ltk2) @j2 ==> + not (Ex #k1 #k2 . + K(ltk1) @k1 & K(ltk2) @k2 + ) + ) +" + +#endif + +/********************************************/ +/* End lemmas about SecJW-SecOOBio exchange */ +/********************************************/ + +/**************************************/ +/* Lemmas about SecPEi-SecJW exchange */ +/**************************************/ + +#ifdef SecPEiSecJW +lemma secPEi_secJW_functional: exists-trace +" + Ex #i1 #i2 . + InitWillDoSecPEi()[+] @i1 & RespWillDoSecJW()[+] @i2 & + (Ex idI1 idR1 capI1 capR1 ksI1 ksR1 pkI1 pkR1 dh1 ltk1 idI2 idR2 capI2 capR2 ksI2 ksR2 pkI2 pkR2 dh2 ltk2 #j1 #j2 . + InitiatorFinishedSecPairing(idI1, capI1, ksI1, idR1, capR1, ksR1, pkI1, pkR1, dh1, ltk1) @j1 & + ResponderFinishedSecPairing(idR2, capR2, ksI2, idI2, capI2, ksR2, pkR2, pkI2, dh2, ltk2) @j2 + ) +" + +lemma secPEi_secJW_auth_init: +" + All #i1 #i2 . + InitWillDoSecPEi()[+] @i1 & RespWillDoSecJW()[+] @i2 ==> + (All idI idR capI capR ksI ksR pkI pkR dh ltk #k1 . + InitiatorFinishedSecPairing(idI, capI, ksI, idR, capR, ksR, pkI, pkR, dh, ltk) @k1 ==> + (Ex ni nr ri rr ei er #k2 . + RespDoneDHKeyCheck(idR, capR, ksR, idI, capI, ksI, pkR, pkI, dh, nr, ni, rr, ri, er, ei) @k2 + ) + ) +" + +lemma secPEi_secJW_auth_resp: +" + All #i1 #i2 . + InitWillDoSecPEi()[+] @i1 & RespWillDoSecJW()[+] @i2 ==> + (All idI idR capI capR ksI ksR pkI pkR dh ltk #k1 . + ResponderFinishedSecPairing(idR, capR, ksR, idI, capI, ksI, pkR, pkI, dh, ltk) @k1 ==> + (Ex #k2 . + InitiatorFinishedSecPairing(idI, capI, ksI, idR, capR, ksR, pkI, pkR, dh, ltk) @k2 + ) + ) +" + +lemma secPEi_secJW_weaksecret_init: +" + All #i1 #i2 . + InitWillDoSecPEi()[+] @i1 & RespWillDoSecJW()[+] @i2 ==> + (All idI idR capI capR ksI ksR pkI pkR dh ltk #k1 . + InitiatorFinishedSecPairing(idI, capI, ksI, idR, capR, ksR, pkI, pkR, dh, ltk) @k1 ==> + not (Ex #k2 . K(ltk) @k2) + ) +" + +lemma secPEi_secJW_weaksecret_resp: +" + All #i1 #i2 . + InitWillDoSecPEi()[+] @i1 & RespWillDoSecJW()[+] @i2 ==> + (All idI idR capI capR ksI ksR pkI pkR dh ltk #k1 . + ResponderFinishedSecPairing(idR, capR, ksR, idI, capI, ksI, pkR, pkI, dh, ltk) @k1 ==> + not (Ex #k2 . K(ltk) @k2) + ) +" + +lemma secPEi_secJW_double_impersonation: +" + All #i1 #i2 . + InitWillDoSecPEi()[+] @i1 & RespWillDoSecJW()[+] @i2 ==> + (All idI1 idR1 capI1 capR1 ksI1 ksR1 pkI1 pkR1 dh1 ltk1 idI2 idR2 capI2 capR2 ksI2 ksR2 pkI2 pkR2 dh2 ltk2 #j1 #j2 . + InitiatorFinishedSecPairing(idI1, capI1, ksI1, idR1, capR1, ksR1, pkI1, pkR1, dh1, ltk1) @j1 & + ResponderFinishedSecPairing(idR2, capR2, ksR2, idI2, capI2, ksI2, pkR2, pkI2, dh2, ltk2) @j2 ==> + not (Ex #k1 #k2 . + K(ltk1) @k1 & K(ltk2) @k2 + ) + ) +" + +#endif + +/******************************************/ +/* End lemmas about SecPEi-SecJW exchange */ +/******************************************/ + +/***************************************/ +/* Lemmas about SecPEi-SecPEi exchange */ +/***************************************/ + +#ifdef SecPEiSecPEi +lemma secPEi_secPEi_functional: exists-trace +" + Ex #i1 #i2 . + InitWillDoSecPEi()[+] @i1 & RespWillDoSecPEi()[+] @i2 & + (Ex idI1 idR1 capI1 capR1 ksI1 ksR1 pkI1 pkR1 dh1 ltk1 idI2 idR2 capI2 capR2 ksI2 ksR2 pkI2 pkR2 dh2 ltk2 #j1 #j2 . + InitiatorFinishedSecPairing(idI1, capI1, ksI1, idR1, capR1, ksR1, pkI1, pkR1, dh1, ltk1) @j1 & + ResponderFinishedSecPairing(idR2, capR2, ksI2, idI2, capI2, ksR2, pkR2, pkI2, dh2, ltk2) @j2 + ) +" + +lemma secPEi_secPEi_auth_init: +" + All #i1 #i2 . + InitWillDoSecPEi()[+] @i1 & RespWillDoSecPEi()[+] @i2 ==> + (All idI idR capI capR ksI ksR pkI pkR dh ltk #k1 . + InitiatorFinishedSecPairing(idI, capI, ksI, idR, capR, ksR, pkI, pkR, dh, ltk) @k1 ==> + (Ex ni nr ri rr ei er #k2 . + RespDoneDHKeyCheck(idR, capR, ksR, idI, capI, ksI, pkR, pkI, dh, nr, ni, rr, ri, er, ei) @k2 + ) + ) +" + +lemma secPEi_secPEi_auth_resp: +" + All #i1 #i2 . + InitWillDoSecPEi()[+] @i1 & RespWillDoSecPEi()[+] @i2 ==> + (All idI idR capI capR ksI ksR pkI pkR dh ltk #k1 . + ResponderFinishedSecPairing(idR, capR, ksR, idI, capI, ksI, pkR, pkI, dh, ltk) @k1 ==> + (Ex #k2 . + InitiatorFinishedSecPairing(idI, capI, ksI, idR, capR, ksR, pkI, pkR, dh, ltk) @k2 + ) + ) +" + +lemma secPEi_secPEi_weaksecret_init: +" + All #i1 #i2 . + InitWillDoSecPEi()[+] @i1 & RespWillDoSecPEi()[+] @i2 ==> + (All idI idR capI capR ksI ksR pkI pkR dh ltk #k1 . + InitiatorFinishedSecPairing(idI, capI, ksI, idR, capR, ksR, pkI, pkR, dh, ltk) @k1 ==> + not (Ex #k2 . K(ltk) @k2) + ) +" + +lemma secPEi_secPEi_weaksecret_resp: +" + All #i1 #i2 . + InitWillDoSecPEi()[+] @i1 & RespWillDoSecPEi()[+] @i2 ==> + (All idI idR capI capR ksI ksR pkI pkR dh ltk #k1 . + ResponderFinishedSecPairing(idR, capR, ksR, idI, capI, ksI, pkR, pkI, dh, ltk) @k1 ==> + not (Ex #k2 . K(ltk) @k2) + ) +" + +lemma secPEi_secPEi_double_impersonation: +" + All #i1 #i2 . + InitWillDoSecPEi()[+] @i1 & RespWillDoSecPEi()[+] @i2 ==> + (All idI1 idR1 capI1 capR1 ksI1 ksR1 pkI1 pkR1 dh1 ltk1 idI2 idR2 capI2 capR2 ksI2 ksR2 pkI2 pkR2 dh2 ltk2 #j1 #j2 . + InitiatorFinishedSecPairing(idI1, capI1, ksI1, idR1, capR1, ksR1, pkI1, pkR1, dh1, ltk1) @j1 & + ResponderFinishedSecPairing(idR2, capR2, ksR2, idI2, capI2, ksI2, pkR2, pkI2, dh2, ltk2) @j2 ==> + not (Ex #k1 #k2 . + K(ltk1) @k1 & K(ltk2) @k2 + ) + ) +" + +#endif + +/*******************************************/ +/* End lemmas about SecPEi-SecPEi exchange */ +/*******************************************/ + +/***************************************/ +/* Lemmas about SecPEi-SecPEo exchange */ +/***************************************/ + +#ifdef SecPEiSecPEo +lemma secPEi_secPEo_functional: exists-trace +" + Ex #i1 #i2 . + InitWillDoSecPEi()[+] @i1 & RespWillDoSecPEo()[+] @i2 & + (Ex idI1 idR1 capI1 capR1 ksI1 ksR1 pkI1 pkR1 dh1 ltk1 idI2 idR2 capI2 capR2 ksI2 ksR2 pkI2 pkR2 dh2 ltk2 #j1 #j2 . + InitiatorFinishedSecPairing(idI1, capI1, ksI1, idR1, capR1, ksR1, pkI1, pkR1, dh1, ltk1) @j1 & + ResponderFinishedSecPairing(idR2, capR2, ksI2, idI2, capI2, ksR2, pkR2, pkI2, dh2, ltk2) @j2 + ) +" + +lemma secPEi_secPEo_auth_init: +" + All #i1 #i2 . + InitWillDoSecPEi()[+] @i1 & RespWillDoSecPEo()[+] @i2 ==> + (All idI idR capI capR ksI ksR pkI pkR dh ltk #k1 . + InitiatorFinishedSecPairing(idI, capI, ksI, idR, capR, ksR, pkI, pkR, dh, ltk) @k1 ==> + (Ex ni nr ri rr ei er #k2 . + RespDoneDHKeyCheck(idR, capR, ksR, idI, capI, ksI, pkR, pkI, dh, nr, ni, rr, ri, er, ei) @k2 + ) + ) +" + +lemma secPEi_secPEo_auth_resp: +" + All #i1 #i2 . + InitWillDoSecPEi()[+] @i1 & RespWillDoSecPEo()[+] @i2 ==> + (All idI idR capI capR ksI ksR pkI pkR dh ltk #k1 . + ResponderFinishedSecPairing(idR, capR, ksR, idI, capI, ksI, pkR, pkI, dh, ltk) @k1 ==> + (Ex #k2 . + InitiatorFinishedSecPairing(idI, capI, ksI, idR, capR, ksR, pkI, pkR, dh, ltk) @k2 + ) + ) +" + +lemma secPEi_secPEo_weaksecret_init: +" + All #i1 #i2 . + InitWillDoSecPEi()[+] @i1 & RespWillDoSecPEo()[+] @i2 ==> + (All idI idR capI capR ksI ksR pkI pkR dh ltk #k1 . + InitiatorFinishedSecPairing(idI, capI, ksI, idR, capR, ksR, pkI, pkR, dh, ltk) @k1 ==> + not (Ex #k2 . K(ltk) @k2) + ) +" + +lemma secPEi_secPEo_weaksecret_resp: +" + All #i1 #i2 . + InitWillDoSecPEi()[+] @i1 & RespWillDoSecPEo()[+] @i2 ==> + (All idI idR capI capR ksI ksR pkI pkR dh ltk #k1 . + ResponderFinishedSecPairing(idR, capR, ksR, idI, capI, ksI, pkR, pkI, dh, ltk) @k1 ==> + not (Ex #k2 . K(ltk) @k2) + ) +" + +lemma secPEi_secPEo_double_impersonation: +" + All #i1 #i2 . + InitWillDoSecPEi()[+] @i1 & RespWillDoSecPEo()[+] @i2 ==> + (All idI1 idR1 capI1 capR1 ksI1 ksR1 pkI1 pkR1 dh1 ltk1 idI2 idR2 capI2 capR2 ksI2 ksR2 pkI2 pkR2 dh2 ltk2 #j1 #j2 . + InitiatorFinishedSecPairing(idI1, capI1, ksI1, idR1, capR1, ksR1, pkI1, pkR1, dh1, ltk1) @j1 & + ResponderFinishedSecPairing(idR2, capR2, ksR2, idI2, capI2, ksI2, pkR2, pkI2, dh2, ltk2) @j2 ==> + not (Ex #k1 #k2 . + K(ltk1) @k1 & K(ltk2) @k2 + ) + ) +" + +#endif + +/*******************************************/ +/* End lemmas about SecPEi-SecPEo exchange */ +/*******************************************/ + +/****************************************/ +/* Lemmas about SecPEi-SecPEio exchange */ +/****************************************/ + +#ifdef SecPEiSecPEio +lemma secPEi_secPEio_functional: exists-trace +" + Ex #i1 #i2 . + InitWillDoSecPEi()[+] @i1 & RespWillDoSecPEio()[+] @i2 & + (Ex idI1 idR1 capI1 capR1 ksI1 ksR1 pkI1 pkR1 dh1 ltk1 idI2 idR2 capI2 capR2 ksI2 ksR2 pkI2 pkR2 dh2 ltk2 #j1 #j2 . + InitiatorFinishedSecPairing(idI1, capI1, ksI1, idR1, capR1, ksR1, pkI1, pkR1, dh1, ltk1) @j1 & + ResponderFinishedSecPairing(idR2, capR2, ksI2, idI2, capI2, ksR2, pkR2, pkI2, dh2, ltk2) @j2 + ) +" + +lemma secPEi_secPEio_auth_init: +" + All #i1 #i2 . + InitWillDoSecPEi()[+] @i1 & RespWillDoSecPEio()[+] @i2 ==> + (All idI idR capI capR ksI ksR pkI pkR dh ltk #k1 . + InitiatorFinishedSecPairing(idI, capI, ksI, idR, capR, ksR, pkI, pkR, dh, ltk) @k1 ==> + (Ex ni nr ri rr ei er #k2 . + RespDoneDHKeyCheck(idR, capR, ksR, idI, capI, ksI, pkR, pkI, dh, nr, ni, rr, ri, er, ei) @k2 + ) + ) +" + +lemma secPEi_secPEio_auth_resp: +" + All #i1 #i2 . + InitWillDoSecPEi()[+] @i1 & RespWillDoSecPEio()[+] @i2 ==> + (All idI idR capI capR ksI ksR pkI pkR dh ltk #k1 . + ResponderFinishedSecPairing(idR, capR, ksR, idI, capI, ksI, pkR, pkI, dh, ltk) @k1 ==> + (Ex #k2 . + InitiatorFinishedSecPairing(idI, capI, ksI, idR, capR, ksR, pkI, pkR, dh, ltk) @k2 + ) + ) +" + +lemma secPEi_secPEio_weaksecret_init: +" + All #i1 #i2 . + InitWillDoSecPEi()[+] @i1 & RespWillDoSecPEio()[+] @i2 ==> + (All idI idR capI capR ksI ksR pkI pkR dh ltk #k1 . + InitiatorFinishedSecPairing(idI, capI, ksI, idR, capR, ksR, pkI, pkR, dh, ltk) @k1 ==> + not (Ex #k2 . K(ltk) @k2) + ) +" + +lemma secPEi_secPEio_weaksecret_resp: +" + All #i1 #i2 . + InitWillDoSecPEi()[+] @i1 & RespWillDoSecPEio()[+] @i2 ==> + (All idI idR capI capR ksI ksR pkI pkR dh ltk #k1 . + ResponderFinishedSecPairing(idR, capR, ksR, idI, capI, ksI, pkR, pkI, dh, ltk) @k1 ==> + not (Ex #k2 . K(ltk) @k2) + ) +" + +lemma secPEi_secPEio_double_impersonation: +" + All #i1 #i2 . + InitWillDoSecPEi()[+] @i1 & RespWillDoSecPEio()[+] @i2 ==> + (All idI1 idR1 capI1 capR1 ksI1 ksR1 pkI1 pkR1 dh1 ltk1 idI2 idR2 capI2 capR2 ksI2 ksR2 pkI2 pkR2 dh2 ltk2 #j1 #j2 . + InitiatorFinishedSecPairing(idI1, capI1, ksI1, idR1, capR1, ksR1, pkI1, pkR1, dh1, ltk1) @j1 & + ResponderFinishedSecPairing(idR2, capR2, ksR2, idI2, capI2, ksI2, pkR2, pkI2, dh2, ltk2) @j2 ==> + not (Ex #k1 #k2 . + K(ltk1) @k1 & K(ltk2) @k2 + ) + ) +" + +#endif + +/********************************************/ +/* End lemmas about SecPEi-SecPEio exchange */ +/********************************************/ + +/**************************************/ +/* Lemmas about SecPEi-SecNC exchange */ +/**************************************/ + +#ifdef SecPEiSecNC +lemma secPEi_secNC_functional: exists-trace +" + Ex #i1 #i2 . + InitWillDoSecPEi()[+] @i1 & RespWillDoSecNC()[+] @i2 & + (Ex idI1 idR1 capI1 capR1 ksI1 ksR1 pkI1 pkR1 dh1 ltk1 idI2 idR2 capI2 capR2 ksI2 ksR2 pkI2 pkR2 dh2 ltk2 #j1 #j2 . + InitiatorFinishedSecPairing(idI1, capI1, ksI1, idR1, capR1, ksR1, pkI1, pkR1, dh1, ltk1) @j1 & + ResponderFinishedSecPairing(idR2, capR2, ksI2, idI2, capI2, ksR2, pkR2, pkI2, dh2, ltk2) @j2 + ) +" + +lemma secPEi_secNC_auth_init: +" + All #i1 #i2 . + InitWillDoSecPEi()[+] @i1 & RespWillDoSecNC()[+] @i2 ==> + (All idI idR capI capR ksI ksR pkI pkR dh ltk #k1 . + InitiatorFinishedSecPairing(idI, capI, ksI, idR, capR, ksR, pkI, pkR, dh, ltk) @k1 ==> + (Ex ni nr ri rr ei er #k2 . + RespDoneDHKeyCheck(idR, capR, ksR, idI, capI, ksI, pkR, pkI, dh, nr, ni, rr, ri, er, ei) @k2 + ) + ) +" + +lemma secPEi_secNC_auth_resp: +" + All #i1 #i2 . + InitWillDoSecPEi()[+] @i1 & RespWillDoSecNC()[+] @i2 ==> + (All idI idR capI capR ksI ksR pkI pkR dh ltk #k1 . + ResponderFinishedSecPairing(idR, capR, ksR, idI, capI, ksI, pkR, pkI, dh, ltk) @k1 ==> + (Ex #k2 . + InitiatorFinishedSecPairing(idI, capI, ksI, idR, capR, ksR, pkI, pkR, dh, ltk) @k2 + ) + ) +" + +lemma secPEi_secNC_weaksecret_init: +" + All #i1 #i2 . + InitWillDoSecPEi()[+] @i1 & RespWillDoSecNC()[+] @i2 ==> + (All idI idR capI capR ksI ksR pkI pkR dh ltk #k1 . + InitiatorFinishedSecPairing(idI, capI, ksI, idR, capR, ksR, pkI, pkR, dh, ltk) @k1 ==> + not (Ex #k2 . K(ltk) @k2) + ) +" + +lemma secPEi_secNC_weaksecret_resp: +" + All #i1 #i2 . + InitWillDoSecPEi()[+] @i1 & RespWillDoSecNC()[+] @i2 ==> + (All idI idR capI capR ksI ksR pkI pkR dh ltk #k1 . + ResponderFinishedSecPairing(idR, capR, ksR, idI, capI, ksI, pkR, pkI, dh, ltk) @k1 ==> + not (Ex #k2 . K(ltk) @k2) + ) +" + +lemma secPEi_secNC_double_impersonation: +" + All #i1 #i2 . + InitWillDoSecPEi()[+] @i1 & RespWillDoSecNC()[+] @i2 ==> + (All idI1 idR1 capI1 capR1 ksI1 ksR1 pkI1 pkR1 dh1 ltk1 idI2 idR2 capI2 capR2 ksI2 ksR2 pkI2 pkR2 dh2 ltk2 #j1 #j2 . + InitiatorFinishedSecPairing(idI1, capI1, ksI1, idR1, capR1, ksR1, pkI1, pkR1, dh1, ltk1) @j1 & + ResponderFinishedSecPairing(idR2, capR2, ksR2, idI2, capI2, ksI2, pkR2, pkI2, dh2, ltk2) @j2 ==> + not (Ex #k1 #k2 . + K(ltk1) @k1 & K(ltk2) @k2 + ) + ) +" + +#endif + +/******************************************/ +/* End lemmas about SecPEi-SecNC exchange */ +/******************************************/ + +/****************************************/ +/* Lemmas about SecPEi-SecOOBi exchange */ +/****************************************/ + +#ifdef SecPEiSecOOBi +lemma secPEi_secOOBi_functional: exists-trace +" + Ex #i1 #i2 . + InitWillDoSecPEi()[+] @i1 & RespWillDoSecOOBi()[+] @i2 & + (Ex idI1 idR1 capI1 capR1 ksI1 ksR1 pkI1 pkR1 dh1 ltk1 idI2 idR2 capI2 capR2 ksI2 ksR2 pkI2 pkR2 dh2 ltk2 #j1 #j2 . + InitiatorFinishedSecPairing(idI1, capI1, ksI1, idR1, capR1, ksR1, pkI1, pkR1, dh1, ltk1) @j1 & + ResponderFinishedSecPairing(idR2, capR2, ksI2, idI2, capI2, ksR2, pkR2, pkI2, dh2, ltk2) @j2 + ) +" + +lemma secPEi_secOOBi_auth_init: +" + All #i1 #i2 . + InitWillDoSecPEi()[+] @i1 & RespWillDoSecOOBi()[+] @i2 ==> + (All idI idR capI capR ksI ksR pkI pkR dh ltk #k1 . + InitiatorFinishedSecPairing(idI, capI, ksI, idR, capR, ksR, pkI, pkR, dh, ltk) @k1 ==> + (Ex ni nr ri rr ei er #k2 . + RespDoneDHKeyCheck(idR, capR, ksR, idI, capI, ksI, pkR, pkI, dh, nr, ni, rr, ri, er, ei) @k2 + ) + ) +" + +lemma secPEi_secOOBi_auth_resp: +" + All #i1 #i2 . + InitWillDoSecPEi()[+] @i1 & RespWillDoSecOOBi()[+] @i2 ==> + (All idI idR capI capR ksI ksR pkI pkR dh ltk #k1 . + ResponderFinishedSecPairing(idR, capR, ksR, idI, capI, ksI, pkR, pkI, dh, ltk) @k1 ==> + (Ex #k2 . + InitiatorFinishedSecPairing(idI, capI, ksI, idR, capR, ksR, pkI, pkR, dh, ltk) @k2 + ) + ) +" + +lemma secPEi_secOOBi_weaksecret_init: +" + All #i1 #i2 . + InitWillDoSecPEi()[+] @i1 & RespWillDoSecOOBi()[+] @i2 ==> + (All idI idR capI capR ksI ksR pkI pkR dh ltk #k1 . + InitiatorFinishedSecPairing(idI, capI, ksI, idR, capR, ksR, pkI, pkR, dh, ltk) @k1 ==> + not (Ex #k2 . K(ltk) @k2) + ) +" + +lemma secPEi_secOOBi_weaksecret_resp: +" + All #i1 #i2 . + InitWillDoSecPEi()[+] @i1 & RespWillDoSecOOBi()[+] @i2 ==> + (All idI idR capI capR ksI ksR pkI pkR dh ltk #k1 . + ResponderFinishedSecPairing(idR, capR, ksR, idI, capI, ksI, pkR, pkI, dh, ltk) @k1 ==> + not (Ex #k2 . K(ltk) @k2) + ) +" + +lemma secPEi_secOOBi_double_impersonation: +" + All #i1 #i2 . + InitWillDoSecPEi()[+] @i1 & RespWillDoSecOOBi()[+] @i2 ==> + (All idI1 idR1 capI1 capR1 ksI1 ksR1 pkI1 pkR1 dh1 ltk1 idI2 idR2 capI2 capR2 ksI2 ksR2 pkI2 pkR2 dh2 ltk2 #j1 #j2 . + InitiatorFinishedSecPairing(idI1, capI1, ksI1, idR1, capR1, ksR1, pkI1, pkR1, dh1, ltk1) @j1 & + ResponderFinishedSecPairing(idR2, capR2, ksR2, idI2, capI2, ksI2, pkR2, pkI2, dh2, ltk2) @j2 ==> + not (Ex #k1 #k2 . + K(ltk1) @k1 & K(ltk2) @k2 + ) + ) +" + +#endif + +/********************************************/ +/* End lemmas about SecPEi-SecOOBi exchange */ +/********************************************/ + +/****************************************/ +/* Lemmas about SecPEi-SecOOBo exchange */ +/****************************************/ + +#ifdef SecPEiSecOOBo +lemma secPEi_secOOBo_functional: exists-trace +" + Ex #i1 #i2 . + InitWillDoSecPEi()[+] @i1 & RespWillDoSecOOBo()[+] @i2 & + (Ex idI1 idR1 capI1 capR1 ksI1 ksR1 pkI1 pkR1 dh1 ltk1 idI2 idR2 capI2 capR2 ksI2 ksR2 pkI2 pkR2 dh2 ltk2 #j1 #j2 . + InitiatorFinishedSecPairing(idI1, capI1, ksI1, idR1, capR1, ksR1, pkI1, pkR1, dh1, ltk1) @j1 & + ResponderFinishedSecPairing(idR2, capR2, ksI2, idI2, capI2, ksR2, pkR2, pkI2, dh2, ltk2) @j2 + ) +" + +lemma secPEi_secOOBo_auth_init: +" + All #i1 #i2 . + InitWillDoSecPEi()[+] @i1 & RespWillDoSecOOBo()[+] @i2 ==> + (All idI idR capI capR ksI ksR pkI pkR dh ltk #k1 . + InitiatorFinishedSecPairing(idI, capI, ksI, idR, capR, ksR, pkI, pkR, dh, ltk) @k1 ==> + (Ex ni nr ri rr ei er #k2 . + RespDoneDHKeyCheck(idR, capR, ksR, idI, capI, ksI, pkR, pkI, dh, nr, ni, rr, ri, er, ei) @k2 + ) + ) +" + +lemma secPEi_secOOBo_auth_resp: +" + All #i1 #i2 . + InitWillDoSecPEi()[+] @i1 & RespWillDoSecOOBo()[+] @i2 ==> + (All idI idR capI capR ksI ksR pkI pkR dh ltk #k1 . + ResponderFinishedSecPairing(idR, capR, ksR, idI, capI, ksI, pkR, pkI, dh, ltk) @k1 ==> + (Ex #k2 . + InitiatorFinishedSecPairing(idI, capI, ksI, idR, capR, ksR, pkI, pkR, dh, ltk) @k2 + ) + ) +" + +lemma secPEi_secOOBo_weaksecret_init: +" + All #i1 #i2 . + InitWillDoSecPEi()[+] @i1 & RespWillDoSecOOBo()[+] @i2 ==> + (All idI idR capI capR ksI ksR pkI pkR dh ltk #k1 . + InitiatorFinishedSecPairing(idI, capI, ksI, idR, capR, ksR, pkI, pkR, dh, ltk) @k1 ==> + not (Ex #k2 . K(ltk) @k2) + ) +" + +lemma secPEi_secOOBo_weaksecret_resp: +" + All #i1 #i2 . + InitWillDoSecPEi()[+] @i1 & RespWillDoSecOOBo()[+] @i2 ==> + (All idI idR capI capR ksI ksR pkI pkR dh ltk #k1 . + ResponderFinishedSecPairing(idR, capR, ksR, idI, capI, ksI, pkR, pkI, dh, ltk) @k1 ==> + not (Ex #k2 . K(ltk) @k2) + ) +" + +lemma secPEi_secOOBo_double_impersonation: +" + All #i1 #i2 . + InitWillDoSecPEi()[+] @i1 & RespWillDoSecOOBo()[+] @i2 ==> + (All idI1 idR1 capI1 capR1 ksI1 ksR1 pkI1 pkR1 dh1 ltk1 idI2 idR2 capI2 capR2 ksI2 ksR2 pkI2 pkR2 dh2 ltk2 #j1 #j2 . + InitiatorFinishedSecPairing(idI1, capI1, ksI1, idR1, capR1, ksR1, pkI1, pkR1, dh1, ltk1) @j1 & + ResponderFinishedSecPairing(idR2, capR2, ksR2, idI2, capI2, ksI2, pkR2, pkI2, dh2, ltk2) @j2 ==> + not (Ex #k1 #k2 . + K(ltk1) @k1 & K(ltk2) @k2 + ) + ) +" + +#endif + +/********************************************/ +/* End lemmas about SecPEi-SecOOBo exchange */ +/********************************************/ + +/*****************************************/ +/* Lemmas about SecPEi-SecOOBio exchange */ +/*****************************************/ + +#ifdef SecPEiSecOOBio +lemma secPEi_secOOBio_functional: exists-trace +" + Ex #i1 #i2 . + InitWillDoSecPEi()[+] @i1 & RespWillDoSecOOBio()[+] @i2 & + (Ex idI1 idR1 capI1 capR1 ksI1 ksR1 pkI1 pkR1 dh1 ltk1 idI2 idR2 capI2 capR2 ksI2 ksR2 pkI2 pkR2 dh2 ltk2 #j1 #j2 . + InitiatorFinishedSecPairing(idI1, capI1, ksI1, idR1, capR1, ksR1, pkI1, pkR1, dh1, ltk1) @j1 & + ResponderFinishedSecPairing(idR2, capR2, ksI2, idI2, capI2, ksR2, pkR2, pkI2, dh2, ltk2) @j2 + ) +" + +lemma secPEi_secOOBio_auth_init: +" + All #i1 #i2 . + InitWillDoSecPEi()[+] @i1 & RespWillDoSecOOBio()[+] @i2 ==> + (All idI idR capI capR ksI ksR pkI pkR dh ltk #k1 . + InitiatorFinishedSecPairing(idI, capI, ksI, idR, capR, ksR, pkI, pkR, dh, ltk) @k1 ==> + (Ex ni nr ri rr ei er #k2 . + RespDoneDHKeyCheck(idR, capR, ksR, idI, capI, ksI, pkR, pkI, dh, nr, ni, rr, ri, er, ei) @k2 + ) + ) +" + +lemma secPEi_secOOBio_auth_resp: +" + All #i1 #i2 . + InitWillDoSecPEi()[+] @i1 & RespWillDoSecOOBio()[+] @i2 ==> + (All idI idR capI capR ksI ksR pkI pkR dh ltk #k1 . + ResponderFinishedSecPairing(idR, capR, ksR, idI, capI, ksI, pkR, pkI, dh, ltk) @k1 ==> + (Ex #k2 . + InitiatorFinishedSecPairing(idI, capI, ksI, idR, capR, ksR, pkI, pkR, dh, ltk) @k2 + ) + ) +" + +lemma secPEi_secOOBio_weaksecret_init: +" + All #i1 #i2 . + InitWillDoSecPEi()[+] @i1 & RespWillDoSecOOBio()[+] @i2 ==> + (All idI idR capI capR ksI ksR pkI pkR dh ltk #k1 . + InitiatorFinishedSecPairing(idI, capI, ksI, idR, capR, ksR, pkI, pkR, dh, ltk) @k1 ==> + not (Ex #k2 . K(ltk) @k2) + ) +" + +lemma secPEi_secOOBio_weaksecret_resp: +" + All #i1 #i2 . + InitWillDoSecPEi()[+] @i1 & RespWillDoSecOOBio()[+] @i2 ==> + (All idI idR capI capR ksI ksR pkI pkR dh ltk #k1 . + ResponderFinishedSecPairing(idR, capR, ksR, idI, capI, ksI, pkR, pkI, dh, ltk) @k1 ==> + not (Ex #k2 . K(ltk) @k2) + ) +" + +lemma secPEi_secOOBio_double_impersonation: +" + All #i1 #i2 . + InitWillDoSecPEi()[+] @i1 & RespWillDoSecOOBio()[+] @i2 ==> + (All idI1 idR1 capI1 capR1 ksI1 ksR1 pkI1 pkR1 dh1 ltk1 idI2 idR2 capI2 capR2 ksI2 ksR2 pkI2 pkR2 dh2 ltk2 #j1 #j2 . + InitiatorFinishedSecPairing(idI1, capI1, ksI1, idR1, capR1, ksR1, pkI1, pkR1, dh1, ltk1) @j1 & + ResponderFinishedSecPairing(idR2, capR2, ksR2, idI2, capI2, ksI2, pkR2, pkI2, dh2, ltk2) @j2 ==> + not (Ex #k1 #k2 . + K(ltk1) @k1 & K(ltk2) @k2 + ) + ) +" + +#endif + +/*********************************************/ +/* End lemmas about SecPEi-SecOOBio exchange */ +/*********************************************/ + +/**************************************/ +/* Lemmas about SecPEo-SecJW exchange */ +/**************************************/ + +#ifdef SecPEoSecJW +lemma secPEo_secJW_functional: exists-trace +" + Ex #i1 #i2 . + InitWillDoSecPEo()[+] @i1 & RespWillDoSecJW()[+] @i2 & + (Ex idI1 idR1 capI1 capR1 ksI1 ksR1 pkI1 pkR1 dh1 ltk1 idI2 idR2 capI2 capR2 ksI2 ksR2 pkI2 pkR2 dh2 ltk2 #j1 #j2 . + InitiatorFinishedSecPairing(idI1, capI1, ksI1, idR1, capR1, ksR1, pkI1, pkR1, dh1, ltk1) @j1 & + ResponderFinishedSecPairing(idR2, capR2, ksI2, idI2, capI2, ksR2, pkR2, pkI2, dh2, ltk2) @j2 + ) +" + +lemma secPEo_secJW_auth_init: +" + All #i1 #i2 . + InitWillDoSecPEo()[+] @i1 & RespWillDoSecJW()[+] @i2 ==> + (All idI idR capI capR ksI ksR pkI pkR dh ltk #k1 . + InitiatorFinishedSecPairing(idI, capI, ksI, idR, capR, ksR, pkI, pkR, dh, ltk) @k1 ==> + (Ex ni nr ri rr ei er #k2 . + RespDoneDHKeyCheck(idR, capR, ksR, idI, capI, ksI, pkR, pkI, dh, nr, ni, rr, ri, er, ei) @k2 + ) + ) +" + +lemma secPEo_secJW_auth_resp: +" + All #i1 #i2 . + InitWillDoSecPEo()[+] @i1 & RespWillDoSecJW()[+] @i2 ==> + (All idI idR capI capR ksI ksR pkI pkR dh ltk #k1 . + ResponderFinishedSecPairing(idR, capR, ksR, idI, capI, ksI, pkR, pkI, dh, ltk) @k1 ==> + (Ex #k2 . + InitiatorFinishedSecPairing(idI, capI, ksI, idR, capR, ksR, pkI, pkR, dh, ltk) @k2 + ) + ) +" + +lemma secPEo_secJW_weaksecret_init: +" + All #i1 #i2 . + InitWillDoSecPEo()[+] @i1 & RespWillDoSecJW()[+] @i2 ==> + (All idI idR capI capR ksI ksR pkI pkR dh ltk #k1 . + InitiatorFinishedSecPairing(idI, capI, ksI, idR, capR, ksR, pkI, pkR, dh, ltk) @k1 ==> + not (Ex #k2 . K(ltk) @k2) + ) +" + +lemma secPEo_secJW_weaksecret_resp: +" + All #i1 #i2 . + InitWillDoSecPEo()[+] @i1 & RespWillDoSecJW()[+] @i2 ==> + (All idI idR capI capR ksI ksR pkI pkR dh ltk #k1 . + ResponderFinishedSecPairing(idR, capR, ksR, idI, capI, ksI, pkR, pkI, dh, ltk) @k1 ==> + not (Ex #k2 . K(ltk) @k2) + ) +" + +lemma secPEo_secJW_double_impersonation: +" + All #i1 #i2 . + InitWillDoSecPEo()[+] @i1 & RespWillDoSecJW()[+] @i2 ==> + (All idI1 idR1 capI1 capR1 ksI1 ksR1 pkI1 pkR1 dh1 ltk1 idI2 idR2 capI2 capR2 ksI2 ksR2 pkI2 pkR2 dh2 ltk2 #j1 #j2 . + InitiatorFinishedSecPairing(idI1, capI1, ksI1, idR1, capR1, ksR1, pkI1, pkR1, dh1, ltk1) @j1 & + ResponderFinishedSecPairing(idR2, capR2, ksR2, idI2, capI2, ksI2, pkR2, pkI2, dh2, ltk2) @j2 ==> + not (Ex #k1 #k2 . + K(ltk1) @k1 & K(ltk2) @k2 + ) + ) +" + +#endif + +/******************************************/ +/* End lemmas about SecPEo-SecJW exchange */ +/******************************************/ + +/***************************************/ +/* Lemmas about SecPEo-SecPEi exchange */ +/***************************************/ + +#ifdef SecPEoSecPEi +lemma secPEo_secPEi_functional: exists-trace +" + Ex #i1 #i2 . + InitWillDoSecPEo()[+] @i1 & RespWillDoSecPEi()[+] @i2 & + (Ex idI1 idR1 capI1 capR1 ksI1 ksR1 pkI1 pkR1 dh1 ltk1 idI2 idR2 capI2 capR2 ksI2 ksR2 pkI2 pkR2 dh2 ltk2 #j1 #j2 . + InitiatorFinishedSecPairing(idI1, capI1, ksI1, idR1, capR1, ksR1, pkI1, pkR1, dh1, ltk1) @j1 & + ResponderFinishedSecPairing(idR2, capR2, ksI2, idI2, capI2, ksR2, pkR2, pkI2, dh2, ltk2) @j2 + ) +" + +lemma secPEo_secPEi_auth_init: +" + All #i1 #i2 . + InitWillDoSecPEo()[+] @i1 & RespWillDoSecPEi()[+] @i2 ==> + (All idI idR capI capR ksI ksR pkI pkR dh ltk #k1 . + InitiatorFinishedSecPairing(idI, capI, ksI, idR, capR, ksR, pkI, pkR, dh, ltk) @k1 ==> + (Ex ni nr ri rr ei er #k2 . + RespDoneDHKeyCheck(idR, capR, ksR, idI, capI, ksI, pkR, pkI, dh, nr, ni, rr, ri, er, ei) @k2 + ) + ) +" + +lemma secPEo_secPEi_auth_resp: +" + All #i1 #i2 . + InitWillDoSecPEo()[+] @i1 & RespWillDoSecPEi()[+] @i2 ==> + (All idI idR capI capR ksI ksR pkI pkR dh ltk #k1 . + ResponderFinishedSecPairing(idR, capR, ksR, idI, capI, ksI, pkR, pkI, dh, ltk) @k1 ==> + (Ex #k2 . + InitiatorFinishedSecPairing(idI, capI, ksI, idR, capR, ksR, pkI, pkR, dh, ltk) @k2 + ) + ) +" + +lemma secPEo_secPEi_weaksecret_init: +" + All #i1 #i2 . + InitWillDoSecPEo()[+] @i1 & RespWillDoSecPEi()[+] @i2 ==> + (All idI idR capI capR ksI ksR pkI pkR dh ltk #k1 . + InitiatorFinishedSecPairing(idI, capI, ksI, idR, capR, ksR, pkI, pkR, dh, ltk) @k1 ==> + not (Ex #k2 . K(ltk) @k2) + ) +" + +lemma secPEo_secPEi_weaksecret_resp: +" + All #i1 #i2 . + InitWillDoSecPEo()[+] @i1 & RespWillDoSecPEi()[+] @i2 ==> + (All idI idR capI capR ksI ksR pkI pkR dh ltk #k1 . + ResponderFinishedSecPairing(idR, capR, ksR, idI, capI, ksI, pkR, pkI, dh, ltk) @k1 ==> + not (Ex #k2 . K(ltk) @k2) + ) +" + +lemma secPEo_secPEi_double_impersonation: +" + All #i1 #i2 . + InitWillDoSecPEo()[+] @i1 & RespWillDoSecPEi()[+] @i2 ==> + (All idI1 idR1 capI1 capR1 ksI1 ksR1 pkI1 pkR1 dh1 ltk1 idI2 idR2 capI2 capR2 ksI2 ksR2 pkI2 pkR2 dh2 ltk2 #j1 #j2 . + InitiatorFinishedSecPairing(idI1, capI1, ksI1, idR1, capR1, ksR1, pkI1, pkR1, dh1, ltk1) @j1 & + ResponderFinishedSecPairing(idR2, capR2, ksR2, idI2, capI2, ksI2, pkR2, pkI2, dh2, ltk2) @j2 ==> + not (Ex #k1 #k2 . + K(ltk1) @k1 & K(ltk2) @k2 + ) + ) +" + +#endif + +/*******************************************/ +/* End lemmas about SecPEo-SecPEi exchange */ +/*******************************************/ + +/***************************************/ +/* Lemmas about SecPEo-SecPEo exchange */ +/***************************************/ + +#ifdef SecPEoSecPEo +lemma secPEo_secPEo_functional: exists-trace +" + Ex #i1 #i2 . + InitWillDoSecPEo()[+] @i1 & RespWillDoSecPEo()[+] @i2 & + (Ex idI1 idR1 capI1 capR1 ksI1 ksR1 pkI1 pkR1 dh1 ltk1 idI2 idR2 capI2 capR2 ksI2 ksR2 pkI2 pkR2 dh2 ltk2 #j1 #j2 . + InitiatorFinishedSecPairing(idI1, capI1, ksI1, idR1, capR1, ksR1, pkI1, pkR1, dh1, ltk1) @j1 & + ResponderFinishedSecPairing(idR2, capR2, ksI2, idI2, capI2, ksR2, pkR2, pkI2, dh2, ltk2) @j2 + ) +" + +lemma secPEo_secPEo_auth_init: +" + All #i1 #i2 . + InitWillDoSecPEo()[+] @i1 & RespWillDoSecPEo()[+] @i2 ==> + (All idI idR capI capR ksI ksR pkI pkR dh ltk #k1 . + InitiatorFinishedSecPairing(idI, capI, ksI, idR, capR, ksR, pkI, pkR, dh, ltk) @k1 ==> + (Ex ni nr ri rr ei er #k2 . + RespDoneDHKeyCheck(idR, capR, ksR, idI, capI, ksI, pkR, pkI, dh, nr, ni, rr, ri, er, ei) @k2 + ) + ) +" + +lemma secPEo_secPEo_auth_resp: +" + All #i1 #i2 . + InitWillDoSecPEo()[+] @i1 & RespWillDoSecPEo()[+] @i2 ==> + (All idI idR capI capR ksI ksR pkI pkR dh ltk #k1 . + ResponderFinishedSecPairing(idR, capR, ksR, idI, capI, ksI, pkR, pkI, dh, ltk) @k1 ==> + (Ex #k2 . + InitiatorFinishedSecPairing(idI, capI, ksI, idR, capR, ksR, pkI, pkR, dh, ltk) @k2 + ) + ) +" + +lemma secPEo_secPEo_weaksecret_init: +" + All #i1 #i2 . + InitWillDoSecPEo()[+] @i1 & RespWillDoSecPEo()[+] @i2 ==> + (All idI idR capI capR ksI ksR pkI pkR dh ltk #k1 . + InitiatorFinishedSecPairing(idI, capI, ksI, idR, capR, ksR, pkI, pkR, dh, ltk) @k1 ==> + not (Ex #k2 . K(ltk) @k2) + ) +" + +lemma secPEo_secPEo_weaksecret_resp: +" + All #i1 #i2 . + InitWillDoSecPEo()[+] @i1 & RespWillDoSecPEo()[+] @i2 ==> + (All idI idR capI capR ksI ksR pkI pkR dh ltk #k1 . + ResponderFinishedSecPairing(idR, capR, ksR, idI, capI, ksI, pkR, pkI, dh, ltk) @k1 ==> + not (Ex #k2 . K(ltk) @k2) + ) +" + +lemma secPEo_secPEo_double_impersonation: +" + All #i1 #i2 . + InitWillDoSecPEo()[+] @i1 & RespWillDoSecPEo()[+] @i2 ==> + (All idI1 idR1 capI1 capR1 ksI1 ksR1 pkI1 pkR1 dh1 ltk1 idI2 idR2 capI2 capR2 ksI2 ksR2 pkI2 pkR2 dh2 ltk2 #j1 #j2 . + InitiatorFinishedSecPairing(idI1, capI1, ksI1, idR1, capR1, ksR1, pkI1, pkR1, dh1, ltk1) @j1 & + ResponderFinishedSecPairing(idR2, capR2, ksR2, idI2, capI2, ksI2, pkR2, pkI2, dh2, ltk2) @j2 ==> + not (Ex #k1 #k2 . + K(ltk1) @k1 & K(ltk2) @k2 + ) + ) +" + +#endif + +/*******************************************/ +/* End lemmas about SecPEo-SecPEo exchange */ +/*******************************************/ + +/****************************************/ +/* Lemmas about SecPEo-SecPEio exchange */ +/****************************************/ + +#ifdef SecPEoSecPEio +lemma secPEo_secPEio_functional: exists-trace +" + Ex #i1 #i2 . + InitWillDoSecPEo()[+] @i1 & RespWillDoSecPEio()[+] @i2 & + (Ex idI1 idR1 capI1 capR1 ksI1 ksR1 pkI1 pkR1 dh1 ltk1 idI2 idR2 capI2 capR2 ksI2 ksR2 pkI2 pkR2 dh2 ltk2 #j1 #j2 . + InitiatorFinishedSecPairing(idI1, capI1, ksI1, idR1, capR1, ksR1, pkI1, pkR1, dh1, ltk1) @j1 & + ResponderFinishedSecPairing(idR2, capR2, ksI2, idI2, capI2, ksR2, pkR2, pkI2, dh2, ltk2) @j2 + ) +" + +lemma secPEo_secPEio_auth_init: +" + All #i1 #i2 . + InitWillDoSecPEo()[+] @i1 & RespWillDoSecPEio()[+] @i2 ==> + (All idI idR capI capR ksI ksR pkI pkR dh ltk #k1 . + InitiatorFinishedSecPairing(idI, capI, ksI, idR, capR, ksR, pkI, pkR, dh, ltk) @k1 ==> + (Ex ni nr ri rr ei er #k2 . + RespDoneDHKeyCheck(idR, capR, ksR, idI, capI, ksI, pkR, pkI, dh, nr, ni, rr, ri, er, ei) @k2 + ) + ) +" + +lemma secPEo_secPEio_auth_resp: +" + All #i1 #i2 . + InitWillDoSecPEo()[+] @i1 & RespWillDoSecPEio()[+] @i2 ==> + (All idI idR capI capR ksI ksR pkI pkR dh ltk #k1 . + ResponderFinishedSecPairing(idR, capR, ksR, idI, capI, ksI, pkR, pkI, dh, ltk) @k1 ==> + (Ex #k2 . + InitiatorFinishedSecPairing(idI, capI, ksI, idR, capR, ksR, pkI, pkR, dh, ltk) @k2 + ) + ) +" + +lemma secPEo_secPEio_weaksecret_init: +" + All #i1 #i2 . + InitWillDoSecPEo()[+] @i1 & RespWillDoSecPEio()[+] @i2 ==> + (All idI idR capI capR ksI ksR pkI pkR dh ltk #k1 . + InitiatorFinishedSecPairing(idI, capI, ksI, idR, capR, ksR, pkI, pkR, dh, ltk) @k1 ==> + not (Ex #k2 . K(ltk) @k2) + ) +" + +lemma secPEo_secPEio_weaksecret_resp: +" + All #i1 #i2 . + InitWillDoSecPEo()[+] @i1 & RespWillDoSecPEio()[+] @i2 ==> + (All idI idR capI capR ksI ksR pkI pkR dh ltk #k1 . + ResponderFinishedSecPairing(idR, capR, ksR, idI, capI, ksI, pkR, pkI, dh, ltk) @k1 ==> + not (Ex #k2 . K(ltk) @k2) + ) +" + +lemma secPEo_secPEio_double_impersonation: +" + All #i1 #i2 . + InitWillDoSecPEo()[+] @i1 & RespWillDoSecPEio()[+] @i2 ==> + (All idI1 idR1 capI1 capR1 ksI1 ksR1 pkI1 pkR1 dh1 ltk1 idI2 idR2 capI2 capR2 ksI2 ksR2 pkI2 pkR2 dh2 ltk2 #j1 #j2 . + InitiatorFinishedSecPairing(idI1, capI1, ksI1, idR1, capR1, ksR1, pkI1, pkR1, dh1, ltk1) @j1 & + ResponderFinishedSecPairing(idR2, capR2, ksR2, idI2, capI2, ksI2, pkR2, pkI2, dh2, ltk2) @j2 ==> + not (Ex #k1 #k2 . + K(ltk1) @k1 & K(ltk2) @k2 + ) + ) +" + +#endif + +/********************************************/ +/* End lemmas about SecPEo-SecPEio exchange */ +/********************************************/ + +/**************************************/ +/* Lemmas about SecPEo-SecNC exchange */ +/**************************************/ + +#ifdef SecPEoSecNC +lemma secPEo_secNC_functional: exists-trace +" + Ex #i1 #i2 . + InitWillDoSecPEo()[+] @i1 & RespWillDoSecNC()[+] @i2 & + (Ex idI1 idR1 capI1 capR1 ksI1 ksR1 pkI1 pkR1 dh1 ltk1 idI2 idR2 capI2 capR2 ksI2 ksR2 pkI2 pkR2 dh2 ltk2 #j1 #j2 . + InitiatorFinishedSecPairing(idI1, capI1, ksI1, idR1, capR1, ksR1, pkI1, pkR1, dh1, ltk1) @j1 & + ResponderFinishedSecPairing(idR2, capR2, ksI2, idI2, capI2, ksR2, pkR2, pkI2, dh2, ltk2) @j2 + ) +" + +lemma secPEo_secNC_auth_init: +" + All #i1 #i2 . + InitWillDoSecPEo()[+] @i1 & RespWillDoSecNC()[+] @i2 ==> + (All idI idR capI capR ksI ksR pkI pkR dh ltk #k1 . + InitiatorFinishedSecPairing(idI, capI, ksI, idR, capR, ksR, pkI, pkR, dh, ltk) @k1 ==> + (Ex ni nr ri rr ei er #k2 . + RespDoneDHKeyCheck(idR, capR, ksR, idI, capI, ksI, pkR, pkI, dh, nr, ni, rr, ri, er, ei) @k2 + ) + ) +" + +lemma secPEo_secNC_auth_resp: +" + All #i1 #i2 . + InitWillDoSecPEo()[+] @i1 & RespWillDoSecNC()[+] @i2 ==> + (All idI idR capI capR ksI ksR pkI pkR dh ltk #k1 . + ResponderFinishedSecPairing(idR, capR, ksR, idI, capI, ksI, pkR, pkI, dh, ltk) @k1 ==> + (Ex #k2 . + InitiatorFinishedSecPairing(idI, capI, ksI, idR, capR, ksR, pkI, pkR, dh, ltk) @k2 + ) + ) +" + +lemma secPEo_secNC_weaksecret_init: +" + All #i1 #i2 . + InitWillDoSecPEo()[+] @i1 & RespWillDoSecNC()[+] @i2 ==> + (All idI idR capI capR ksI ksR pkI pkR dh ltk #k1 . + InitiatorFinishedSecPairing(idI, capI, ksI, idR, capR, ksR, pkI, pkR, dh, ltk) @k1 ==> + not (Ex #k2 . K(ltk) @k2) + ) +" + +lemma secPEo_secNC_weaksecret_resp: +" + All #i1 #i2 . + InitWillDoSecPEo()[+] @i1 & RespWillDoSecNC()[+] @i2 ==> + (All idI idR capI capR ksI ksR pkI pkR dh ltk #k1 . + ResponderFinishedSecPairing(idR, capR, ksR, idI, capI, ksI, pkR, pkI, dh, ltk) @k1 ==> + not (Ex #k2 . K(ltk) @k2) + ) +" + +lemma secPEo_secNC_double_impersonation: +" + All #i1 #i2 . + InitWillDoSecPEo()[+] @i1 & RespWillDoSecNC()[+] @i2 ==> + (All idI1 idR1 capI1 capR1 ksI1 ksR1 pkI1 pkR1 dh1 ltk1 idI2 idR2 capI2 capR2 ksI2 ksR2 pkI2 pkR2 dh2 ltk2 #j1 #j2 . + InitiatorFinishedSecPairing(idI1, capI1, ksI1, idR1, capR1, ksR1, pkI1, pkR1, dh1, ltk1) @j1 & + ResponderFinishedSecPairing(idR2, capR2, ksR2, idI2, capI2, ksI2, pkR2, pkI2, dh2, ltk2) @j2 ==> + not (Ex #k1 #k2 . + K(ltk1) @k1 & K(ltk2) @k2 + ) + ) +" + +#endif + +/******************************************/ +/* End lemmas about SecPEo-SecNC exchange */ +/******************************************/ + +/****************************************/ +/* Lemmas about SecPEo-SecOOBi exchange */ +/****************************************/ + +#ifdef SecPEoSecOOBi +lemma secPEo_secOOBi_functional: exists-trace +" + Ex #i1 #i2 . + InitWillDoSecPEo()[+] @i1 & RespWillDoSecOOBi()[+] @i2 & + (Ex idI1 idR1 capI1 capR1 ksI1 ksR1 pkI1 pkR1 dh1 ltk1 idI2 idR2 capI2 capR2 ksI2 ksR2 pkI2 pkR2 dh2 ltk2 #j1 #j2 . + InitiatorFinishedSecPairing(idI1, capI1, ksI1, idR1, capR1, ksR1, pkI1, pkR1, dh1, ltk1) @j1 & + ResponderFinishedSecPairing(idR2, capR2, ksI2, idI2, capI2, ksR2, pkR2, pkI2, dh2, ltk2) @j2 + ) +" + +lemma secPEo_secOOBi_auth_init: +" + All #i1 #i2 . + InitWillDoSecPEo()[+] @i1 & RespWillDoSecOOBi()[+] @i2 ==> + (All idI idR capI capR ksI ksR pkI pkR dh ltk #k1 . + InitiatorFinishedSecPairing(idI, capI, ksI, idR, capR, ksR, pkI, pkR, dh, ltk) @k1 ==> + (Ex ni nr ri rr ei er #k2 . + RespDoneDHKeyCheck(idR, capR, ksR, idI, capI, ksI, pkR, pkI, dh, nr, ni, rr, ri, er, ei) @k2 + ) + ) +" + +lemma secPEo_secOOBi_auth_resp: +" + All #i1 #i2 . + InitWillDoSecPEo()[+] @i1 & RespWillDoSecOOBi()[+] @i2 ==> + (All idI idR capI capR ksI ksR pkI pkR dh ltk #k1 . + ResponderFinishedSecPairing(idR, capR, ksR, idI, capI, ksI, pkR, pkI, dh, ltk) @k1 ==> + (Ex #k2 . + InitiatorFinishedSecPairing(idI, capI, ksI, idR, capR, ksR, pkI, pkR, dh, ltk) @k2 + ) + ) +" + +lemma secPEo_secOOBi_weaksecret_init: +" + All #i1 #i2 . + InitWillDoSecPEo()[+] @i1 & RespWillDoSecOOBi()[+] @i2 ==> + (All idI idR capI capR ksI ksR pkI pkR dh ltk #k1 . + InitiatorFinishedSecPairing(idI, capI, ksI, idR, capR, ksR, pkI, pkR, dh, ltk) @k1 ==> + not (Ex #k2 . K(ltk) @k2) + ) +" + +lemma secPEo_secOOBi_weaksecret_resp: +" + All #i1 #i2 . + InitWillDoSecPEo()[+] @i1 & RespWillDoSecOOBi()[+] @i2 ==> + (All idI idR capI capR ksI ksR pkI pkR dh ltk #k1 . + ResponderFinishedSecPairing(idR, capR, ksR, idI, capI, ksI, pkR, pkI, dh, ltk) @k1 ==> + not (Ex #k2 . K(ltk) @k2) + ) +" + +lemma secPEo_secOOBi_double_impersonation: +" + All #i1 #i2 . + InitWillDoSecPEo()[+] @i1 & RespWillDoSecOOBi()[+] @i2 ==> + (All idI1 idR1 capI1 capR1 ksI1 ksR1 pkI1 pkR1 dh1 ltk1 idI2 idR2 capI2 capR2 ksI2 ksR2 pkI2 pkR2 dh2 ltk2 #j1 #j2 . + InitiatorFinishedSecPairing(idI1, capI1, ksI1, idR1, capR1, ksR1, pkI1, pkR1, dh1, ltk1) @j1 & + ResponderFinishedSecPairing(idR2, capR2, ksR2, idI2, capI2, ksI2, pkR2, pkI2, dh2, ltk2) @j2 ==> + not (Ex #k1 #k2 . + K(ltk1) @k1 & K(ltk2) @k2 + ) + ) +" + +#endif + +/********************************************/ +/* End lemmas about SecPEo-SecOOBi exchange */ +/********************************************/ + +/****************************************/ +/* Lemmas about SecPEo-SecOOBo exchange */ +/****************************************/ + +#ifdef SecPEoSecOOBo +lemma secPEo_secOOBo_functional: exists-trace +" + Ex #i1 #i2 . + InitWillDoSecPEo()[+] @i1 & RespWillDoSecOOBo()[+] @i2 & + (Ex idI1 idR1 capI1 capR1 ksI1 ksR1 pkI1 pkR1 dh1 ltk1 idI2 idR2 capI2 capR2 ksI2 ksR2 pkI2 pkR2 dh2 ltk2 #j1 #j2 . + InitiatorFinishedSecPairing(idI1, capI1, ksI1, idR1, capR1, ksR1, pkI1, pkR1, dh1, ltk1) @j1 & + ResponderFinishedSecPairing(idR2, capR2, ksI2, idI2, capI2, ksR2, pkR2, pkI2, dh2, ltk2) @j2 + ) +" + +lemma secPEo_secOOBo_auth_init: +" + All #i1 #i2 . + InitWillDoSecPEo()[+] @i1 & RespWillDoSecOOBo()[+] @i2 ==> + (All idI idR capI capR ksI ksR pkI pkR dh ltk #k1 . + InitiatorFinishedSecPairing(idI, capI, ksI, idR, capR, ksR, pkI, pkR, dh, ltk) @k1 ==> + (Ex ni nr ri rr ei er #k2 . + RespDoneDHKeyCheck(idR, capR, ksR, idI, capI, ksI, pkR, pkI, dh, nr, ni, rr, ri, er, ei) @k2 + ) + ) +" + +lemma secPEo_secOOBo_auth_resp: +" + All #i1 #i2 . + InitWillDoSecPEo()[+] @i1 & RespWillDoSecOOBo()[+] @i2 ==> + (All idI idR capI capR ksI ksR pkI pkR dh ltk #k1 . + ResponderFinishedSecPairing(idR, capR, ksR, idI, capI, ksI, pkR, pkI, dh, ltk) @k1 ==> + (Ex #k2 . + InitiatorFinishedSecPairing(idI, capI, ksI, idR, capR, ksR, pkI, pkR, dh, ltk) @k2 + ) + ) +" + +lemma secPEo_secOOBo_weaksecret_init: +" + All #i1 #i2 . + InitWillDoSecPEo()[+] @i1 & RespWillDoSecOOBo()[+] @i2 ==> + (All idI idR capI capR ksI ksR pkI pkR dh ltk #k1 . + InitiatorFinishedSecPairing(idI, capI, ksI, idR, capR, ksR, pkI, pkR, dh, ltk) @k1 ==> + not (Ex #k2 . K(ltk) @k2) + ) +" + +lemma secPEo_secOOBo_weaksecret_resp: +" + All #i1 #i2 . + InitWillDoSecPEo()[+] @i1 & RespWillDoSecOOBo()[+] @i2 ==> + (All idI idR capI capR ksI ksR pkI pkR dh ltk #k1 . + ResponderFinishedSecPairing(idR, capR, ksR, idI, capI, ksI, pkR, pkI, dh, ltk) @k1 ==> + not (Ex #k2 . K(ltk) @k2) + ) +" + +lemma secPEo_secOOBo_double_impersonation: +" + All #i1 #i2 . + InitWillDoSecPEo()[+] @i1 & RespWillDoSecOOBo()[+] @i2 ==> + (All idI1 idR1 capI1 capR1 ksI1 ksR1 pkI1 pkR1 dh1 ltk1 idI2 idR2 capI2 capR2 ksI2 ksR2 pkI2 pkR2 dh2 ltk2 #j1 #j2 . + InitiatorFinishedSecPairing(idI1, capI1, ksI1, idR1, capR1, ksR1, pkI1, pkR1, dh1, ltk1) @j1 & + ResponderFinishedSecPairing(idR2, capR2, ksR2, idI2, capI2, ksI2, pkR2, pkI2, dh2, ltk2) @j2 ==> + not (Ex #k1 #k2 . + K(ltk1) @k1 & K(ltk2) @k2 + ) + ) +" + +#endif + +/********************************************/ +/* End lemmas about SecPEo-SecOOBo exchange */ +/********************************************/ + +/*****************************************/ +/* Lemmas about SecPEo-SecOOBio exchange */ +/*****************************************/ + +#ifdef SecPEoSecOOBio +lemma secPEo_secOOBio_functional: exists-trace +" + Ex #i1 #i2 . + InitWillDoSecPEo()[+] @i1 & RespWillDoSecOOBio()[+] @i2 & + (Ex idI1 idR1 capI1 capR1 ksI1 ksR1 pkI1 pkR1 dh1 ltk1 idI2 idR2 capI2 capR2 ksI2 ksR2 pkI2 pkR2 dh2 ltk2 #j1 #j2 . + InitiatorFinishedSecPairing(idI1, capI1, ksI1, idR1, capR1, ksR1, pkI1, pkR1, dh1, ltk1) @j1 & + ResponderFinishedSecPairing(idR2, capR2, ksI2, idI2, capI2, ksR2, pkR2, pkI2, dh2, ltk2) @j2 + ) +" + +lemma secPEo_secOOBio_auth_init: +" + All #i1 #i2 . + InitWillDoSecPEo()[+] @i1 & RespWillDoSecOOBio()[+] @i2 ==> + (All idI idR capI capR ksI ksR pkI pkR dh ltk #k1 . + InitiatorFinishedSecPairing(idI, capI, ksI, idR, capR, ksR, pkI, pkR, dh, ltk) @k1 ==> + (Ex ni nr ri rr ei er #k2 . + RespDoneDHKeyCheck(idR, capR, ksR, idI, capI, ksI, pkR, pkI, dh, nr, ni, rr, ri, er, ei) @k2 + ) + ) +" + +lemma secPEo_secOOBio_auth_resp: +" + All #i1 #i2 . + InitWillDoSecPEo()[+] @i1 & RespWillDoSecOOBio()[+] @i2 ==> + (All idI idR capI capR ksI ksR pkI pkR dh ltk #k1 . + ResponderFinishedSecPairing(idR, capR, ksR, idI, capI, ksI, pkR, pkI, dh, ltk) @k1 ==> + (Ex #k2 . + InitiatorFinishedSecPairing(idI, capI, ksI, idR, capR, ksR, pkI, pkR, dh, ltk) @k2 + ) + ) +" + +lemma secPEo_secOOBio_weaksecret_init: +" + All #i1 #i2 . + InitWillDoSecPEo()[+] @i1 & RespWillDoSecOOBio()[+] @i2 ==> + (All idI idR capI capR ksI ksR pkI pkR dh ltk #k1 . + InitiatorFinishedSecPairing(idI, capI, ksI, idR, capR, ksR, pkI, pkR, dh, ltk) @k1 ==> + not (Ex #k2 . K(ltk) @k2) + ) +" + +lemma secPEo_secOOBio_weaksecret_resp: +" + All #i1 #i2 . + InitWillDoSecPEo()[+] @i1 & RespWillDoSecOOBio()[+] @i2 ==> + (All idI idR capI capR ksI ksR pkI pkR dh ltk #k1 . + ResponderFinishedSecPairing(idR, capR, ksR, idI, capI, ksI, pkR, pkI, dh, ltk) @k1 ==> + not (Ex #k2 . K(ltk) @k2) + ) +" + +lemma secPEo_secOOBio_double_impersonation: +" + All #i1 #i2 . + InitWillDoSecPEo()[+] @i1 & RespWillDoSecOOBio()[+] @i2 ==> + (All idI1 idR1 capI1 capR1 ksI1 ksR1 pkI1 pkR1 dh1 ltk1 idI2 idR2 capI2 capR2 ksI2 ksR2 pkI2 pkR2 dh2 ltk2 #j1 #j2 . + InitiatorFinishedSecPairing(idI1, capI1, ksI1, idR1, capR1, ksR1, pkI1, pkR1, dh1, ltk1) @j1 & + ResponderFinishedSecPairing(idR2, capR2, ksR2, idI2, capI2, ksI2, pkR2, pkI2, dh2, ltk2) @j2 ==> + not (Ex #k1 #k2 . + K(ltk1) @k1 & K(ltk2) @k2 + ) + ) +" + +#endif + +/*********************************************/ +/* End lemmas about SecPEo-SecOOBio exchange */ +/*********************************************/ + +/***************************************/ +/* Lemmas about SecPEio-SecJW exchange */ +/***************************************/ + +#ifdef SecPEioSecJW +lemma secPEio_secJW_functional: exists-trace +" + Ex #i1 #i2 . + InitWillDoSecPEio()[+] @i1 & RespWillDoSecJW()[+] @i2 & + (Ex idI1 idR1 capI1 capR1 ksI1 ksR1 pkI1 pkR1 dh1 ltk1 idI2 idR2 capI2 capR2 ksI2 ksR2 pkI2 pkR2 dh2 ltk2 #j1 #j2 . + InitiatorFinishedSecPairing(idI1, capI1, ksI1, idR1, capR1, ksR1, pkI1, pkR1, dh1, ltk1) @j1 & + ResponderFinishedSecPairing(idR2, capR2, ksI2, idI2, capI2, ksR2, pkR2, pkI2, dh2, ltk2) @j2 + ) +" + +lemma secPEio_secJW_auth_init: +" + All #i1 #i2 . + InitWillDoSecPEio()[+] @i1 & RespWillDoSecJW()[+] @i2 ==> + (All idI idR capI capR ksI ksR pkI pkR dh ltk #k1 . + InitiatorFinishedSecPairing(idI, capI, ksI, idR, capR, ksR, pkI, pkR, dh, ltk) @k1 ==> + (Ex ni nr ri rr ei er #k2 . + RespDoneDHKeyCheck(idR, capR, ksR, idI, capI, ksI, pkR, pkI, dh, nr, ni, rr, ri, er, ei) @k2 + ) + ) +" + +lemma secPEio_secJW_auth_resp: +" + All #i1 #i2 . + InitWillDoSecPEio()[+] @i1 & RespWillDoSecJW()[+] @i2 ==> + (All idI idR capI capR ksI ksR pkI pkR dh ltk #k1 . + ResponderFinishedSecPairing(idR, capR, ksR, idI, capI, ksI, pkR, pkI, dh, ltk) @k1 ==> + (Ex #k2 . + InitiatorFinishedSecPairing(idI, capI, ksI, idR, capR, ksR, pkI, pkR, dh, ltk) @k2 + ) + ) +" + +lemma secPEio_secJW_weaksecret_init: +" + All #i1 #i2 . + InitWillDoSecPEio()[+] @i1 & RespWillDoSecJW()[+] @i2 ==> + (All idI idR capI capR ksI ksR pkI pkR dh ltk #k1 . + InitiatorFinishedSecPairing(idI, capI, ksI, idR, capR, ksR, pkI, pkR, dh, ltk) @k1 ==> + not (Ex #k2 . K(ltk) @k2) + ) +" + +lemma secPEio_secJW_weaksecret_resp: +" + All #i1 #i2 . + InitWillDoSecPEio()[+] @i1 & RespWillDoSecJW()[+] @i2 ==> + (All idI idR capI capR ksI ksR pkI pkR dh ltk #k1 . + ResponderFinishedSecPairing(idR, capR, ksR, idI, capI, ksI, pkR, pkI, dh, ltk) @k1 ==> + not (Ex #k2 . K(ltk) @k2) + ) +" + +lemma secPEio_secJW_double_impersonation: +" + All #i1 #i2 . + InitWillDoSecPEio()[+] @i1 & RespWillDoSecJW()[+] @i2 ==> + (All idI1 idR1 capI1 capR1 ksI1 ksR1 pkI1 pkR1 dh1 ltk1 idI2 idR2 capI2 capR2 ksI2 ksR2 pkI2 pkR2 dh2 ltk2 #j1 #j2 . + InitiatorFinishedSecPairing(idI1, capI1, ksI1, idR1, capR1, ksR1, pkI1, pkR1, dh1, ltk1) @j1 & + ResponderFinishedSecPairing(idR2, capR2, ksR2, idI2, capI2, ksI2, pkR2, pkI2, dh2, ltk2) @j2 ==> + not (Ex #k1 #k2 . + K(ltk1) @k1 & K(ltk2) @k2 + ) + ) +" + +#endif + +/*******************************************/ +/* End lemmas about SecPEio-SecJW exchange */ +/*******************************************/ + +/****************************************/ +/* Lemmas about SecPEio-SecPEi exchange */ +/****************************************/ + +#ifdef SecPEioSecPEi +lemma secPEio_secPEi_functional: exists-trace +" + Ex #i1 #i2 . + InitWillDoSecPEio()[+] @i1 & RespWillDoSecPEi()[+] @i2 & + (Ex idI1 idR1 capI1 capR1 ksI1 ksR1 pkI1 pkR1 dh1 ltk1 idI2 idR2 capI2 capR2 ksI2 ksR2 pkI2 pkR2 dh2 ltk2 #j1 #j2 . + InitiatorFinishedSecPairing(idI1, capI1, ksI1, idR1, capR1, ksR1, pkI1, pkR1, dh1, ltk1) @j1 & + ResponderFinishedSecPairing(idR2, capR2, ksI2, idI2, capI2, ksR2, pkR2, pkI2, dh2, ltk2) @j2 + ) +" + +lemma secPEio_secPEi_auth_init: +" + All #i1 #i2 . + InitWillDoSecPEio()[+] @i1 & RespWillDoSecPEi()[+] @i2 ==> + (All idI idR capI capR ksI ksR pkI pkR dh ltk #k1 . + InitiatorFinishedSecPairing(idI, capI, ksI, idR, capR, ksR, pkI, pkR, dh, ltk) @k1 ==> + (Ex ni nr ri rr ei er #k2 . + RespDoneDHKeyCheck(idR, capR, ksR, idI, capI, ksI, pkR, pkI, dh, nr, ni, rr, ri, er, ei) @k2 + ) + ) +" + +lemma secPEio_secPEi_auth_resp: +" + All #i1 #i2 . + InitWillDoSecPEio()[+] @i1 & RespWillDoSecPEi()[+] @i2 ==> + (All idI idR capI capR ksI ksR pkI pkR dh ltk #k1 . + ResponderFinishedSecPairing(idR, capR, ksR, idI, capI, ksI, pkR, pkI, dh, ltk) @k1 ==> + (Ex #k2 . + InitiatorFinishedSecPairing(idI, capI, ksI, idR, capR, ksR, pkI, pkR, dh, ltk) @k2 + ) + ) +" + +lemma secPEio_secPEi_weaksecret_init: +" + All #i1 #i2 . + InitWillDoSecPEio()[+] @i1 & RespWillDoSecPEi()[+] @i2 ==> + (All idI idR capI capR ksI ksR pkI pkR dh ltk #k1 . + InitiatorFinishedSecPairing(idI, capI, ksI, idR, capR, ksR, pkI, pkR, dh, ltk) @k1 ==> + not (Ex #k2 . K(ltk) @k2) + ) +" + +lemma secPEio_secPEi_weaksecret_resp: +" + All #i1 #i2 . + InitWillDoSecPEio()[+] @i1 & RespWillDoSecPEi()[+] @i2 ==> + (All idI idR capI capR ksI ksR pkI pkR dh ltk #k1 . + ResponderFinishedSecPairing(idR, capR, ksR, idI, capI, ksI, pkR, pkI, dh, ltk) @k1 ==> + not (Ex #k2 . K(ltk) @k2) + ) +" + +lemma secPEio_secPEi_double_impersonation: +" + All #i1 #i2 . + InitWillDoSecPEio()[+] @i1 & RespWillDoSecPEi()[+] @i2 ==> + (All idI1 idR1 capI1 capR1 ksI1 ksR1 pkI1 pkR1 dh1 ltk1 idI2 idR2 capI2 capR2 ksI2 ksR2 pkI2 pkR2 dh2 ltk2 #j1 #j2 . + InitiatorFinishedSecPairing(idI1, capI1, ksI1, idR1, capR1, ksR1, pkI1, pkR1, dh1, ltk1) @j1 & + ResponderFinishedSecPairing(idR2, capR2, ksR2, idI2, capI2, ksI2, pkR2, pkI2, dh2, ltk2) @j2 ==> + not (Ex #k1 #k2 . + K(ltk1) @k1 & K(ltk2) @k2 + ) + ) +" + +#endif + +/********************************************/ +/* End lemmas about SecPEio-SecPEi exchange */ +/********************************************/ + +/****************************************/ +/* Lemmas about SecPEio-SecPEo exchange */ +/****************************************/ + +#ifdef SecPEioSecPEo +lemma secPEio_secPEo_functional: exists-trace +" + Ex #i1 #i2 . + InitWillDoSecPEio()[+] @i1 & RespWillDoSecPEo()[+] @i2 & + (Ex idI1 idR1 capI1 capR1 ksI1 ksR1 pkI1 pkR1 dh1 ltk1 idI2 idR2 capI2 capR2 ksI2 ksR2 pkI2 pkR2 dh2 ltk2 #j1 #j2 . + InitiatorFinishedSecPairing(idI1, capI1, ksI1, idR1, capR1, ksR1, pkI1, pkR1, dh1, ltk1) @j1 & + ResponderFinishedSecPairing(idR2, capR2, ksI2, idI2, capI2, ksR2, pkR2, pkI2, dh2, ltk2) @j2 + ) +" + +lemma secPEio_secPEo_auth_init: +" + All #i1 #i2 . + InitWillDoSecPEio()[+] @i1 & RespWillDoSecPEo()[+] @i2 ==> + (All idI idR capI capR ksI ksR pkI pkR dh ltk #k1 . + InitiatorFinishedSecPairing(idI, capI, ksI, idR, capR, ksR, pkI, pkR, dh, ltk) @k1 ==> + (Ex ni nr ri rr ei er #k2 . + RespDoneDHKeyCheck(idR, capR, ksR, idI, capI, ksI, pkR, pkI, dh, nr, ni, rr, ri, er, ei) @k2 + ) + ) +" + +lemma secPEio_secPEo_auth_resp: +" + All #i1 #i2 . + InitWillDoSecPEio()[+] @i1 & RespWillDoSecPEo()[+] @i2 ==> + (All idI idR capI capR ksI ksR pkI pkR dh ltk #k1 . + ResponderFinishedSecPairing(idR, capR, ksR, idI, capI, ksI, pkR, pkI, dh, ltk) @k1 ==> + (Ex #k2 . + InitiatorFinishedSecPairing(idI, capI, ksI, idR, capR, ksR, pkI, pkR, dh, ltk) @k2 + ) + ) +" + +lemma secPEio_secPEo_weaksecret_init: +" + All #i1 #i2 . + InitWillDoSecPEio()[+] @i1 & RespWillDoSecPEo()[+] @i2 ==> + (All idI idR capI capR ksI ksR pkI pkR dh ltk #k1 . + InitiatorFinishedSecPairing(idI, capI, ksI, idR, capR, ksR, pkI, pkR, dh, ltk) @k1 ==> + not (Ex #k2 . K(ltk) @k2) + ) +" + +lemma secPEio_secPEo_weaksecret_resp: +" + All #i1 #i2 . + InitWillDoSecPEio()[+] @i1 & RespWillDoSecPEo()[+] @i2 ==> + (All idI idR capI capR ksI ksR pkI pkR dh ltk #k1 . + ResponderFinishedSecPairing(idR, capR, ksR, idI, capI, ksI, pkR, pkI, dh, ltk) @k1 ==> + not (Ex #k2 . K(ltk) @k2) + ) +" + +lemma secPEio_secPEo_double_impersonation: +" + All #i1 #i2 . + InitWillDoSecPEio()[+] @i1 & RespWillDoSecPEo()[+] @i2 ==> + (All idI1 idR1 capI1 capR1 ksI1 ksR1 pkI1 pkR1 dh1 ltk1 idI2 idR2 capI2 capR2 ksI2 ksR2 pkI2 pkR2 dh2 ltk2 #j1 #j2 . + InitiatorFinishedSecPairing(idI1, capI1, ksI1, idR1, capR1, ksR1, pkI1, pkR1, dh1, ltk1) @j1 & + ResponderFinishedSecPairing(idR2, capR2, ksR2, idI2, capI2, ksI2, pkR2, pkI2, dh2, ltk2) @j2 ==> + not (Ex #k1 #k2 . + K(ltk1) @k1 & K(ltk2) @k2 + ) + ) +" + +#endif + +/********************************************/ +/* End lemmas about SecPEio-SecPEo exchange */ +/********************************************/ + +/*****************************************/ +/* Lemmas about SecPEio-SecPEio exchange */ +/*****************************************/ + +#ifdef SecPEioSecPEio +lemma secPEio_secPEio_functional: exists-trace +" + Ex #i1 #i2 . + InitWillDoSecPEio()[+] @i1 & RespWillDoSecPEio()[+] @i2 & + (Ex idI1 idR1 capI1 capR1 ksI1 ksR1 pkI1 pkR1 dh1 ltk1 idI2 idR2 capI2 capR2 ksI2 ksR2 pkI2 pkR2 dh2 ltk2 #j1 #j2 . + InitiatorFinishedSecPairing(idI1, capI1, ksI1, idR1, capR1, ksR1, pkI1, pkR1, dh1, ltk1) @j1 & + ResponderFinishedSecPairing(idR2, capR2, ksI2, idI2, capI2, ksR2, pkR2, pkI2, dh2, ltk2) @j2 + ) +" + +lemma secPEio_secPEio_auth_init: +" + All #i1 #i2 . + InitWillDoSecPEio()[+] @i1 & RespWillDoSecPEio()[+] @i2 ==> + (All idI idR capI capR ksI ksR pkI pkR dh ltk #k1 . + InitiatorFinishedSecPairing(idI, capI, ksI, idR, capR, ksR, pkI, pkR, dh, ltk) @k1 ==> + (Ex ni nr ri rr ei er #k2 . + RespDoneDHKeyCheck(idR, capR, ksR, idI, capI, ksI, pkR, pkI, dh, nr, ni, rr, ri, er, ei) @k2 + ) + ) +" + +lemma secPEio_secPEio_auth_resp: +" + All #i1 #i2 . + InitWillDoSecPEio()[+] @i1 & RespWillDoSecPEio()[+] @i2 ==> + (All idI idR capI capR ksI ksR pkI pkR dh ltk #k1 . + ResponderFinishedSecPairing(idR, capR, ksR, idI, capI, ksI, pkR, pkI, dh, ltk) @k1 ==> + (Ex #k2 . + InitiatorFinishedSecPairing(idI, capI, ksI, idR, capR, ksR, pkI, pkR, dh, ltk) @k2 + ) + ) +" + +lemma secPEio_secPEio_weaksecret_init: +" + All #i1 #i2 . + InitWillDoSecPEio()[+] @i1 & RespWillDoSecPEio()[+] @i2 ==> + (All idI idR capI capR ksI ksR pkI pkR dh ltk #k1 . + InitiatorFinishedSecPairing(idI, capI, ksI, idR, capR, ksR, pkI, pkR, dh, ltk) @k1 ==> + not (Ex #k2 . K(ltk) @k2) + ) +" + +lemma secPEio_secPEio_weaksecret_resp: +" + All #i1 #i2 . + InitWillDoSecPEio()[+] @i1 & RespWillDoSecPEio()[+] @i2 ==> + (All idI idR capI capR ksI ksR pkI pkR dh ltk #k1 . + ResponderFinishedSecPairing(idR, capR, ksR, idI, capI, ksI, pkR, pkI, dh, ltk) @k1 ==> + not (Ex #k2 . K(ltk) @k2) + ) +" + +lemma secPEio_secPEio_double_impersonation: +" + All #i1 #i2 . + InitWillDoSecPEio()[+] @i1 & RespWillDoSecPEio()[+] @i2 ==> + (All idI1 idR1 capI1 capR1 ksI1 ksR1 pkI1 pkR1 dh1 ltk1 idI2 idR2 capI2 capR2 ksI2 ksR2 pkI2 pkR2 dh2 ltk2 #j1 #j2 . + InitiatorFinishedSecPairing(idI1, capI1, ksI1, idR1, capR1, ksR1, pkI1, pkR1, dh1, ltk1) @j1 & + ResponderFinishedSecPairing(idR2, capR2, ksR2, idI2, capI2, ksI2, pkR2, pkI2, dh2, ltk2) @j2 ==> + not (Ex #k1 #k2 . + K(ltk1) @k1 & K(ltk2) @k2 + ) + ) +" + +#endif + +/*********************************************/ +/* End lemmas about SecPEio-SecPEio exchange */ +/*********************************************/ + +/***************************************/ +/* Lemmas about SecPEio-SecNC exchange */ +/***************************************/ + +#ifdef SecPEioSecNC +lemma secPEio_secNC_functional: exists-trace +" + Ex #i1 #i2 . + InitWillDoSecPEio()[+] @i1 & RespWillDoSecNC()[+] @i2 & + (Ex idI1 idR1 capI1 capR1 ksI1 ksR1 pkI1 pkR1 dh1 ltk1 idI2 idR2 capI2 capR2 ksI2 ksR2 pkI2 pkR2 dh2 ltk2 #j1 #j2 . + InitiatorFinishedSecPairing(idI1, capI1, ksI1, idR1, capR1, ksR1, pkI1, pkR1, dh1, ltk1) @j1 & + ResponderFinishedSecPairing(idR2, capR2, ksI2, idI2, capI2, ksR2, pkR2, pkI2, dh2, ltk2) @j2 + ) +" + +lemma secPEio_secNC_auth_init: +" + All #i1 #i2 . + InitWillDoSecPEio()[+] @i1 & RespWillDoSecNC()[+] @i2 ==> + (All idI idR capI capR ksI ksR pkI pkR dh ltk #k1 . + InitiatorFinishedSecPairing(idI, capI, ksI, idR, capR, ksR, pkI, pkR, dh, ltk) @k1 ==> + (Ex ni nr ri rr ei er #k2 . + RespDoneDHKeyCheck(idR, capR, ksR, idI, capI, ksI, pkR, pkI, dh, nr, ni, rr, ri, er, ei) @k2 + ) + ) +" + +lemma secPEio_secNC_auth_resp: +" + All #i1 #i2 . + InitWillDoSecPEio()[+] @i1 & RespWillDoSecNC()[+] @i2 ==> + (All idI idR capI capR ksI ksR pkI pkR dh ltk #k1 . + ResponderFinishedSecPairing(idR, capR, ksR, idI, capI, ksI, pkR, pkI, dh, ltk) @k1 ==> + (Ex #k2 . + InitiatorFinishedSecPairing(idI, capI, ksI, idR, capR, ksR, pkI, pkR, dh, ltk) @k2 + ) + ) +" + +lemma secPEio_secNC_weaksecret_init: +" + All #i1 #i2 . + InitWillDoSecPEio()[+] @i1 & RespWillDoSecNC()[+] @i2 ==> + (All idI idR capI capR ksI ksR pkI pkR dh ltk #k1 . + InitiatorFinishedSecPairing(idI, capI, ksI, idR, capR, ksR, pkI, pkR, dh, ltk) @k1 ==> + not (Ex #k2 . K(ltk) @k2) + ) +" + +lemma secPEio_secNC_weaksecret_resp: +" + All #i1 #i2 . + InitWillDoSecPEio()[+] @i1 & RespWillDoSecNC()[+] @i2 ==> + (All idI idR capI capR ksI ksR pkI pkR dh ltk #k1 . + ResponderFinishedSecPairing(idR, capR, ksR, idI, capI, ksI, pkR, pkI, dh, ltk) @k1 ==> + not (Ex #k2 . K(ltk) @k2) + ) +" + +lemma secPEio_secNC_double_impersonation: +" + All #i1 #i2 . + InitWillDoSecPEio()[+] @i1 & RespWillDoSecNC()[+] @i2 ==> + (All idI1 idR1 capI1 capR1 ksI1 ksR1 pkI1 pkR1 dh1 ltk1 idI2 idR2 capI2 capR2 ksI2 ksR2 pkI2 pkR2 dh2 ltk2 #j1 #j2 . + InitiatorFinishedSecPairing(idI1, capI1, ksI1, idR1, capR1, ksR1, pkI1, pkR1, dh1, ltk1) @j1 & + ResponderFinishedSecPairing(idR2, capR2, ksR2, idI2, capI2, ksI2, pkR2, pkI2, dh2, ltk2) @j2 ==> + not (Ex #k1 #k2 . + K(ltk1) @k1 & K(ltk2) @k2 + ) + ) +" + +#endif + +/*******************************************/ +/* End lemmas about SecPEio-SecNC exchange */ +/*******************************************/ + +/*****************************************/ +/* Lemmas about SecPEio-SecOOBi exchange */ +/*****************************************/ + +#ifdef SecPEioSecOOBi +lemma secPEio_secOOBi_functional: exists-trace +" + Ex #i1 #i2 . + InitWillDoSecPEio()[+] @i1 & RespWillDoSecOOBi()[+] @i2 & + (Ex idI1 idR1 capI1 capR1 ksI1 ksR1 pkI1 pkR1 dh1 ltk1 idI2 idR2 capI2 capR2 ksI2 ksR2 pkI2 pkR2 dh2 ltk2 #j1 #j2 . + InitiatorFinishedSecPairing(idI1, capI1, ksI1, idR1, capR1, ksR1, pkI1, pkR1, dh1, ltk1) @j1 & + ResponderFinishedSecPairing(idR2, capR2, ksI2, idI2, capI2, ksR2, pkR2, pkI2, dh2, ltk2) @j2 + ) +" + +lemma secPEio_secOOBi_auth_init: +" + All #i1 #i2 . + InitWillDoSecPEio()[+] @i1 & RespWillDoSecOOBi()[+] @i2 ==> + (All idI idR capI capR ksI ksR pkI pkR dh ltk #k1 . + InitiatorFinishedSecPairing(idI, capI, ksI, idR, capR, ksR, pkI, pkR, dh, ltk) @k1 ==> + (Ex ni nr ri rr ei er #k2 . + RespDoneDHKeyCheck(idR, capR, ksR, idI, capI, ksI, pkR, pkI, dh, nr, ni, rr, ri, er, ei) @k2 + ) + ) +" + +lemma secPEio_secOOBi_auth_resp: +" + All #i1 #i2 . + InitWillDoSecPEio()[+] @i1 & RespWillDoSecOOBi()[+] @i2 ==> + (All idI idR capI capR ksI ksR pkI pkR dh ltk #k1 . + ResponderFinishedSecPairing(idR, capR, ksR, idI, capI, ksI, pkR, pkI, dh, ltk) @k1 ==> + (Ex #k2 . + InitiatorFinishedSecPairing(idI, capI, ksI, idR, capR, ksR, pkI, pkR, dh, ltk) @k2 + ) + ) +" + +lemma secPEio_secOOBi_weaksecret_init: +" + All #i1 #i2 . + InitWillDoSecPEio()[+] @i1 & RespWillDoSecOOBi()[+] @i2 ==> + (All idI idR capI capR ksI ksR pkI pkR dh ltk #k1 . + InitiatorFinishedSecPairing(idI, capI, ksI, idR, capR, ksR, pkI, pkR, dh, ltk) @k1 ==> + not (Ex #k2 . K(ltk) @k2) + ) +" + +lemma secPEio_secOOBi_weaksecret_resp: +" + All #i1 #i2 . + InitWillDoSecPEio()[+] @i1 & RespWillDoSecOOBi()[+] @i2 ==> + (All idI idR capI capR ksI ksR pkI pkR dh ltk #k1 . + ResponderFinishedSecPairing(idR, capR, ksR, idI, capI, ksI, pkR, pkI, dh, ltk) @k1 ==> + not (Ex #k2 . K(ltk) @k2) + ) +" + +lemma secPEio_secOOBi_double_impersonation: +" + All #i1 #i2 . + InitWillDoSecPEio()[+] @i1 & RespWillDoSecOOBi()[+] @i2 ==> + (All idI1 idR1 capI1 capR1 ksI1 ksR1 pkI1 pkR1 dh1 ltk1 idI2 idR2 capI2 capR2 ksI2 ksR2 pkI2 pkR2 dh2 ltk2 #j1 #j2 . + InitiatorFinishedSecPairing(idI1, capI1, ksI1, idR1, capR1, ksR1, pkI1, pkR1, dh1, ltk1) @j1 & + ResponderFinishedSecPairing(idR2, capR2, ksR2, idI2, capI2, ksI2, pkR2, pkI2, dh2, ltk2) @j2 ==> + not (Ex #k1 #k2 . + K(ltk1) @k1 & K(ltk2) @k2 + ) + ) +" + +#endif + +/*********************************************/ +/* End lemmas about SecPEio-SecOOBi exchange */ +/*********************************************/ + +/*****************************************/ +/* Lemmas about SecPEio-SecOOBo exchange */ +/*****************************************/ + +#ifdef SecPEioSecOOBo +lemma secPEio_secOOBo_functional: exists-trace +" + Ex #i1 #i2 . + InitWillDoSecPEio()[+] @i1 & RespWillDoSecOOBo()[+] @i2 & + (Ex idI1 idR1 capI1 capR1 ksI1 ksR1 pkI1 pkR1 dh1 ltk1 idI2 idR2 capI2 capR2 ksI2 ksR2 pkI2 pkR2 dh2 ltk2 #j1 #j2 . + InitiatorFinishedSecPairing(idI1, capI1, ksI1, idR1, capR1, ksR1, pkI1, pkR1, dh1, ltk1) @j1 & + ResponderFinishedSecPairing(idR2, capR2, ksI2, idI2, capI2, ksR2, pkR2, pkI2, dh2, ltk2) @j2 + ) +" + +lemma secPEio_secOOBo_auth_init: +" + All #i1 #i2 . + InitWillDoSecPEio()[+] @i1 & RespWillDoSecOOBo()[+] @i2 ==> + (All idI idR capI capR ksI ksR pkI pkR dh ltk #k1 . + InitiatorFinishedSecPairing(idI, capI, ksI, idR, capR, ksR, pkI, pkR, dh, ltk) @k1 ==> + (Ex ni nr ri rr ei er #k2 . + RespDoneDHKeyCheck(idR, capR, ksR, idI, capI, ksI, pkR, pkI, dh, nr, ni, rr, ri, er, ei) @k2 + ) + ) +" + +lemma secPEio_secOOBo_auth_resp: +" + All #i1 #i2 . + InitWillDoSecPEio()[+] @i1 & RespWillDoSecOOBo()[+] @i2 ==> + (All idI idR capI capR ksI ksR pkI pkR dh ltk #k1 . + ResponderFinishedSecPairing(idR, capR, ksR, idI, capI, ksI, pkR, pkI, dh, ltk) @k1 ==> + (Ex #k2 . + InitiatorFinishedSecPairing(idI, capI, ksI, idR, capR, ksR, pkI, pkR, dh, ltk) @k2 + ) + ) +" + +lemma secPEio_secOOBo_weaksecret_init: +" + All #i1 #i2 . + InitWillDoSecPEio()[+] @i1 & RespWillDoSecOOBo()[+] @i2 ==> + (All idI idR capI capR ksI ksR pkI pkR dh ltk #k1 . + InitiatorFinishedSecPairing(idI, capI, ksI, idR, capR, ksR, pkI, pkR, dh, ltk) @k1 ==> + not (Ex #k2 . K(ltk) @k2) + ) +" + +lemma secPEio_secOOBo_weaksecret_resp: +" + All #i1 #i2 . + InitWillDoSecPEio()[+] @i1 & RespWillDoSecOOBo()[+] @i2 ==> + (All idI idR capI capR ksI ksR pkI pkR dh ltk #k1 . + ResponderFinishedSecPairing(idR, capR, ksR, idI, capI, ksI, pkR, pkI, dh, ltk) @k1 ==> + not (Ex #k2 . K(ltk) @k2) + ) +" + +lemma secPEio_secOOBo_double_impersonation: +" + All #i1 #i2 . + InitWillDoSecPEio()[+] @i1 & RespWillDoSecOOBo()[+] @i2 ==> + (All idI1 idR1 capI1 capR1 ksI1 ksR1 pkI1 pkR1 dh1 ltk1 idI2 idR2 capI2 capR2 ksI2 ksR2 pkI2 pkR2 dh2 ltk2 #j1 #j2 . + InitiatorFinishedSecPairing(idI1, capI1, ksI1, idR1, capR1, ksR1, pkI1, pkR1, dh1, ltk1) @j1 & + ResponderFinishedSecPairing(idR2, capR2, ksR2, idI2, capI2, ksI2, pkR2, pkI2, dh2, ltk2) @j2 ==> + not (Ex #k1 #k2 . + K(ltk1) @k1 & K(ltk2) @k2 + ) + ) +" + +#endif + +/*********************************************/ +/* End lemmas about SecPEio-SecOOBo exchange */ +/*********************************************/ + +/******************************************/ +/* Lemmas about SecPEio-SecOOBio exchange */ +/******************************************/ + +#ifdef SecPEioSecOOBio +lemma secPEio_secOOBio_functional: exists-trace +" + Ex #i1 #i2 . + InitWillDoSecPEio()[+] @i1 & RespWillDoSecOOBio()[+] @i2 & + (Ex idI1 idR1 capI1 capR1 ksI1 ksR1 pkI1 pkR1 dh1 ltk1 idI2 idR2 capI2 capR2 ksI2 ksR2 pkI2 pkR2 dh2 ltk2 #j1 #j2 . + InitiatorFinishedSecPairing(idI1, capI1, ksI1, idR1, capR1, ksR1, pkI1, pkR1, dh1, ltk1) @j1 & + ResponderFinishedSecPairing(idR2, capR2, ksI2, idI2, capI2, ksR2, pkR2, pkI2, dh2, ltk2) @j2 + ) +" + +lemma secPEio_secOOBio_auth_init: +" + All #i1 #i2 . + InitWillDoSecPEio()[+] @i1 & RespWillDoSecOOBio()[+] @i2 ==> + (All idI idR capI capR ksI ksR pkI pkR dh ltk #k1 . + InitiatorFinishedSecPairing(idI, capI, ksI, idR, capR, ksR, pkI, pkR, dh, ltk) @k1 ==> + (Ex ni nr ri rr ei er #k2 . + RespDoneDHKeyCheck(idR, capR, ksR, idI, capI, ksI, pkR, pkI, dh, nr, ni, rr, ri, er, ei) @k2 + ) + ) +" + +lemma secPEio_secOOBio_auth_resp: +" + All #i1 #i2 . + InitWillDoSecPEio()[+] @i1 & RespWillDoSecOOBio()[+] @i2 ==> + (All idI idR capI capR ksI ksR pkI pkR dh ltk #k1 . + ResponderFinishedSecPairing(idR, capR, ksR, idI, capI, ksI, pkR, pkI, dh, ltk) @k1 ==> + (Ex #k2 . + InitiatorFinishedSecPairing(idI, capI, ksI, idR, capR, ksR, pkI, pkR, dh, ltk) @k2 + ) + ) +" + +lemma secPEio_secOOBio_weaksecret_init: +" + All #i1 #i2 . + InitWillDoSecPEio()[+] @i1 & RespWillDoSecOOBio()[+] @i2 ==> + (All idI idR capI capR ksI ksR pkI pkR dh ltk #k1 . + InitiatorFinishedSecPairing(idI, capI, ksI, idR, capR, ksR, pkI, pkR, dh, ltk) @k1 ==> + not (Ex #k2 . K(ltk) @k2) + ) +" + +lemma secPEio_secOOBio_weaksecret_resp: +" + All #i1 #i2 . + InitWillDoSecPEio()[+] @i1 & RespWillDoSecOOBio()[+] @i2 ==> + (All idI idR capI capR ksI ksR pkI pkR dh ltk #k1 . + ResponderFinishedSecPairing(idR, capR, ksR, idI, capI, ksI, pkR, pkI, dh, ltk) @k1 ==> + not (Ex #k2 . K(ltk) @k2) + ) +" + +lemma secPEio_secOOBio_double_impersonation: +" + All #i1 #i2 . + InitWillDoSecPEio()[+] @i1 & RespWillDoSecOOBio()[+] @i2 ==> + (All idI1 idR1 capI1 capR1 ksI1 ksR1 pkI1 pkR1 dh1 ltk1 idI2 idR2 capI2 capR2 ksI2 ksR2 pkI2 pkR2 dh2 ltk2 #j1 #j2 . + InitiatorFinishedSecPairing(idI1, capI1, ksI1, idR1, capR1, ksR1, pkI1, pkR1, dh1, ltk1) @j1 & + ResponderFinishedSecPairing(idR2, capR2, ksR2, idI2, capI2, ksI2, pkR2, pkI2, dh2, ltk2) @j2 ==> + not (Ex #k1 #k2 . + K(ltk1) @k1 & K(ltk2) @k2 + ) + ) +" + +#endif + +/**********************************************/ +/* End lemmas about SecPEio-SecOOBio exchange */ +/**********************************************/ + +/*************************************/ +/* Lemmas about SecNC-SecJW exchange */ +/*************************************/ + +#ifdef SecNCSecJW +lemma secNC_secJW_functional: exists-trace +" + Ex #i1 #i2 . + InitWillDoSecNC()[+] @i1 & RespWillDoSecJW()[+] @i2 & + (Ex idI1 idR1 capI1 capR1 ksI1 ksR1 pkI1 pkR1 dh1 ltk1 idI2 idR2 capI2 capR2 ksI2 ksR2 pkI2 pkR2 dh2 ltk2 #j1 #j2 . + InitiatorFinishedSecPairing(idI1, capI1, ksI1, idR1, capR1, ksR1, pkI1, pkR1, dh1, ltk1) @j1 & + ResponderFinishedSecPairing(idR2, capR2, ksI2, idI2, capI2, ksR2, pkR2, pkI2, dh2, ltk2) @j2 + ) +" + +lemma secNC_secJW_auth_init: +" + All #i1 #i2 . + InitWillDoSecNC()[+] @i1 & RespWillDoSecJW()[+] @i2 ==> + (All idI idR capI capR ksI ksR pkI pkR dh ltk #k1 . + InitiatorFinishedSecPairing(idI, capI, ksI, idR, capR, ksR, pkI, pkR, dh, ltk) @k1 ==> + (Ex ni nr ri rr ei er #k2 . + RespDoneDHKeyCheck(idR, capR, ksR, idI, capI, ksI, pkR, pkI, dh, nr, ni, rr, ri, er, ei) @k2 + ) + ) +" + +lemma secNC_secJW_auth_resp: +" + All #i1 #i2 . + InitWillDoSecNC()[+] @i1 & RespWillDoSecJW()[+] @i2 ==> + (All idI idR capI capR ksI ksR pkI pkR dh ltk #k1 . + ResponderFinishedSecPairing(idR, capR, ksR, idI, capI, ksI, pkR, pkI, dh, ltk) @k1 ==> + (Ex #k2 . + InitiatorFinishedSecPairing(idI, capI, ksI, idR, capR, ksR, pkI, pkR, dh, ltk) @k2 + ) + ) +" + +lemma secNC_secJW_weaksecret_init: +" + All #i1 #i2 . + InitWillDoSecNC()[+] @i1 & RespWillDoSecJW()[+] @i2 ==> + (All idI idR capI capR ksI ksR pkI pkR dh ltk #k1 . + InitiatorFinishedSecPairing(idI, capI, ksI, idR, capR, ksR, pkI, pkR, dh, ltk) @k1 ==> + not (Ex #k2 . K(ltk) @k2) + ) +" + +lemma secNC_secJW_weaksecret_resp: +" + All #i1 #i2 . + InitWillDoSecNC()[+] @i1 & RespWillDoSecJW()[+] @i2 ==> + (All idI idR capI capR ksI ksR pkI pkR dh ltk #k1 . + ResponderFinishedSecPairing(idR, capR, ksR, idI, capI, ksI, pkR, pkI, dh, ltk) @k1 ==> + not (Ex #k2 . K(ltk) @k2) + ) +" + +lemma secNC_secJW_double_impersonation: +" + All #i1 #i2 . + InitWillDoSecNC()[+] @i1 & RespWillDoSecJW()[+] @i2 ==> + (All idI1 idR1 capI1 capR1 ksI1 ksR1 pkI1 pkR1 dh1 ltk1 idI2 idR2 capI2 capR2 ksI2 ksR2 pkI2 pkR2 dh2 ltk2 #j1 #j2 . + InitiatorFinishedSecPairing(idI1, capI1, ksI1, idR1, capR1, ksR1, pkI1, pkR1, dh1, ltk1) @j1 & + ResponderFinishedSecPairing(idR2, capR2, ksR2, idI2, capI2, ksI2, pkR2, pkI2, dh2, ltk2) @j2 ==> + not (Ex #k1 #k2 . + K(ltk1) @k1 & K(ltk2) @k2 + ) + ) +" + +#endif + +/*****************************************/ +/* End lemmas about SecNC-SecJW exchange */ +/*****************************************/ + +/**************************************/ +/* Lemmas about SecNC-SecPEi exchange */ +/**************************************/ + +#ifdef SecNCSecPEi +lemma secNC_secPEi_functional: exists-trace +" + Ex #i1 #i2 . + InitWillDoSecNC()[+] @i1 & RespWillDoSecPEi()[+] @i2 & + (Ex idI1 idR1 capI1 capR1 ksI1 ksR1 pkI1 pkR1 dh1 ltk1 idI2 idR2 capI2 capR2 ksI2 ksR2 pkI2 pkR2 dh2 ltk2 #j1 #j2 . + InitiatorFinishedSecPairing(idI1, capI1, ksI1, idR1, capR1, ksR1, pkI1, pkR1, dh1, ltk1) @j1 & + ResponderFinishedSecPairing(idR2, capR2, ksI2, idI2, capI2, ksR2, pkR2, pkI2, dh2, ltk2) @j2 + ) +" + +lemma secNC_secPEi_auth_init: +" + All #i1 #i2 . + InitWillDoSecNC()[+] @i1 & RespWillDoSecPEi()[+] @i2 ==> + (All idI idR capI capR ksI ksR pkI pkR dh ltk #k1 . + InitiatorFinishedSecPairing(idI, capI, ksI, idR, capR, ksR, pkI, pkR, dh, ltk) @k1 ==> + (Ex ni nr ri rr ei er #k2 . + RespDoneDHKeyCheck(idR, capR, ksR, idI, capI, ksI, pkR, pkI, dh, nr, ni, rr, ri, er, ei) @k2 + ) + ) +" + +lemma secNC_secPEi_auth_resp: +" + All #i1 #i2 . + InitWillDoSecNC()[+] @i1 & RespWillDoSecPEi()[+] @i2 ==> + (All idI idR capI capR ksI ksR pkI pkR dh ltk #k1 . + ResponderFinishedSecPairing(idR, capR, ksR, idI, capI, ksI, pkR, pkI, dh, ltk) @k1 ==> + (Ex #k2 . + InitiatorFinishedSecPairing(idI, capI, ksI, idR, capR, ksR, pkI, pkR, dh, ltk) @k2 + ) + ) +" + +lemma secNC_secPEi_weaksecret_init: +" + All #i1 #i2 . + InitWillDoSecNC()[+] @i1 & RespWillDoSecPEi()[+] @i2 ==> + (All idI idR capI capR ksI ksR pkI pkR dh ltk #k1 . + InitiatorFinishedSecPairing(idI, capI, ksI, idR, capR, ksR, pkI, pkR, dh, ltk) @k1 ==> + not (Ex #k2 . K(ltk) @k2) + ) +" + +lemma secNC_secPEi_weaksecret_resp: +" + All #i1 #i2 . + InitWillDoSecNC()[+] @i1 & RespWillDoSecPEi()[+] @i2 ==> + (All idI idR capI capR ksI ksR pkI pkR dh ltk #k1 . + ResponderFinishedSecPairing(idR, capR, ksR, idI, capI, ksI, pkR, pkI, dh, ltk) @k1 ==> + not (Ex #k2 . K(ltk) @k2) + ) +" + +lemma secNC_secPEi_double_impersonation: +" + All #i1 #i2 . + InitWillDoSecNC()[+] @i1 & RespWillDoSecPEi()[+] @i2 ==> + (All idI1 idR1 capI1 capR1 ksI1 ksR1 pkI1 pkR1 dh1 ltk1 idI2 idR2 capI2 capR2 ksI2 ksR2 pkI2 pkR2 dh2 ltk2 #j1 #j2 . + InitiatorFinishedSecPairing(idI1, capI1, ksI1, idR1, capR1, ksR1, pkI1, pkR1, dh1, ltk1) @j1 & + ResponderFinishedSecPairing(idR2, capR2, ksR2, idI2, capI2, ksI2, pkR2, pkI2, dh2, ltk2) @j2 ==> + not (Ex #k1 #k2 . + K(ltk1) @k1 & K(ltk2) @k2 + ) + ) +" + +#endif + +/******************************************/ +/* End lemmas about SecNC-SecPEi exchange */ +/******************************************/ + +/**************************************/ +/* Lemmas about SecNC-SecPEo exchange */ +/**************************************/ + +#ifdef SecNCSecPEo +lemma secNC_secPEo_functional: exists-trace +" + Ex #i1 #i2 . + InitWillDoSecNC()[+] @i1 & RespWillDoSecPEo()[+] @i2 & + (Ex idI1 idR1 capI1 capR1 ksI1 ksR1 pkI1 pkR1 dh1 ltk1 idI2 idR2 capI2 capR2 ksI2 ksR2 pkI2 pkR2 dh2 ltk2 #j1 #j2 . + InitiatorFinishedSecPairing(idI1, capI1, ksI1, idR1, capR1, ksR1, pkI1, pkR1, dh1, ltk1) @j1 & + ResponderFinishedSecPairing(idR2, capR2, ksI2, idI2, capI2, ksR2, pkR2, pkI2, dh2, ltk2) @j2 + ) +" + +lemma secNC_secPEo_auth_init: +" + All #i1 #i2 . + InitWillDoSecNC()[+] @i1 & RespWillDoSecPEo()[+] @i2 ==> + (All idI idR capI capR ksI ksR pkI pkR dh ltk #k1 . + InitiatorFinishedSecPairing(idI, capI, ksI, idR, capR, ksR, pkI, pkR, dh, ltk) @k1 ==> + (Ex ni nr ri rr ei er #k2 . + RespDoneDHKeyCheck(idR, capR, ksR, idI, capI, ksI, pkR, pkI, dh, nr, ni, rr, ri, er, ei) @k2 + ) + ) +" + +lemma secNC_secPEo_auth_resp: +" + All #i1 #i2 . + InitWillDoSecNC()[+] @i1 & RespWillDoSecPEo()[+] @i2 ==> + (All idI idR capI capR ksI ksR pkI pkR dh ltk #k1 . + ResponderFinishedSecPairing(idR, capR, ksR, idI, capI, ksI, pkR, pkI, dh, ltk) @k1 ==> + (Ex #k2 . + InitiatorFinishedSecPairing(idI, capI, ksI, idR, capR, ksR, pkI, pkR, dh, ltk) @k2 + ) + ) +" + +lemma secNC_secPEo_weaksecret_init: +" + All #i1 #i2 . + InitWillDoSecNC()[+] @i1 & RespWillDoSecPEo()[+] @i2 ==> + (All idI idR capI capR ksI ksR pkI pkR dh ltk #k1 . + InitiatorFinishedSecPairing(idI, capI, ksI, idR, capR, ksR, pkI, pkR, dh, ltk) @k1 ==> + not (Ex #k2 . K(ltk) @k2) + ) +" + +lemma secNC_secPEo_weaksecret_resp: +" + All #i1 #i2 . + InitWillDoSecNC()[+] @i1 & RespWillDoSecPEo()[+] @i2 ==> + (All idI idR capI capR ksI ksR pkI pkR dh ltk #k1 . + ResponderFinishedSecPairing(idR, capR, ksR, idI, capI, ksI, pkR, pkI, dh, ltk) @k1 ==> + not (Ex #k2 . K(ltk) @k2) + ) +" + +lemma secNC_secPEo_double_impersonation: +" + All #i1 #i2 . + InitWillDoSecNC()[+] @i1 & RespWillDoSecPEo()[+] @i2 ==> + (All idI1 idR1 capI1 capR1 ksI1 ksR1 pkI1 pkR1 dh1 ltk1 idI2 idR2 capI2 capR2 ksI2 ksR2 pkI2 pkR2 dh2 ltk2 #j1 #j2 . + InitiatorFinishedSecPairing(idI1, capI1, ksI1, idR1, capR1, ksR1, pkI1, pkR1, dh1, ltk1) @j1 & + ResponderFinishedSecPairing(idR2, capR2, ksR2, idI2, capI2, ksI2, pkR2, pkI2, dh2, ltk2) @j2 ==> + not (Ex #k1 #k2 . + K(ltk1) @k1 & K(ltk2) @k2 + ) + ) +" + +#endif + +/******************************************/ +/* End lemmas about SecNC-SecPEo exchange */ +/******************************************/ + +/***************************************/ +/* Lemmas about SecNC-SecPEio exchange */ +/***************************************/ + +#ifdef SecNCSecPEio +lemma secNC_secPEio_functional: exists-trace +" + Ex #i1 #i2 . + InitWillDoSecNC()[+] @i1 & RespWillDoSecPEio()[+] @i2 & + (Ex idI1 idR1 capI1 capR1 ksI1 ksR1 pkI1 pkR1 dh1 ltk1 idI2 idR2 capI2 capR2 ksI2 ksR2 pkI2 pkR2 dh2 ltk2 #j1 #j2 . + InitiatorFinishedSecPairing(idI1, capI1, ksI1, idR1, capR1, ksR1, pkI1, pkR1, dh1, ltk1) @j1 & + ResponderFinishedSecPairing(idR2, capR2, ksI2, idI2, capI2, ksR2, pkR2, pkI2, dh2, ltk2) @j2 + ) +" + +lemma secNC_secPEio_auth_init: +" + All #i1 #i2 . + InitWillDoSecNC()[+] @i1 & RespWillDoSecPEio()[+] @i2 ==> + (All idI idR capI capR ksI ksR pkI pkR dh ltk #k1 . + InitiatorFinishedSecPairing(idI, capI, ksI, idR, capR, ksR, pkI, pkR, dh, ltk) @k1 ==> + (Ex ni nr ri rr ei er #k2 . + RespDoneDHKeyCheck(idR, capR, ksR, idI, capI, ksI, pkR, pkI, dh, nr, ni, rr, ri, er, ei) @k2 + ) + ) +" + +lemma secNC_secPEio_auth_resp: +" + All #i1 #i2 . + InitWillDoSecNC()[+] @i1 & RespWillDoSecPEio()[+] @i2 ==> + (All idI idR capI capR ksI ksR pkI pkR dh ltk #k1 . + ResponderFinishedSecPairing(idR, capR, ksR, idI, capI, ksI, pkR, pkI, dh, ltk) @k1 ==> + (Ex #k2 . + InitiatorFinishedSecPairing(idI, capI, ksI, idR, capR, ksR, pkI, pkR, dh, ltk) @k2 + ) + ) +" + +lemma secNC_secPEio_weaksecret_init: +" + All #i1 #i2 . + InitWillDoSecNC()[+] @i1 & RespWillDoSecPEio()[+] @i2 ==> + (All idI idR capI capR ksI ksR pkI pkR dh ltk #k1 . + InitiatorFinishedSecPairing(idI, capI, ksI, idR, capR, ksR, pkI, pkR, dh, ltk) @k1 ==> + not (Ex #k2 . K(ltk) @k2) + ) +" + +lemma secNC_secPEio_weaksecret_resp: +" + All #i1 #i2 . + InitWillDoSecNC()[+] @i1 & RespWillDoSecPEio()[+] @i2 ==> + (All idI idR capI capR ksI ksR pkI pkR dh ltk #k1 . + ResponderFinishedSecPairing(idR, capR, ksR, idI, capI, ksI, pkR, pkI, dh, ltk) @k1 ==> + not (Ex #k2 . K(ltk) @k2) + ) +" + +lemma secNC_secPEio_double_impersonation: +" + All #i1 #i2 . + InitWillDoSecNC()[+] @i1 & RespWillDoSecPEio()[+] @i2 ==> + (All idI1 idR1 capI1 capR1 ksI1 ksR1 pkI1 pkR1 dh1 ltk1 idI2 idR2 capI2 capR2 ksI2 ksR2 pkI2 pkR2 dh2 ltk2 #j1 #j2 . + InitiatorFinishedSecPairing(idI1, capI1, ksI1, idR1, capR1, ksR1, pkI1, pkR1, dh1, ltk1) @j1 & + ResponderFinishedSecPairing(idR2, capR2, ksR2, idI2, capI2, ksI2, pkR2, pkI2, dh2, ltk2) @j2 ==> + not (Ex #k1 #k2 . + K(ltk1) @k1 & K(ltk2) @k2 + ) + ) +" + +#endif + +/*******************************************/ +/* End lemmas about SecNC-SecPEio exchange */ +/*******************************************/ + +/*************************************/ +/* Lemmas about SecNC-SecNC exchange */ +/*************************************/ + +#ifdef SecNCSecNC +lemma secNC_secNC_functional: exists-trace +" + Ex #i1 #i2 . + InitWillDoSecNC()[+] @i1 & RespWillDoSecNC()[+] @i2 & + (Ex idI1 idR1 capI1 capR1 ksI1 ksR1 pkI1 pkR1 dh1 ltk1 idI2 idR2 capI2 capR2 ksI2 ksR2 pkI2 pkR2 dh2 ltk2 #j1 #j2 . + InitiatorFinishedSecPairing(idI1, capI1, ksI1, idR1, capR1, ksR1, pkI1, pkR1, dh1, ltk1) @j1 & + ResponderFinishedSecPairing(idR2, capR2, ksI2, idI2, capI2, ksR2, pkR2, pkI2, dh2, ltk2) @j2 + ) +" + +lemma secNC_secNC_auth_init: +" + All #i1 #i2 . + InitWillDoSecNC()[+] @i1 & RespWillDoSecNC()[+] @i2 ==> + (All idI idR capI capR ksI ksR pkI pkR dh ltk #k1 . + InitiatorFinishedSecPairing(idI, capI, ksI, idR, capR, ksR, pkI, pkR, dh, ltk) @k1 ==> + (Ex ni nr ri rr ei er #k2 . + RespDoneDHKeyCheck(idR, capR, ksR, idI, capI, ksI, pkR, pkI, dh, nr, ni, rr, ri, er, ei) @k2 + ) + ) +" + +lemma secNC_secNC_auth_resp: +" + All #i1 #i2 . + InitWillDoSecNC()[+] @i1 & RespWillDoSecNC()[+] @i2 ==> + (All idI idR capI capR ksI ksR pkI pkR dh ltk #k1 . + ResponderFinishedSecPairing(idR, capR, ksR, idI, capI, ksI, pkR, pkI, dh, ltk) @k1 ==> + (Ex #k2 . + InitiatorFinishedSecPairing(idI, capI, ksI, idR, capR, ksR, pkI, pkR, dh, ltk) @k2 + ) + ) +" + +lemma secNC_secNC_weaksecret_init: +" + All #i1 #i2 . + InitWillDoSecNC()[+] @i1 & RespWillDoSecNC()[+] @i2 ==> + (All idI idR capI capR ksI ksR pkI pkR dh ltk #k1 . + InitiatorFinishedSecPairing(idI, capI, ksI, idR, capR, ksR, pkI, pkR, dh, ltk) @k1 ==> + not (Ex #k2 . K(ltk) @k2) + ) +" + +lemma secNC_secNC_weaksecret_resp: +" + All #i1 #i2 . + InitWillDoSecNC()[+] @i1 & RespWillDoSecNC()[+] @i2 ==> + (All idI idR capI capR ksI ksR pkI pkR dh ltk #k1 . + ResponderFinishedSecPairing(idR, capR, ksR, idI, capI, ksI, pkR, pkI, dh, ltk) @k1 ==> + not (Ex #k2 . K(ltk) @k2) + ) +" + +lemma secNC_secNC_double_impersonation: +" + All #i1 #i2 . + InitWillDoSecNC()[+] @i1 & RespWillDoSecNC()[+] @i2 ==> + (All idI1 idR1 capI1 capR1 ksI1 ksR1 pkI1 pkR1 dh1 ltk1 idI2 idR2 capI2 capR2 ksI2 ksR2 pkI2 pkR2 dh2 ltk2 #j1 #j2 . + InitiatorFinishedSecPairing(idI1, capI1, ksI1, idR1, capR1, ksR1, pkI1, pkR1, dh1, ltk1) @j1 & + ResponderFinishedSecPairing(idR2, capR2, ksR2, idI2, capI2, ksI2, pkR2, pkI2, dh2, ltk2) @j2 ==> + not (Ex #k1 #k2 . + K(ltk1) @k1 & K(ltk2) @k2 + ) + ) +" + +#endif + +/*****************************************/ +/* End lemmas about SecNC-SecNC exchange */ +/*****************************************/ + +/***************************************/ +/* Lemmas about SecNC-SecOOBi exchange */ +/***************************************/ + +#ifdef SecNCSecOOBi +lemma secNC_secOOBi_functional: exists-trace +" + Ex #i1 #i2 . + InitWillDoSecNC()[+] @i1 & RespWillDoSecOOBi()[+] @i2 & + (Ex idI1 idR1 capI1 capR1 ksI1 ksR1 pkI1 pkR1 dh1 ltk1 idI2 idR2 capI2 capR2 ksI2 ksR2 pkI2 pkR2 dh2 ltk2 #j1 #j2 . + InitiatorFinishedSecPairing(idI1, capI1, ksI1, idR1, capR1, ksR1, pkI1, pkR1, dh1, ltk1) @j1 & + ResponderFinishedSecPairing(idR2, capR2, ksI2, idI2, capI2, ksR2, pkR2, pkI2, dh2, ltk2) @j2 + ) +" + +lemma secNC_secOOBi_auth_init: +" + All #i1 #i2 . + InitWillDoSecNC()[+] @i1 & RespWillDoSecOOBi()[+] @i2 ==> + (All idI idR capI capR ksI ksR pkI pkR dh ltk #k1 . + InitiatorFinishedSecPairing(idI, capI, ksI, idR, capR, ksR, pkI, pkR, dh, ltk) @k1 ==> + (Ex ni nr ri rr ei er #k2 . + RespDoneDHKeyCheck(idR, capR, ksR, idI, capI, ksI, pkR, pkI, dh, nr, ni, rr, ri, er, ei) @k2 + ) + ) +" + +lemma secNC_secOOBi_auth_resp: +" + All #i1 #i2 . + InitWillDoSecNC()[+] @i1 & RespWillDoSecOOBi()[+] @i2 ==> + (All idI idR capI capR ksI ksR pkI pkR dh ltk #k1 . + ResponderFinishedSecPairing(idR, capR, ksR, idI, capI, ksI, pkR, pkI, dh, ltk) @k1 ==> + (Ex #k2 . + InitiatorFinishedSecPairing(idI, capI, ksI, idR, capR, ksR, pkI, pkR, dh, ltk) @k2 + ) + ) +" + +lemma secNC_secOOBi_weaksecret_init: +" + All #i1 #i2 . + InitWillDoSecNC()[+] @i1 & RespWillDoSecOOBi()[+] @i2 ==> + (All idI idR capI capR ksI ksR pkI pkR dh ltk #k1 . + InitiatorFinishedSecPairing(idI, capI, ksI, idR, capR, ksR, pkI, pkR, dh, ltk) @k1 ==> + not (Ex #k2 . K(ltk) @k2) + ) +" + +lemma secNC_secOOBi_weaksecret_resp: +" + All #i1 #i2 . + InitWillDoSecNC()[+] @i1 & RespWillDoSecOOBi()[+] @i2 ==> + (All idI idR capI capR ksI ksR pkI pkR dh ltk #k1 . + ResponderFinishedSecPairing(idR, capR, ksR, idI, capI, ksI, pkR, pkI, dh, ltk) @k1 ==> + not (Ex #k2 . K(ltk) @k2) + ) +" + +lemma secNC_secOOBi_double_impersonation: +" + All #i1 #i2 . + InitWillDoSecNC()[+] @i1 & RespWillDoSecOOBi()[+] @i2 ==> + (All idI1 idR1 capI1 capR1 ksI1 ksR1 pkI1 pkR1 dh1 ltk1 idI2 idR2 capI2 capR2 ksI2 ksR2 pkI2 pkR2 dh2 ltk2 #j1 #j2 . + InitiatorFinishedSecPairing(idI1, capI1, ksI1, idR1, capR1, ksR1, pkI1, pkR1, dh1, ltk1) @j1 & + ResponderFinishedSecPairing(idR2, capR2, ksR2, idI2, capI2, ksI2, pkR2, pkI2, dh2, ltk2) @j2 ==> + not (Ex #k1 #k2 . + K(ltk1) @k1 & K(ltk2) @k2 + ) + ) +" + +#endif + +/*******************************************/ +/* End lemmas about SecNC-SecOOBi exchange */ +/*******************************************/ + +/***************************************/ +/* Lemmas about SecNC-SecOOBo exchange */ +/***************************************/ + +#ifdef SecNCSecOOBo +lemma secNC_secOOBo_functional: exists-trace +" + Ex #i1 #i2 . + InitWillDoSecNC()[+] @i1 & RespWillDoSecOOBo()[+] @i2 & + (Ex idI1 idR1 capI1 capR1 ksI1 ksR1 pkI1 pkR1 dh1 ltk1 idI2 idR2 capI2 capR2 ksI2 ksR2 pkI2 pkR2 dh2 ltk2 #j1 #j2 . + InitiatorFinishedSecPairing(idI1, capI1, ksI1, idR1, capR1, ksR1, pkI1, pkR1, dh1, ltk1) @j1 & + ResponderFinishedSecPairing(idR2, capR2, ksI2, idI2, capI2, ksR2, pkR2, pkI2, dh2, ltk2) @j2 + ) +" + +lemma secNC_secOOBo_auth_init: +" + All #i1 #i2 . + InitWillDoSecNC()[+] @i1 & RespWillDoSecOOBo()[+] @i2 ==> + (All idI idR capI capR ksI ksR pkI pkR dh ltk #k1 . + InitiatorFinishedSecPairing(idI, capI, ksI, idR, capR, ksR, pkI, pkR, dh, ltk) @k1 ==> + (Ex ni nr ri rr ei er #k2 . + RespDoneDHKeyCheck(idR, capR, ksR, idI, capI, ksI, pkR, pkI, dh, nr, ni, rr, ri, er, ei) @k2 + ) + ) +" + +lemma secNC_secOOBo_auth_resp: +" + All #i1 #i2 . + InitWillDoSecNC()[+] @i1 & RespWillDoSecOOBo()[+] @i2 ==> + (All idI idR capI capR ksI ksR pkI pkR dh ltk #k1 . + ResponderFinishedSecPairing(idR, capR, ksR, idI, capI, ksI, pkR, pkI, dh, ltk) @k1 ==> + (Ex #k2 . + InitiatorFinishedSecPairing(idI, capI, ksI, idR, capR, ksR, pkI, pkR, dh, ltk) @k2 + ) + ) +" + +lemma secNC_secOOBo_weaksecret_init: +" + All #i1 #i2 . + InitWillDoSecNC()[+] @i1 & RespWillDoSecOOBo()[+] @i2 ==> + (All idI idR capI capR ksI ksR pkI pkR dh ltk #k1 . + InitiatorFinishedSecPairing(idI, capI, ksI, idR, capR, ksR, pkI, pkR, dh, ltk) @k1 ==> + not (Ex #k2 . K(ltk) @k2) + ) +" + +lemma secNC_secOOBo_weaksecret_resp: +" + All #i1 #i2 . + InitWillDoSecNC()[+] @i1 & RespWillDoSecOOBo()[+] @i2 ==> + (All idI idR capI capR ksI ksR pkI pkR dh ltk #k1 . + ResponderFinishedSecPairing(idR, capR, ksR, idI, capI, ksI, pkR, pkI, dh, ltk) @k1 ==> + not (Ex #k2 . K(ltk) @k2) + ) +" + +lemma secNC_secOOBo_double_impersonation: +" + All #i1 #i2 . + InitWillDoSecNC()[+] @i1 & RespWillDoSecOOBo()[+] @i2 ==> + (All idI1 idR1 capI1 capR1 ksI1 ksR1 pkI1 pkR1 dh1 ltk1 idI2 idR2 capI2 capR2 ksI2 ksR2 pkI2 pkR2 dh2 ltk2 #j1 #j2 . + InitiatorFinishedSecPairing(idI1, capI1, ksI1, idR1, capR1, ksR1, pkI1, pkR1, dh1, ltk1) @j1 & + ResponderFinishedSecPairing(idR2, capR2, ksR2, idI2, capI2, ksI2, pkR2, pkI2, dh2, ltk2) @j2 ==> + not (Ex #k1 #k2 . + K(ltk1) @k1 & K(ltk2) @k2 + ) + ) +" + +#endif + +/*******************************************/ +/* End lemmas about SecNC-SecOOBo exchange */ +/*******************************************/ + +/****************************************/ +/* Lemmas about SecNC-SecOOBio exchange */ +/****************************************/ + +#ifdef SecNCSecOOBio +lemma secNC_secOOBio_functional: exists-trace +" + Ex #i1 #i2 . + InitWillDoSecNC()[+] @i1 & RespWillDoSecOOBio()[+] @i2 & + (Ex idI1 idR1 capI1 capR1 ksI1 ksR1 pkI1 pkR1 dh1 ltk1 idI2 idR2 capI2 capR2 ksI2 ksR2 pkI2 pkR2 dh2 ltk2 #j1 #j2 . + InitiatorFinishedSecPairing(idI1, capI1, ksI1, idR1, capR1, ksR1, pkI1, pkR1, dh1, ltk1) @j1 & + ResponderFinishedSecPairing(idR2, capR2, ksI2, idI2, capI2, ksR2, pkR2, pkI2, dh2, ltk2) @j2 + ) +" + +lemma secNC_secOOBio_auth_init: +" + All #i1 #i2 . + InitWillDoSecNC()[+] @i1 & RespWillDoSecOOBio()[+] @i2 ==> + (All idI idR capI capR ksI ksR pkI pkR dh ltk #k1 . + InitiatorFinishedSecPairing(idI, capI, ksI, idR, capR, ksR, pkI, pkR, dh, ltk) @k1 ==> + (Ex ni nr ri rr ei er #k2 . + RespDoneDHKeyCheck(idR, capR, ksR, idI, capI, ksI, pkR, pkI, dh, nr, ni, rr, ri, er, ei) @k2 + ) + ) +" + +lemma secNC_secOOBio_auth_resp: +" + All #i1 #i2 . + InitWillDoSecNC()[+] @i1 & RespWillDoSecOOBio()[+] @i2 ==> + (All idI idR capI capR ksI ksR pkI pkR dh ltk #k1 . + ResponderFinishedSecPairing(idR, capR, ksR, idI, capI, ksI, pkR, pkI, dh, ltk) @k1 ==> + (Ex #k2 . + InitiatorFinishedSecPairing(idI, capI, ksI, idR, capR, ksR, pkI, pkR, dh, ltk) @k2 + ) + ) +" + +lemma secNC_secOOBio_weaksecret_init: +" + All #i1 #i2 . + InitWillDoSecNC()[+] @i1 & RespWillDoSecOOBio()[+] @i2 ==> + (All idI idR capI capR ksI ksR pkI pkR dh ltk #k1 . + InitiatorFinishedSecPairing(idI, capI, ksI, idR, capR, ksR, pkI, pkR, dh, ltk) @k1 ==> + not (Ex #k2 . K(ltk) @k2) + ) +" + +lemma secNC_secOOBio_weaksecret_resp: +" + All #i1 #i2 . + InitWillDoSecNC()[+] @i1 & RespWillDoSecOOBio()[+] @i2 ==> + (All idI idR capI capR ksI ksR pkI pkR dh ltk #k1 . + ResponderFinishedSecPairing(idR, capR, ksR, idI, capI, ksI, pkR, pkI, dh, ltk) @k1 ==> + not (Ex #k2 . K(ltk) @k2) + ) +" + +lemma secNC_secOOBio_double_impersonation: +" + All #i1 #i2 . + InitWillDoSecNC()[+] @i1 & RespWillDoSecOOBio()[+] @i2 ==> + (All idI1 idR1 capI1 capR1 ksI1 ksR1 pkI1 pkR1 dh1 ltk1 idI2 idR2 capI2 capR2 ksI2 ksR2 pkI2 pkR2 dh2 ltk2 #j1 #j2 . + InitiatorFinishedSecPairing(idI1, capI1, ksI1, idR1, capR1, ksR1, pkI1, pkR1, dh1, ltk1) @j1 & + ResponderFinishedSecPairing(idR2, capR2, ksR2, idI2, capI2, ksI2, pkR2, pkI2, dh2, ltk2) @j2 ==> + not (Ex #k1 #k2 . + K(ltk1) @k1 & K(ltk2) @k2 + ) + ) +" + +#endif + +/********************************************/ +/* End lemmas about SecNC-SecOOBio exchange */ +/********************************************/ + +/***************************************/ +/* Lemmas about SecOOBi-SecJW exchange */ +/***************************************/ + +#ifdef SecOOBiSecJW +lemma secOOBi_secJW_functional: exists-trace +" + Ex #i1 #i2 . + InitWillDoSecOOBi()[+] @i1 & RespWillDoSecJW()[+] @i2 & + (Ex idI1 idR1 capI1 capR1 ksI1 ksR1 pkI1 pkR1 dh1 ltk1 idI2 idR2 capI2 capR2 ksI2 ksR2 pkI2 pkR2 dh2 ltk2 #j1 #j2 . + InitiatorFinishedSecPairing(idI1, capI1, ksI1, idR1, capR1, ksR1, pkI1, pkR1, dh1, ltk1) @j1 & + ResponderFinishedSecPairing(idR2, capR2, ksI2, idI2, capI2, ksR2, pkR2, pkI2, dh2, ltk2) @j2 + ) +" + +lemma secOOBi_secJW_auth_init: +" + All #i1 #i2 . + InitWillDoSecOOBi()[+] @i1 & RespWillDoSecJW()[+] @i2 ==> + (All idI idR capI capR ksI ksR pkI pkR dh ltk #k1 . + InitiatorFinishedSecPairing(idI, capI, ksI, idR, capR, ksR, pkI, pkR, dh, ltk) @k1 ==> + (Ex ni nr ri rr ei er #k2 . + RespDoneDHKeyCheck(idR, capR, ksR, idI, capI, ksI, pkR, pkI, dh, nr, ni, rr, ri, er, ei) @k2 + ) + ) +" + +lemma secOOBi_secJW_auth_resp: +" + All #i1 #i2 . + InitWillDoSecOOBi()[+] @i1 & RespWillDoSecJW()[+] @i2 ==> + (All idI idR capI capR ksI ksR pkI pkR dh ltk #k1 . + ResponderFinishedSecPairing(idR, capR, ksR, idI, capI, ksI, pkR, pkI, dh, ltk) @k1 ==> + (Ex #k2 . + InitiatorFinishedSecPairing(idI, capI, ksI, idR, capR, ksR, pkI, pkR, dh, ltk) @k2 + ) + ) +" + +lemma secOOBi_secJW_weaksecret_init: +" + All #i1 #i2 . + InitWillDoSecOOBi()[+] @i1 & RespWillDoSecJW()[+] @i2 ==> + (All idI idR capI capR ksI ksR pkI pkR dh ltk #k1 . + InitiatorFinishedSecPairing(idI, capI, ksI, idR, capR, ksR, pkI, pkR, dh, ltk) @k1 ==> + not (Ex #k2 . K(ltk) @k2) + ) +" + +lemma secOOBi_secJW_weaksecret_resp: +" + All #i1 #i2 . + InitWillDoSecOOBi()[+] @i1 & RespWillDoSecJW()[+] @i2 ==> + (All idI idR capI capR ksI ksR pkI pkR dh ltk #k1 . + ResponderFinishedSecPairing(idR, capR, ksR, idI, capI, ksI, pkR, pkI, dh, ltk) @k1 ==> + not (Ex #k2 . K(ltk) @k2) + ) +" + +lemma secOOBi_secJW_double_impersonation: +" + All #i1 #i2 . + InitWillDoSecOOBi()[+] @i1 & RespWillDoSecJW()[+] @i2 ==> + (All idI1 idR1 capI1 capR1 ksI1 ksR1 pkI1 pkR1 dh1 ltk1 idI2 idR2 capI2 capR2 ksI2 ksR2 pkI2 pkR2 dh2 ltk2 #j1 #j2 . + InitiatorFinishedSecPairing(idI1, capI1, ksI1, idR1, capR1, ksR1, pkI1, pkR1, dh1, ltk1) @j1 & + ResponderFinishedSecPairing(idR2, capR2, ksR2, idI2, capI2, ksI2, pkR2, pkI2, dh2, ltk2) @j2 ==> + not (Ex #k1 #k2 . + K(ltk1) @k1 & K(ltk2) @k2 + ) + ) +" + +#endif + +/*******************************************/ +/* End lemmas about SecOOBi-SecJW exchange */ +/*******************************************/ + +/****************************************/ +/* Lemmas about SecOOBi-SecPEi exchange */ +/****************************************/ + +#ifdef SecOOBiSecPEi +lemma secOOBi_secPEi_functional: exists-trace +" + Ex #i1 #i2 . + InitWillDoSecOOBi()[+] @i1 & RespWillDoSecPEi()[+] @i2 & + (Ex idI1 idR1 capI1 capR1 ksI1 ksR1 pkI1 pkR1 dh1 ltk1 idI2 idR2 capI2 capR2 ksI2 ksR2 pkI2 pkR2 dh2 ltk2 #j1 #j2 . + InitiatorFinishedSecPairing(idI1, capI1, ksI1, idR1, capR1, ksR1, pkI1, pkR1, dh1, ltk1) @j1 & + ResponderFinishedSecPairing(idR2, capR2, ksI2, idI2, capI2, ksR2, pkR2, pkI2, dh2, ltk2) @j2 + ) +" + +lemma secOOBi_secPEi_auth_init: +" + All #i1 #i2 . + InitWillDoSecOOBi()[+] @i1 & RespWillDoSecPEi()[+] @i2 ==> + (All idI idR capI capR ksI ksR pkI pkR dh ltk #k1 . + InitiatorFinishedSecPairing(idI, capI, ksI, idR, capR, ksR, pkI, pkR, dh, ltk) @k1 ==> + (Ex ni nr ri rr ei er #k2 . + RespDoneDHKeyCheck(idR, capR, ksR, idI, capI, ksI, pkR, pkI, dh, nr, ni, rr, ri, er, ei) @k2 + ) + ) +" + +lemma secOOBi_secPEi_auth_resp: +" + All #i1 #i2 . + InitWillDoSecOOBi()[+] @i1 & RespWillDoSecPEi()[+] @i2 ==> + (All idI idR capI capR ksI ksR pkI pkR dh ltk #k1 . + ResponderFinishedSecPairing(idR, capR, ksR, idI, capI, ksI, pkR, pkI, dh, ltk) @k1 ==> + (Ex #k2 . + InitiatorFinishedSecPairing(idI, capI, ksI, idR, capR, ksR, pkI, pkR, dh, ltk) @k2 + ) + ) +" + +lemma secOOBi_secPEi_weaksecret_init: +" + All #i1 #i2 . + InitWillDoSecOOBi()[+] @i1 & RespWillDoSecPEi()[+] @i2 ==> + (All idI idR capI capR ksI ksR pkI pkR dh ltk #k1 . + InitiatorFinishedSecPairing(idI, capI, ksI, idR, capR, ksR, pkI, pkR, dh, ltk) @k1 ==> + not (Ex #k2 . K(ltk) @k2) + ) +" + +lemma secOOBi_secPEi_weaksecret_resp: +" + All #i1 #i2 . + InitWillDoSecOOBi()[+] @i1 & RespWillDoSecPEi()[+] @i2 ==> + (All idI idR capI capR ksI ksR pkI pkR dh ltk #k1 . + ResponderFinishedSecPairing(idR, capR, ksR, idI, capI, ksI, pkR, pkI, dh, ltk) @k1 ==> + not (Ex #k2 . K(ltk) @k2) + ) +" + +lemma secOOBi_secPEi_double_impersonation: +" + All #i1 #i2 . + InitWillDoSecOOBi()[+] @i1 & RespWillDoSecPEi()[+] @i2 ==> + (All idI1 idR1 capI1 capR1 ksI1 ksR1 pkI1 pkR1 dh1 ltk1 idI2 idR2 capI2 capR2 ksI2 ksR2 pkI2 pkR2 dh2 ltk2 #j1 #j2 . + InitiatorFinishedSecPairing(idI1, capI1, ksI1, idR1, capR1, ksR1, pkI1, pkR1, dh1, ltk1) @j1 & + ResponderFinishedSecPairing(idR2, capR2, ksR2, idI2, capI2, ksI2, pkR2, pkI2, dh2, ltk2) @j2 ==> + not (Ex #k1 #k2 . + K(ltk1) @k1 & K(ltk2) @k2 + ) + ) +" + +#endif + +/********************************************/ +/* End lemmas about SecOOBi-SecPEi exchange */ +/********************************************/ + +/****************************************/ +/* Lemmas about SecOOBi-SecPEo exchange */ +/****************************************/ + +#ifdef SecOOBiSecPEo +lemma secOOBi_secPEo_functional: exists-trace +" + Ex #i1 #i2 . + InitWillDoSecOOBi()[+] @i1 & RespWillDoSecPEo()[+] @i2 & + (Ex idI1 idR1 capI1 capR1 ksI1 ksR1 pkI1 pkR1 dh1 ltk1 idI2 idR2 capI2 capR2 ksI2 ksR2 pkI2 pkR2 dh2 ltk2 #j1 #j2 . + InitiatorFinishedSecPairing(idI1, capI1, ksI1, idR1, capR1, ksR1, pkI1, pkR1, dh1, ltk1) @j1 & + ResponderFinishedSecPairing(idR2, capR2, ksI2, idI2, capI2, ksR2, pkR2, pkI2, dh2, ltk2) @j2 + ) +" + +lemma secOOBi_secPEo_auth_init: +" + All #i1 #i2 . + InitWillDoSecOOBi()[+] @i1 & RespWillDoSecPEo()[+] @i2 ==> + (All idI idR capI capR ksI ksR pkI pkR dh ltk #k1 . + InitiatorFinishedSecPairing(idI, capI, ksI, idR, capR, ksR, pkI, pkR, dh, ltk) @k1 ==> + (Ex ni nr ri rr ei er #k2 . + RespDoneDHKeyCheck(idR, capR, ksR, idI, capI, ksI, pkR, pkI, dh, nr, ni, rr, ri, er, ei) @k2 + ) + ) +" + +lemma secOOBi_secPEo_auth_resp: +" + All #i1 #i2 . + InitWillDoSecOOBi()[+] @i1 & RespWillDoSecPEo()[+] @i2 ==> + (All idI idR capI capR ksI ksR pkI pkR dh ltk #k1 . + ResponderFinishedSecPairing(idR, capR, ksR, idI, capI, ksI, pkR, pkI, dh, ltk) @k1 ==> + (Ex #k2 . + InitiatorFinishedSecPairing(idI, capI, ksI, idR, capR, ksR, pkI, pkR, dh, ltk) @k2 + ) + ) +" + +lemma secOOBi_secPEo_weaksecret_init: +" + All #i1 #i2 . + InitWillDoSecOOBi()[+] @i1 & RespWillDoSecPEo()[+] @i2 ==> + (All idI idR capI capR ksI ksR pkI pkR dh ltk #k1 . + InitiatorFinishedSecPairing(idI, capI, ksI, idR, capR, ksR, pkI, pkR, dh, ltk) @k1 ==> + not (Ex #k2 . K(ltk) @k2) + ) +" + +lemma secOOBi_secPEo_weaksecret_resp: +" + All #i1 #i2 . + InitWillDoSecOOBi()[+] @i1 & RespWillDoSecPEo()[+] @i2 ==> + (All idI idR capI capR ksI ksR pkI pkR dh ltk #k1 . + ResponderFinishedSecPairing(idR, capR, ksR, idI, capI, ksI, pkR, pkI, dh, ltk) @k1 ==> + not (Ex #k2 . K(ltk) @k2) + ) +" + +lemma secOOBi_secPEo_double_impersonation: +" + All #i1 #i2 . + InitWillDoSecOOBi()[+] @i1 & RespWillDoSecPEo()[+] @i2 ==> + (All idI1 idR1 capI1 capR1 ksI1 ksR1 pkI1 pkR1 dh1 ltk1 idI2 idR2 capI2 capR2 ksI2 ksR2 pkI2 pkR2 dh2 ltk2 #j1 #j2 . + InitiatorFinishedSecPairing(idI1, capI1, ksI1, idR1, capR1, ksR1, pkI1, pkR1, dh1, ltk1) @j1 & + ResponderFinishedSecPairing(idR2, capR2, ksR2, idI2, capI2, ksI2, pkR2, pkI2, dh2, ltk2) @j2 ==> + not (Ex #k1 #k2 . + K(ltk1) @k1 & K(ltk2) @k2 + ) + ) +" + +#endif + +/********************************************/ +/* End lemmas about SecOOBi-SecPEo exchange */ +/********************************************/ + +/*****************************************/ +/* Lemmas about SecOOBi-SecPEio exchange */ +/*****************************************/ + +#ifdef SecOOBiSecPEio +lemma secOOBi_secPEio_functional: exists-trace +" + Ex #i1 #i2 . + InitWillDoSecOOBi()[+] @i1 & RespWillDoSecPEio()[+] @i2 & + (Ex idI1 idR1 capI1 capR1 ksI1 ksR1 pkI1 pkR1 dh1 ltk1 idI2 idR2 capI2 capR2 ksI2 ksR2 pkI2 pkR2 dh2 ltk2 #j1 #j2 . + InitiatorFinishedSecPairing(idI1, capI1, ksI1, idR1, capR1, ksR1, pkI1, pkR1, dh1, ltk1) @j1 & + ResponderFinishedSecPairing(idR2, capR2, ksI2, idI2, capI2, ksR2, pkR2, pkI2, dh2, ltk2) @j2 + ) +" + +lemma secOOBi_secPEio_auth_init: +" + All #i1 #i2 . + InitWillDoSecOOBi()[+] @i1 & RespWillDoSecPEio()[+] @i2 ==> + (All idI idR capI capR ksI ksR pkI pkR dh ltk #k1 . + InitiatorFinishedSecPairing(idI, capI, ksI, idR, capR, ksR, pkI, pkR, dh, ltk) @k1 ==> + (Ex ni nr ri rr ei er #k2 . + RespDoneDHKeyCheck(idR, capR, ksR, idI, capI, ksI, pkR, pkI, dh, nr, ni, rr, ri, er, ei) @k2 + ) + ) +" + +lemma secOOBi_secPEio_auth_resp: +" + All #i1 #i2 . + InitWillDoSecOOBi()[+] @i1 & RespWillDoSecPEio()[+] @i2 ==> + (All idI idR capI capR ksI ksR pkI pkR dh ltk #k1 . + ResponderFinishedSecPairing(idR, capR, ksR, idI, capI, ksI, pkR, pkI, dh, ltk) @k1 ==> + (Ex #k2 . + InitiatorFinishedSecPairing(idI, capI, ksI, idR, capR, ksR, pkI, pkR, dh, ltk) @k2 + ) + ) +" + +lemma secOOBi_secPEio_weaksecret_init: +" + All #i1 #i2 . + InitWillDoSecOOBi()[+] @i1 & RespWillDoSecPEio()[+] @i2 ==> + (All idI idR capI capR ksI ksR pkI pkR dh ltk #k1 . + InitiatorFinishedSecPairing(idI, capI, ksI, idR, capR, ksR, pkI, pkR, dh, ltk) @k1 ==> + not (Ex #k2 . K(ltk) @k2) + ) +" + +lemma secOOBi_secPEio_weaksecret_resp: +" + All #i1 #i2 . + InitWillDoSecOOBi()[+] @i1 & RespWillDoSecPEio()[+] @i2 ==> + (All idI idR capI capR ksI ksR pkI pkR dh ltk #k1 . + ResponderFinishedSecPairing(idR, capR, ksR, idI, capI, ksI, pkR, pkI, dh, ltk) @k1 ==> + not (Ex #k2 . K(ltk) @k2) + ) +" + +lemma secOOBi_secPEio_double_impersonation: +" + All #i1 #i2 . + InitWillDoSecOOBi()[+] @i1 & RespWillDoSecPEio()[+] @i2 ==> + (All idI1 idR1 capI1 capR1 ksI1 ksR1 pkI1 pkR1 dh1 ltk1 idI2 idR2 capI2 capR2 ksI2 ksR2 pkI2 pkR2 dh2 ltk2 #j1 #j2 . + InitiatorFinishedSecPairing(idI1, capI1, ksI1, idR1, capR1, ksR1, pkI1, pkR1, dh1, ltk1) @j1 & + ResponderFinishedSecPairing(idR2, capR2, ksR2, idI2, capI2, ksI2, pkR2, pkI2, dh2, ltk2) @j2 ==> + not (Ex #k1 #k2 . + K(ltk1) @k1 & K(ltk2) @k2 + ) + ) +" + +#endif + +/*********************************************/ +/* End lemmas about SecOOBi-SecPEio exchange */ +/*********************************************/ + +/***************************************/ +/* Lemmas about SecOOBi-SecNC exchange */ +/***************************************/ + +#ifdef SecOOBiSecNC +lemma secOOBi_secNC_functional: exists-trace +" + Ex #i1 #i2 . + InitWillDoSecOOBi()[+] @i1 & RespWillDoSecNC()[+] @i2 & + (Ex idI1 idR1 capI1 capR1 ksI1 ksR1 pkI1 pkR1 dh1 ltk1 idI2 idR2 capI2 capR2 ksI2 ksR2 pkI2 pkR2 dh2 ltk2 #j1 #j2 . + InitiatorFinishedSecPairing(idI1, capI1, ksI1, idR1, capR1, ksR1, pkI1, pkR1, dh1, ltk1) @j1 & + ResponderFinishedSecPairing(idR2, capR2, ksI2, idI2, capI2, ksR2, pkR2, pkI2, dh2, ltk2) @j2 + ) +" + +lemma secOOBi_secNC_auth_init: +" + All #i1 #i2 . + InitWillDoSecOOBi()[+] @i1 & RespWillDoSecNC()[+] @i2 ==> + (All idI idR capI capR ksI ksR pkI pkR dh ltk #k1 . + InitiatorFinishedSecPairing(idI, capI, ksI, idR, capR, ksR, pkI, pkR, dh, ltk) @k1 ==> + (Ex ni nr ri rr ei er #k2 . + RespDoneDHKeyCheck(idR, capR, ksR, idI, capI, ksI, pkR, pkI, dh, nr, ni, rr, ri, er, ei) @k2 + ) + ) +" + +lemma secOOBi_secNC_auth_resp: +" + All #i1 #i2 . + InitWillDoSecOOBi()[+] @i1 & RespWillDoSecNC()[+] @i2 ==> + (All idI idR capI capR ksI ksR pkI pkR dh ltk #k1 . + ResponderFinishedSecPairing(idR, capR, ksR, idI, capI, ksI, pkR, pkI, dh, ltk) @k1 ==> + (Ex #k2 . + InitiatorFinishedSecPairing(idI, capI, ksI, idR, capR, ksR, pkI, pkR, dh, ltk) @k2 + ) + ) +" + +lemma secOOBi_secNC_weaksecret_init: +" + All #i1 #i2 . + InitWillDoSecOOBi()[+] @i1 & RespWillDoSecNC()[+] @i2 ==> + (All idI idR capI capR ksI ksR pkI pkR dh ltk #k1 . + InitiatorFinishedSecPairing(idI, capI, ksI, idR, capR, ksR, pkI, pkR, dh, ltk) @k1 ==> + not (Ex #k2 . K(ltk) @k2) + ) +" + +lemma secOOBi_secNC_weaksecret_resp: +" + All #i1 #i2 . + InitWillDoSecOOBi()[+] @i1 & RespWillDoSecNC()[+] @i2 ==> + (All idI idR capI capR ksI ksR pkI pkR dh ltk #k1 . + ResponderFinishedSecPairing(idR, capR, ksR, idI, capI, ksI, pkR, pkI, dh, ltk) @k1 ==> + not (Ex #k2 . K(ltk) @k2) + ) +" + +lemma secOOBi_secNC_double_impersonation: +" + All #i1 #i2 . + InitWillDoSecOOBi()[+] @i1 & RespWillDoSecNC()[+] @i2 ==> + (All idI1 idR1 capI1 capR1 ksI1 ksR1 pkI1 pkR1 dh1 ltk1 idI2 idR2 capI2 capR2 ksI2 ksR2 pkI2 pkR2 dh2 ltk2 #j1 #j2 . + InitiatorFinishedSecPairing(idI1, capI1, ksI1, idR1, capR1, ksR1, pkI1, pkR1, dh1, ltk1) @j1 & + ResponderFinishedSecPairing(idR2, capR2, ksR2, idI2, capI2, ksI2, pkR2, pkI2, dh2, ltk2) @j2 ==> + not (Ex #k1 #k2 . + K(ltk1) @k1 & K(ltk2) @k2 + ) + ) +" + +#endif + +/*******************************************/ +/* End lemmas about SecOOBi-SecNC exchange */ +/*******************************************/ + +/*****************************************/ +/* Lemmas about SecOOBi-SecOOBi exchange */ +/*****************************************/ + +#ifdef SecOOBiSecOOBi +lemma secOOBi_secOOBi_functional: exists-trace +" + Ex #i1 #i2 . + InitWillDoSecOOBi()[+] @i1 & RespWillDoSecOOBi()[+] @i2 & + (Ex idI1 idR1 capI1 capR1 ksI1 ksR1 pkI1 pkR1 dh1 ltk1 idI2 idR2 capI2 capR2 ksI2 ksR2 pkI2 pkR2 dh2 ltk2 #j1 #j2 . + InitiatorFinishedSecPairing(idI1, capI1, ksI1, idR1, capR1, ksR1, pkI1, pkR1, dh1, ltk1) @j1 & + ResponderFinishedSecPairing(idR2, capR2, ksI2, idI2, capI2, ksR2, pkR2, pkI2, dh2, ltk2) @j2 + ) +" + +lemma secOOBi_secOOBi_auth_init: +" + All #i1 #i2 . + InitWillDoSecOOBi()[+] @i1 & RespWillDoSecOOBi()[+] @i2 ==> + (All idI idR capI capR ksI ksR pkI pkR dh ltk #k1 . + InitiatorFinishedSecPairing(idI, capI, ksI, idR, capR, ksR, pkI, pkR, dh, ltk) @k1 ==> + (Ex ni nr ri rr ei er #k2 . + RespDoneDHKeyCheck(idR, capR, ksR, idI, capI, ksI, pkR, pkI, dh, nr, ni, rr, ri, er, ei) @k2 + ) + ) +" + +lemma secOOBi_secOOBi_auth_resp: +" + All #i1 #i2 . + InitWillDoSecOOBi()[+] @i1 & RespWillDoSecOOBi()[+] @i2 ==> + (All idI idR capI capR ksI ksR pkI pkR dh ltk #k1 . + ResponderFinishedSecPairing(idR, capR, ksR, idI, capI, ksI, pkR, pkI, dh, ltk) @k1 ==> + (Ex #k2 . + InitiatorFinishedSecPairing(idI, capI, ksI, idR, capR, ksR, pkI, pkR, dh, ltk) @k2 + ) + ) +" + +lemma secOOBi_secOOBi_weaksecret_init: +" + All #i1 #i2 . + InitWillDoSecOOBi()[+] @i1 & RespWillDoSecOOBi()[+] @i2 ==> + (All idI idR capI capR ksI ksR pkI pkR dh ltk #k1 . + InitiatorFinishedSecPairing(idI, capI, ksI, idR, capR, ksR, pkI, pkR, dh, ltk) @k1 ==> + not (Ex #k2 . K(ltk) @k2) + ) +" + +lemma secOOBi_secOOBi_weaksecret_resp: +" + All #i1 #i2 . + InitWillDoSecOOBi()[+] @i1 & RespWillDoSecOOBi()[+] @i2 ==> + (All idI idR capI capR ksI ksR pkI pkR dh ltk #k1 . + ResponderFinishedSecPairing(idR, capR, ksR, idI, capI, ksI, pkR, pkI, dh, ltk) @k1 ==> + not (Ex #k2 . K(ltk) @k2) + ) +" + +lemma secOOBi_secOOBi_double_impersonation: +" + All #i1 #i2 . + InitWillDoSecOOBi()[+] @i1 & RespWillDoSecOOBi()[+] @i2 ==> + (All idI1 idR1 capI1 capR1 ksI1 ksR1 pkI1 pkR1 dh1 ltk1 idI2 idR2 capI2 capR2 ksI2 ksR2 pkI2 pkR2 dh2 ltk2 #j1 #j2 . + InitiatorFinishedSecPairing(idI1, capI1, ksI1, idR1, capR1, ksR1, pkI1, pkR1, dh1, ltk1) @j1 & + ResponderFinishedSecPairing(idR2, capR2, ksR2, idI2, capI2, ksI2, pkR2, pkI2, dh2, ltk2) @j2 ==> + not (Ex #k1 #k2 . + K(ltk1) @k1 & K(ltk2) @k2 + ) + ) +" + +#endif + +/*********************************************/ +/* End lemmas about SecOOBi-SecOOBi exchange */ +/*********************************************/ + +/*****************************************/ +/* Lemmas about SecOOBi-SecOOBo exchange */ +/*****************************************/ + +#ifdef SecOOBiSecOOBo +lemma secOOBi_secOOBo_functional: exists-trace +" + Ex #i1 #i2 . + InitWillDoSecOOBi()[+] @i1 & RespWillDoSecOOBo()[+] @i2 & + (Ex idI1 idR1 capI1 capR1 ksI1 ksR1 pkI1 pkR1 dh1 ltk1 idI2 idR2 capI2 capR2 ksI2 ksR2 pkI2 pkR2 dh2 ltk2 #j1 #j2 . + InitiatorFinishedSecPairing(idI1, capI1, ksI1, idR1, capR1, ksR1, pkI1, pkR1, dh1, ltk1) @j1 & + ResponderFinishedSecPairing(idR2, capR2, ksI2, idI2, capI2, ksR2, pkR2, pkI2, dh2, ltk2) @j2 + ) +" + +lemma secOOBi_secOOBo_auth_init: +" + All #i1 #i2 . + InitWillDoSecOOBi()[+] @i1 & RespWillDoSecOOBo()[+] @i2 ==> + (All idI idR capI capR ksI ksR pkI pkR dh ltk #k1 . + InitiatorFinishedSecPairing(idI, capI, ksI, idR, capR, ksR, pkI, pkR, dh, ltk) @k1 ==> + (Ex ni nr ri rr ei er #k2 . + RespDoneDHKeyCheck(idR, capR, ksR, idI, capI, ksI, pkR, pkI, dh, nr, ni, rr, ri, er, ei) @k2 + ) + ) +" + +lemma secOOBi_secOOBo_auth_resp: +" + All #i1 #i2 . + InitWillDoSecOOBi()[+] @i1 & RespWillDoSecOOBo()[+] @i2 ==> + (All idI idR capI capR ksI ksR pkI pkR dh ltk #k1 . + ResponderFinishedSecPairing(idR, capR, ksR, idI, capI, ksI, pkR, pkI, dh, ltk) @k1 ==> + (Ex #k2 . + InitiatorFinishedSecPairing(idI, capI, ksI, idR, capR, ksR, pkI, pkR, dh, ltk) @k2 + ) + ) +" + +lemma secOOBi_secOOBo_weaksecret_init: +" + All #i1 #i2 . + InitWillDoSecOOBi()[+] @i1 & RespWillDoSecOOBo()[+] @i2 ==> + (All idI idR capI capR ksI ksR pkI pkR dh ltk #k1 . + InitiatorFinishedSecPairing(idI, capI, ksI, idR, capR, ksR, pkI, pkR, dh, ltk) @k1 ==> + not (Ex #k2 . K(ltk) @k2) + ) +" + +lemma secOOBi_secOOBo_weaksecret_resp: +" + All #i1 #i2 . + InitWillDoSecOOBi()[+] @i1 & RespWillDoSecOOBo()[+] @i2 ==> + (All idI idR capI capR ksI ksR pkI pkR dh ltk #k1 . + ResponderFinishedSecPairing(idR, capR, ksR, idI, capI, ksI, pkR, pkI, dh, ltk) @k1 ==> + not (Ex #k2 . K(ltk) @k2) + ) +" + +lemma secOOBi_secOOBo_double_impersonation: +" + All #i1 #i2 . + InitWillDoSecOOBi()[+] @i1 & RespWillDoSecOOBo()[+] @i2 ==> + (All idI1 idR1 capI1 capR1 ksI1 ksR1 pkI1 pkR1 dh1 ltk1 idI2 idR2 capI2 capR2 ksI2 ksR2 pkI2 pkR2 dh2 ltk2 #j1 #j2 . + InitiatorFinishedSecPairing(idI1, capI1, ksI1, idR1, capR1, ksR1, pkI1, pkR1, dh1, ltk1) @j1 & + ResponderFinishedSecPairing(idR2, capR2, ksR2, idI2, capI2, ksI2, pkR2, pkI2, dh2, ltk2) @j2 ==> + not (Ex #k1 #k2 . + K(ltk1) @k1 & K(ltk2) @k2 + ) + ) +" + +#endif + +/*********************************************/ +/* End lemmas about SecOOBi-SecOOBo exchange */ +/*********************************************/ + +/******************************************/ +/* Lemmas about SecOOBi-SecOOBio exchange */ +/******************************************/ + +#ifdef SecOOBiSecOOBio +lemma secOOBi_secOOBio_functional: exists-trace +" + Ex #i1 #i2 . + InitWillDoSecOOBi()[+] @i1 & RespWillDoSecOOBio()[+] @i2 & + (Ex idI1 idR1 capI1 capR1 ksI1 ksR1 pkI1 pkR1 dh1 ltk1 idI2 idR2 capI2 capR2 ksI2 ksR2 pkI2 pkR2 dh2 ltk2 #j1 #j2 . + InitiatorFinishedSecPairing(idI1, capI1, ksI1, idR1, capR1, ksR1, pkI1, pkR1, dh1, ltk1) @j1 & + ResponderFinishedSecPairing(idR2, capR2, ksI2, idI2, capI2, ksR2, pkR2, pkI2, dh2, ltk2) @j2 + ) +" + +lemma secOOBi_secOOBio_auth_init: +" + All #i1 #i2 . + InitWillDoSecOOBi()[+] @i1 & RespWillDoSecOOBio()[+] @i2 ==> + (All idI idR capI capR ksI ksR pkI pkR dh ltk #k1 . + InitiatorFinishedSecPairing(idI, capI, ksI, idR, capR, ksR, pkI, pkR, dh, ltk) @k1 ==> + (Ex ni nr ri rr ei er #k2 . + RespDoneDHKeyCheck(idR, capR, ksR, idI, capI, ksI, pkR, pkI, dh, nr, ni, rr, ri, er, ei) @k2 + ) + ) +" + +lemma secOOBi_secOOBio_auth_resp: +" + All #i1 #i2 . + InitWillDoSecOOBi()[+] @i1 & RespWillDoSecOOBio()[+] @i2 ==> + (All idI idR capI capR ksI ksR pkI pkR dh ltk #k1 . + ResponderFinishedSecPairing(idR, capR, ksR, idI, capI, ksI, pkR, pkI, dh, ltk) @k1 ==> + (Ex #k2 . + InitiatorFinishedSecPairing(idI, capI, ksI, idR, capR, ksR, pkI, pkR, dh, ltk) @k2 + ) + ) +" + +lemma secOOBi_secOOBio_weaksecret_init: +" + All #i1 #i2 . + InitWillDoSecOOBi()[+] @i1 & RespWillDoSecOOBio()[+] @i2 ==> + (All idI idR capI capR ksI ksR pkI pkR dh ltk #k1 . + InitiatorFinishedSecPairing(idI, capI, ksI, idR, capR, ksR, pkI, pkR, dh, ltk) @k1 ==> + not (Ex #k2 . K(ltk) @k2) + ) +" + +lemma secOOBi_secOOBio_weaksecret_resp: +" + All #i1 #i2 . + InitWillDoSecOOBi()[+] @i1 & RespWillDoSecOOBio()[+] @i2 ==> + (All idI idR capI capR ksI ksR pkI pkR dh ltk #k1 . + ResponderFinishedSecPairing(idR, capR, ksR, idI, capI, ksI, pkR, pkI, dh, ltk) @k1 ==> + not (Ex #k2 . K(ltk) @k2) + ) +" + +lemma secOOBi_secOOBio_double_impersonation: +" + All #i1 #i2 . + InitWillDoSecOOBi()[+] @i1 & RespWillDoSecOOBio()[+] @i2 ==> + (All idI1 idR1 capI1 capR1 ksI1 ksR1 pkI1 pkR1 dh1 ltk1 idI2 idR2 capI2 capR2 ksI2 ksR2 pkI2 pkR2 dh2 ltk2 #j1 #j2 . + InitiatorFinishedSecPairing(idI1, capI1, ksI1, idR1, capR1, ksR1, pkI1, pkR1, dh1, ltk1) @j1 & + ResponderFinishedSecPairing(idR2, capR2, ksR2, idI2, capI2, ksI2, pkR2, pkI2, dh2, ltk2) @j2 ==> + not (Ex #k1 #k2 . + K(ltk1) @k1 & K(ltk2) @k2 + ) + ) +" + +#endif + +/**********************************************/ +/* End lemmas about SecOOBi-SecOOBio exchange */ +/**********************************************/ + +/***************************************/ +/* Lemmas about SecOOBo-SecJW exchange */ +/***************************************/ + +#ifdef SecOOBoSecJW +lemma secOOBo_secJW_functional: exists-trace +" + Ex #i1 #i2 . + InitWillDoSecOOBo()[+] @i1 & RespWillDoSecJW()[+] @i2 & + (Ex idI1 idR1 capI1 capR1 ksI1 ksR1 pkI1 pkR1 dh1 ltk1 idI2 idR2 capI2 capR2 ksI2 ksR2 pkI2 pkR2 dh2 ltk2 #j1 #j2 . + InitiatorFinishedSecPairing(idI1, capI1, ksI1, idR1, capR1, ksR1, pkI1, pkR1, dh1, ltk1) @j1 & + ResponderFinishedSecPairing(idR2, capR2, ksI2, idI2, capI2, ksR2, pkR2, pkI2, dh2, ltk2) @j2 + ) +" + +lemma secOOBo_secJW_auth_init: +" + All #i1 #i2 . + InitWillDoSecOOBo()[+] @i1 & RespWillDoSecJW()[+] @i2 ==> + (All idI idR capI capR ksI ksR pkI pkR dh ltk #k1 . + InitiatorFinishedSecPairing(idI, capI, ksI, idR, capR, ksR, pkI, pkR, dh, ltk) @k1 ==> + (Ex ni nr ri rr ei er #k2 . + RespDoneDHKeyCheck(idR, capR, ksR, idI, capI, ksI, pkR, pkI, dh, nr, ni, rr, ri, er, ei) @k2 + ) + ) +" + +lemma secOOBo_secJW_auth_resp: +" + All #i1 #i2 . + InitWillDoSecOOBo()[+] @i1 & RespWillDoSecJW()[+] @i2 ==> + (All idI idR capI capR ksI ksR pkI pkR dh ltk #k1 . + ResponderFinishedSecPairing(idR, capR, ksR, idI, capI, ksI, pkR, pkI, dh, ltk) @k1 ==> + (Ex #k2 . + InitiatorFinishedSecPairing(idI, capI, ksI, idR, capR, ksR, pkI, pkR, dh, ltk) @k2 + ) + ) +" + +lemma secOOBo_secJW_weaksecret_init: +" + All #i1 #i2 . + InitWillDoSecOOBo()[+] @i1 & RespWillDoSecJW()[+] @i2 ==> + (All idI idR capI capR ksI ksR pkI pkR dh ltk #k1 . + InitiatorFinishedSecPairing(idI, capI, ksI, idR, capR, ksR, pkI, pkR, dh, ltk) @k1 ==> + not (Ex #k2 . K(ltk) @k2) + ) +" + +lemma secOOBo_secJW_weaksecret_resp: +" + All #i1 #i2 . + InitWillDoSecOOBo()[+] @i1 & RespWillDoSecJW()[+] @i2 ==> + (All idI idR capI capR ksI ksR pkI pkR dh ltk #k1 . + ResponderFinishedSecPairing(idR, capR, ksR, idI, capI, ksI, pkR, pkI, dh, ltk) @k1 ==> + not (Ex #k2 . K(ltk) @k2) + ) +" + +lemma secOOBo_secJW_double_impersonation: +" + All #i1 #i2 . + InitWillDoSecOOBo()[+] @i1 & RespWillDoSecJW()[+] @i2 ==> + (All idI1 idR1 capI1 capR1 ksI1 ksR1 pkI1 pkR1 dh1 ltk1 idI2 idR2 capI2 capR2 ksI2 ksR2 pkI2 pkR2 dh2 ltk2 #j1 #j2 . + InitiatorFinishedSecPairing(idI1, capI1, ksI1, idR1, capR1, ksR1, pkI1, pkR1, dh1, ltk1) @j1 & + ResponderFinishedSecPairing(idR2, capR2, ksR2, idI2, capI2, ksI2, pkR2, pkI2, dh2, ltk2) @j2 ==> + not (Ex #k1 #k2 . + K(ltk1) @k1 & K(ltk2) @k2 + ) + ) +" + +#endif + +/*******************************************/ +/* End lemmas about SecOOBo-SecJW exchange */ +/*******************************************/ + +/****************************************/ +/* Lemmas about SecOOBo-SecPEi exchange */ +/****************************************/ + +#ifdef SecOOBoSecPEi +lemma secOOBo_secPEi_functional: exists-trace +" + Ex #i1 #i2 . + InitWillDoSecOOBo()[+] @i1 & RespWillDoSecPEi()[+] @i2 & + (Ex idI1 idR1 capI1 capR1 ksI1 ksR1 pkI1 pkR1 dh1 ltk1 idI2 idR2 capI2 capR2 ksI2 ksR2 pkI2 pkR2 dh2 ltk2 #j1 #j2 . + InitiatorFinishedSecPairing(idI1, capI1, ksI1, idR1, capR1, ksR1, pkI1, pkR1, dh1, ltk1) @j1 & + ResponderFinishedSecPairing(idR2, capR2, ksI2, idI2, capI2, ksR2, pkR2, pkI2, dh2, ltk2) @j2 + ) +" + +lemma secOOBo_secPEi_auth_init: +" + All #i1 #i2 . + InitWillDoSecOOBo()[+] @i1 & RespWillDoSecPEi()[+] @i2 ==> + (All idI idR capI capR ksI ksR pkI pkR dh ltk #k1 . + InitiatorFinishedSecPairing(idI, capI, ksI, idR, capR, ksR, pkI, pkR, dh, ltk) @k1 ==> + (Ex ni nr ri rr ei er #k2 . + RespDoneDHKeyCheck(idR, capR, ksR, idI, capI, ksI, pkR, pkI, dh, nr, ni, rr, ri, er, ei) @k2 + ) + ) +" + +lemma secOOBo_secPEi_auth_resp: +" + All #i1 #i2 . + InitWillDoSecOOBo()[+] @i1 & RespWillDoSecPEi()[+] @i2 ==> + (All idI idR capI capR ksI ksR pkI pkR dh ltk #k1 . + ResponderFinishedSecPairing(idR, capR, ksR, idI, capI, ksI, pkR, pkI, dh, ltk) @k1 ==> + (Ex #k2 . + InitiatorFinishedSecPairing(idI, capI, ksI, idR, capR, ksR, pkI, pkR, dh, ltk) @k2 + ) + ) +" + +lemma secOOBo_secPEi_weaksecret_init: +" + All #i1 #i2 . + InitWillDoSecOOBo()[+] @i1 & RespWillDoSecPEi()[+] @i2 ==> + (All idI idR capI capR ksI ksR pkI pkR dh ltk #k1 . + InitiatorFinishedSecPairing(idI, capI, ksI, idR, capR, ksR, pkI, pkR, dh, ltk) @k1 ==> + not (Ex #k2 . K(ltk) @k2) + ) +" + +lemma secOOBo_secPEi_weaksecret_resp: +" + All #i1 #i2 . + InitWillDoSecOOBo()[+] @i1 & RespWillDoSecPEi()[+] @i2 ==> + (All idI idR capI capR ksI ksR pkI pkR dh ltk #k1 . + ResponderFinishedSecPairing(idR, capR, ksR, idI, capI, ksI, pkR, pkI, dh, ltk) @k1 ==> + not (Ex #k2 . K(ltk) @k2) + ) +" + +lemma secOOBo_secPEi_double_impersonation: +" + All #i1 #i2 . + InitWillDoSecOOBo()[+] @i1 & RespWillDoSecPEi()[+] @i2 ==> + (All idI1 idR1 capI1 capR1 ksI1 ksR1 pkI1 pkR1 dh1 ltk1 idI2 idR2 capI2 capR2 ksI2 ksR2 pkI2 pkR2 dh2 ltk2 #j1 #j2 . + InitiatorFinishedSecPairing(idI1, capI1, ksI1, idR1, capR1, ksR1, pkI1, pkR1, dh1, ltk1) @j1 & + ResponderFinishedSecPairing(idR2, capR2, ksR2, idI2, capI2, ksI2, pkR2, pkI2, dh2, ltk2) @j2 ==> + not (Ex #k1 #k2 . + K(ltk1) @k1 & K(ltk2) @k2 + ) + ) +" + +#endif + +/********************************************/ +/* End lemmas about SecOOBo-SecPEi exchange */ +/********************************************/ + +/****************************************/ +/* Lemmas about SecOOBo-SecPEo exchange */ +/****************************************/ + +#ifdef SecOOBoSecPEo +lemma secOOBo_secPEo_functional: exists-trace +" + Ex #i1 #i2 . + InitWillDoSecOOBo()[+] @i1 & RespWillDoSecPEo()[+] @i2 & + (Ex idI1 idR1 capI1 capR1 ksI1 ksR1 pkI1 pkR1 dh1 ltk1 idI2 idR2 capI2 capR2 ksI2 ksR2 pkI2 pkR2 dh2 ltk2 #j1 #j2 . + InitiatorFinishedSecPairing(idI1, capI1, ksI1, idR1, capR1, ksR1, pkI1, pkR1, dh1, ltk1) @j1 & + ResponderFinishedSecPairing(idR2, capR2, ksI2, idI2, capI2, ksR2, pkR2, pkI2, dh2, ltk2) @j2 + ) +" + +lemma secOOBo_secPEo_auth_init: +" + All #i1 #i2 . + InitWillDoSecOOBo()[+] @i1 & RespWillDoSecPEo()[+] @i2 ==> + (All idI idR capI capR ksI ksR pkI pkR dh ltk #k1 . + InitiatorFinishedSecPairing(idI, capI, ksI, idR, capR, ksR, pkI, pkR, dh, ltk) @k1 ==> + (Ex ni nr ri rr ei er #k2 . + RespDoneDHKeyCheck(idR, capR, ksR, idI, capI, ksI, pkR, pkI, dh, nr, ni, rr, ri, er, ei) @k2 + ) + ) +" + +lemma secOOBo_secPEo_auth_resp: +" + All #i1 #i2 . + InitWillDoSecOOBo()[+] @i1 & RespWillDoSecPEo()[+] @i2 ==> + (All idI idR capI capR ksI ksR pkI pkR dh ltk #k1 . + ResponderFinishedSecPairing(idR, capR, ksR, idI, capI, ksI, pkR, pkI, dh, ltk) @k1 ==> + (Ex #k2 . + InitiatorFinishedSecPairing(idI, capI, ksI, idR, capR, ksR, pkI, pkR, dh, ltk) @k2 + ) + ) +" + +lemma secOOBo_secPEo_weaksecret_init: +" + All #i1 #i2 . + InitWillDoSecOOBo()[+] @i1 & RespWillDoSecPEo()[+] @i2 ==> + (All idI idR capI capR ksI ksR pkI pkR dh ltk #k1 . + InitiatorFinishedSecPairing(idI, capI, ksI, idR, capR, ksR, pkI, pkR, dh, ltk) @k1 ==> + not (Ex #k2 . K(ltk) @k2) + ) +" + +lemma secOOBo_secPEo_weaksecret_resp: +" + All #i1 #i2 . + InitWillDoSecOOBo()[+] @i1 & RespWillDoSecPEo()[+] @i2 ==> + (All idI idR capI capR ksI ksR pkI pkR dh ltk #k1 . + ResponderFinishedSecPairing(idR, capR, ksR, idI, capI, ksI, pkR, pkI, dh, ltk) @k1 ==> + not (Ex #k2 . K(ltk) @k2) + ) +" + +lemma secOOBo_secPEo_double_impersonation: +" + All #i1 #i2 . + InitWillDoSecOOBo()[+] @i1 & RespWillDoSecPEo()[+] @i2 ==> + (All idI1 idR1 capI1 capR1 ksI1 ksR1 pkI1 pkR1 dh1 ltk1 idI2 idR2 capI2 capR2 ksI2 ksR2 pkI2 pkR2 dh2 ltk2 #j1 #j2 . + InitiatorFinishedSecPairing(idI1, capI1, ksI1, idR1, capR1, ksR1, pkI1, pkR1, dh1, ltk1) @j1 & + ResponderFinishedSecPairing(idR2, capR2, ksR2, idI2, capI2, ksI2, pkR2, pkI2, dh2, ltk2) @j2 ==> + not (Ex #k1 #k2 . + K(ltk1) @k1 & K(ltk2) @k2 + ) + ) +" + +#endif + +/********************************************/ +/* End lemmas about SecOOBo-SecPEo exchange */ +/********************************************/ + +/*****************************************/ +/* Lemmas about SecOOBo-SecPEio exchange */ +/*****************************************/ + +#ifdef SecOOBoSecPEio +lemma secOOBo_secPEio_functional: exists-trace +" + Ex #i1 #i2 . + InitWillDoSecOOBo()[+] @i1 & RespWillDoSecPEio()[+] @i2 & + (Ex idI1 idR1 capI1 capR1 ksI1 ksR1 pkI1 pkR1 dh1 ltk1 idI2 idR2 capI2 capR2 ksI2 ksR2 pkI2 pkR2 dh2 ltk2 #j1 #j2 . + InitiatorFinishedSecPairing(idI1, capI1, ksI1, idR1, capR1, ksR1, pkI1, pkR1, dh1, ltk1) @j1 & + ResponderFinishedSecPairing(idR2, capR2, ksI2, idI2, capI2, ksR2, pkR2, pkI2, dh2, ltk2) @j2 + ) +" + +lemma secOOBo_secPEio_auth_init: +" + All #i1 #i2 . + InitWillDoSecOOBo()[+] @i1 & RespWillDoSecPEio()[+] @i2 ==> + (All idI idR capI capR ksI ksR pkI pkR dh ltk #k1 . + InitiatorFinishedSecPairing(idI, capI, ksI, idR, capR, ksR, pkI, pkR, dh, ltk) @k1 ==> + (Ex ni nr ri rr ei er #k2 . + RespDoneDHKeyCheck(idR, capR, ksR, idI, capI, ksI, pkR, pkI, dh, nr, ni, rr, ri, er, ei) @k2 + ) + ) +" + +lemma secOOBo_secPEio_auth_resp: +" + All #i1 #i2 . + InitWillDoSecOOBo()[+] @i1 & RespWillDoSecPEio()[+] @i2 ==> + (All idI idR capI capR ksI ksR pkI pkR dh ltk #k1 . + ResponderFinishedSecPairing(idR, capR, ksR, idI, capI, ksI, pkR, pkI, dh, ltk) @k1 ==> + (Ex #k2 . + InitiatorFinishedSecPairing(idI, capI, ksI, idR, capR, ksR, pkI, pkR, dh, ltk) @k2 + ) + ) +" + +lemma secOOBo_secPEio_weaksecret_init: +" + All #i1 #i2 . + InitWillDoSecOOBo()[+] @i1 & RespWillDoSecPEio()[+] @i2 ==> + (All idI idR capI capR ksI ksR pkI pkR dh ltk #k1 . + InitiatorFinishedSecPairing(idI, capI, ksI, idR, capR, ksR, pkI, pkR, dh, ltk) @k1 ==> + not (Ex #k2 . K(ltk) @k2) + ) +" + +lemma secOOBo_secPEio_weaksecret_resp: +" + All #i1 #i2 . + InitWillDoSecOOBo()[+] @i1 & RespWillDoSecPEio()[+] @i2 ==> + (All idI idR capI capR ksI ksR pkI pkR dh ltk #k1 . + ResponderFinishedSecPairing(idR, capR, ksR, idI, capI, ksI, pkR, pkI, dh, ltk) @k1 ==> + not (Ex #k2 . K(ltk) @k2) + ) +" + +lemma secOOBo_secPEio_double_impersonation: +" + All #i1 #i2 . + InitWillDoSecOOBo()[+] @i1 & RespWillDoSecPEio()[+] @i2 ==> + (All idI1 idR1 capI1 capR1 ksI1 ksR1 pkI1 pkR1 dh1 ltk1 idI2 idR2 capI2 capR2 ksI2 ksR2 pkI2 pkR2 dh2 ltk2 #j1 #j2 . + InitiatorFinishedSecPairing(idI1, capI1, ksI1, idR1, capR1, ksR1, pkI1, pkR1, dh1, ltk1) @j1 & + ResponderFinishedSecPairing(idR2, capR2, ksR2, idI2, capI2, ksI2, pkR2, pkI2, dh2, ltk2) @j2 ==> + not (Ex #k1 #k2 . + K(ltk1) @k1 & K(ltk2) @k2 + ) + ) +" + +#endif + +/*********************************************/ +/* End lemmas about SecOOBo-SecPEio exchange */ +/*********************************************/ + +/***************************************/ +/* Lemmas about SecOOBo-SecNC exchange */ +/***************************************/ + +#ifdef SecOOBoSecNC +lemma secOOBo_secNC_functional: exists-trace +" + Ex #i1 #i2 . + InitWillDoSecOOBo()[+] @i1 & RespWillDoSecNC()[+] @i2 & + (Ex idI1 idR1 capI1 capR1 ksI1 ksR1 pkI1 pkR1 dh1 ltk1 idI2 idR2 capI2 capR2 ksI2 ksR2 pkI2 pkR2 dh2 ltk2 #j1 #j2 . + InitiatorFinishedSecPairing(idI1, capI1, ksI1, idR1, capR1, ksR1, pkI1, pkR1, dh1, ltk1) @j1 & + ResponderFinishedSecPairing(idR2, capR2, ksI2, idI2, capI2, ksR2, pkR2, pkI2, dh2, ltk2) @j2 + ) +" + +lemma secOOBo_secNC_auth_init: +" + All #i1 #i2 . + InitWillDoSecOOBo()[+] @i1 & RespWillDoSecNC()[+] @i2 ==> + (All idI idR capI capR ksI ksR pkI pkR dh ltk #k1 . + InitiatorFinishedSecPairing(idI, capI, ksI, idR, capR, ksR, pkI, pkR, dh, ltk) @k1 ==> + (Ex ni nr ri rr ei er #k2 . + RespDoneDHKeyCheck(idR, capR, ksR, idI, capI, ksI, pkR, pkI, dh, nr, ni, rr, ri, er, ei) @k2 + ) + ) +" + +lemma secOOBo_secNC_auth_resp: +" + All #i1 #i2 . + InitWillDoSecOOBo()[+] @i1 & RespWillDoSecNC()[+] @i2 ==> + (All idI idR capI capR ksI ksR pkI pkR dh ltk #k1 . + ResponderFinishedSecPairing(idR, capR, ksR, idI, capI, ksI, pkR, pkI, dh, ltk) @k1 ==> + (Ex #k2 . + InitiatorFinishedSecPairing(idI, capI, ksI, idR, capR, ksR, pkI, pkR, dh, ltk) @k2 + ) + ) +" + +lemma secOOBo_secNC_weaksecret_init: +" + All #i1 #i2 . + InitWillDoSecOOBo()[+] @i1 & RespWillDoSecNC()[+] @i2 ==> + (All idI idR capI capR ksI ksR pkI pkR dh ltk #k1 . + InitiatorFinishedSecPairing(idI, capI, ksI, idR, capR, ksR, pkI, pkR, dh, ltk) @k1 ==> + not (Ex #k2 . K(ltk) @k2) + ) +" + +lemma secOOBo_secNC_weaksecret_resp: +" + All #i1 #i2 . + InitWillDoSecOOBo()[+] @i1 & RespWillDoSecNC()[+] @i2 ==> + (All idI idR capI capR ksI ksR pkI pkR dh ltk #k1 . + ResponderFinishedSecPairing(idR, capR, ksR, idI, capI, ksI, pkR, pkI, dh, ltk) @k1 ==> + not (Ex #k2 . K(ltk) @k2) + ) +" + +lemma secOOBo_secNC_double_impersonation: +" + All #i1 #i2 . + InitWillDoSecOOBo()[+] @i1 & RespWillDoSecNC()[+] @i2 ==> + (All idI1 idR1 capI1 capR1 ksI1 ksR1 pkI1 pkR1 dh1 ltk1 idI2 idR2 capI2 capR2 ksI2 ksR2 pkI2 pkR2 dh2 ltk2 #j1 #j2 . + InitiatorFinishedSecPairing(idI1, capI1, ksI1, idR1, capR1, ksR1, pkI1, pkR1, dh1, ltk1) @j1 & + ResponderFinishedSecPairing(idR2, capR2, ksR2, idI2, capI2, ksI2, pkR2, pkI2, dh2, ltk2) @j2 ==> + not (Ex #k1 #k2 . + K(ltk1) @k1 & K(ltk2) @k2 + ) + ) +" + +#endif + +/*******************************************/ +/* End lemmas about SecOOBo-SecNC exchange */ +/*******************************************/ + +/*****************************************/ +/* Lemmas about SecOOBo-SecOOBi exchange */ +/*****************************************/ + +#ifdef SecOOBoSecOOBi +lemma secOOBo_secOOBi_functional: exists-trace +" + Ex #i1 #i2 . + InitWillDoSecOOBo()[+] @i1 & RespWillDoSecOOBi()[+] @i2 & + (Ex idI1 idR1 capI1 capR1 ksI1 ksR1 pkI1 pkR1 dh1 ltk1 idI2 idR2 capI2 capR2 ksI2 ksR2 pkI2 pkR2 dh2 ltk2 #j1 #j2 . + InitiatorFinishedSecPairing(idI1, capI1, ksI1, idR1, capR1, ksR1, pkI1, pkR1, dh1, ltk1) @j1 & + ResponderFinishedSecPairing(idR2, capR2, ksI2, idI2, capI2, ksR2, pkR2, pkI2, dh2, ltk2) @j2 + ) +" + +lemma secOOBo_secOOBi_auth_init: +" + All #i1 #i2 . + InitWillDoSecOOBo()[+] @i1 & RespWillDoSecOOBi()[+] @i2 ==> + (All idI idR capI capR ksI ksR pkI pkR dh ltk #k1 . + InitiatorFinishedSecPairing(idI, capI, ksI, idR, capR, ksR, pkI, pkR, dh, ltk) @k1 ==> + (Ex ni nr ri rr ei er #k2 . + RespDoneDHKeyCheck(idR, capR, ksR, idI, capI, ksI, pkR, pkI, dh, nr, ni, rr, ri, er, ei) @k2 + ) + ) +" + +lemma secOOBo_secOOBi_auth_resp: +" + All #i1 #i2 . + InitWillDoSecOOBo()[+] @i1 & RespWillDoSecOOBi()[+] @i2 ==> + (All idI idR capI capR ksI ksR pkI pkR dh ltk #k1 . + ResponderFinishedSecPairing(idR, capR, ksR, idI, capI, ksI, pkR, pkI, dh, ltk) @k1 ==> + (Ex #k2 . + InitiatorFinishedSecPairing(idI, capI, ksI, idR, capR, ksR, pkI, pkR, dh, ltk) @k2 + ) + ) +" + +lemma secOOBo_secOOBi_weaksecret_init: +" + All #i1 #i2 . + InitWillDoSecOOBo()[+] @i1 & RespWillDoSecOOBi()[+] @i2 ==> + (All idI idR capI capR ksI ksR pkI pkR dh ltk #k1 . + InitiatorFinishedSecPairing(idI, capI, ksI, idR, capR, ksR, pkI, pkR, dh, ltk) @k1 ==> + not (Ex #k2 . K(ltk) @k2) + ) +" + +lemma secOOBo_secOOBi_weaksecret_resp: +" + All #i1 #i2 . + InitWillDoSecOOBo()[+] @i1 & RespWillDoSecOOBi()[+] @i2 ==> + (All idI idR capI capR ksI ksR pkI pkR dh ltk #k1 . + ResponderFinishedSecPairing(idR, capR, ksR, idI, capI, ksI, pkR, pkI, dh, ltk) @k1 ==> + not (Ex #k2 . K(ltk) @k2) + ) +" + +lemma secOOBo_secOOBi_double_impersonation: +" + All #i1 #i2 . + InitWillDoSecOOBo()[+] @i1 & RespWillDoSecOOBi()[+] @i2 ==> + (All idI1 idR1 capI1 capR1 ksI1 ksR1 pkI1 pkR1 dh1 ltk1 idI2 idR2 capI2 capR2 ksI2 ksR2 pkI2 pkR2 dh2 ltk2 #j1 #j2 . + InitiatorFinishedSecPairing(idI1, capI1, ksI1, idR1, capR1, ksR1, pkI1, pkR1, dh1, ltk1) @j1 & + ResponderFinishedSecPairing(idR2, capR2, ksR2, idI2, capI2, ksI2, pkR2, pkI2, dh2, ltk2) @j2 ==> + not (Ex #k1 #k2 . + K(ltk1) @k1 & K(ltk2) @k2 + ) + ) +" + +#endif + +/*********************************************/ +/* End lemmas about SecOOBo-SecOOBi exchange */ +/*********************************************/ + +/*****************************************/ +/* Lemmas about SecOOBo-SecOOBo exchange */ +/*****************************************/ + +#ifdef SecOOBoSecOOBo +lemma secOOBo_secOOBo_functional: exists-trace +" + Ex #i1 #i2 . + InitWillDoSecOOBo()[+] @i1 & RespWillDoSecOOBo()[+] @i2 & + (Ex idI1 idR1 capI1 capR1 ksI1 ksR1 pkI1 pkR1 dh1 ltk1 idI2 idR2 capI2 capR2 ksI2 ksR2 pkI2 pkR2 dh2 ltk2 #j1 #j2 . + InitiatorFinishedSecPairing(idI1, capI1, ksI1, idR1, capR1, ksR1, pkI1, pkR1, dh1, ltk1) @j1 & + ResponderFinishedSecPairing(idR2, capR2, ksI2, idI2, capI2, ksR2, pkR2, pkI2, dh2, ltk2) @j2 + ) +" + +lemma secOOBo_secOOBo_auth_init: +" + All #i1 #i2 . + InitWillDoSecOOBo()[+] @i1 & RespWillDoSecOOBo()[+] @i2 ==> + (All idI idR capI capR ksI ksR pkI pkR dh ltk #k1 . + InitiatorFinishedSecPairing(idI, capI, ksI, idR, capR, ksR, pkI, pkR, dh, ltk) @k1 ==> + (Ex ni nr ri rr ei er #k2 . + RespDoneDHKeyCheck(idR, capR, ksR, idI, capI, ksI, pkR, pkI, dh, nr, ni, rr, ri, er, ei) @k2 + ) + ) +" + +lemma secOOBo_secOOBo_auth_resp: +" + All #i1 #i2 . + InitWillDoSecOOBo()[+] @i1 & RespWillDoSecOOBo()[+] @i2 ==> + (All idI idR capI capR ksI ksR pkI pkR dh ltk #k1 . + ResponderFinishedSecPairing(idR, capR, ksR, idI, capI, ksI, pkR, pkI, dh, ltk) @k1 ==> + (Ex #k2 . + InitiatorFinishedSecPairing(idI, capI, ksI, idR, capR, ksR, pkI, pkR, dh, ltk) @k2 + ) + ) +" + +lemma secOOBo_secOOBo_weaksecret_init: +" + All #i1 #i2 . + InitWillDoSecOOBo()[+] @i1 & RespWillDoSecOOBo()[+] @i2 ==> + (All idI idR capI capR ksI ksR pkI pkR dh ltk #k1 . + InitiatorFinishedSecPairing(idI, capI, ksI, idR, capR, ksR, pkI, pkR, dh, ltk) @k1 ==> + not (Ex #k2 . K(ltk) @k2) + ) +" + +lemma secOOBo_secOOBo_weaksecret_resp: +" + All #i1 #i2 . + InitWillDoSecOOBo()[+] @i1 & RespWillDoSecOOBo()[+] @i2 ==> + (All idI idR capI capR ksI ksR pkI pkR dh ltk #k1 . + ResponderFinishedSecPairing(idR, capR, ksR, idI, capI, ksI, pkR, pkI, dh, ltk) @k1 ==> + not (Ex #k2 . K(ltk) @k2) + ) +" + +lemma secOOBo_secOOBo_double_impersonation: +" + All #i1 #i2 . + InitWillDoSecOOBo()[+] @i1 & RespWillDoSecOOBo()[+] @i2 ==> + (All idI1 idR1 capI1 capR1 ksI1 ksR1 pkI1 pkR1 dh1 ltk1 idI2 idR2 capI2 capR2 ksI2 ksR2 pkI2 pkR2 dh2 ltk2 #j1 #j2 . + InitiatorFinishedSecPairing(idI1, capI1, ksI1, idR1, capR1, ksR1, pkI1, pkR1, dh1, ltk1) @j1 & + ResponderFinishedSecPairing(idR2, capR2, ksR2, idI2, capI2, ksI2, pkR2, pkI2, dh2, ltk2) @j2 ==> + not (Ex #k1 #k2 . + K(ltk1) @k1 & K(ltk2) @k2 + ) + ) +" + +#endif + +/*********************************************/ +/* End lemmas about SecOOBo-SecOOBo exchange */ +/*********************************************/ + +/******************************************/ +/* Lemmas about SecOOBo-SecOOBio exchange */ +/******************************************/ + +#ifdef SecOOBoSecOOBio +lemma secOOBo_secOOBio_functional: exists-trace +" + Ex #i1 #i2 . + InitWillDoSecOOBo()[+] @i1 & RespWillDoSecOOBio()[+] @i2 & + (Ex idI1 idR1 capI1 capR1 ksI1 ksR1 pkI1 pkR1 dh1 ltk1 idI2 idR2 capI2 capR2 ksI2 ksR2 pkI2 pkR2 dh2 ltk2 #j1 #j2 . + InitiatorFinishedSecPairing(idI1, capI1, ksI1, idR1, capR1, ksR1, pkI1, pkR1, dh1, ltk1) @j1 & + ResponderFinishedSecPairing(idR2, capR2, ksI2, idI2, capI2, ksR2, pkR2, pkI2, dh2, ltk2) @j2 + ) +" + +lemma secOOBo_secOOBio_auth_init: +" + All #i1 #i2 . + InitWillDoSecOOBo()[+] @i1 & RespWillDoSecOOBio()[+] @i2 ==> + (All idI idR capI capR ksI ksR pkI pkR dh ltk #k1 . + InitiatorFinishedSecPairing(idI, capI, ksI, idR, capR, ksR, pkI, pkR, dh, ltk) @k1 ==> + (Ex ni nr ri rr ei er #k2 . + RespDoneDHKeyCheck(idR, capR, ksR, idI, capI, ksI, pkR, pkI, dh, nr, ni, rr, ri, er, ei) @k2 + ) + ) +" + +lemma secOOBo_secOOBio_auth_resp: +" + All #i1 #i2 . + InitWillDoSecOOBo()[+] @i1 & RespWillDoSecOOBio()[+] @i2 ==> + (All idI idR capI capR ksI ksR pkI pkR dh ltk #k1 . + ResponderFinishedSecPairing(idR, capR, ksR, idI, capI, ksI, pkR, pkI, dh, ltk) @k1 ==> + (Ex #k2 . + InitiatorFinishedSecPairing(idI, capI, ksI, idR, capR, ksR, pkI, pkR, dh, ltk) @k2 + ) + ) +" + +lemma secOOBo_secOOBio_weaksecret_init: +" + All #i1 #i2 . + InitWillDoSecOOBo()[+] @i1 & RespWillDoSecOOBio()[+] @i2 ==> + (All idI idR capI capR ksI ksR pkI pkR dh ltk #k1 . + InitiatorFinishedSecPairing(idI, capI, ksI, idR, capR, ksR, pkI, pkR, dh, ltk) @k1 ==> + not (Ex #k2 . K(ltk) @k2) + ) +" + +lemma secOOBo_secOOBio_weaksecret_resp: +" + All #i1 #i2 . + InitWillDoSecOOBo()[+] @i1 & RespWillDoSecOOBio()[+] @i2 ==> + (All idI idR capI capR ksI ksR pkI pkR dh ltk #k1 . + ResponderFinishedSecPairing(idR, capR, ksR, idI, capI, ksI, pkR, pkI, dh, ltk) @k1 ==> + not (Ex #k2 . K(ltk) @k2) + ) +" + +lemma secOOBo_secOOBio_double_impersonation: +" + All #i1 #i2 . + InitWillDoSecOOBo()[+] @i1 & RespWillDoSecOOBio()[+] @i2 ==> + (All idI1 idR1 capI1 capR1 ksI1 ksR1 pkI1 pkR1 dh1 ltk1 idI2 idR2 capI2 capR2 ksI2 ksR2 pkI2 pkR2 dh2 ltk2 #j1 #j2 . + InitiatorFinishedSecPairing(idI1, capI1, ksI1, idR1, capR1, ksR1, pkI1, pkR1, dh1, ltk1) @j1 & + ResponderFinishedSecPairing(idR2, capR2, ksR2, idI2, capI2, ksI2, pkR2, pkI2, dh2, ltk2) @j2 ==> + not (Ex #k1 #k2 . + K(ltk1) @k1 & K(ltk2) @k2 + ) + ) +" + +#endif + +/**********************************************/ +/* End lemmas about SecOOBo-SecOOBio exchange */ +/**********************************************/ + +/****************************************/ +/* Lemmas about SecOOBio-SecJW exchange */ +/****************************************/ + +#ifdef SecOOBioSecJW +lemma secOOBio_secJW_functional: exists-trace +" + Ex #i1 #i2 . + InitWillDoSecOOBio()[+] @i1 & RespWillDoSecJW()[+] @i2 & + (Ex idI1 idR1 capI1 capR1 ksI1 ksR1 pkI1 pkR1 dh1 ltk1 idI2 idR2 capI2 capR2 ksI2 ksR2 pkI2 pkR2 dh2 ltk2 #j1 #j2 . + InitiatorFinishedSecPairing(idI1, capI1, ksI1, idR1, capR1, ksR1, pkI1, pkR1, dh1, ltk1) @j1 & + ResponderFinishedSecPairing(idR2, capR2, ksI2, idI2, capI2, ksR2, pkR2, pkI2, dh2, ltk2) @j2 + ) +" + +lemma secOOBio_secJW_auth_init: +" + All #i1 #i2 . + InitWillDoSecOOBio()[+] @i1 & RespWillDoSecJW()[+] @i2 ==> + (All idI idR capI capR ksI ksR pkI pkR dh ltk #k1 . + InitiatorFinishedSecPairing(idI, capI, ksI, idR, capR, ksR, pkI, pkR, dh, ltk) @k1 ==> + (Ex ni nr ri rr ei er #k2 . + RespDoneDHKeyCheck(idR, capR, ksR, idI, capI, ksI, pkR, pkI, dh, nr, ni, rr, ri, er, ei) @k2 + ) + ) +" + +lemma secOOBio_secJW_auth_resp: +" + All #i1 #i2 . + InitWillDoSecOOBio()[+] @i1 & RespWillDoSecJW()[+] @i2 ==> + (All idI idR capI capR ksI ksR pkI pkR dh ltk #k1 . + ResponderFinishedSecPairing(idR, capR, ksR, idI, capI, ksI, pkR, pkI, dh, ltk) @k1 ==> + (Ex #k2 . + InitiatorFinishedSecPairing(idI, capI, ksI, idR, capR, ksR, pkI, pkR, dh, ltk) @k2 + ) + ) +" + +lemma secOOBio_secJW_weaksecret_init: +" + All #i1 #i2 . + InitWillDoSecOOBio()[+] @i1 & RespWillDoSecJW()[+] @i2 ==> + (All idI idR capI capR ksI ksR pkI pkR dh ltk #k1 . + InitiatorFinishedSecPairing(idI, capI, ksI, idR, capR, ksR, pkI, pkR, dh, ltk) @k1 ==> + not (Ex #k2 . K(ltk) @k2) + ) +" + +lemma secOOBio_secJW_weaksecret_resp: +" + All #i1 #i2 . + InitWillDoSecOOBio()[+] @i1 & RespWillDoSecJW()[+] @i2 ==> + (All idI idR capI capR ksI ksR pkI pkR dh ltk #k1 . + ResponderFinishedSecPairing(idR, capR, ksR, idI, capI, ksI, pkR, pkI, dh, ltk) @k1 ==> + not (Ex #k2 . K(ltk) @k2) + ) +" + +lemma secOOBio_secJW_double_impersonation: +" + All #i1 #i2 . + InitWillDoSecOOBio()[+] @i1 & RespWillDoSecJW()[+] @i2 ==> + (All idI1 idR1 capI1 capR1 ksI1 ksR1 pkI1 pkR1 dh1 ltk1 idI2 idR2 capI2 capR2 ksI2 ksR2 pkI2 pkR2 dh2 ltk2 #j1 #j2 . + InitiatorFinishedSecPairing(idI1, capI1, ksI1, idR1, capR1, ksR1, pkI1, pkR1, dh1, ltk1) @j1 & + ResponderFinishedSecPairing(idR2, capR2, ksR2, idI2, capI2, ksI2, pkR2, pkI2, dh2, ltk2) @j2 ==> + not (Ex #k1 #k2 . + K(ltk1) @k1 & K(ltk2) @k2 + ) + ) +" + +#endif + +/********************************************/ +/* End lemmas about SecOOBio-SecJW exchange */ +/********************************************/ + +/*****************************************/ +/* Lemmas about SecOOBio-SecPEi exchange */ +/*****************************************/ + +#ifdef SecOOBioSecPEi +lemma secOOBio_secPEi_functional: exists-trace +" + Ex #i1 #i2 . + InitWillDoSecOOBio()[+] @i1 & RespWillDoSecPEi()[+] @i2 & + (Ex idI1 idR1 capI1 capR1 ksI1 ksR1 pkI1 pkR1 dh1 ltk1 idI2 idR2 capI2 capR2 ksI2 ksR2 pkI2 pkR2 dh2 ltk2 #j1 #j2 . + InitiatorFinishedSecPairing(idI1, capI1, ksI1, idR1, capR1, ksR1, pkI1, pkR1, dh1, ltk1) @j1 & + ResponderFinishedSecPairing(idR2, capR2, ksI2, idI2, capI2, ksR2, pkR2, pkI2, dh2, ltk2) @j2 + ) +" + +lemma secOOBio_secPEi_auth_init: +" + All #i1 #i2 . + InitWillDoSecOOBio()[+] @i1 & RespWillDoSecPEi()[+] @i2 ==> + (All idI idR capI capR ksI ksR pkI pkR dh ltk #k1 . + InitiatorFinishedSecPairing(idI, capI, ksI, idR, capR, ksR, pkI, pkR, dh, ltk) @k1 ==> + (Ex ni nr ri rr ei er #k2 . + RespDoneDHKeyCheck(idR, capR, ksR, idI, capI, ksI, pkR, pkI, dh, nr, ni, rr, ri, er, ei) @k2 + ) + ) +" + +lemma secOOBio_secPEi_auth_resp: +" + All #i1 #i2 . + InitWillDoSecOOBio()[+] @i1 & RespWillDoSecPEi()[+] @i2 ==> + (All idI idR capI capR ksI ksR pkI pkR dh ltk #k1 . + ResponderFinishedSecPairing(idR, capR, ksR, idI, capI, ksI, pkR, pkI, dh, ltk) @k1 ==> + (Ex #k2 . + InitiatorFinishedSecPairing(idI, capI, ksI, idR, capR, ksR, pkI, pkR, dh, ltk) @k2 + ) + ) +" + +lemma secOOBio_secPEi_weaksecret_init: +" + All #i1 #i2 . + InitWillDoSecOOBio()[+] @i1 & RespWillDoSecPEi()[+] @i2 ==> + (All idI idR capI capR ksI ksR pkI pkR dh ltk #k1 . + InitiatorFinishedSecPairing(idI, capI, ksI, idR, capR, ksR, pkI, pkR, dh, ltk) @k1 ==> + not (Ex #k2 . K(ltk) @k2) + ) +" + +lemma secOOBio_secPEi_weaksecret_resp: +" + All #i1 #i2 . + InitWillDoSecOOBio()[+] @i1 & RespWillDoSecPEi()[+] @i2 ==> + (All idI idR capI capR ksI ksR pkI pkR dh ltk #k1 . + ResponderFinishedSecPairing(idR, capR, ksR, idI, capI, ksI, pkR, pkI, dh, ltk) @k1 ==> + not (Ex #k2 . K(ltk) @k2) + ) +" + +lemma secOOBio_secPEi_double_impersonation: +" + All #i1 #i2 . + InitWillDoSecOOBio()[+] @i1 & RespWillDoSecPEi()[+] @i2 ==> + (All idI1 idR1 capI1 capR1 ksI1 ksR1 pkI1 pkR1 dh1 ltk1 idI2 idR2 capI2 capR2 ksI2 ksR2 pkI2 pkR2 dh2 ltk2 #j1 #j2 . + InitiatorFinishedSecPairing(idI1, capI1, ksI1, idR1, capR1, ksR1, pkI1, pkR1, dh1, ltk1) @j1 & + ResponderFinishedSecPairing(idR2, capR2, ksR2, idI2, capI2, ksI2, pkR2, pkI2, dh2, ltk2) @j2 ==> + not (Ex #k1 #k2 . + K(ltk1) @k1 & K(ltk2) @k2 + ) + ) +" + +#endif + +/*********************************************/ +/* End lemmas about SecOOBio-SecPEi exchange */ +/*********************************************/ + +/*****************************************/ +/* Lemmas about SecOOBio-SecPEo exchange */ +/*****************************************/ + +#ifdef SecOOBioSecPEo +lemma secOOBio_secPEo_functional: exists-trace +" + Ex #i1 #i2 . + InitWillDoSecOOBio()[+] @i1 & RespWillDoSecPEo()[+] @i2 & + (Ex idI1 idR1 capI1 capR1 ksI1 ksR1 pkI1 pkR1 dh1 ltk1 idI2 idR2 capI2 capR2 ksI2 ksR2 pkI2 pkR2 dh2 ltk2 #j1 #j2 . + InitiatorFinishedSecPairing(idI1, capI1, ksI1, idR1, capR1, ksR1, pkI1, pkR1, dh1, ltk1) @j1 & + ResponderFinishedSecPairing(idR2, capR2, ksI2, idI2, capI2, ksR2, pkR2, pkI2, dh2, ltk2) @j2 + ) +" + +lemma secOOBio_secPEo_auth_init: +" + All #i1 #i2 . + InitWillDoSecOOBio()[+] @i1 & RespWillDoSecPEo()[+] @i2 ==> + (All idI idR capI capR ksI ksR pkI pkR dh ltk #k1 . + InitiatorFinishedSecPairing(idI, capI, ksI, idR, capR, ksR, pkI, pkR, dh, ltk) @k1 ==> + (Ex ni nr ri rr ei er #k2 . + RespDoneDHKeyCheck(idR, capR, ksR, idI, capI, ksI, pkR, pkI, dh, nr, ni, rr, ri, er, ei) @k2 + ) + ) +" + +lemma secOOBio_secPEo_auth_resp: +" + All #i1 #i2 . + InitWillDoSecOOBio()[+] @i1 & RespWillDoSecPEo()[+] @i2 ==> + (All idI idR capI capR ksI ksR pkI pkR dh ltk #k1 . + ResponderFinishedSecPairing(idR, capR, ksR, idI, capI, ksI, pkR, pkI, dh, ltk) @k1 ==> + (Ex #k2 . + InitiatorFinishedSecPairing(idI, capI, ksI, idR, capR, ksR, pkI, pkR, dh, ltk) @k2 + ) + ) +" + +lemma secOOBio_secPEo_weaksecret_init: +" + All #i1 #i2 . + InitWillDoSecOOBio()[+] @i1 & RespWillDoSecPEo()[+] @i2 ==> + (All idI idR capI capR ksI ksR pkI pkR dh ltk #k1 . + InitiatorFinishedSecPairing(idI, capI, ksI, idR, capR, ksR, pkI, pkR, dh, ltk) @k1 ==> + not (Ex #k2 . K(ltk) @k2) + ) +" + +lemma secOOBio_secPEo_weaksecret_resp: +" + All #i1 #i2 . + InitWillDoSecOOBio()[+] @i1 & RespWillDoSecPEo()[+] @i2 ==> + (All idI idR capI capR ksI ksR pkI pkR dh ltk #k1 . + ResponderFinishedSecPairing(idR, capR, ksR, idI, capI, ksI, pkR, pkI, dh, ltk) @k1 ==> + not (Ex #k2 . K(ltk) @k2) + ) +" + +lemma secOOBio_secPEo_double_impersonation: +" + All #i1 #i2 . + InitWillDoSecOOBio()[+] @i1 & RespWillDoSecPEo()[+] @i2 ==> + (All idI1 idR1 capI1 capR1 ksI1 ksR1 pkI1 pkR1 dh1 ltk1 idI2 idR2 capI2 capR2 ksI2 ksR2 pkI2 pkR2 dh2 ltk2 #j1 #j2 . + InitiatorFinishedSecPairing(idI1, capI1, ksI1, idR1, capR1, ksR1, pkI1, pkR1, dh1, ltk1) @j1 & + ResponderFinishedSecPairing(idR2, capR2, ksR2, idI2, capI2, ksI2, pkR2, pkI2, dh2, ltk2) @j2 ==> + not (Ex #k1 #k2 . + K(ltk1) @k1 & K(ltk2) @k2 + ) + ) +" + +#endif + +/*********************************************/ +/* End lemmas about SecOOBio-SecPEo exchange */ +/*********************************************/ + +/******************************************/ +/* Lemmas about SecOOBio-SecPEio exchange */ +/******************************************/ + +#ifdef SecOOBioSecPEio +lemma secOOBio_secPEio_functional: exists-trace +" + Ex #i1 #i2 . + InitWillDoSecOOBio()[+] @i1 & RespWillDoSecPEio()[+] @i2 & + (Ex idI1 idR1 capI1 capR1 ksI1 ksR1 pkI1 pkR1 dh1 ltk1 idI2 idR2 capI2 capR2 ksI2 ksR2 pkI2 pkR2 dh2 ltk2 #j1 #j2 . + InitiatorFinishedSecPairing(idI1, capI1, ksI1, idR1, capR1, ksR1, pkI1, pkR1, dh1, ltk1) @j1 & + ResponderFinishedSecPairing(idR2, capR2, ksI2, idI2, capI2, ksR2, pkR2, pkI2, dh2, ltk2) @j2 + ) +" + +lemma secOOBio_secPEio_auth_init: +" + All #i1 #i2 . + InitWillDoSecOOBio()[+] @i1 & RespWillDoSecPEio()[+] @i2 ==> + (All idI idR capI capR ksI ksR pkI pkR dh ltk #k1 . + InitiatorFinishedSecPairing(idI, capI, ksI, idR, capR, ksR, pkI, pkR, dh, ltk) @k1 ==> + (Ex ni nr ri rr ei er #k2 . + RespDoneDHKeyCheck(idR, capR, ksR, idI, capI, ksI, pkR, pkI, dh, nr, ni, rr, ri, er, ei) @k2 + ) + ) +" + +lemma secOOBio_secPEio_auth_resp: +" + All #i1 #i2 . + InitWillDoSecOOBio()[+] @i1 & RespWillDoSecPEio()[+] @i2 ==> + (All idI idR capI capR ksI ksR pkI pkR dh ltk #k1 . + ResponderFinishedSecPairing(idR, capR, ksR, idI, capI, ksI, pkR, pkI, dh, ltk) @k1 ==> + (Ex #k2 . + InitiatorFinishedSecPairing(idI, capI, ksI, idR, capR, ksR, pkI, pkR, dh, ltk) @k2 + ) + ) +" + +lemma secOOBio_secPEio_weaksecret_init: +" + All #i1 #i2 . + InitWillDoSecOOBio()[+] @i1 & RespWillDoSecPEio()[+] @i2 ==> + (All idI idR capI capR ksI ksR pkI pkR dh ltk #k1 . + InitiatorFinishedSecPairing(idI, capI, ksI, idR, capR, ksR, pkI, pkR, dh, ltk) @k1 ==> + not (Ex #k2 . K(ltk) @k2) + ) +" + +lemma secOOBio_secPEio_weaksecret_resp: +" + All #i1 #i2 . + InitWillDoSecOOBio()[+] @i1 & RespWillDoSecPEio()[+] @i2 ==> + (All idI idR capI capR ksI ksR pkI pkR dh ltk #k1 . + ResponderFinishedSecPairing(idR, capR, ksR, idI, capI, ksI, pkR, pkI, dh, ltk) @k1 ==> + not (Ex #k2 . K(ltk) @k2) + ) +" + +lemma secOOBio_secPEio_double_impersonation: +" + All #i1 #i2 . + InitWillDoSecOOBio()[+] @i1 & RespWillDoSecPEio()[+] @i2 ==> + (All idI1 idR1 capI1 capR1 ksI1 ksR1 pkI1 pkR1 dh1 ltk1 idI2 idR2 capI2 capR2 ksI2 ksR2 pkI2 pkR2 dh2 ltk2 #j1 #j2 . + InitiatorFinishedSecPairing(idI1, capI1, ksI1, idR1, capR1, ksR1, pkI1, pkR1, dh1, ltk1) @j1 & + ResponderFinishedSecPairing(idR2, capR2, ksR2, idI2, capI2, ksI2, pkR2, pkI2, dh2, ltk2) @j2 ==> + not (Ex #k1 #k2 . + K(ltk1) @k1 & K(ltk2) @k2 + ) + ) +" + +#endif + +/**********************************************/ +/* End lemmas about SecOOBio-SecPEio exchange */ +/**********************************************/ + +/****************************************/ +/* Lemmas about SecOOBio-SecNC exchange */ +/****************************************/ + +#ifdef SecOOBioSecNC +lemma secOOBio_secNC_functional: exists-trace +" + Ex #i1 #i2 . + InitWillDoSecOOBio()[+] @i1 & RespWillDoSecNC()[+] @i2 & + (Ex idI1 idR1 capI1 capR1 ksI1 ksR1 pkI1 pkR1 dh1 ltk1 idI2 idR2 capI2 capR2 ksI2 ksR2 pkI2 pkR2 dh2 ltk2 #j1 #j2 . + InitiatorFinishedSecPairing(idI1, capI1, ksI1, idR1, capR1, ksR1, pkI1, pkR1, dh1, ltk1) @j1 & + ResponderFinishedSecPairing(idR2, capR2, ksI2, idI2, capI2, ksR2, pkR2, pkI2, dh2, ltk2) @j2 + ) +" + +lemma secOOBio_secNC_auth_init: +" + All #i1 #i2 . + InitWillDoSecOOBio()[+] @i1 & RespWillDoSecNC()[+] @i2 ==> + (All idI idR capI capR ksI ksR pkI pkR dh ltk #k1 . + InitiatorFinishedSecPairing(idI, capI, ksI, idR, capR, ksR, pkI, pkR, dh, ltk) @k1 ==> + (Ex ni nr ri rr ei er #k2 . + RespDoneDHKeyCheck(idR, capR, ksR, idI, capI, ksI, pkR, pkI, dh, nr, ni, rr, ri, er, ei) @k2 + ) + ) +" + +lemma secOOBio_secNC_auth_resp: +" + All #i1 #i2 . + InitWillDoSecOOBio()[+] @i1 & RespWillDoSecNC()[+] @i2 ==> + (All idI idR capI capR ksI ksR pkI pkR dh ltk #k1 . + ResponderFinishedSecPairing(idR, capR, ksR, idI, capI, ksI, pkR, pkI, dh, ltk) @k1 ==> + (Ex #k2 . + InitiatorFinishedSecPairing(idI, capI, ksI, idR, capR, ksR, pkI, pkR, dh, ltk) @k2 + ) + ) +" + +lemma secOOBio_secNC_weaksecret_init: +" + All #i1 #i2 . + InitWillDoSecOOBio()[+] @i1 & RespWillDoSecNC()[+] @i2 ==> + (All idI idR capI capR ksI ksR pkI pkR dh ltk #k1 . + InitiatorFinishedSecPairing(idI, capI, ksI, idR, capR, ksR, pkI, pkR, dh, ltk) @k1 ==> + not (Ex #k2 . K(ltk) @k2) + ) +" + +lemma secOOBio_secNC_weaksecret_resp: +" + All #i1 #i2 . + InitWillDoSecOOBio()[+] @i1 & RespWillDoSecNC()[+] @i2 ==> + (All idI idR capI capR ksI ksR pkI pkR dh ltk #k1 . + ResponderFinishedSecPairing(idR, capR, ksR, idI, capI, ksI, pkR, pkI, dh, ltk) @k1 ==> + not (Ex #k2 . K(ltk) @k2) + ) +" + +lemma secOOBio_secNC_double_impersonation: +" + All #i1 #i2 . + InitWillDoSecOOBio()[+] @i1 & RespWillDoSecNC()[+] @i2 ==> + (All idI1 idR1 capI1 capR1 ksI1 ksR1 pkI1 pkR1 dh1 ltk1 idI2 idR2 capI2 capR2 ksI2 ksR2 pkI2 pkR2 dh2 ltk2 #j1 #j2 . + InitiatorFinishedSecPairing(idI1, capI1, ksI1, idR1, capR1, ksR1, pkI1, pkR1, dh1, ltk1) @j1 & + ResponderFinishedSecPairing(idR2, capR2, ksR2, idI2, capI2, ksI2, pkR2, pkI2, dh2, ltk2) @j2 ==> + not (Ex #k1 #k2 . + K(ltk1) @k1 & K(ltk2) @k2 + ) + ) +" + +#endif + +/********************************************/ +/* End lemmas about SecOOBio-SecNC exchange */ +/********************************************/ + +/******************************************/ +/* Lemmas about SecOOBio-SecOOBi exchange */ +/******************************************/ + +#ifdef SecOOBioSecOOBi +lemma secOOBio_secOOBi_functional: exists-trace +" + Ex #i1 #i2 . + InitWillDoSecOOBio()[+] @i1 & RespWillDoSecOOBi()[+] @i2 & + (Ex idI1 idR1 capI1 capR1 ksI1 ksR1 pkI1 pkR1 dh1 ltk1 idI2 idR2 capI2 capR2 ksI2 ksR2 pkI2 pkR2 dh2 ltk2 #j1 #j2 . + InitiatorFinishedSecPairing(idI1, capI1, ksI1, idR1, capR1, ksR1, pkI1, pkR1, dh1, ltk1) @j1 & + ResponderFinishedSecPairing(idR2, capR2, ksI2, idI2, capI2, ksR2, pkR2, pkI2, dh2, ltk2) @j2 + ) +" + +lemma secOOBio_secOOBi_auth_init: +" + All #i1 #i2 . + InitWillDoSecOOBio()[+] @i1 & RespWillDoSecOOBi()[+] @i2 ==> + (All idI idR capI capR ksI ksR pkI pkR dh ltk #k1 . + InitiatorFinishedSecPairing(idI, capI, ksI, idR, capR, ksR, pkI, pkR, dh, ltk) @k1 ==> + (Ex ni nr ri rr ei er #k2 . + RespDoneDHKeyCheck(idR, capR, ksR, idI, capI, ksI, pkR, pkI, dh, nr, ni, rr, ri, er, ei) @k2 + ) + ) +" + +lemma secOOBio_secOOBi_auth_resp: +" + All #i1 #i2 . + InitWillDoSecOOBio()[+] @i1 & RespWillDoSecOOBi()[+] @i2 ==> + (All idI idR capI capR ksI ksR pkI pkR dh ltk #k1 . + ResponderFinishedSecPairing(idR, capR, ksR, idI, capI, ksI, pkR, pkI, dh, ltk) @k1 ==> + (Ex #k2 . + InitiatorFinishedSecPairing(idI, capI, ksI, idR, capR, ksR, pkI, pkR, dh, ltk) @k2 + ) + ) +" + +lemma secOOBio_secOOBi_weaksecret_init: +" + All #i1 #i2 . + InitWillDoSecOOBio()[+] @i1 & RespWillDoSecOOBi()[+] @i2 ==> + (All idI idR capI capR ksI ksR pkI pkR dh ltk #k1 . + InitiatorFinishedSecPairing(idI, capI, ksI, idR, capR, ksR, pkI, pkR, dh, ltk) @k1 ==> + not (Ex #k2 . K(ltk) @k2) + ) +" + +lemma secOOBio_secOOBi_weaksecret_resp: +" + All #i1 #i2 . + InitWillDoSecOOBio()[+] @i1 & RespWillDoSecOOBi()[+] @i2 ==> + (All idI idR capI capR ksI ksR pkI pkR dh ltk #k1 . + ResponderFinishedSecPairing(idR, capR, ksR, idI, capI, ksI, pkR, pkI, dh, ltk) @k1 ==> + not (Ex #k2 . K(ltk) @k2) + ) +" + +lemma secOOBio_secOOBi_double_impersonation: +" + All #i1 #i2 . + InitWillDoSecOOBio()[+] @i1 & RespWillDoSecOOBi()[+] @i2 ==> + (All idI1 idR1 capI1 capR1 ksI1 ksR1 pkI1 pkR1 dh1 ltk1 idI2 idR2 capI2 capR2 ksI2 ksR2 pkI2 pkR2 dh2 ltk2 #j1 #j2 . + InitiatorFinishedSecPairing(idI1, capI1, ksI1, idR1, capR1, ksR1, pkI1, pkR1, dh1, ltk1) @j1 & + ResponderFinishedSecPairing(idR2, capR2, ksR2, idI2, capI2, ksI2, pkR2, pkI2, dh2, ltk2) @j2 ==> + not (Ex #k1 #k2 . + K(ltk1) @k1 & K(ltk2) @k2 + ) + ) +" + +#endif + +/**********************************************/ +/* End lemmas about SecOOBio-SecOOBi exchange */ +/**********************************************/ + +/******************************************/ +/* Lemmas about SecOOBio-SecOOBo exchange */ +/******************************************/ + +#ifdef SecOOBioSecOOBo +lemma secOOBio_secOOBo_functional: exists-trace +" + Ex #i1 #i2 . + InitWillDoSecOOBio()[+] @i1 & RespWillDoSecOOBo()[+] @i2 & + (Ex idI1 idR1 capI1 capR1 ksI1 ksR1 pkI1 pkR1 dh1 ltk1 idI2 idR2 capI2 capR2 ksI2 ksR2 pkI2 pkR2 dh2 ltk2 #j1 #j2 . + InitiatorFinishedSecPairing(idI1, capI1, ksI1, idR1, capR1, ksR1, pkI1, pkR1, dh1, ltk1) @j1 & + ResponderFinishedSecPairing(idR2, capR2, ksI2, idI2, capI2, ksR2, pkR2, pkI2, dh2, ltk2) @j2 + ) +" + +lemma secOOBio_secOOBo_auth_init: +" + All #i1 #i2 . + InitWillDoSecOOBio()[+] @i1 & RespWillDoSecOOBo()[+] @i2 ==> + (All idI idR capI capR ksI ksR pkI pkR dh ltk #k1 . + InitiatorFinishedSecPairing(idI, capI, ksI, idR, capR, ksR, pkI, pkR, dh, ltk) @k1 ==> + (Ex ni nr ri rr ei er #k2 . + RespDoneDHKeyCheck(idR, capR, ksR, idI, capI, ksI, pkR, pkI, dh, nr, ni, rr, ri, er, ei) @k2 + ) + ) +" + +lemma secOOBio_secOOBo_auth_resp: +" + All #i1 #i2 . + InitWillDoSecOOBio()[+] @i1 & RespWillDoSecOOBo()[+] @i2 ==> + (All idI idR capI capR ksI ksR pkI pkR dh ltk #k1 . + ResponderFinishedSecPairing(idR, capR, ksR, idI, capI, ksI, pkR, pkI, dh, ltk) @k1 ==> + (Ex #k2 . + InitiatorFinishedSecPairing(idI, capI, ksI, idR, capR, ksR, pkI, pkR, dh, ltk) @k2 + ) + ) +" + +lemma secOOBio_secOOBo_weaksecret_init: +" + All #i1 #i2 . + InitWillDoSecOOBio()[+] @i1 & RespWillDoSecOOBo()[+] @i2 ==> + (All idI idR capI capR ksI ksR pkI pkR dh ltk #k1 . + InitiatorFinishedSecPairing(idI, capI, ksI, idR, capR, ksR, pkI, pkR, dh, ltk) @k1 ==> + not (Ex #k2 . K(ltk) @k2) + ) +" + +lemma secOOBio_secOOBo_weaksecret_resp: +" + All #i1 #i2 . + InitWillDoSecOOBio()[+] @i1 & RespWillDoSecOOBo()[+] @i2 ==> + (All idI idR capI capR ksI ksR pkI pkR dh ltk #k1 . + ResponderFinishedSecPairing(idR, capR, ksR, idI, capI, ksI, pkR, pkI, dh, ltk) @k1 ==> + not (Ex #k2 . K(ltk) @k2) + ) +" + +lemma secOOBio_secOOBo_double_impersonation: +" + All #i1 #i2 . + InitWillDoSecOOBio()[+] @i1 & RespWillDoSecOOBo()[+] @i2 ==> + (All idI1 idR1 capI1 capR1 ksI1 ksR1 pkI1 pkR1 dh1 ltk1 idI2 idR2 capI2 capR2 ksI2 ksR2 pkI2 pkR2 dh2 ltk2 #j1 #j2 . + InitiatorFinishedSecPairing(idI1, capI1, ksI1, idR1, capR1, ksR1, pkI1, pkR1, dh1, ltk1) @j1 & + ResponderFinishedSecPairing(idR2, capR2, ksR2, idI2, capI2, ksI2, pkR2, pkI2, dh2, ltk2) @j2 ==> + not (Ex #k1 #k2 . + K(ltk1) @k1 & K(ltk2) @k2 + ) + ) +" + +#endif + +/**********************************************/ +/* End lemmas about SecOOBio-SecOOBo exchange */ +/**********************************************/ + +/*******************************************/ +/* Lemmas about SecOOBio-SecOOBio exchange */ +/*******************************************/ + +#ifdef SecOOBioSecOOBio +lemma secOOBio_secOOBio_functional: exists-trace +" + Ex #i1 #i2 . + InitWillDoSecOOBio()[+] @i1 & RespWillDoSecOOBio()[+] @i2 & + (Ex idI1 idR1 capI1 capR1 ksI1 ksR1 pkI1 pkR1 dh1 ltk1 idI2 idR2 capI2 capR2 ksI2 ksR2 pkI2 pkR2 dh2 ltk2 #j1 #j2 . + InitiatorFinishedSecPairing(idI1, capI1, ksI1, idR1, capR1, ksR1, pkI1, pkR1, dh1, ltk1) @j1 & + ResponderFinishedSecPairing(idR2, capR2, ksI2, idI2, capI2, ksR2, pkR2, pkI2, dh2, ltk2) @j2 + ) +" + +lemma secOOBio_secOOBio_auth_init: +" + All #i1 #i2 . + InitWillDoSecOOBio()[+] @i1 & RespWillDoSecOOBio()[+] @i2 ==> + (All idI idR capI capR ksI ksR pkI pkR dh ltk #k1 . + InitiatorFinishedSecPairing(idI, capI, ksI, idR, capR, ksR, pkI, pkR, dh, ltk) @k1 ==> + (Ex ni nr ri rr ei er #k2 . + RespDoneDHKeyCheck(idR, capR, ksR, idI, capI, ksI, pkR, pkI, dh, nr, ni, rr, ri, er, ei) @k2 + ) + ) +" + +lemma secOOBio_secOOBio_auth_resp: +" + All #i1 #i2 . + InitWillDoSecOOBio()[+] @i1 & RespWillDoSecOOBio()[+] @i2 ==> + (All idI idR capI capR ksI ksR pkI pkR dh ltk #k1 . + ResponderFinishedSecPairing(idR, capR, ksR, idI, capI, ksI, pkR, pkI, dh, ltk) @k1 ==> + (Ex #k2 . + InitiatorFinishedSecPairing(idI, capI, ksI, idR, capR, ksR, pkI, pkR, dh, ltk) @k2 + ) + ) +" + +lemma secOOBio_secOOBio_weaksecret_init: +" + All #i1 #i2 . + InitWillDoSecOOBio()[+] @i1 & RespWillDoSecOOBio()[+] @i2 ==> + (All idI idR capI capR ksI ksR pkI pkR dh ltk #k1 . + InitiatorFinishedSecPairing(idI, capI, ksI, idR, capR, ksR, pkI, pkR, dh, ltk) @k1 ==> + not (Ex #k2 . K(ltk) @k2) + ) +" + +lemma secOOBio_secOOBio_weaksecret_resp: +" + All #i1 #i2 . + InitWillDoSecOOBio()[+] @i1 & RespWillDoSecOOBio()[+] @i2 ==> + (All idI idR capI capR ksI ksR pkI pkR dh ltk #k1 . + ResponderFinishedSecPairing(idR, capR, ksR, idI, capI, ksI, pkR, pkI, dh, ltk) @k1 ==> + not (Ex #k2 . K(ltk) @k2) + ) +" + +lemma secOOBio_secOOBio_double_impersonation: +" + All #i1 #i2 . + InitWillDoSecOOBio()[+] @i1 & RespWillDoSecOOBio()[+] @i2 ==> + (All idI1 idR1 capI1 capR1 ksI1 ksR1 pkI1 pkR1 dh1 ltk1 idI2 idR2 capI2 capR2 ksI2 ksR2 pkI2 pkR2 dh2 ltk2 #j1 #j2 . + InitiatorFinishedSecPairing(idI1, capI1, ksI1, idR1, capR1, ksR1, pkI1, pkR1, dh1, ltk1) @j1 & + ResponderFinishedSecPairing(idR2, capR2, ksR2, idI2, capI2, ksI2, pkR2, pkI2, dh2, ltk2) @j2 ==> + not (Ex #k1 #k2 . + K(ltk1) @k1 & K(ltk2) @k2 + ) + ) +" + +#endif + +/***********************************************/ +/* End lemmas about SecOOBio-SecOOBio exchange */ +/***********************************************/ + +/*************************************/ +/* Lemmas about LegJW-SecJW exchange */ +/*************************************/ + +#ifdef LegJWSecJW +lemma legJW_secJW_functional: exists-trace +" + Ex #i1 #i2 . + InitWillDoLegJW()[+] @i1 & RespWillDoSecJW()[+] @i2 & + (Ex idI1 idR1 capI1 capR1 ksI1 ksR1 idI2 idR2 capI2 capR2 ksI2 ksR2 tk ni nr stk pkI pkR dh ltk #j1 #j2 . + InitiatorFinishedLegPairing(idI1, capI1, ksI1, idR1, capR1, ksR1, tk, ni, nr, stk) @j1 & + ResponderFinishedSecPairing(idR2, capR2, ksR2, idI2, capI2, ksI2, pkR, pkI, dh, ltk) @j2 + ) +" + +lemma legJW_secJW_auth_init: +" + All idI idR capI capR ksI ksR tk nli nlr stk #i1 #i2 #j . + InitWillDoLegJW()[+] @i1 & RespWillDoSecJW()[+] @i2 & + InitiatorFinishedLegPairing(idI, capI, ksI, idR, capR, ksR, tk, nli, nlr, stk) @j ==> + (Ex pkI pkR dh nsi nsr ri rr ei er #k . + RespDoneDHKeyCheck(idR, capR, ksR, idI, capI, ksI, pkR, pkI, dh, nsr, nsi, rr, ri, er, ei) @k + ) +" + +lemma legJW_secJW_auth_resp: +" + All idI idR capI capR ksI ksR pkI pkR dh ltk #i1 #i2 #j . + InitWillDoLegJW()[+] @i1 & RespWillDoSecJW()[+] @i2 & + ResponderFinishedSecPairing(idR, capR, ksR, idI, capI, ksI, pkI, pkR, dh, ltk) @j ==> + (Ex tk ni ci cr #k . + InitSentRandom(idI, capI, ksI, idR, capR, ksR, tk, ni, ci, cr) @k + ) +" + +lemma legJW_secJW_weaksecret_init: +" + All idI idR capI capR ksI ksR tk ni nr stk #i1 #i2 #j. + InitWillDoLegJW()[+] @i1 & RespWillDoSecJW()[+] @i2 & + InitiatorFinishedLegPairing(idI, capI, ksI, idR, capR, ksR, tk, ni, nr, stk) @j ==> + not (Ex #k . K(stk) @k ) +" + +lemma legJW_secJW_weaksecret_resp: +" + All idI idR capI capR ksI ksR pkI pkR dh ltk #i1 #i2 #j. + InitWillDoLegJW()[+] @i1 & RespWillDoSecJW()[+] @i2 & + ResponderFinishedSecPairing(idR, capR, ksR, idI, capI, ksI, pkI, pkR, dh, ltk) @j ==> + not (Ex #k . K(ltk) @k ) +" + +lemma legJW_secJW_double_impersonation: +" + All #i1 #i2 . + InitWillDoLegJW()[+] @i1 & RespWillDoSecJW()[+] @i2 ==> + (All idI1 idR1 capI1 capR1 ksI1 ksR1 idI2 idR2 capI2 capR2 ksI2 ksR2 tk ni nr stk pkI pkR dh ltk #j1 #j2 . + InitiatorFinishedLegPairing(idI1, capI1, ksI1, idR1, capR1, ksR1, tk, ni, nr, stk) @j1 & + ResponderFinishedSecPairing(idR2, capR2, ksR2, idI2, capI2, ksI2, pkR, pkI, dh, ltk) @j2 ==> + not (Ex #k1 #k2 . + K(stk) @k1 & K(ltk) @k2 + ) + ) +" + +#endif + +/*****************************************/ +/* End lemmas about LegJW-SecJW exchange */ +/*****************************************/ + +/**************************************/ +/* Lemmas about LegJW-SecPEi exchange */ +/**************************************/ + +#ifdef LegJWSecPEi +lemma legJW_secPEi_functional: exists-trace +" + Ex #i1 #i2 . + InitWillDoLegJW()[+] @i1 & RespWillDoSecPEi()[+] @i2 & + (Ex idI1 idR1 capI1 capR1 ksI1 ksR1 idI2 idR2 capI2 capR2 ksI2 ksR2 tk ni nr stk pkI pkR dh ltk #j1 #j2 . + InitiatorFinishedLegPairing(idI1, capI1, ksI1, idR1, capR1, ksR1, tk, ni, nr, stk) @j1 & + ResponderFinishedSecPairing(idR2, capR2, ksR2, idI2, capI2, ksI2, pkR, pkI, dh, ltk) @j2 + ) +" + +lemma legJW_secPEi_auth_init: +" + All idI idR capI capR ksI ksR tk nli nlr stk #i1 #i2 #j . + InitWillDoLegJW()[+] @i1 & RespWillDoSecPEi()[+] @i2 & + InitiatorFinishedLegPairing(idI, capI, ksI, idR, capR, ksR, tk, nli, nlr, stk) @j ==> + (Ex pkI pkR dh nsi nsr ri rr ei er #k . + RespDoneDHKeyCheck(idR, capR, ksR, idI, capI, ksI, pkR, pkI, dh, nsr, nsi, rr, ri, er, ei) @k + ) +" + +lemma legJW_secPEi_auth_resp: +" + All idI idR capI capR ksI ksR pkI pkR dh ltk #i1 #i2 #j . + InitWillDoLegJW()[+] @i1 & RespWillDoSecPEi()[+] @i2 & + ResponderFinishedSecPairing(idR, capR, ksR, idI, capI, ksI, pkI, pkR, dh, ltk) @j ==> + (Ex tk ni ci cr #k . + InitSentRandom(idI, capI, ksI, idR, capR, ksR, tk, ni, ci, cr) @k + ) +" + +lemma legJW_secPEi_weaksecret_init: +" + All idI idR capI capR ksI ksR tk ni nr stk #i1 #i2 #j. + InitWillDoLegJW()[+] @i1 & RespWillDoSecPEi()[+] @i2 & + InitiatorFinishedLegPairing(idI, capI, ksI, idR, capR, ksR, tk, ni, nr, stk) @j ==> + not (Ex #k . K(stk) @k ) +" + +lemma legJW_secPEi_weaksecret_resp: +" + All idI idR capI capR ksI ksR pkI pkR dh ltk #i1 #i2 #j. + InitWillDoLegJW()[+] @i1 & RespWillDoSecPEi()[+] @i2 & + ResponderFinishedSecPairing(idR, capR, ksR, idI, capI, ksI, pkI, pkR, dh, ltk) @j ==> + not (Ex #k . K(ltk) @k ) +" + +lemma legJW_secPEi_double_impersonation: +" + All #i1 #i2 . + InitWillDoLegJW()[+] @i1 & RespWillDoSecPEi()[+] @i2 ==> + (All idI1 idR1 capI1 capR1 ksI1 ksR1 idI2 idR2 capI2 capR2 ksI2 ksR2 tk ni nr stk pkI pkR dh ltk #j1 #j2 . + InitiatorFinishedLegPairing(idI1, capI1, ksI1, idR1, capR1, ksR1, tk, ni, nr, stk) @j1 & + ResponderFinishedSecPairing(idR2, capR2, ksR2, idI2, capI2, ksI2, pkR, pkI, dh, ltk) @j2 ==> + not (Ex #k1 #k2 . + K(stk) @k1 & K(ltk) @k2 + ) + ) +" + +#endif + +/******************************************/ +/* End lemmas about LegJW-SecPEi exchange */ +/******************************************/ + +/**************************************/ +/* Lemmas about LegJW-SecPEo exchange */ +/**************************************/ + +#ifdef LegJWSecPEo +lemma legJW_secPEo_functional: exists-trace +" + Ex #i1 #i2 . + InitWillDoLegJW()[+] @i1 & RespWillDoSecPEo()[+] @i2 & + (Ex idI1 idR1 capI1 capR1 ksI1 ksR1 idI2 idR2 capI2 capR2 ksI2 ksR2 tk ni nr stk pkI pkR dh ltk #j1 #j2 . + InitiatorFinishedLegPairing(idI1, capI1, ksI1, idR1, capR1, ksR1, tk, ni, nr, stk) @j1 & + ResponderFinishedSecPairing(idR2, capR2, ksR2, idI2, capI2, ksI2, pkR, pkI, dh, ltk) @j2 + ) +" + +lemma legJW_secPEo_auth_init: +" + All idI idR capI capR ksI ksR tk nli nlr stk #i1 #i2 #j . + InitWillDoLegJW()[+] @i1 & RespWillDoSecPEo()[+] @i2 & + InitiatorFinishedLegPairing(idI, capI, ksI, idR, capR, ksR, tk, nli, nlr, stk) @j ==> + (Ex pkI pkR dh nsi nsr ri rr ei er #k . + RespDoneDHKeyCheck(idR, capR, ksR, idI, capI, ksI, pkR, pkI, dh, nsr, nsi, rr, ri, er, ei) @k + ) +" + +lemma legJW_secPEo_auth_resp: +" + All idI idR capI capR ksI ksR pkI pkR dh ltk #i1 #i2 #j . + InitWillDoLegJW()[+] @i1 & RespWillDoSecPEo()[+] @i2 & + ResponderFinishedSecPairing(idR, capR, ksR, idI, capI, ksI, pkI, pkR, dh, ltk) @j ==> + (Ex tk ni ci cr #k . + InitSentRandom(idI, capI, ksI, idR, capR, ksR, tk, ni, ci, cr) @k + ) +" + +lemma legJW_secPEo_weaksecret_init: +" + All idI idR capI capR ksI ksR tk ni nr stk #i1 #i2 #j. + InitWillDoLegJW()[+] @i1 & RespWillDoSecPEo()[+] @i2 & + InitiatorFinishedLegPairing(idI, capI, ksI, idR, capR, ksR, tk, ni, nr, stk) @j ==> + not (Ex #k . K(stk) @k ) +" + +lemma legJW_secPEo_weaksecret_resp: +" + All idI idR capI capR ksI ksR pkI pkR dh ltk #i1 #i2 #j. + InitWillDoLegJW()[+] @i1 & RespWillDoSecPEo()[+] @i2 & + ResponderFinishedSecPairing(idR, capR, ksR, idI, capI, ksI, pkI, pkR, dh, ltk) @j ==> + not (Ex #k . K(ltk) @k ) +" + +lemma legJW_secPEo_double_impersonation: +" + All #i1 #i2 . + InitWillDoLegJW()[+] @i1 & RespWillDoSecPEo()[+] @i2 ==> + (All idI1 idR1 capI1 capR1 ksI1 ksR1 idI2 idR2 capI2 capR2 ksI2 ksR2 tk ni nr stk pkI pkR dh ltk #j1 #j2 . + InitiatorFinishedLegPairing(idI1, capI1, ksI1, idR1, capR1, ksR1, tk, ni, nr, stk) @j1 & + ResponderFinishedSecPairing(idR2, capR2, ksR2, idI2, capI2, ksI2, pkR, pkI, dh, ltk) @j2 ==> + not (Ex #k1 #k2 . + K(stk) @k1 & K(ltk) @k2 + ) + ) +" + +#endif + +/******************************************/ +/* End lemmas about LegJW-SecPEo exchange */ +/******************************************/ + +/***************************************/ +/* Lemmas about LegJW-SecPEio exchange */ +/***************************************/ + +#ifdef LegJWSecPEio +lemma legJW_secPEio_functional: exists-trace +" + Ex #i1 #i2 . + InitWillDoLegJW()[+] @i1 & RespWillDoSecPEio()[+] @i2 & + (Ex idI1 idR1 capI1 capR1 ksI1 ksR1 idI2 idR2 capI2 capR2 ksI2 ksR2 tk ni nr stk pkI pkR dh ltk #j1 #j2 . + InitiatorFinishedLegPairing(idI1, capI1, ksI1, idR1, capR1, ksR1, tk, ni, nr, stk) @j1 & + ResponderFinishedSecPairing(idR2, capR2, ksR2, idI2, capI2, ksI2, pkR, pkI, dh, ltk) @j2 + ) +" + +lemma legJW_secPEio_auth_init: +" + All idI idR capI capR ksI ksR tk nli nlr stk #i1 #i2 #j . + InitWillDoLegJW()[+] @i1 & RespWillDoSecPEio()[+] @i2 & + InitiatorFinishedLegPairing(idI, capI, ksI, idR, capR, ksR, tk, nli, nlr, stk) @j ==> + (Ex pkI pkR dh nsi nsr ri rr ei er #k . + RespDoneDHKeyCheck(idR, capR, ksR, idI, capI, ksI, pkR, pkI, dh, nsr, nsi, rr, ri, er, ei) @k + ) +" + +lemma legJW_secPEio_auth_resp: +" + All idI idR capI capR ksI ksR pkI pkR dh ltk #i1 #i2 #j . + InitWillDoLegJW()[+] @i1 & RespWillDoSecPEio()[+] @i2 & + ResponderFinishedSecPairing(idR, capR, ksR, idI, capI, ksI, pkI, pkR, dh, ltk) @j ==> + (Ex tk ni ci cr #k . + InitSentRandom(idI, capI, ksI, idR, capR, ksR, tk, ni, ci, cr) @k + ) +" + +lemma legJW_secPEio_weaksecret_init: +" + All idI idR capI capR ksI ksR tk ni nr stk #i1 #i2 #j. + InitWillDoLegJW()[+] @i1 & RespWillDoSecPEio()[+] @i2 & + InitiatorFinishedLegPairing(idI, capI, ksI, idR, capR, ksR, tk, ni, nr, stk) @j ==> + not (Ex #k . K(stk) @k ) +" + +lemma legJW_secPEio_weaksecret_resp: +" + All idI idR capI capR ksI ksR pkI pkR dh ltk #i1 #i2 #j. + InitWillDoLegJW()[+] @i1 & RespWillDoSecPEio()[+] @i2 & + ResponderFinishedSecPairing(idR, capR, ksR, idI, capI, ksI, pkI, pkR, dh, ltk) @j ==> + not (Ex #k . K(ltk) @k ) +" + +lemma legJW_secPEio_double_impersonation: +" + All #i1 #i2 . + InitWillDoLegJW()[+] @i1 & RespWillDoSecPEio()[+] @i2 ==> + (All idI1 idR1 capI1 capR1 ksI1 ksR1 idI2 idR2 capI2 capR2 ksI2 ksR2 tk ni nr stk pkI pkR dh ltk #j1 #j2 . + InitiatorFinishedLegPairing(idI1, capI1, ksI1, idR1, capR1, ksR1, tk, ni, nr, stk) @j1 & + ResponderFinishedSecPairing(idR2, capR2, ksR2, idI2, capI2, ksI2, pkR, pkI, dh, ltk) @j2 ==> + not (Ex #k1 #k2 . + K(stk) @k1 & K(ltk) @k2 + ) + ) +" + +#endif + +/*******************************************/ +/* End lemmas about LegJW-SecPEio exchange */ +/*******************************************/ + +/*************************************/ +/* Lemmas about LegJW-SecNC exchange */ +/*************************************/ + +#ifdef LegJWSecNC +lemma legJW_secNC_functional: exists-trace +" + Ex #i1 #i2 . + InitWillDoLegJW()[+] @i1 & RespWillDoSecNC()[+] @i2 & + (Ex idI1 idR1 capI1 capR1 ksI1 ksR1 idI2 idR2 capI2 capR2 ksI2 ksR2 tk ni nr stk pkI pkR dh ltk #j1 #j2 . + InitiatorFinishedLegPairing(idI1, capI1, ksI1, idR1, capR1, ksR1, tk, ni, nr, stk) @j1 & + ResponderFinishedSecPairing(idR2, capR2, ksR2, idI2, capI2, ksI2, pkR, pkI, dh, ltk) @j2 + ) +" + +lemma legJW_secNC_auth_init: +" + All idI idR capI capR ksI ksR tk nli nlr stk #i1 #i2 #j . + InitWillDoLegJW()[+] @i1 & RespWillDoSecNC()[+] @i2 & + InitiatorFinishedLegPairing(idI, capI, ksI, idR, capR, ksR, tk, nli, nlr, stk) @j ==> + (Ex pkI pkR dh nsi nsr ri rr ei er #k . + RespDoneDHKeyCheck(idR, capR, ksR, idI, capI, ksI, pkR, pkI, dh, nsr, nsi, rr, ri, er, ei) @k + ) +" + +lemma legJW_secNC_auth_resp: +" + All idI idR capI capR ksI ksR pkI pkR dh ltk #i1 #i2 #j . + InitWillDoLegJW()[+] @i1 & RespWillDoSecNC()[+] @i2 & + ResponderFinishedSecPairing(idR, capR, ksR, idI, capI, ksI, pkI, pkR, dh, ltk) @j ==> + (Ex tk ni ci cr #k . + InitSentRandom(idI, capI, ksI, idR, capR, ksR, tk, ni, ci, cr) @k + ) +" + +lemma legJW_secNC_weaksecret_init: +" + All idI idR capI capR ksI ksR tk ni nr stk #i1 #i2 #j. + InitWillDoLegJW()[+] @i1 & RespWillDoSecNC()[+] @i2 & + InitiatorFinishedLegPairing(idI, capI, ksI, idR, capR, ksR, tk, ni, nr, stk) @j ==> + not (Ex #k . K(stk) @k ) +" + +lemma legJW_secNC_weaksecret_resp: +" + All idI idR capI capR ksI ksR pkI pkR dh ltk #i1 #i2 #j. + InitWillDoLegJW()[+] @i1 & RespWillDoSecNC()[+] @i2 & + ResponderFinishedSecPairing(idR, capR, ksR, idI, capI, ksI, pkI, pkR, dh, ltk) @j ==> + not (Ex #k . K(ltk) @k ) +" + +lemma legJW_secNC_double_impersonation: +" + All #i1 #i2 . + InitWillDoLegJW()[+] @i1 & RespWillDoSecNC()[+] @i2 ==> + (All idI1 idR1 capI1 capR1 ksI1 ksR1 idI2 idR2 capI2 capR2 ksI2 ksR2 tk ni nr stk pkI pkR dh ltk #j1 #j2 . + InitiatorFinishedLegPairing(idI1, capI1, ksI1, idR1, capR1, ksR1, tk, ni, nr, stk) @j1 & + ResponderFinishedSecPairing(idR2, capR2, ksR2, idI2, capI2, ksI2, pkR, pkI, dh, ltk) @j2 ==> + not (Ex #k1 #k2 . + K(stk) @k1 & K(ltk) @k2 + ) + ) +" + +#endif + +/*****************************************/ +/* End lemmas about LegJW-SecNC exchange */ +/*****************************************/ + +/***************************************/ +/* Lemmas about LegJW-SecOOBi exchange */ +/***************************************/ + +#ifdef LegJWSecOOBi +lemma legJW_secOOBi_functional: exists-trace +" + Ex #i1 #i2 . + InitWillDoLegJW()[+] @i1 & RespWillDoSecOOBi()[+] @i2 & + (Ex idI1 idR1 capI1 capR1 ksI1 ksR1 idI2 idR2 capI2 capR2 ksI2 ksR2 tk ni nr stk pkI pkR dh ltk #j1 #j2 . + InitiatorFinishedLegPairing(idI1, capI1, ksI1, idR1, capR1, ksR1, tk, ni, nr, stk) @j1 & + ResponderFinishedSecPairing(idR2, capR2, ksR2, idI2, capI2, ksI2, pkR, pkI, dh, ltk) @j2 + ) +" + +lemma legJW_secOOBi_auth_init: +" + All idI idR capI capR ksI ksR tk nli nlr stk #i1 #i2 #j . + InitWillDoLegJW()[+] @i1 & RespWillDoSecOOBi()[+] @i2 & + InitiatorFinishedLegPairing(idI, capI, ksI, idR, capR, ksR, tk, nli, nlr, stk) @j ==> + (Ex pkI pkR dh nsi nsr ri rr ei er #k . + RespDoneDHKeyCheck(idR, capR, ksR, idI, capI, ksI, pkR, pkI, dh, nsr, nsi, rr, ri, er, ei) @k + ) +" + +lemma legJW_secOOBi_auth_resp: +" + All idI idR capI capR ksI ksR pkI pkR dh ltk #i1 #i2 #j . + InitWillDoLegJW()[+] @i1 & RespWillDoSecOOBi()[+] @i2 & + ResponderFinishedSecPairing(idR, capR, ksR, idI, capI, ksI, pkI, pkR, dh, ltk) @j ==> + (Ex tk ni ci cr #k . + InitSentRandom(idI, capI, ksI, idR, capR, ksR, tk, ni, ci, cr) @k + ) +" + +lemma legJW_secOOBi_weaksecret_init: +" + All idI idR capI capR ksI ksR tk ni nr stk #i1 #i2 #j. + InitWillDoLegJW()[+] @i1 & RespWillDoSecOOBi()[+] @i2 & + InitiatorFinishedLegPairing(idI, capI, ksI, idR, capR, ksR, tk, ni, nr, stk) @j ==> + not (Ex #k . K(stk) @k ) +" + +lemma legJW_secOOBi_weaksecret_resp: +" + All idI idR capI capR ksI ksR pkI pkR dh ltk #i1 #i2 #j. + InitWillDoLegJW()[+] @i1 & RespWillDoSecOOBi()[+] @i2 & + ResponderFinishedSecPairing(idR, capR, ksR, idI, capI, ksI, pkI, pkR, dh, ltk) @j ==> + not (Ex #k . K(ltk) @k ) +" + +lemma legJW_secOOBi_double_impersonation: +" + All #i1 #i2 . + InitWillDoLegJW()[+] @i1 & RespWillDoSecOOBi()[+] @i2 ==> + (All idI1 idR1 capI1 capR1 ksI1 ksR1 idI2 idR2 capI2 capR2 ksI2 ksR2 tk ni nr stk pkI pkR dh ltk #j1 #j2 . + InitiatorFinishedLegPairing(idI1, capI1, ksI1, idR1, capR1, ksR1, tk, ni, nr, stk) @j1 & + ResponderFinishedSecPairing(idR2, capR2, ksR2, idI2, capI2, ksI2, pkR, pkI, dh, ltk) @j2 ==> + not (Ex #k1 #k2 . + K(stk) @k1 & K(ltk) @k2 + ) + ) +" + +#endif + +/*******************************************/ +/* End lemmas about LegJW-SecOOBi exchange */ +/*******************************************/ + +/***************************************/ +/* Lemmas about LegJW-SecOOBo exchange */ +/***************************************/ + +#ifdef LegJWSecOOBo +lemma legJW_secOOBo_functional: exists-trace +" + Ex #i1 #i2 . + InitWillDoLegJW()[+] @i1 & RespWillDoSecOOBo()[+] @i2 & + (Ex idI1 idR1 capI1 capR1 ksI1 ksR1 idI2 idR2 capI2 capR2 ksI2 ksR2 tk ni nr stk pkI pkR dh ltk #j1 #j2 . + InitiatorFinishedLegPairing(idI1, capI1, ksI1, idR1, capR1, ksR1, tk, ni, nr, stk) @j1 & + ResponderFinishedSecPairing(idR2, capR2, ksR2, idI2, capI2, ksI2, pkR, pkI, dh, ltk) @j2 + ) +" + +lemma legJW_secOOBo_auth_init: +" + All idI idR capI capR ksI ksR tk nli nlr stk #i1 #i2 #j . + InitWillDoLegJW()[+] @i1 & RespWillDoSecOOBo()[+] @i2 & + InitiatorFinishedLegPairing(idI, capI, ksI, idR, capR, ksR, tk, nli, nlr, stk) @j ==> + (Ex pkI pkR dh nsi nsr ri rr ei er #k . + RespDoneDHKeyCheck(idR, capR, ksR, idI, capI, ksI, pkR, pkI, dh, nsr, nsi, rr, ri, er, ei) @k + ) +" + +lemma legJW_secOOBo_auth_resp: +" + All idI idR capI capR ksI ksR pkI pkR dh ltk #i1 #i2 #j . + InitWillDoLegJW()[+] @i1 & RespWillDoSecOOBo()[+] @i2 & + ResponderFinishedSecPairing(idR, capR, ksR, idI, capI, ksI, pkI, pkR, dh, ltk) @j ==> + (Ex tk ni ci cr #k . + InitSentRandom(idI, capI, ksI, idR, capR, ksR, tk, ni, ci, cr) @k + ) +" + +lemma legJW_secOOBo_weaksecret_init: +" + All idI idR capI capR ksI ksR tk ni nr stk #i1 #i2 #j. + InitWillDoLegJW()[+] @i1 & RespWillDoSecOOBo()[+] @i2 & + InitiatorFinishedLegPairing(idI, capI, ksI, idR, capR, ksR, tk, ni, nr, stk) @j ==> + not (Ex #k . K(stk) @k ) +" + +lemma legJW_secOOBo_weaksecret_resp: +" + All idI idR capI capR ksI ksR pkI pkR dh ltk #i1 #i2 #j. + InitWillDoLegJW()[+] @i1 & RespWillDoSecOOBo()[+] @i2 & + ResponderFinishedSecPairing(idR, capR, ksR, idI, capI, ksI, pkI, pkR, dh, ltk) @j ==> + not (Ex #k . K(ltk) @k ) +" + +lemma legJW_secOOBo_double_impersonation: +" + All #i1 #i2 . + InitWillDoLegJW()[+] @i1 & RespWillDoSecOOBo()[+] @i2 ==> + (All idI1 idR1 capI1 capR1 ksI1 ksR1 idI2 idR2 capI2 capR2 ksI2 ksR2 tk ni nr stk pkI pkR dh ltk #j1 #j2 . + InitiatorFinishedLegPairing(idI1, capI1, ksI1, idR1, capR1, ksR1, tk, ni, nr, stk) @j1 & + ResponderFinishedSecPairing(idR2, capR2, ksR2, idI2, capI2, ksI2, pkR, pkI, dh, ltk) @j2 ==> + not (Ex #k1 #k2 . + K(stk) @k1 & K(ltk) @k2 + ) + ) +" + +#endif + +/*******************************************/ +/* End lemmas about LegJW-SecOOBo exchange */ +/*******************************************/ + +/****************************************/ +/* Lemmas about LegJW-SecOOBio exchange */ +/****************************************/ + +#ifdef LegJWSecOOBio +lemma legJW_secOOBio_functional: exists-trace +" + Ex #i1 #i2 . + InitWillDoLegJW()[+] @i1 & RespWillDoSecOOBio()[+] @i2 & + (Ex idI1 idR1 capI1 capR1 ksI1 ksR1 idI2 idR2 capI2 capR2 ksI2 ksR2 tk ni nr stk pkI pkR dh ltk #j1 #j2 . + InitiatorFinishedLegPairing(idI1, capI1, ksI1, idR1, capR1, ksR1, tk, ni, nr, stk) @j1 & + ResponderFinishedSecPairing(idR2, capR2, ksR2, idI2, capI2, ksI2, pkR, pkI, dh, ltk) @j2 + ) +" + +lemma legJW_secOOBio_auth_init: +" + All idI idR capI capR ksI ksR tk nli nlr stk #i1 #i2 #j . + InitWillDoLegJW()[+] @i1 & RespWillDoSecOOBio()[+] @i2 & + InitiatorFinishedLegPairing(idI, capI, ksI, idR, capR, ksR, tk, nli, nlr, stk) @j ==> + (Ex pkI pkR dh nsi nsr ri rr ei er #k . + RespDoneDHKeyCheck(idR, capR, ksR, idI, capI, ksI, pkR, pkI, dh, nsr, nsi, rr, ri, er, ei) @k + ) +" + +lemma legJW_secOOBio_auth_resp: +" + All idI idR capI capR ksI ksR pkI pkR dh ltk #i1 #i2 #j . + InitWillDoLegJW()[+] @i1 & RespWillDoSecOOBio()[+] @i2 & + ResponderFinishedSecPairing(idR, capR, ksR, idI, capI, ksI, pkI, pkR, dh, ltk) @j ==> + (Ex tk ni ci cr #k . + InitSentRandom(idI, capI, ksI, idR, capR, ksR, tk, ni, ci, cr) @k + ) +" + +lemma legJW_secOOBio_weaksecret_init: +" + All idI idR capI capR ksI ksR tk ni nr stk #i1 #i2 #j. + InitWillDoLegJW()[+] @i1 & RespWillDoSecOOBio()[+] @i2 & + InitiatorFinishedLegPairing(idI, capI, ksI, idR, capR, ksR, tk, ni, nr, stk) @j ==> + not (Ex #k . K(stk) @k ) +" + +lemma legJW_secOOBio_weaksecret_resp: +" + All idI idR capI capR ksI ksR pkI pkR dh ltk #i1 #i2 #j. + InitWillDoLegJW()[+] @i1 & RespWillDoSecOOBio()[+] @i2 & + ResponderFinishedSecPairing(idR, capR, ksR, idI, capI, ksI, pkI, pkR, dh, ltk) @j ==> + not (Ex #k . K(ltk) @k ) +" + +lemma legJW_secOOBio_double_impersonation: +" + All #i1 #i2 . + InitWillDoLegJW()[+] @i1 & RespWillDoSecOOBio()[+] @i2 ==> + (All idI1 idR1 capI1 capR1 ksI1 ksR1 idI2 idR2 capI2 capR2 ksI2 ksR2 tk ni nr stk pkI pkR dh ltk #j1 #j2 . + InitiatorFinishedLegPairing(idI1, capI1, ksI1, idR1, capR1, ksR1, tk, ni, nr, stk) @j1 & + ResponderFinishedSecPairing(idR2, capR2, ksR2, idI2, capI2, ksI2, pkR, pkI, dh, ltk) @j2 ==> + not (Ex #k1 #k2 . + K(stk) @k1 & K(ltk) @k2 + ) + ) +" + +#endif + +/********************************************/ +/* End lemmas about LegJW-SecOOBio exchange */ +/********************************************/ + +/**************************************/ +/* Lemmas about LegPEi-SecJW exchange */ +/**************************************/ + +#ifdef LegPEiSecJW +lemma legPEi_secJW_functional: exists-trace +" + Ex #i1 #i2 . + InitWillDoLegPEi()[+] @i1 & RespWillDoSecJW()[+] @i2 & + (Ex idI1 idR1 capI1 capR1 ksI1 ksR1 idI2 idR2 capI2 capR2 ksI2 ksR2 tk ni nr stk pkI pkR dh ltk #j1 #j2 . + InitiatorFinishedLegPairing(idI1, capI1, ksI1, idR1, capR1, ksR1, tk, ni, nr, stk) @j1 & + ResponderFinishedSecPairing(idR2, capR2, ksR2, idI2, capI2, ksI2, pkR, pkI, dh, ltk) @j2 + ) +" + +lemma legPEi_secJW_auth_init: +" + All idI idR capI capR ksI ksR tk nli nlr stk #i1 #i2 #j . + InitWillDoLegPEi()[+] @i1 & RespWillDoSecJW()[+] @i2 & + InitiatorFinishedLegPairing(idI, capI, ksI, idR, capR, ksR, tk, nli, nlr, stk) @j ==> + (Ex pkI pkR dh nsi nsr ri rr ei er #k . + RespDoneDHKeyCheck(idR, capR, ksR, idI, capI, ksI, pkR, pkI, dh, nsr, nsi, rr, ri, er, ei) @k + ) +" + +lemma legPEi_secJW_auth_resp: +" + All idI idR capI capR ksI ksR pkI pkR dh ltk #i1 #i2 #j . + InitWillDoLegPEi()[+] @i1 & RespWillDoSecJW()[+] @i2 & + ResponderFinishedSecPairing(idR, capR, ksR, idI, capI, ksI, pkI, pkR, dh, ltk) @j ==> + (Ex tk ni ci cr #k . + InitSentRandom(idI, capI, ksI, idR, capR, ksR, tk, ni, ci, cr) @k + ) +" + +lemma legPEi_secJW_weaksecret_init: +" + All idI idR capI capR ksI ksR tk ni nr stk #i1 #i2 #j. + InitWillDoLegPEi()[+] @i1 & RespWillDoSecJW()[+] @i2 & + InitiatorFinishedLegPairing(idI, capI, ksI, idR, capR, ksR, tk, ni, nr, stk) @j ==> + not (Ex #k . K(stk) @k ) +" + +lemma legPEi_secJW_weaksecret_resp: +" + All idI idR capI capR ksI ksR pkI pkR dh ltk #i1 #i2 #j. + InitWillDoLegPEi()[+] @i1 & RespWillDoSecJW()[+] @i2 & + ResponderFinishedSecPairing(idR, capR, ksR, idI, capI, ksI, pkI, pkR, dh, ltk) @j ==> + not (Ex #k . K(ltk) @k ) +" + +lemma legPEi_secJW_double_impersonation: +" + All #i1 #i2 . + InitWillDoLegPEi()[+] @i1 & RespWillDoSecJW()[+] @i2 ==> + (All idI1 idR1 capI1 capR1 ksI1 ksR1 idI2 idR2 capI2 capR2 ksI2 ksR2 tk ni nr stk pkI pkR dh ltk #j1 #j2 . + InitiatorFinishedLegPairing(idI1, capI1, ksI1, idR1, capR1, ksR1, tk, ni, nr, stk) @j1 & + ResponderFinishedSecPairing(idR2, capR2, ksR2, idI2, capI2, ksI2, pkR, pkI, dh, ltk) @j2 ==> + not (Ex #k1 #k2 . + K(stk) @k1 & K(ltk) @k2 + ) + ) +" + +#endif + +/******************************************/ +/* End lemmas about LegPEi-SecJW exchange */ +/******************************************/ + +/***************************************/ +/* Lemmas about LegPEi-SecPEi exchange */ +/***************************************/ + +#ifdef LegPEiSecPEi +lemma legPEi_secPEi_functional: exists-trace +" + Ex #i1 #i2 . + InitWillDoLegPEi()[+] @i1 & RespWillDoSecPEi()[+] @i2 & + (Ex idI1 idR1 capI1 capR1 ksI1 ksR1 idI2 idR2 capI2 capR2 ksI2 ksR2 tk ni nr stk pkI pkR dh ltk #j1 #j2 . + InitiatorFinishedLegPairing(idI1, capI1, ksI1, idR1, capR1, ksR1, tk, ni, nr, stk) @j1 & + ResponderFinishedSecPairing(idR2, capR2, ksR2, idI2, capI2, ksI2, pkR, pkI, dh, ltk) @j2 + ) +" + +lemma legPEi_secPEi_auth_init: +" + All idI idR capI capR ksI ksR tk nli nlr stk #i1 #i2 #j . + InitWillDoLegPEi()[+] @i1 & RespWillDoSecPEi()[+] @i2 & + InitiatorFinishedLegPairing(idI, capI, ksI, idR, capR, ksR, tk, nli, nlr, stk) @j ==> + (Ex pkI pkR dh nsi nsr ri rr ei er #k . + RespDoneDHKeyCheck(idR, capR, ksR, idI, capI, ksI, pkR, pkI, dh, nsr, nsi, rr, ri, er, ei) @k + ) +" + +lemma legPEi_secPEi_auth_resp: +" + All idI idR capI capR ksI ksR pkI pkR dh ltk #i1 #i2 #j . + InitWillDoLegPEi()[+] @i1 & RespWillDoSecPEi()[+] @i2 & + ResponderFinishedSecPairing(idR, capR, ksR, idI, capI, ksI, pkI, pkR, dh, ltk) @j ==> + (Ex tk ni ci cr #k . + InitSentRandom(idI, capI, ksI, idR, capR, ksR, tk, ni, ci, cr) @k + ) +" + +lemma legPEi_secPEi_weaksecret_init: +" + All idI idR capI capR ksI ksR tk ni nr stk #i1 #i2 #j. + InitWillDoLegPEi()[+] @i1 & RespWillDoSecPEi()[+] @i2 & + InitiatorFinishedLegPairing(idI, capI, ksI, idR, capR, ksR, tk, ni, nr, stk) @j ==> + not (Ex #k . K(stk) @k ) +" + +lemma legPEi_secPEi_weaksecret_resp: +" + All idI idR capI capR ksI ksR pkI pkR dh ltk #i1 #i2 #j. + InitWillDoLegPEi()[+] @i1 & RespWillDoSecPEi()[+] @i2 & + ResponderFinishedSecPairing(idR, capR, ksR, idI, capI, ksI, pkI, pkR, dh, ltk) @j ==> + not (Ex #k . K(ltk) @k ) +" + +lemma legPEi_secPEi_double_impersonation: +" + All #i1 #i2 . + InitWillDoLegPEi()[+] @i1 & RespWillDoSecPEi()[+] @i2 ==> + (All idI1 idR1 capI1 capR1 ksI1 ksR1 idI2 idR2 capI2 capR2 ksI2 ksR2 tk ni nr stk pkI pkR dh ltk #j1 #j2 . + InitiatorFinishedLegPairing(idI1, capI1, ksI1, idR1, capR1, ksR1, tk, ni, nr, stk) @j1 & + ResponderFinishedSecPairing(idR2, capR2, ksR2, idI2, capI2, ksI2, pkR, pkI, dh, ltk) @j2 ==> + not (Ex #k1 #k2 . + K(stk) @k1 & K(ltk) @k2 + ) + ) +" + +#endif + +/*******************************************/ +/* End lemmas about LegPEi-SecPEi exchange */ +/*******************************************/ + +/***************************************/ +/* Lemmas about LegPEi-SecPEo exchange */ +/***************************************/ + +#ifdef LegPEiSecPEo +lemma legPEi_secPEo_functional: exists-trace +" + Ex #i1 #i2 . + InitWillDoLegPEi()[+] @i1 & RespWillDoSecPEo()[+] @i2 & + (Ex idI1 idR1 capI1 capR1 ksI1 ksR1 idI2 idR2 capI2 capR2 ksI2 ksR2 tk ni nr stk pkI pkR dh ltk #j1 #j2 . + InitiatorFinishedLegPairing(idI1, capI1, ksI1, idR1, capR1, ksR1, tk, ni, nr, stk) @j1 & + ResponderFinishedSecPairing(idR2, capR2, ksR2, idI2, capI2, ksI2, pkR, pkI, dh, ltk) @j2 + ) +" + +lemma legPEi_secPEo_auth_init: +" + All idI idR capI capR ksI ksR tk nli nlr stk #i1 #i2 #j . + InitWillDoLegPEi()[+] @i1 & RespWillDoSecPEo()[+] @i2 & + InitiatorFinishedLegPairing(idI, capI, ksI, idR, capR, ksR, tk, nli, nlr, stk) @j ==> + (Ex pkI pkR dh nsi nsr ri rr ei er #k . + RespDoneDHKeyCheck(idR, capR, ksR, idI, capI, ksI, pkR, pkI, dh, nsr, nsi, rr, ri, er, ei) @k + ) +" + +lemma legPEi_secPEo_auth_resp: +" + All idI idR capI capR ksI ksR pkI pkR dh ltk #i1 #i2 #j . + InitWillDoLegPEi()[+] @i1 & RespWillDoSecPEo()[+] @i2 & + ResponderFinishedSecPairing(idR, capR, ksR, idI, capI, ksI, pkI, pkR, dh, ltk) @j ==> + (Ex tk ni ci cr #k . + InitSentRandom(idI, capI, ksI, idR, capR, ksR, tk, ni, ci, cr) @k + ) +" + +lemma legPEi_secPEo_weaksecret_init: +" + All idI idR capI capR ksI ksR tk ni nr stk #i1 #i2 #j. + InitWillDoLegPEi()[+] @i1 & RespWillDoSecPEo()[+] @i2 & + InitiatorFinishedLegPairing(idI, capI, ksI, idR, capR, ksR, tk, ni, nr, stk) @j ==> + not (Ex #k . K(stk) @k ) +" + +lemma legPEi_secPEo_weaksecret_resp: +" + All idI idR capI capR ksI ksR pkI pkR dh ltk #i1 #i2 #j. + InitWillDoLegPEi()[+] @i1 & RespWillDoSecPEo()[+] @i2 & + ResponderFinishedSecPairing(idR, capR, ksR, idI, capI, ksI, pkI, pkR, dh, ltk) @j ==> + not (Ex #k . K(ltk) @k ) +" + +lemma legPEi_secPEo_double_impersonation: +" + All #i1 #i2 . + InitWillDoLegPEi()[+] @i1 & RespWillDoSecPEo()[+] @i2 ==> + (All idI1 idR1 capI1 capR1 ksI1 ksR1 idI2 idR2 capI2 capR2 ksI2 ksR2 tk ni nr stk pkI pkR dh ltk #j1 #j2 . + InitiatorFinishedLegPairing(idI1, capI1, ksI1, idR1, capR1, ksR1, tk, ni, nr, stk) @j1 & + ResponderFinishedSecPairing(idR2, capR2, ksR2, idI2, capI2, ksI2, pkR, pkI, dh, ltk) @j2 ==> + not (Ex #k1 #k2 . + K(stk) @k1 & K(ltk) @k2 + ) + ) +" + +#endif + +/*******************************************/ +/* End lemmas about LegPEi-SecPEo exchange */ +/*******************************************/ + +/****************************************/ +/* Lemmas about LegPEi-SecPEio exchange */ +/****************************************/ + +#ifdef LegPEiSecPEio +lemma legPEi_secPEio_functional: exists-trace +" + Ex #i1 #i2 . + InitWillDoLegPEi()[+] @i1 & RespWillDoSecPEio()[+] @i2 & + (Ex idI1 idR1 capI1 capR1 ksI1 ksR1 idI2 idR2 capI2 capR2 ksI2 ksR2 tk ni nr stk pkI pkR dh ltk #j1 #j2 . + InitiatorFinishedLegPairing(idI1, capI1, ksI1, idR1, capR1, ksR1, tk, ni, nr, stk) @j1 & + ResponderFinishedSecPairing(idR2, capR2, ksR2, idI2, capI2, ksI2, pkR, pkI, dh, ltk) @j2 + ) +" + +lemma legPEi_secPEio_auth_init: +" + All idI idR capI capR ksI ksR tk nli nlr stk #i1 #i2 #j . + InitWillDoLegPEi()[+] @i1 & RespWillDoSecPEio()[+] @i2 & + InitiatorFinishedLegPairing(idI, capI, ksI, idR, capR, ksR, tk, nli, nlr, stk) @j ==> + (Ex pkI pkR dh nsi nsr ri rr ei er #k . + RespDoneDHKeyCheck(idR, capR, ksR, idI, capI, ksI, pkR, pkI, dh, nsr, nsi, rr, ri, er, ei) @k + ) +" + +lemma legPEi_secPEio_auth_resp: +" + All idI idR capI capR ksI ksR pkI pkR dh ltk #i1 #i2 #j . + InitWillDoLegPEi()[+] @i1 & RespWillDoSecPEio()[+] @i2 & + ResponderFinishedSecPairing(idR, capR, ksR, idI, capI, ksI, pkI, pkR, dh, ltk) @j ==> + (Ex tk ni ci cr #k . + InitSentRandom(idI, capI, ksI, idR, capR, ksR, tk, ni, ci, cr) @k + ) +" + +lemma legPEi_secPEio_weaksecret_init: +" + All idI idR capI capR ksI ksR tk ni nr stk #i1 #i2 #j. + InitWillDoLegPEi()[+] @i1 & RespWillDoSecPEio()[+] @i2 & + InitiatorFinishedLegPairing(idI, capI, ksI, idR, capR, ksR, tk, ni, nr, stk) @j ==> + not (Ex #k . K(stk) @k ) +" + +lemma legPEi_secPEio_weaksecret_resp: +" + All idI idR capI capR ksI ksR pkI pkR dh ltk #i1 #i2 #j. + InitWillDoLegPEi()[+] @i1 & RespWillDoSecPEio()[+] @i2 & + ResponderFinishedSecPairing(idR, capR, ksR, idI, capI, ksI, pkI, pkR, dh, ltk) @j ==> + not (Ex #k . K(ltk) @k ) +" + +lemma legPEi_secPEio_double_impersonation: +" + All #i1 #i2 . + InitWillDoLegPEi()[+] @i1 & RespWillDoSecPEio()[+] @i2 ==> + (All idI1 idR1 capI1 capR1 ksI1 ksR1 idI2 idR2 capI2 capR2 ksI2 ksR2 tk ni nr stk pkI pkR dh ltk #j1 #j2 . + InitiatorFinishedLegPairing(idI1, capI1, ksI1, idR1, capR1, ksR1, tk, ni, nr, stk) @j1 & + ResponderFinishedSecPairing(idR2, capR2, ksR2, idI2, capI2, ksI2, pkR, pkI, dh, ltk) @j2 ==> + not (Ex #k1 #k2 . + K(stk) @k1 & K(ltk) @k2 + ) + ) +" + +#endif + +/********************************************/ +/* End lemmas about LegPEi-SecPEio exchange */ +/********************************************/ + +/**************************************/ +/* Lemmas about LegPEi-SecNC exchange */ +/**************************************/ + +#ifdef LegPEiSecNC +lemma legPEi_secNC_functional: exists-trace +" + Ex #i1 #i2 . + InitWillDoLegPEi()[+] @i1 & RespWillDoSecNC()[+] @i2 & + (Ex idI1 idR1 capI1 capR1 ksI1 ksR1 idI2 idR2 capI2 capR2 ksI2 ksR2 tk ni nr stk pkI pkR dh ltk #j1 #j2 . + InitiatorFinishedLegPairing(idI1, capI1, ksI1, idR1, capR1, ksR1, tk, ni, nr, stk) @j1 & + ResponderFinishedSecPairing(idR2, capR2, ksR2, idI2, capI2, ksI2, pkR, pkI, dh, ltk) @j2 + ) +" + +lemma legPEi_secNC_auth_init: +" + All idI idR capI capR ksI ksR tk nli nlr stk #i1 #i2 #j . + InitWillDoLegPEi()[+] @i1 & RespWillDoSecNC()[+] @i2 & + InitiatorFinishedLegPairing(idI, capI, ksI, idR, capR, ksR, tk, nli, nlr, stk) @j ==> + (Ex pkI pkR dh nsi nsr ri rr ei er #k . + RespDoneDHKeyCheck(idR, capR, ksR, idI, capI, ksI, pkR, pkI, dh, nsr, nsi, rr, ri, er, ei) @k + ) +" + +lemma legPEi_secNC_auth_resp: +" + All idI idR capI capR ksI ksR pkI pkR dh ltk #i1 #i2 #j . + InitWillDoLegPEi()[+] @i1 & RespWillDoSecNC()[+] @i2 & + ResponderFinishedSecPairing(idR, capR, ksR, idI, capI, ksI, pkI, pkR, dh, ltk) @j ==> + (Ex tk ni ci cr #k . + InitSentRandom(idI, capI, ksI, idR, capR, ksR, tk, ni, ci, cr) @k + ) +" + +lemma legPEi_secNC_weaksecret_init: +" + All idI idR capI capR ksI ksR tk ni nr stk #i1 #i2 #j. + InitWillDoLegPEi()[+] @i1 & RespWillDoSecNC()[+] @i2 & + InitiatorFinishedLegPairing(idI, capI, ksI, idR, capR, ksR, tk, ni, nr, stk) @j ==> + not (Ex #k . K(stk) @k ) +" + +lemma legPEi_secNC_weaksecret_resp: +" + All idI idR capI capR ksI ksR pkI pkR dh ltk #i1 #i2 #j. + InitWillDoLegPEi()[+] @i1 & RespWillDoSecNC()[+] @i2 & + ResponderFinishedSecPairing(idR, capR, ksR, idI, capI, ksI, pkI, pkR, dh, ltk) @j ==> + not (Ex #k . K(ltk) @k ) +" + +lemma legPEi_secNC_double_impersonation: +" + All #i1 #i2 . + InitWillDoLegPEi()[+] @i1 & RespWillDoSecNC()[+] @i2 ==> + (All idI1 idR1 capI1 capR1 ksI1 ksR1 idI2 idR2 capI2 capR2 ksI2 ksR2 tk ni nr stk pkI pkR dh ltk #j1 #j2 . + InitiatorFinishedLegPairing(idI1, capI1, ksI1, idR1, capR1, ksR1, tk, ni, nr, stk) @j1 & + ResponderFinishedSecPairing(idR2, capR2, ksR2, idI2, capI2, ksI2, pkR, pkI, dh, ltk) @j2 ==> + not (Ex #k1 #k2 . + K(stk) @k1 & K(ltk) @k2 + ) + ) +" + +#endif + +/******************************************/ +/* End lemmas about LegPEi-SecNC exchange */ +/******************************************/ + +/****************************************/ +/* Lemmas about LegPEi-SecOOBi exchange */ +/****************************************/ + +#ifdef LegPEiSecOOBi +lemma legPEi_secOOBi_functional: exists-trace +" + Ex #i1 #i2 . + InitWillDoLegPEi()[+] @i1 & RespWillDoSecOOBi()[+] @i2 & + (Ex idI1 idR1 capI1 capR1 ksI1 ksR1 idI2 idR2 capI2 capR2 ksI2 ksR2 tk ni nr stk pkI pkR dh ltk #j1 #j2 . + InitiatorFinishedLegPairing(idI1, capI1, ksI1, idR1, capR1, ksR1, tk, ni, nr, stk) @j1 & + ResponderFinishedSecPairing(idR2, capR2, ksR2, idI2, capI2, ksI2, pkR, pkI, dh, ltk) @j2 + ) +" + +lemma legPEi_secOOBi_auth_init: +" + All idI idR capI capR ksI ksR tk nli nlr stk #i1 #i2 #j . + InitWillDoLegPEi()[+] @i1 & RespWillDoSecOOBi()[+] @i2 & + InitiatorFinishedLegPairing(idI, capI, ksI, idR, capR, ksR, tk, nli, nlr, stk) @j ==> + (Ex pkI pkR dh nsi nsr ri rr ei er #k . + RespDoneDHKeyCheck(idR, capR, ksR, idI, capI, ksI, pkR, pkI, dh, nsr, nsi, rr, ri, er, ei) @k + ) +" + +lemma legPEi_secOOBi_auth_resp: +" + All idI idR capI capR ksI ksR pkI pkR dh ltk #i1 #i2 #j . + InitWillDoLegPEi()[+] @i1 & RespWillDoSecOOBi()[+] @i2 & + ResponderFinishedSecPairing(idR, capR, ksR, idI, capI, ksI, pkI, pkR, dh, ltk) @j ==> + (Ex tk ni ci cr #k . + InitSentRandom(idI, capI, ksI, idR, capR, ksR, tk, ni, ci, cr) @k + ) +" + +lemma legPEi_secOOBi_weaksecret_init: +" + All idI idR capI capR ksI ksR tk ni nr stk #i1 #i2 #j. + InitWillDoLegPEi()[+] @i1 & RespWillDoSecOOBi()[+] @i2 & + InitiatorFinishedLegPairing(idI, capI, ksI, idR, capR, ksR, tk, ni, nr, stk) @j ==> + not (Ex #k . K(stk) @k ) +" + +lemma legPEi_secOOBi_weaksecret_resp: +" + All idI idR capI capR ksI ksR pkI pkR dh ltk #i1 #i2 #j. + InitWillDoLegPEi()[+] @i1 & RespWillDoSecOOBi()[+] @i2 & + ResponderFinishedSecPairing(idR, capR, ksR, idI, capI, ksI, pkI, pkR, dh, ltk) @j ==> + not (Ex #k . K(ltk) @k ) +" + +lemma legPEi_secOOBi_double_impersonation: +" + All #i1 #i2 . + InitWillDoLegPEi()[+] @i1 & RespWillDoSecOOBi()[+] @i2 ==> + (All idI1 idR1 capI1 capR1 ksI1 ksR1 idI2 idR2 capI2 capR2 ksI2 ksR2 tk ni nr stk pkI pkR dh ltk #j1 #j2 . + InitiatorFinishedLegPairing(idI1, capI1, ksI1, idR1, capR1, ksR1, tk, ni, nr, stk) @j1 & + ResponderFinishedSecPairing(idR2, capR2, ksR2, idI2, capI2, ksI2, pkR, pkI, dh, ltk) @j2 ==> + not (Ex #k1 #k2 . + K(stk) @k1 & K(ltk) @k2 + ) + ) +" + +#endif + +/********************************************/ +/* End lemmas about LegPEi-SecOOBi exchange */ +/********************************************/ + +/****************************************/ +/* Lemmas about LegPEi-SecOOBo exchange */ +/****************************************/ + +#ifdef LegPEiSecOOBo +lemma legPEi_secOOBo_functional: exists-trace +" + Ex #i1 #i2 . + InitWillDoLegPEi()[+] @i1 & RespWillDoSecOOBo()[+] @i2 & + (Ex idI1 idR1 capI1 capR1 ksI1 ksR1 idI2 idR2 capI2 capR2 ksI2 ksR2 tk ni nr stk pkI pkR dh ltk #j1 #j2 . + InitiatorFinishedLegPairing(idI1, capI1, ksI1, idR1, capR1, ksR1, tk, ni, nr, stk) @j1 & + ResponderFinishedSecPairing(idR2, capR2, ksR2, idI2, capI2, ksI2, pkR, pkI, dh, ltk) @j2 + ) +" + +lemma legPEi_secOOBo_auth_init: +" + All idI idR capI capR ksI ksR tk nli nlr stk #i1 #i2 #j . + InitWillDoLegPEi()[+] @i1 & RespWillDoSecOOBo()[+] @i2 & + InitiatorFinishedLegPairing(idI, capI, ksI, idR, capR, ksR, tk, nli, nlr, stk) @j ==> + (Ex pkI pkR dh nsi nsr ri rr ei er #k . + RespDoneDHKeyCheck(idR, capR, ksR, idI, capI, ksI, pkR, pkI, dh, nsr, nsi, rr, ri, er, ei) @k + ) +" + +lemma legPEi_secOOBo_auth_resp: +" + All idI idR capI capR ksI ksR pkI pkR dh ltk #i1 #i2 #j . + InitWillDoLegPEi()[+] @i1 & RespWillDoSecOOBo()[+] @i2 & + ResponderFinishedSecPairing(idR, capR, ksR, idI, capI, ksI, pkI, pkR, dh, ltk) @j ==> + (Ex tk ni ci cr #k . + InitSentRandom(idI, capI, ksI, idR, capR, ksR, tk, ni, ci, cr) @k + ) +" + +lemma legPEi_secOOBo_weaksecret_init: +" + All idI idR capI capR ksI ksR tk ni nr stk #i1 #i2 #j. + InitWillDoLegPEi()[+] @i1 & RespWillDoSecOOBo()[+] @i2 & + InitiatorFinishedLegPairing(idI, capI, ksI, idR, capR, ksR, tk, ni, nr, stk) @j ==> + not (Ex #k . K(stk) @k ) +" + +lemma legPEi_secOOBo_weaksecret_resp: +" + All idI idR capI capR ksI ksR pkI pkR dh ltk #i1 #i2 #j. + InitWillDoLegPEi()[+] @i1 & RespWillDoSecOOBo()[+] @i2 & + ResponderFinishedSecPairing(idR, capR, ksR, idI, capI, ksI, pkI, pkR, dh, ltk) @j ==> + not (Ex #k . K(ltk) @k ) +" + +lemma legPEi_secOOBo_double_impersonation: +" + All #i1 #i2 . + InitWillDoLegPEi()[+] @i1 & RespWillDoSecOOBo()[+] @i2 ==> + (All idI1 idR1 capI1 capR1 ksI1 ksR1 idI2 idR2 capI2 capR2 ksI2 ksR2 tk ni nr stk pkI pkR dh ltk #j1 #j2 . + InitiatorFinishedLegPairing(idI1, capI1, ksI1, idR1, capR1, ksR1, tk, ni, nr, stk) @j1 & + ResponderFinishedSecPairing(idR2, capR2, ksR2, idI2, capI2, ksI2, pkR, pkI, dh, ltk) @j2 ==> + not (Ex #k1 #k2 . + K(stk) @k1 & K(ltk) @k2 + ) + ) +" + +#endif + +/********************************************/ +/* End lemmas about LegPEi-SecOOBo exchange */ +/********************************************/ + +/*****************************************/ +/* Lemmas about LegPEi-SecOOBio exchange */ +/*****************************************/ + +#ifdef LegPEiSecOOBio +lemma legPEi_secOOBio_functional: exists-trace +" + Ex #i1 #i2 . + InitWillDoLegPEi()[+] @i1 & RespWillDoSecOOBio()[+] @i2 & + (Ex idI1 idR1 capI1 capR1 ksI1 ksR1 idI2 idR2 capI2 capR2 ksI2 ksR2 tk ni nr stk pkI pkR dh ltk #j1 #j2 . + InitiatorFinishedLegPairing(idI1, capI1, ksI1, idR1, capR1, ksR1, tk, ni, nr, stk) @j1 & + ResponderFinishedSecPairing(idR2, capR2, ksR2, idI2, capI2, ksI2, pkR, pkI, dh, ltk) @j2 + ) +" + +lemma legPEi_secOOBio_auth_init: +" + All idI idR capI capR ksI ksR tk nli nlr stk #i1 #i2 #j . + InitWillDoLegPEi()[+] @i1 & RespWillDoSecOOBio()[+] @i2 & + InitiatorFinishedLegPairing(idI, capI, ksI, idR, capR, ksR, tk, nli, nlr, stk) @j ==> + (Ex pkI pkR dh nsi nsr ri rr ei er #k . + RespDoneDHKeyCheck(idR, capR, ksR, idI, capI, ksI, pkR, pkI, dh, nsr, nsi, rr, ri, er, ei) @k + ) +" + +lemma legPEi_secOOBio_auth_resp: +" + All idI idR capI capR ksI ksR pkI pkR dh ltk #i1 #i2 #j . + InitWillDoLegPEi()[+] @i1 & RespWillDoSecOOBio()[+] @i2 & + ResponderFinishedSecPairing(idR, capR, ksR, idI, capI, ksI, pkI, pkR, dh, ltk) @j ==> + (Ex tk ni ci cr #k . + InitSentRandom(idI, capI, ksI, idR, capR, ksR, tk, ni, ci, cr) @k + ) +" + +lemma legPEi_secOOBio_weaksecret_init: +" + All idI idR capI capR ksI ksR tk ni nr stk #i1 #i2 #j. + InitWillDoLegPEi()[+] @i1 & RespWillDoSecOOBio()[+] @i2 & + InitiatorFinishedLegPairing(idI, capI, ksI, idR, capR, ksR, tk, ni, nr, stk) @j ==> + not (Ex #k . K(stk) @k ) +" + +lemma legPEi_secOOBio_weaksecret_resp: +" + All idI idR capI capR ksI ksR pkI pkR dh ltk #i1 #i2 #j. + InitWillDoLegPEi()[+] @i1 & RespWillDoSecOOBio()[+] @i2 & + ResponderFinishedSecPairing(idR, capR, ksR, idI, capI, ksI, pkI, pkR, dh, ltk) @j ==> + not (Ex #k . K(ltk) @k ) +" + +lemma legPEi_secOOBio_double_impersonation: +" + All #i1 #i2 . + InitWillDoLegPEi()[+] @i1 & RespWillDoSecOOBio()[+] @i2 ==> + (All idI1 idR1 capI1 capR1 ksI1 ksR1 idI2 idR2 capI2 capR2 ksI2 ksR2 tk ni nr stk pkI pkR dh ltk #j1 #j2 . + InitiatorFinishedLegPairing(idI1, capI1, ksI1, idR1, capR1, ksR1, tk, ni, nr, stk) @j1 & + ResponderFinishedSecPairing(idR2, capR2, ksR2, idI2, capI2, ksI2, pkR, pkI, dh, ltk) @j2 ==> + not (Ex #k1 #k2 . + K(stk) @k1 & K(ltk) @k2 + ) + ) +" + +#endif + +/*********************************************/ +/* End lemmas about LegPEi-SecOOBio exchange */ +/*********************************************/ + +/**************************************/ +/* Lemmas about LegPEo-SecJW exchange */ +/**************************************/ + +#ifdef LegPEoSecJW +lemma legPEo_secJW_functional: exists-trace +" + Ex #i1 #i2 . + InitWillDoLegPEo()[+] @i1 & RespWillDoSecJW()[+] @i2 & + (Ex idI1 idR1 capI1 capR1 ksI1 ksR1 idI2 idR2 capI2 capR2 ksI2 ksR2 tk ni nr stk pkI pkR dh ltk #j1 #j2 . + InitiatorFinishedLegPairing(idI1, capI1, ksI1, idR1, capR1, ksR1, tk, ni, nr, stk) @j1 & + ResponderFinishedSecPairing(idR2, capR2, ksR2, idI2, capI2, ksI2, pkR, pkI, dh, ltk) @j2 + ) +" + +lemma legPEo_secJW_auth_init: +" + All idI idR capI capR ksI ksR tk nli nlr stk #i1 #i2 #j . + InitWillDoLegPEo()[+] @i1 & RespWillDoSecJW()[+] @i2 & + InitiatorFinishedLegPairing(idI, capI, ksI, idR, capR, ksR, tk, nli, nlr, stk) @j ==> + (Ex pkI pkR dh nsi nsr ri rr ei er #k . + RespDoneDHKeyCheck(idR, capR, ksR, idI, capI, ksI, pkR, pkI, dh, nsr, nsi, rr, ri, er, ei) @k + ) +" + +lemma legPEo_secJW_auth_resp: +" + All idI idR capI capR ksI ksR pkI pkR dh ltk #i1 #i2 #j . + InitWillDoLegPEo()[+] @i1 & RespWillDoSecJW()[+] @i2 & + ResponderFinishedSecPairing(idR, capR, ksR, idI, capI, ksI, pkI, pkR, dh, ltk) @j ==> + (Ex tk ni ci cr #k . + InitSentRandom(idI, capI, ksI, idR, capR, ksR, tk, ni, ci, cr) @k + ) +" + +lemma legPEo_secJW_weaksecret_init: +" + All idI idR capI capR ksI ksR tk ni nr stk #i1 #i2 #j. + InitWillDoLegPEo()[+] @i1 & RespWillDoSecJW()[+] @i2 & + InitiatorFinishedLegPairing(idI, capI, ksI, idR, capR, ksR, tk, ni, nr, stk) @j ==> + not (Ex #k . K(stk) @k ) +" + +lemma legPEo_secJW_weaksecret_resp: +" + All idI idR capI capR ksI ksR pkI pkR dh ltk #i1 #i2 #j. + InitWillDoLegPEo()[+] @i1 & RespWillDoSecJW()[+] @i2 & + ResponderFinishedSecPairing(idR, capR, ksR, idI, capI, ksI, pkI, pkR, dh, ltk) @j ==> + not (Ex #k . K(ltk) @k ) +" + +lemma legPEo_secJW_double_impersonation: +" + All #i1 #i2 . + InitWillDoLegPEo()[+] @i1 & RespWillDoSecJW()[+] @i2 ==> + (All idI1 idR1 capI1 capR1 ksI1 ksR1 idI2 idR2 capI2 capR2 ksI2 ksR2 tk ni nr stk pkI pkR dh ltk #j1 #j2 . + InitiatorFinishedLegPairing(idI1, capI1, ksI1, idR1, capR1, ksR1, tk, ni, nr, stk) @j1 & + ResponderFinishedSecPairing(idR2, capR2, ksR2, idI2, capI2, ksI2, pkR, pkI, dh, ltk) @j2 ==> + not (Ex #k1 #k2 . + K(stk) @k1 & K(ltk) @k2 + ) + ) +" + +#endif + +/******************************************/ +/* End lemmas about LegPEo-SecJW exchange */ +/******************************************/ + +/***************************************/ +/* Lemmas about LegPEo-SecPEi exchange */ +/***************************************/ + +#ifdef LegPEoSecPEi +lemma legPEo_secPEi_functional: exists-trace +" + Ex #i1 #i2 . + InitWillDoLegPEo()[+] @i1 & RespWillDoSecPEi()[+] @i2 & + (Ex idI1 idR1 capI1 capR1 ksI1 ksR1 idI2 idR2 capI2 capR2 ksI2 ksR2 tk ni nr stk pkI pkR dh ltk #j1 #j2 . + InitiatorFinishedLegPairing(idI1, capI1, ksI1, idR1, capR1, ksR1, tk, ni, nr, stk) @j1 & + ResponderFinishedSecPairing(idR2, capR2, ksR2, idI2, capI2, ksI2, pkR, pkI, dh, ltk) @j2 + ) +" + +lemma legPEo_secPEi_auth_init: +" + All idI idR capI capR ksI ksR tk nli nlr stk #i1 #i2 #j . + InitWillDoLegPEo()[+] @i1 & RespWillDoSecPEi()[+] @i2 & + InitiatorFinishedLegPairing(idI, capI, ksI, idR, capR, ksR, tk, nli, nlr, stk) @j ==> + (Ex pkI pkR dh nsi nsr ri rr ei er #k . + RespDoneDHKeyCheck(idR, capR, ksR, idI, capI, ksI, pkR, pkI, dh, nsr, nsi, rr, ri, er, ei) @k + ) +" + +lemma legPEo_secPEi_auth_resp: +" + All idI idR capI capR ksI ksR pkI pkR dh ltk #i1 #i2 #j . + InitWillDoLegPEo()[+] @i1 & RespWillDoSecPEi()[+] @i2 & + ResponderFinishedSecPairing(idR, capR, ksR, idI, capI, ksI, pkI, pkR, dh, ltk) @j ==> + (Ex tk ni ci cr #k . + InitSentRandom(idI, capI, ksI, idR, capR, ksR, tk, ni, ci, cr) @k + ) +" + +lemma legPEo_secPEi_weaksecret_init: +" + All idI idR capI capR ksI ksR tk ni nr stk #i1 #i2 #j. + InitWillDoLegPEo()[+] @i1 & RespWillDoSecPEi()[+] @i2 & + InitiatorFinishedLegPairing(idI, capI, ksI, idR, capR, ksR, tk, ni, nr, stk) @j ==> + not (Ex #k . K(stk) @k ) +" + +lemma legPEo_secPEi_weaksecret_resp: +" + All idI idR capI capR ksI ksR pkI pkR dh ltk #i1 #i2 #j. + InitWillDoLegPEo()[+] @i1 & RespWillDoSecPEi()[+] @i2 & + ResponderFinishedSecPairing(idR, capR, ksR, idI, capI, ksI, pkI, pkR, dh, ltk) @j ==> + not (Ex #k . K(ltk) @k ) +" + +lemma legPEo_secPEi_double_impersonation: +" + All #i1 #i2 . + InitWillDoLegPEo()[+] @i1 & RespWillDoSecPEi()[+] @i2 ==> + (All idI1 idR1 capI1 capR1 ksI1 ksR1 idI2 idR2 capI2 capR2 ksI2 ksR2 tk ni nr stk pkI pkR dh ltk #j1 #j2 . + InitiatorFinishedLegPairing(idI1, capI1, ksI1, idR1, capR1, ksR1, tk, ni, nr, stk) @j1 & + ResponderFinishedSecPairing(idR2, capR2, ksR2, idI2, capI2, ksI2, pkR, pkI, dh, ltk) @j2 ==> + not (Ex #k1 #k2 . + K(stk) @k1 & K(ltk) @k2 + ) + ) +" + +#endif + +/*******************************************/ +/* End lemmas about LegPEo-SecPEi exchange */ +/*******************************************/ + +/***************************************/ +/* Lemmas about LegPEo-SecPEo exchange */ +/***************************************/ + +#ifdef LegPEoSecPEo +lemma legPEo_secPEo_functional: exists-trace +" + Ex #i1 #i2 . + InitWillDoLegPEo()[+] @i1 & RespWillDoSecPEo()[+] @i2 & + (Ex idI1 idR1 capI1 capR1 ksI1 ksR1 idI2 idR2 capI2 capR2 ksI2 ksR2 tk ni nr stk pkI pkR dh ltk #j1 #j2 . + InitiatorFinishedLegPairing(idI1, capI1, ksI1, idR1, capR1, ksR1, tk, ni, nr, stk) @j1 & + ResponderFinishedSecPairing(idR2, capR2, ksR2, idI2, capI2, ksI2, pkR, pkI, dh, ltk) @j2 + ) +" + +lemma legPEo_secPEo_auth_init: +" + All idI idR capI capR ksI ksR tk nli nlr stk #i1 #i2 #j . + InitWillDoLegPEo()[+] @i1 & RespWillDoSecPEo()[+] @i2 & + InitiatorFinishedLegPairing(idI, capI, ksI, idR, capR, ksR, tk, nli, nlr, stk) @j ==> + (Ex pkI pkR dh nsi nsr ri rr ei er #k . + RespDoneDHKeyCheck(idR, capR, ksR, idI, capI, ksI, pkR, pkI, dh, nsr, nsi, rr, ri, er, ei) @k + ) +" + +lemma legPEo_secPEo_auth_resp: +" + All idI idR capI capR ksI ksR pkI pkR dh ltk #i1 #i2 #j . + InitWillDoLegPEo()[+] @i1 & RespWillDoSecPEo()[+] @i2 & + ResponderFinishedSecPairing(idR, capR, ksR, idI, capI, ksI, pkI, pkR, dh, ltk) @j ==> + (Ex tk ni ci cr #k . + InitSentRandom(idI, capI, ksI, idR, capR, ksR, tk, ni, ci, cr) @k + ) +" + +lemma legPEo_secPEo_weaksecret_init: +" + All idI idR capI capR ksI ksR tk ni nr stk #i1 #i2 #j. + InitWillDoLegPEo()[+] @i1 & RespWillDoSecPEo()[+] @i2 & + InitiatorFinishedLegPairing(idI, capI, ksI, idR, capR, ksR, tk, ni, nr, stk) @j ==> + not (Ex #k . K(stk) @k ) +" + +lemma legPEo_secPEo_weaksecret_resp: +" + All idI idR capI capR ksI ksR pkI pkR dh ltk #i1 #i2 #j. + InitWillDoLegPEo()[+] @i1 & RespWillDoSecPEo()[+] @i2 & + ResponderFinishedSecPairing(idR, capR, ksR, idI, capI, ksI, pkI, pkR, dh, ltk) @j ==> + not (Ex #k . K(ltk) @k ) +" + +lemma legPEo_secPEo_double_impersonation: +" + All #i1 #i2 . + InitWillDoLegPEo()[+] @i1 & RespWillDoSecPEo()[+] @i2 ==> + (All idI1 idR1 capI1 capR1 ksI1 ksR1 idI2 idR2 capI2 capR2 ksI2 ksR2 tk ni nr stk pkI pkR dh ltk #j1 #j2 . + InitiatorFinishedLegPairing(idI1, capI1, ksI1, idR1, capR1, ksR1, tk, ni, nr, stk) @j1 & + ResponderFinishedSecPairing(idR2, capR2, ksR2, idI2, capI2, ksI2, pkR, pkI, dh, ltk) @j2 ==> + not (Ex #k1 #k2 . + K(stk) @k1 & K(ltk) @k2 + ) + ) +" + +#endif + +/*******************************************/ +/* End lemmas about LegPEo-SecPEo exchange */ +/*******************************************/ + +/****************************************/ +/* Lemmas about LegPEo-SecPEio exchange */ +/****************************************/ + +#ifdef LegPEoSecPEio +lemma legPEo_secPEio_functional: exists-trace +" + Ex #i1 #i2 . + InitWillDoLegPEo()[+] @i1 & RespWillDoSecPEio()[+] @i2 & + (Ex idI1 idR1 capI1 capR1 ksI1 ksR1 idI2 idR2 capI2 capR2 ksI2 ksR2 tk ni nr stk pkI pkR dh ltk #j1 #j2 . + InitiatorFinishedLegPairing(idI1, capI1, ksI1, idR1, capR1, ksR1, tk, ni, nr, stk) @j1 & + ResponderFinishedSecPairing(idR2, capR2, ksR2, idI2, capI2, ksI2, pkR, pkI, dh, ltk) @j2 + ) +" + +lemma legPEo_secPEio_auth_init: +" + All idI idR capI capR ksI ksR tk nli nlr stk #i1 #i2 #j . + InitWillDoLegPEo()[+] @i1 & RespWillDoSecPEio()[+] @i2 & + InitiatorFinishedLegPairing(idI, capI, ksI, idR, capR, ksR, tk, nli, nlr, stk) @j ==> + (Ex pkI pkR dh nsi nsr ri rr ei er #k . + RespDoneDHKeyCheck(idR, capR, ksR, idI, capI, ksI, pkR, pkI, dh, nsr, nsi, rr, ri, er, ei) @k + ) +" + +lemma legPEo_secPEio_auth_resp: +" + All idI idR capI capR ksI ksR pkI pkR dh ltk #i1 #i2 #j . + InitWillDoLegPEo()[+] @i1 & RespWillDoSecPEio()[+] @i2 & + ResponderFinishedSecPairing(idR, capR, ksR, idI, capI, ksI, pkI, pkR, dh, ltk) @j ==> + (Ex tk ni ci cr #k . + InitSentRandom(idI, capI, ksI, idR, capR, ksR, tk, ni, ci, cr) @k + ) +" + +lemma legPEo_secPEio_weaksecret_init: +" + All idI idR capI capR ksI ksR tk ni nr stk #i1 #i2 #j. + InitWillDoLegPEo()[+] @i1 & RespWillDoSecPEio()[+] @i2 & + InitiatorFinishedLegPairing(idI, capI, ksI, idR, capR, ksR, tk, ni, nr, stk) @j ==> + not (Ex #k . K(stk) @k ) +" + +lemma legPEo_secPEio_weaksecret_resp: +" + All idI idR capI capR ksI ksR pkI pkR dh ltk #i1 #i2 #j. + InitWillDoLegPEo()[+] @i1 & RespWillDoSecPEio()[+] @i2 & + ResponderFinishedSecPairing(idR, capR, ksR, idI, capI, ksI, pkI, pkR, dh, ltk) @j ==> + not (Ex #k . K(ltk) @k ) +" + +lemma legPEo_secPEio_double_impersonation: +" + All #i1 #i2 . + InitWillDoLegPEo()[+] @i1 & RespWillDoSecPEio()[+] @i2 ==> + (All idI1 idR1 capI1 capR1 ksI1 ksR1 idI2 idR2 capI2 capR2 ksI2 ksR2 tk ni nr stk pkI pkR dh ltk #j1 #j2 . + InitiatorFinishedLegPairing(idI1, capI1, ksI1, idR1, capR1, ksR1, tk, ni, nr, stk) @j1 & + ResponderFinishedSecPairing(idR2, capR2, ksR2, idI2, capI2, ksI2, pkR, pkI, dh, ltk) @j2 ==> + not (Ex #k1 #k2 . + K(stk) @k1 & K(ltk) @k2 + ) + ) +" + +#endif + +/********************************************/ +/* End lemmas about LegPEo-SecPEio exchange */ +/********************************************/ + +/**************************************/ +/* Lemmas about LegPEo-SecNC exchange */ +/**************************************/ + +#ifdef LegPEoSecNC +lemma legPEo_secNC_functional: exists-trace +" + Ex #i1 #i2 . + InitWillDoLegPEo()[+] @i1 & RespWillDoSecNC()[+] @i2 & + (Ex idI1 idR1 capI1 capR1 ksI1 ksR1 idI2 idR2 capI2 capR2 ksI2 ksR2 tk ni nr stk pkI pkR dh ltk #j1 #j2 . + InitiatorFinishedLegPairing(idI1, capI1, ksI1, idR1, capR1, ksR1, tk, ni, nr, stk) @j1 & + ResponderFinishedSecPairing(idR2, capR2, ksR2, idI2, capI2, ksI2, pkR, pkI, dh, ltk) @j2 + ) +" + +lemma legPEo_secNC_auth_init: +" + All idI idR capI capR ksI ksR tk nli nlr stk #i1 #i2 #j . + InitWillDoLegPEo()[+] @i1 & RespWillDoSecNC()[+] @i2 & + InitiatorFinishedLegPairing(idI, capI, ksI, idR, capR, ksR, tk, nli, nlr, stk) @j ==> + (Ex pkI pkR dh nsi nsr ri rr ei er #k . + RespDoneDHKeyCheck(idR, capR, ksR, idI, capI, ksI, pkR, pkI, dh, nsr, nsi, rr, ri, er, ei) @k + ) +" + +lemma legPEo_secNC_auth_resp: +" + All idI idR capI capR ksI ksR pkI pkR dh ltk #i1 #i2 #j . + InitWillDoLegPEo()[+] @i1 & RespWillDoSecNC()[+] @i2 & + ResponderFinishedSecPairing(idR, capR, ksR, idI, capI, ksI, pkI, pkR, dh, ltk) @j ==> + (Ex tk ni ci cr #k . + InitSentRandom(idI, capI, ksI, idR, capR, ksR, tk, ni, ci, cr) @k + ) +" + +lemma legPEo_secNC_weaksecret_init: +" + All idI idR capI capR ksI ksR tk ni nr stk #i1 #i2 #j. + InitWillDoLegPEo()[+] @i1 & RespWillDoSecNC()[+] @i2 & + InitiatorFinishedLegPairing(idI, capI, ksI, idR, capR, ksR, tk, ni, nr, stk) @j ==> + not (Ex #k . K(stk) @k ) +" + +lemma legPEo_secNC_weaksecret_resp: +" + All idI idR capI capR ksI ksR pkI pkR dh ltk #i1 #i2 #j. + InitWillDoLegPEo()[+] @i1 & RespWillDoSecNC()[+] @i2 & + ResponderFinishedSecPairing(idR, capR, ksR, idI, capI, ksI, pkI, pkR, dh, ltk) @j ==> + not (Ex #k . K(ltk) @k ) +" + +lemma legPEo_secNC_double_impersonation: +" + All #i1 #i2 . + InitWillDoLegPEo()[+] @i1 & RespWillDoSecNC()[+] @i2 ==> + (All idI1 idR1 capI1 capR1 ksI1 ksR1 idI2 idR2 capI2 capR2 ksI2 ksR2 tk ni nr stk pkI pkR dh ltk #j1 #j2 . + InitiatorFinishedLegPairing(idI1, capI1, ksI1, idR1, capR1, ksR1, tk, ni, nr, stk) @j1 & + ResponderFinishedSecPairing(idR2, capR2, ksR2, idI2, capI2, ksI2, pkR, pkI, dh, ltk) @j2 ==> + not (Ex #k1 #k2 . + K(stk) @k1 & K(ltk) @k2 + ) + ) +" + +#endif + +/******************************************/ +/* End lemmas about LegPEo-SecNC exchange */ +/******************************************/ + +/****************************************/ +/* Lemmas about LegPEo-SecOOBi exchange */ +/****************************************/ + +#ifdef LegPEoSecOOBi +lemma legPEo_secOOBi_functional: exists-trace +" + Ex #i1 #i2 . + InitWillDoLegPEo()[+] @i1 & RespWillDoSecOOBi()[+] @i2 & + (Ex idI1 idR1 capI1 capR1 ksI1 ksR1 idI2 idR2 capI2 capR2 ksI2 ksR2 tk ni nr stk pkI pkR dh ltk #j1 #j2 . + InitiatorFinishedLegPairing(idI1, capI1, ksI1, idR1, capR1, ksR1, tk, ni, nr, stk) @j1 & + ResponderFinishedSecPairing(idR2, capR2, ksR2, idI2, capI2, ksI2, pkR, pkI, dh, ltk) @j2 + ) +" + +lemma legPEo_secOOBi_auth_init: +" + All idI idR capI capR ksI ksR tk nli nlr stk #i1 #i2 #j . + InitWillDoLegPEo()[+] @i1 & RespWillDoSecOOBi()[+] @i2 & + InitiatorFinishedLegPairing(idI, capI, ksI, idR, capR, ksR, tk, nli, nlr, stk) @j ==> + (Ex pkI pkR dh nsi nsr ri rr ei er #k . + RespDoneDHKeyCheck(idR, capR, ksR, idI, capI, ksI, pkR, pkI, dh, nsr, nsi, rr, ri, er, ei) @k + ) +" + +lemma legPEo_secOOBi_auth_resp: +" + All idI idR capI capR ksI ksR pkI pkR dh ltk #i1 #i2 #j . + InitWillDoLegPEo()[+] @i1 & RespWillDoSecOOBi()[+] @i2 & + ResponderFinishedSecPairing(idR, capR, ksR, idI, capI, ksI, pkI, pkR, dh, ltk) @j ==> + (Ex tk ni ci cr #k . + InitSentRandom(idI, capI, ksI, idR, capR, ksR, tk, ni, ci, cr) @k + ) +" + +lemma legPEo_secOOBi_weaksecret_init: +" + All idI idR capI capR ksI ksR tk ni nr stk #i1 #i2 #j. + InitWillDoLegPEo()[+] @i1 & RespWillDoSecOOBi()[+] @i2 & + InitiatorFinishedLegPairing(idI, capI, ksI, idR, capR, ksR, tk, ni, nr, stk) @j ==> + not (Ex #k . K(stk) @k ) +" + +lemma legPEo_secOOBi_weaksecret_resp: +" + All idI idR capI capR ksI ksR pkI pkR dh ltk #i1 #i2 #j. + InitWillDoLegPEo()[+] @i1 & RespWillDoSecOOBi()[+] @i2 & + ResponderFinishedSecPairing(idR, capR, ksR, idI, capI, ksI, pkI, pkR, dh, ltk) @j ==> + not (Ex #k . K(ltk) @k ) +" + +lemma legPEo_secOOBi_double_impersonation: +" + All #i1 #i2 . + InitWillDoLegPEo()[+] @i1 & RespWillDoSecOOBi()[+] @i2 ==> + (All idI1 idR1 capI1 capR1 ksI1 ksR1 idI2 idR2 capI2 capR2 ksI2 ksR2 tk ni nr stk pkI pkR dh ltk #j1 #j2 . + InitiatorFinishedLegPairing(idI1, capI1, ksI1, idR1, capR1, ksR1, tk, ni, nr, stk) @j1 & + ResponderFinishedSecPairing(idR2, capR2, ksR2, idI2, capI2, ksI2, pkR, pkI, dh, ltk) @j2 ==> + not (Ex #k1 #k2 . + K(stk) @k1 & K(ltk) @k2 + ) + ) +" + +#endif + +/********************************************/ +/* End lemmas about LegPEo-SecOOBi exchange */ +/********************************************/ + +/****************************************/ +/* Lemmas about LegPEo-SecOOBo exchange */ +/****************************************/ + +#ifdef LegPEoSecOOBo +lemma legPEo_secOOBo_functional: exists-trace +" + Ex #i1 #i2 . + InitWillDoLegPEo()[+] @i1 & RespWillDoSecOOBo()[+] @i2 & + (Ex idI1 idR1 capI1 capR1 ksI1 ksR1 idI2 idR2 capI2 capR2 ksI2 ksR2 tk ni nr stk pkI pkR dh ltk #j1 #j2 . + InitiatorFinishedLegPairing(idI1, capI1, ksI1, idR1, capR1, ksR1, tk, ni, nr, stk) @j1 & + ResponderFinishedSecPairing(idR2, capR2, ksR2, idI2, capI2, ksI2, pkR, pkI, dh, ltk) @j2 + ) +" + +lemma legPEo_secOOBo_auth_init: +" + All idI idR capI capR ksI ksR tk nli nlr stk #i1 #i2 #j . + InitWillDoLegPEo()[+] @i1 & RespWillDoSecOOBo()[+] @i2 & + InitiatorFinishedLegPairing(idI, capI, ksI, idR, capR, ksR, tk, nli, nlr, stk) @j ==> + (Ex pkI pkR dh nsi nsr ri rr ei er #k . + RespDoneDHKeyCheck(idR, capR, ksR, idI, capI, ksI, pkR, pkI, dh, nsr, nsi, rr, ri, er, ei) @k + ) +" + +lemma legPEo_secOOBo_auth_resp: +" + All idI idR capI capR ksI ksR pkI pkR dh ltk #i1 #i2 #j . + InitWillDoLegPEo()[+] @i1 & RespWillDoSecOOBo()[+] @i2 & + ResponderFinishedSecPairing(idR, capR, ksR, idI, capI, ksI, pkI, pkR, dh, ltk) @j ==> + (Ex tk ni ci cr #k . + InitSentRandom(idI, capI, ksI, idR, capR, ksR, tk, ni, ci, cr) @k + ) +" + +lemma legPEo_secOOBo_weaksecret_init: +" + All idI idR capI capR ksI ksR tk ni nr stk #i1 #i2 #j. + InitWillDoLegPEo()[+] @i1 & RespWillDoSecOOBo()[+] @i2 & + InitiatorFinishedLegPairing(idI, capI, ksI, idR, capR, ksR, tk, ni, nr, stk) @j ==> + not (Ex #k . K(stk) @k ) +" + +lemma legPEo_secOOBo_weaksecret_resp: +" + All idI idR capI capR ksI ksR pkI pkR dh ltk #i1 #i2 #j. + InitWillDoLegPEo()[+] @i1 & RespWillDoSecOOBo()[+] @i2 & + ResponderFinishedSecPairing(idR, capR, ksR, idI, capI, ksI, pkI, pkR, dh, ltk) @j ==> + not (Ex #k . K(ltk) @k ) +" + +lemma legPEo_secOOBo_double_impersonation: +" + All #i1 #i2 . + InitWillDoLegPEo()[+] @i1 & RespWillDoSecOOBo()[+] @i2 ==> + (All idI1 idR1 capI1 capR1 ksI1 ksR1 idI2 idR2 capI2 capR2 ksI2 ksR2 tk ni nr stk pkI pkR dh ltk #j1 #j2 . + InitiatorFinishedLegPairing(idI1, capI1, ksI1, idR1, capR1, ksR1, tk, ni, nr, stk) @j1 & + ResponderFinishedSecPairing(idR2, capR2, ksR2, idI2, capI2, ksI2, pkR, pkI, dh, ltk) @j2 ==> + not (Ex #k1 #k2 . + K(stk) @k1 & K(ltk) @k2 + ) + ) +" + +#endif + +/********************************************/ +/* End lemmas about LegPEo-SecOOBo exchange */ +/********************************************/ + +/*****************************************/ +/* Lemmas about LegPEo-SecOOBio exchange */ +/*****************************************/ + +#ifdef LegPEoSecOOBio +lemma legPEo_secOOBio_functional: exists-trace +" + Ex #i1 #i2 . + InitWillDoLegPEo()[+] @i1 & RespWillDoSecOOBio()[+] @i2 & + (Ex idI1 idR1 capI1 capR1 ksI1 ksR1 idI2 idR2 capI2 capR2 ksI2 ksR2 tk ni nr stk pkI pkR dh ltk #j1 #j2 . + InitiatorFinishedLegPairing(idI1, capI1, ksI1, idR1, capR1, ksR1, tk, ni, nr, stk) @j1 & + ResponderFinishedSecPairing(idR2, capR2, ksR2, idI2, capI2, ksI2, pkR, pkI, dh, ltk) @j2 + ) +" + +lemma legPEo_secOOBio_auth_init: +" + All idI idR capI capR ksI ksR tk nli nlr stk #i1 #i2 #j . + InitWillDoLegPEo()[+] @i1 & RespWillDoSecOOBio()[+] @i2 & + InitiatorFinishedLegPairing(idI, capI, ksI, idR, capR, ksR, tk, nli, nlr, stk) @j ==> + (Ex pkI pkR dh nsi nsr ri rr ei er #k . + RespDoneDHKeyCheck(idR, capR, ksR, idI, capI, ksI, pkR, pkI, dh, nsr, nsi, rr, ri, er, ei) @k + ) +" + +lemma legPEo_secOOBio_auth_resp: +" + All idI idR capI capR ksI ksR pkI pkR dh ltk #i1 #i2 #j . + InitWillDoLegPEo()[+] @i1 & RespWillDoSecOOBio()[+] @i2 & + ResponderFinishedSecPairing(idR, capR, ksR, idI, capI, ksI, pkI, pkR, dh, ltk) @j ==> + (Ex tk ni ci cr #k . + InitSentRandom(idI, capI, ksI, idR, capR, ksR, tk, ni, ci, cr) @k + ) +" + +lemma legPEo_secOOBio_weaksecret_init: +" + All idI idR capI capR ksI ksR tk ni nr stk #i1 #i2 #j. + InitWillDoLegPEo()[+] @i1 & RespWillDoSecOOBio()[+] @i2 & + InitiatorFinishedLegPairing(idI, capI, ksI, idR, capR, ksR, tk, ni, nr, stk) @j ==> + not (Ex #k . K(stk) @k ) +" + +lemma legPEo_secOOBio_weaksecret_resp: +" + All idI idR capI capR ksI ksR pkI pkR dh ltk #i1 #i2 #j. + InitWillDoLegPEo()[+] @i1 & RespWillDoSecOOBio()[+] @i2 & + ResponderFinishedSecPairing(idR, capR, ksR, idI, capI, ksI, pkI, pkR, dh, ltk) @j ==> + not (Ex #k . K(ltk) @k ) +" + +lemma legPEo_secOOBio_double_impersonation: +" + All #i1 #i2 . + InitWillDoLegPEo()[+] @i1 & RespWillDoSecOOBio()[+] @i2 ==> + (All idI1 idR1 capI1 capR1 ksI1 ksR1 idI2 idR2 capI2 capR2 ksI2 ksR2 tk ni nr stk pkI pkR dh ltk #j1 #j2 . + InitiatorFinishedLegPairing(idI1, capI1, ksI1, idR1, capR1, ksR1, tk, ni, nr, stk) @j1 & + ResponderFinishedSecPairing(idR2, capR2, ksR2, idI2, capI2, ksI2, pkR, pkI, dh, ltk) @j2 ==> + not (Ex #k1 #k2 . + K(stk) @k1 & K(ltk) @k2 + ) + ) +" + +#endif + +/*********************************************/ +/* End lemmas about LegPEo-SecOOBio exchange */ +/*********************************************/ + +/***************************************/ +/* Lemmas about LegPEio-SecJW exchange */ +/***************************************/ + +#ifdef LegPEioSecJW +lemma legPEio_secJW_functional: exists-trace +" + Ex #i1 #i2 . + InitWillDoLegPEio()[+] @i1 & RespWillDoSecJW()[+] @i2 & + (Ex idI1 idR1 capI1 capR1 ksI1 ksR1 idI2 idR2 capI2 capR2 ksI2 ksR2 tk ni nr stk pkI pkR dh ltk #j1 #j2 . + InitiatorFinishedLegPairing(idI1, capI1, ksI1, idR1, capR1, ksR1, tk, ni, nr, stk) @j1 & + ResponderFinishedSecPairing(idR2, capR2, ksR2, idI2, capI2, ksI2, pkR, pkI, dh, ltk) @j2 + ) +" + +lemma legPEio_secJW_auth_init: +" + All idI idR capI capR ksI ksR tk nli nlr stk #i1 #i2 #j . + InitWillDoLegPEio()[+] @i1 & RespWillDoSecJW()[+] @i2 & + InitiatorFinishedLegPairing(idI, capI, ksI, idR, capR, ksR, tk, nli, nlr, stk) @j ==> + (Ex pkI pkR dh nsi nsr ri rr ei er #k . + RespDoneDHKeyCheck(idR, capR, ksR, idI, capI, ksI, pkR, pkI, dh, nsr, nsi, rr, ri, er, ei) @k + ) +" + +lemma legPEio_secJW_auth_resp: +" + All idI idR capI capR ksI ksR pkI pkR dh ltk #i1 #i2 #j . + InitWillDoLegPEio()[+] @i1 & RespWillDoSecJW()[+] @i2 & + ResponderFinishedSecPairing(idR, capR, ksR, idI, capI, ksI, pkI, pkR, dh, ltk) @j ==> + (Ex tk ni ci cr #k . + InitSentRandom(idI, capI, ksI, idR, capR, ksR, tk, ni, ci, cr) @k + ) +" + +lemma legPEio_secJW_weaksecret_init: +" + All idI idR capI capR ksI ksR tk ni nr stk #i1 #i2 #j. + InitWillDoLegPEio()[+] @i1 & RespWillDoSecJW()[+] @i2 & + InitiatorFinishedLegPairing(idI, capI, ksI, idR, capR, ksR, tk, ni, nr, stk) @j ==> + not (Ex #k . K(stk) @k ) +" + +lemma legPEio_secJW_weaksecret_resp: +" + All idI idR capI capR ksI ksR pkI pkR dh ltk #i1 #i2 #j. + InitWillDoLegPEio()[+] @i1 & RespWillDoSecJW()[+] @i2 & + ResponderFinishedSecPairing(idR, capR, ksR, idI, capI, ksI, pkI, pkR, dh, ltk) @j ==> + not (Ex #k . K(ltk) @k ) +" + +lemma legPEio_secJW_double_impersonation: +" + All #i1 #i2 . + InitWillDoLegPEio()[+] @i1 & RespWillDoSecJW()[+] @i2 ==> + (All idI1 idR1 capI1 capR1 ksI1 ksR1 idI2 idR2 capI2 capR2 ksI2 ksR2 tk ni nr stk pkI pkR dh ltk #j1 #j2 . + InitiatorFinishedLegPairing(idI1, capI1, ksI1, idR1, capR1, ksR1, tk, ni, nr, stk) @j1 & + ResponderFinishedSecPairing(idR2, capR2, ksR2, idI2, capI2, ksI2, pkR, pkI, dh, ltk) @j2 ==> + not (Ex #k1 #k2 . + K(stk) @k1 & K(ltk) @k2 + ) + ) +" + +#endif + +/*******************************************/ +/* End lemmas about LegPEio-SecJW exchange */ +/*******************************************/ + +/****************************************/ +/* Lemmas about LegPEio-SecPEi exchange */ +/****************************************/ + +#ifdef LegPEioSecPEi +lemma legPEio_secPEi_functional: exists-trace +" + Ex #i1 #i2 . + InitWillDoLegPEio()[+] @i1 & RespWillDoSecPEi()[+] @i2 & + (Ex idI1 idR1 capI1 capR1 ksI1 ksR1 idI2 idR2 capI2 capR2 ksI2 ksR2 tk ni nr stk pkI pkR dh ltk #j1 #j2 . + InitiatorFinishedLegPairing(idI1, capI1, ksI1, idR1, capR1, ksR1, tk, ni, nr, stk) @j1 & + ResponderFinishedSecPairing(idR2, capR2, ksR2, idI2, capI2, ksI2, pkR, pkI, dh, ltk) @j2 + ) +" + +lemma legPEio_secPEi_auth_init: +" + All idI idR capI capR ksI ksR tk nli nlr stk #i1 #i2 #j . + InitWillDoLegPEio()[+] @i1 & RespWillDoSecPEi()[+] @i2 & + InitiatorFinishedLegPairing(idI, capI, ksI, idR, capR, ksR, tk, nli, nlr, stk) @j ==> + (Ex pkI pkR dh nsi nsr ri rr ei er #k . + RespDoneDHKeyCheck(idR, capR, ksR, idI, capI, ksI, pkR, pkI, dh, nsr, nsi, rr, ri, er, ei) @k + ) +" + +lemma legPEio_secPEi_auth_resp: +" + All idI idR capI capR ksI ksR pkI pkR dh ltk #i1 #i2 #j . + InitWillDoLegPEio()[+] @i1 & RespWillDoSecPEi()[+] @i2 & + ResponderFinishedSecPairing(idR, capR, ksR, idI, capI, ksI, pkI, pkR, dh, ltk) @j ==> + (Ex tk ni ci cr #k . + InitSentRandom(idI, capI, ksI, idR, capR, ksR, tk, ni, ci, cr) @k + ) +" + +lemma legPEio_secPEi_weaksecret_init: +" + All idI idR capI capR ksI ksR tk ni nr stk #i1 #i2 #j. + InitWillDoLegPEio()[+] @i1 & RespWillDoSecPEi()[+] @i2 & + InitiatorFinishedLegPairing(idI, capI, ksI, idR, capR, ksR, tk, ni, nr, stk) @j ==> + not (Ex #k . K(stk) @k ) +" + +lemma legPEio_secPEi_weaksecret_resp: +" + All idI idR capI capR ksI ksR pkI pkR dh ltk #i1 #i2 #j. + InitWillDoLegPEio()[+] @i1 & RespWillDoSecPEi()[+] @i2 & + ResponderFinishedSecPairing(idR, capR, ksR, idI, capI, ksI, pkI, pkR, dh, ltk) @j ==> + not (Ex #k . K(ltk) @k ) +" + +lemma legPEio_secPEi_double_impersonation: +" + All #i1 #i2 . + InitWillDoLegPEio()[+] @i1 & RespWillDoSecPEi()[+] @i2 ==> + (All idI1 idR1 capI1 capR1 ksI1 ksR1 idI2 idR2 capI2 capR2 ksI2 ksR2 tk ni nr stk pkI pkR dh ltk #j1 #j2 . + InitiatorFinishedLegPairing(idI1, capI1, ksI1, idR1, capR1, ksR1, tk, ni, nr, stk) @j1 & + ResponderFinishedSecPairing(idR2, capR2, ksR2, idI2, capI2, ksI2, pkR, pkI, dh, ltk) @j2 ==> + not (Ex #k1 #k2 . + K(stk) @k1 & K(ltk) @k2 + ) + ) +" + +#endif + +/********************************************/ +/* End lemmas about LegPEio-SecPEi exchange */ +/********************************************/ + +/****************************************/ +/* Lemmas about LegPEio-SecPEo exchange */ +/****************************************/ + +#ifdef LegPEioSecPEo +lemma legPEio_secPEo_functional: exists-trace +" + Ex #i1 #i2 . + InitWillDoLegPEio()[+] @i1 & RespWillDoSecPEo()[+] @i2 & + (Ex idI1 idR1 capI1 capR1 ksI1 ksR1 idI2 idR2 capI2 capR2 ksI2 ksR2 tk ni nr stk pkI pkR dh ltk #j1 #j2 . + InitiatorFinishedLegPairing(idI1, capI1, ksI1, idR1, capR1, ksR1, tk, ni, nr, stk) @j1 & + ResponderFinishedSecPairing(idR2, capR2, ksR2, idI2, capI2, ksI2, pkR, pkI, dh, ltk) @j2 + ) +" + +lemma legPEio_secPEo_auth_init: +" + All idI idR capI capR ksI ksR tk nli nlr stk #i1 #i2 #j . + InitWillDoLegPEio()[+] @i1 & RespWillDoSecPEo()[+] @i2 & + InitiatorFinishedLegPairing(idI, capI, ksI, idR, capR, ksR, tk, nli, nlr, stk) @j ==> + (Ex pkI pkR dh nsi nsr ri rr ei er #k . + RespDoneDHKeyCheck(idR, capR, ksR, idI, capI, ksI, pkR, pkI, dh, nsr, nsi, rr, ri, er, ei) @k + ) +" + +lemma legPEio_secPEo_auth_resp: +" + All idI idR capI capR ksI ksR pkI pkR dh ltk #i1 #i2 #j . + InitWillDoLegPEio()[+] @i1 & RespWillDoSecPEo()[+] @i2 & + ResponderFinishedSecPairing(idR, capR, ksR, idI, capI, ksI, pkI, pkR, dh, ltk) @j ==> + (Ex tk ni ci cr #k . + InitSentRandom(idI, capI, ksI, idR, capR, ksR, tk, ni, ci, cr) @k + ) +" + +lemma legPEio_secPEo_weaksecret_init: +" + All idI idR capI capR ksI ksR tk ni nr stk #i1 #i2 #j. + InitWillDoLegPEio()[+] @i1 & RespWillDoSecPEo()[+] @i2 & + InitiatorFinishedLegPairing(idI, capI, ksI, idR, capR, ksR, tk, ni, nr, stk) @j ==> + not (Ex #k . K(stk) @k ) +" + +lemma legPEio_secPEo_weaksecret_resp: +" + All idI idR capI capR ksI ksR pkI pkR dh ltk #i1 #i2 #j. + InitWillDoLegPEio()[+] @i1 & RespWillDoSecPEo()[+] @i2 & + ResponderFinishedSecPairing(idR, capR, ksR, idI, capI, ksI, pkI, pkR, dh, ltk) @j ==> + not (Ex #k . K(ltk) @k ) +" + +lemma legPEio_secPEo_double_impersonation: +" + All #i1 #i2 . + InitWillDoLegPEio()[+] @i1 & RespWillDoSecPEo()[+] @i2 ==> + (All idI1 idR1 capI1 capR1 ksI1 ksR1 idI2 idR2 capI2 capR2 ksI2 ksR2 tk ni nr stk pkI pkR dh ltk #j1 #j2 . + InitiatorFinishedLegPairing(idI1, capI1, ksI1, idR1, capR1, ksR1, tk, ni, nr, stk) @j1 & + ResponderFinishedSecPairing(idR2, capR2, ksR2, idI2, capI2, ksI2, pkR, pkI, dh, ltk) @j2 ==> + not (Ex #k1 #k2 . + K(stk) @k1 & K(ltk) @k2 + ) + ) +" + +#endif + +/********************************************/ +/* End lemmas about LegPEio-SecPEo exchange */ +/********************************************/ + +/*****************************************/ +/* Lemmas about LegPEio-SecPEio exchange */ +/*****************************************/ + +#ifdef LegPEioSecPEio +lemma legPEio_secPEio_functional: exists-trace +" + Ex #i1 #i2 . + InitWillDoLegPEio()[+] @i1 & RespWillDoSecPEio()[+] @i2 & + (Ex idI1 idR1 capI1 capR1 ksI1 ksR1 idI2 idR2 capI2 capR2 ksI2 ksR2 tk ni nr stk pkI pkR dh ltk #j1 #j2 . + InitiatorFinishedLegPairing(idI1, capI1, ksI1, idR1, capR1, ksR1, tk, ni, nr, stk) @j1 & + ResponderFinishedSecPairing(idR2, capR2, ksR2, idI2, capI2, ksI2, pkR, pkI, dh, ltk) @j2 + ) +" + +lemma legPEio_secPEio_auth_init: +" + All idI idR capI capR ksI ksR tk nli nlr stk #i1 #i2 #j . + InitWillDoLegPEio()[+] @i1 & RespWillDoSecPEio()[+] @i2 & + InitiatorFinishedLegPairing(idI, capI, ksI, idR, capR, ksR, tk, nli, nlr, stk) @j ==> + (Ex pkI pkR dh nsi nsr ri rr ei er #k . + RespDoneDHKeyCheck(idR, capR, ksR, idI, capI, ksI, pkR, pkI, dh, nsr, nsi, rr, ri, er, ei) @k + ) +" + +lemma legPEio_secPEio_auth_resp: +" + All idI idR capI capR ksI ksR pkI pkR dh ltk #i1 #i2 #j . + InitWillDoLegPEio()[+] @i1 & RespWillDoSecPEio()[+] @i2 & + ResponderFinishedSecPairing(idR, capR, ksR, idI, capI, ksI, pkI, pkR, dh, ltk) @j ==> + (Ex tk ni ci cr #k . + InitSentRandom(idI, capI, ksI, idR, capR, ksR, tk, ni, ci, cr) @k + ) +" + +lemma legPEio_secPEio_weaksecret_init: +" + All idI idR capI capR ksI ksR tk ni nr stk #i1 #i2 #j. + InitWillDoLegPEio()[+] @i1 & RespWillDoSecPEio()[+] @i2 & + InitiatorFinishedLegPairing(idI, capI, ksI, idR, capR, ksR, tk, ni, nr, stk) @j ==> + not (Ex #k . K(stk) @k ) +" + +lemma legPEio_secPEio_weaksecret_resp: +" + All idI idR capI capR ksI ksR pkI pkR dh ltk #i1 #i2 #j. + InitWillDoLegPEio()[+] @i1 & RespWillDoSecPEio()[+] @i2 & + ResponderFinishedSecPairing(idR, capR, ksR, idI, capI, ksI, pkI, pkR, dh, ltk) @j ==> + not (Ex #k . K(ltk) @k ) +" + +lemma legPEio_secPEio_double_impersonation: +" + All #i1 #i2 . + InitWillDoLegPEio()[+] @i1 & RespWillDoSecPEio()[+] @i2 ==> + (All idI1 idR1 capI1 capR1 ksI1 ksR1 idI2 idR2 capI2 capR2 ksI2 ksR2 tk ni nr stk pkI pkR dh ltk #j1 #j2 . + InitiatorFinishedLegPairing(idI1, capI1, ksI1, idR1, capR1, ksR1, tk, ni, nr, stk) @j1 & + ResponderFinishedSecPairing(idR2, capR2, ksR2, idI2, capI2, ksI2, pkR, pkI, dh, ltk) @j2 ==> + not (Ex #k1 #k2 . + K(stk) @k1 & K(ltk) @k2 + ) + ) +" + +#endif + +/*********************************************/ +/* End lemmas about LegPEio-SecPEio exchange */ +/*********************************************/ + +/***************************************/ +/* Lemmas about LegPEio-SecNC exchange */ +/***************************************/ + +#ifdef LegPEioSecNC +lemma legPEio_secNC_functional: exists-trace +" + Ex #i1 #i2 . + InitWillDoLegPEio()[+] @i1 & RespWillDoSecNC()[+] @i2 & + (Ex idI1 idR1 capI1 capR1 ksI1 ksR1 idI2 idR2 capI2 capR2 ksI2 ksR2 tk ni nr stk pkI pkR dh ltk #j1 #j2 . + InitiatorFinishedLegPairing(idI1, capI1, ksI1, idR1, capR1, ksR1, tk, ni, nr, stk) @j1 & + ResponderFinishedSecPairing(idR2, capR2, ksR2, idI2, capI2, ksI2, pkR, pkI, dh, ltk) @j2 + ) +" + +lemma legPEio_secNC_auth_init: +" + All idI idR capI capR ksI ksR tk nli nlr stk #i1 #i2 #j . + InitWillDoLegPEio()[+] @i1 & RespWillDoSecNC()[+] @i2 & + InitiatorFinishedLegPairing(idI, capI, ksI, idR, capR, ksR, tk, nli, nlr, stk) @j ==> + (Ex pkI pkR dh nsi nsr ri rr ei er #k . + RespDoneDHKeyCheck(idR, capR, ksR, idI, capI, ksI, pkR, pkI, dh, nsr, nsi, rr, ri, er, ei) @k + ) +" + +lemma legPEio_secNC_auth_resp: +" + All idI idR capI capR ksI ksR pkI pkR dh ltk #i1 #i2 #j . + InitWillDoLegPEio()[+] @i1 & RespWillDoSecNC()[+] @i2 & + ResponderFinishedSecPairing(idR, capR, ksR, idI, capI, ksI, pkI, pkR, dh, ltk) @j ==> + (Ex tk ni ci cr #k . + InitSentRandom(idI, capI, ksI, idR, capR, ksR, tk, ni, ci, cr) @k + ) +" + +lemma legPEio_secNC_weaksecret_init: +" + All idI idR capI capR ksI ksR tk ni nr stk #i1 #i2 #j. + InitWillDoLegPEio()[+] @i1 & RespWillDoSecNC()[+] @i2 & + InitiatorFinishedLegPairing(idI, capI, ksI, idR, capR, ksR, tk, ni, nr, stk) @j ==> + not (Ex #k . K(stk) @k ) +" + +lemma legPEio_secNC_weaksecret_resp: +" + All idI idR capI capR ksI ksR pkI pkR dh ltk #i1 #i2 #j. + InitWillDoLegPEio()[+] @i1 & RespWillDoSecNC()[+] @i2 & + ResponderFinishedSecPairing(idR, capR, ksR, idI, capI, ksI, pkI, pkR, dh, ltk) @j ==> + not (Ex #k . K(ltk) @k ) +" + +lemma legPEio_secNC_double_impersonation: +" + All #i1 #i2 . + InitWillDoLegPEio()[+] @i1 & RespWillDoSecNC()[+] @i2 ==> + (All idI1 idR1 capI1 capR1 ksI1 ksR1 idI2 idR2 capI2 capR2 ksI2 ksR2 tk ni nr stk pkI pkR dh ltk #j1 #j2 . + InitiatorFinishedLegPairing(idI1, capI1, ksI1, idR1, capR1, ksR1, tk, ni, nr, stk) @j1 & + ResponderFinishedSecPairing(idR2, capR2, ksR2, idI2, capI2, ksI2, pkR, pkI, dh, ltk) @j2 ==> + not (Ex #k1 #k2 . + K(stk) @k1 & K(ltk) @k2 + ) + ) +" + +#endif + +/*******************************************/ +/* End lemmas about LegPEio-SecNC exchange */ +/*******************************************/ + +/*****************************************/ +/* Lemmas about LegPEio-SecOOBi exchange */ +/*****************************************/ + +#ifdef LegPEioSecOOBi +lemma legPEio_secOOBi_functional: exists-trace +" + Ex #i1 #i2 . + InitWillDoLegPEio()[+] @i1 & RespWillDoSecOOBi()[+] @i2 & + (Ex idI1 idR1 capI1 capR1 ksI1 ksR1 idI2 idR2 capI2 capR2 ksI2 ksR2 tk ni nr stk pkI pkR dh ltk #j1 #j2 . + InitiatorFinishedLegPairing(idI1, capI1, ksI1, idR1, capR1, ksR1, tk, ni, nr, stk) @j1 & + ResponderFinishedSecPairing(idR2, capR2, ksR2, idI2, capI2, ksI2, pkR, pkI, dh, ltk) @j2 + ) +" + +lemma legPEio_secOOBi_auth_init: +" + All idI idR capI capR ksI ksR tk nli nlr stk #i1 #i2 #j . + InitWillDoLegPEio()[+] @i1 & RespWillDoSecOOBi()[+] @i2 & + InitiatorFinishedLegPairing(idI, capI, ksI, idR, capR, ksR, tk, nli, nlr, stk) @j ==> + (Ex pkI pkR dh nsi nsr ri rr ei er #k . + RespDoneDHKeyCheck(idR, capR, ksR, idI, capI, ksI, pkR, pkI, dh, nsr, nsi, rr, ri, er, ei) @k + ) +" + +lemma legPEio_secOOBi_auth_resp: +" + All idI idR capI capR ksI ksR pkI pkR dh ltk #i1 #i2 #j . + InitWillDoLegPEio()[+] @i1 & RespWillDoSecOOBi()[+] @i2 & + ResponderFinishedSecPairing(idR, capR, ksR, idI, capI, ksI, pkI, pkR, dh, ltk) @j ==> + (Ex tk ni ci cr #k . + InitSentRandom(idI, capI, ksI, idR, capR, ksR, tk, ni, ci, cr) @k + ) +" + +lemma legPEio_secOOBi_weaksecret_init: +" + All idI idR capI capR ksI ksR tk ni nr stk #i1 #i2 #j. + InitWillDoLegPEio()[+] @i1 & RespWillDoSecOOBi()[+] @i2 & + InitiatorFinishedLegPairing(idI, capI, ksI, idR, capR, ksR, tk, ni, nr, stk) @j ==> + not (Ex #k . K(stk) @k ) +" + +lemma legPEio_secOOBi_weaksecret_resp: +" + All idI idR capI capR ksI ksR pkI pkR dh ltk #i1 #i2 #j. + InitWillDoLegPEio()[+] @i1 & RespWillDoSecOOBi()[+] @i2 & + ResponderFinishedSecPairing(idR, capR, ksR, idI, capI, ksI, pkI, pkR, dh, ltk) @j ==> + not (Ex #k . K(ltk) @k ) +" + +lemma legPEio_secOOBi_double_impersonation: +" + All #i1 #i2 . + InitWillDoLegPEio()[+] @i1 & RespWillDoSecOOBi()[+] @i2 ==> + (All idI1 idR1 capI1 capR1 ksI1 ksR1 idI2 idR2 capI2 capR2 ksI2 ksR2 tk ni nr stk pkI pkR dh ltk #j1 #j2 . + InitiatorFinishedLegPairing(idI1, capI1, ksI1, idR1, capR1, ksR1, tk, ni, nr, stk) @j1 & + ResponderFinishedSecPairing(idR2, capR2, ksR2, idI2, capI2, ksI2, pkR, pkI, dh, ltk) @j2 ==> + not (Ex #k1 #k2 . + K(stk) @k1 & K(ltk) @k2 + ) + ) +" + +#endif + +/*********************************************/ +/* End lemmas about LegPEio-SecOOBi exchange */ +/*********************************************/ + +/*****************************************/ +/* Lemmas about LegPEio-SecOOBo exchange */ +/*****************************************/ + +#ifdef LegPEioSecOOBo +lemma legPEio_secOOBo_functional: exists-trace +" + Ex #i1 #i2 . + InitWillDoLegPEio()[+] @i1 & RespWillDoSecOOBo()[+] @i2 & + (Ex idI1 idR1 capI1 capR1 ksI1 ksR1 idI2 idR2 capI2 capR2 ksI2 ksR2 tk ni nr stk pkI pkR dh ltk #j1 #j2 . + InitiatorFinishedLegPairing(idI1, capI1, ksI1, idR1, capR1, ksR1, tk, ni, nr, stk) @j1 & + ResponderFinishedSecPairing(idR2, capR2, ksR2, idI2, capI2, ksI2, pkR, pkI, dh, ltk) @j2 + ) +" + +lemma legPEio_secOOBo_auth_init: +" + All idI idR capI capR ksI ksR tk nli nlr stk #i1 #i2 #j . + InitWillDoLegPEio()[+] @i1 & RespWillDoSecOOBo()[+] @i2 & + InitiatorFinishedLegPairing(idI, capI, ksI, idR, capR, ksR, tk, nli, nlr, stk) @j ==> + (Ex pkI pkR dh nsi nsr ri rr ei er #k . + RespDoneDHKeyCheck(idR, capR, ksR, idI, capI, ksI, pkR, pkI, dh, nsr, nsi, rr, ri, er, ei) @k + ) +" + +lemma legPEio_secOOBo_auth_resp: +" + All idI idR capI capR ksI ksR pkI pkR dh ltk #i1 #i2 #j . + InitWillDoLegPEio()[+] @i1 & RespWillDoSecOOBo()[+] @i2 & + ResponderFinishedSecPairing(idR, capR, ksR, idI, capI, ksI, pkI, pkR, dh, ltk) @j ==> + (Ex tk ni ci cr #k . + InitSentRandom(idI, capI, ksI, idR, capR, ksR, tk, ni, ci, cr) @k + ) +" + +lemma legPEio_secOOBo_weaksecret_init: +" + All idI idR capI capR ksI ksR tk ni nr stk #i1 #i2 #j. + InitWillDoLegPEio()[+] @i1 & RespWillDoSecOOBo()[+] @i2 & + InitiatorFinishedLegPairing(idI, capI, ksI, idR, capR, ksR, tk, ni, nr, stk) @j ==> + not (Ex #k . K(stk) @k ) +" + +lemma legPEio_secOOBo_weaksecret_resp: +" + All idI idR capI capR ksI ksR pkI pkR dh ltk #i1 #i2 #j. + InitWillDoLegPEio()[+] @i1 & RespWillDoSecOOBo()[+] @i2 & + ResponderFinishedSecPairing(idR, capR, ksR, idI, capI, ksI, pkI, pkR, dh, ltk) @j ==> + not (Ex #k . K(ltk) @k ) +" + +lemma legPEio_secOOBo_double_impersonation: +" + All #i1 #i2 . + InitWillDoLegPEio()[+] @i1 & RespWillDoSecOOBo()[+] @i2 ==> + (All idI1 idR1 capI1 capR1 ksI1 ksR1 idI2 idR2 capI2 capR2 ksI2 ksR2 tk ni nr stk pkI pkR dh ltk #j1 #j2 . + InitiatorFinishedLegPairing(idI1, capI1, ksI1, idR1, capR1, ksR1, tk, ni, nr, stk) @j1 & + ResponderFinishedSecPairing(idR2, capR2, ksR2, idI2, capI2, ksI2, pkR, pkI, dh, ltk) @j2 ==> + not (Ex #k1 #k2 . + K(stk) @k1 & K(ltk) @k2 + ) + ) +" + +#endif + +/*********************************************/ +/* End lemmas about LegPEio-SecOOBo exchange */ +/*********************************************/ + +/******************************************/ +/* Lemmas about LegPEio-SecOOBio exchange */ +/******************************************/ + +#ifdef LegPEioSecOOBio +lemma legPEio_secOOBio_functional: exists-trace +" + Ex #i1 #i2 . + InitWillDoLegPEio()[+] @i1 & RespWillDoSecOOBio()[+] @i2 & + (Ex idI1 idR1 capI1 capR1 ksI1 ksR1 idI2 idR2 capI2 capR2 ksI2 ksR2 tk ni nr stk pkI pkR dh ltk #j1 #j2 . + InitiatorFinishedLegPairing(idI1, capI1, ksI1, idR1, capR1, ksR1, tk, ni, nr, stk) @j1 & + ResponderFinishedSecPairing(idR2, capR2, ksR2, idI2, capI2, ksI2, pkR, pkI, dh, ltk) @j2 + ) +" + +lemma legPEio_secOOBio_auth_init: +" + All idI idR capI capR ksI ksR tk nli nlr stk #i1 #i2 #j . + InitWillDoLegPEio()[+] @i1 & RespWillDoSecOOBio()[+] @i2 & + InitiatorFinishedLegPairing(idI, capI, ksI, idR, capR, ksR, tk, nli, nlr, stk) @j ==> + (Ex pkI pkR dh nsi nsr ri rr ei er #k . + RespDoneDHKeyCheck(idR, capR, ksR, idI, capI, ksI, pkR, pkI, dh, nsr, nsi, rr, ri, er, ei) @k + ) +" + +lemma legPEio_secOOBio_auth_resp: +" + All idI idR capI capR ksI ksR pkI pkR dh ltk #i1 #i2 #j . + InitWillDoLegPEio()[+] @i1 & RespWillDoSecOOBio()[+] @i2 & + ResponderFinishedSecPairing(idR, capR, ksR, idI, capI, ksI, pkI, pkR, dh, ltk) @j ==> + (Ex tk ni ci cr #k . + InitSentRandom(idI, capI, ksI, idR, capR, ksR, tk, ni, ci, cr) @k + ) +" + +lemma legPEio_secOOBio_weaksecret_init: +" + All idI idR capI capR ksI ksR tk ni nr stk #i1 #i2 #j. + InitWillDoLegPEio()[+] @i1 & RespWillDoSecOOBio()[+] @i2 & + InitiatorFinishedLegPairing(idI, capI, ksI, idR, capR, ksR, tk, ni, nr, stk) @j ==> + not (Ex #k . K(stk) @k ) +" + +lemma legPEio_secOOBio_weaksecret_resp: +" + All idI idR capI capR ksI ksR pkI pkR dh ltk #i1 #i2 #j. + InitWillDoLegPEio()[+] @i1 & RespWillDoSecOOBio()[+] @i2 & + ResponderFinishedSecPairing(idR, capR, ksR, idI, capI, ksI, pkI, pkR, dh, ltk) @j ==> + not (Ex #k . K(ltk) @k ) +" + +lemma legPEio_secOOBio_double_impersonation: +" + All #i1 #i2 . + InitWillDoLegPEio()[+] @i1 & RespWillDoSecOOBio()[+] @i2 ==> + (All idI1 idR1 capI1 capR1 ksI1 ksR1 idI2 idR2 capI2 capR2 ksI2 ksR2 tk ni nr stk pkI pkR dh ltk #j1 #j2 . + InitiatorFinishedLegPairing(idI1, capI1, ksI1, idR1, capR1, ksR1, tk, ni, nr, stk) @j1 & + ResponderFinishedSecPairing(idR2, capR2, ksR2, idI2, capI2, ksI2, pkR, pkI, dh, ltk) @j2 ==> + not (Ex #k1 #k2 . + K(stk) @k1 & K(ltk) @k2 + ) + ) +" + +#endif + +/**********************************************/ +/* End lemmas about LegPEio-SecOOBio exchange */ +/**********************************************/ + +/**************************************/ +/* Lemmas about LegOOB-SecJW exchange */ +/**************************************/ + +#ifdef LegOOBSecJW +lemma legOOB_secJW_functional: exists-trace +" + Ex #i1 #i2 . + InitWillDoLegOOB()[+] @i1 & RespWillDoSecJW()[+] @i2 & + (Ex idI1 idR1 capI1 capR1 ksI1 ksR1 idI2 idR2 capI2 capR2 ksI2 ksR2 tk ni nr stk pkI pkR dh ltk #j1 #j2 . + InitiatorFinishedLegPairing(idI1, capI1, ksI1, idR1, capR1, ksR1, tk, ni, nr, stk) @j1 & + ResponderFinishedSecPairing(idR2, capR2, ksR2, idI2, capI2, ksI2, pkR, pkI, dh, ltk) @j2 + ) +" + +lemma legOOB_secJW_auth_init: +" + All idI idR capI capR ksI ksR tk nli nlr stk #i1 #i2 #j . + InitWillDoLegOOB()[+] @i1 & RespWillDoSecJW()[+] @i2 & + InitiatorFinishedLegPairing(idI, capI, ksI, idR, capR, ksR, tk, nli, nlr, stk) @j ==> + (Ex pkI pkR dh nsi nsr ri rr ei er #k . + RespDoneDHKeyCheck(idR, capR, ksR, idI, capI, ksI, pkR, pkI, dh, nsr, nsi, rr, ri, er, ei) @k + ) +" + +lemma legOOB_secJW_auth_resp: +" + All idI idR capI capR ksI ksR pkI pkR dh ltk #i1 #i2 #j . + InitWillDoLegOOB()[+] @i1 & RespWillDoSecJW()[+] @i2 & + ResponderFinishedSecPairing(idR, capR, ksR, idI, capI, ksI, pkI, pkR, dh, ltk) @j ==> + (Ex tk ni ci cr #k . + InitSentRandom(idI, capI, ksI, idR, capR, ksR, tk, ni, ci, cr) @k + ) +" + +lemma legOOB_secJW_weaksecret_init: +" + All idI idR capI capR ksI ksR tk ni nr stk #i1 #i2 #j. + InitWillDoLegOOB()[+] @i1 & RespWillDoSecJW()[+] @i2 & + InitiatorFinishedLegPairing(idI, capI, ksI, idR, capR, ksR, tk, ni, nr, stk) @j ==> + not (Ex #k . K(stk) @k ) +" + +lemma legOOB_secJW_weaksecret_resp: +" + All idI idR capI capR ksI ksR pkI pkR dh ltk #i1 #i2 #j. + InitWillDoLegOOB()[+] @i1 & RespWillDoSecJW()[+] @i2 & + ResponderFinishedSecPairing(idR, capR, ksR, idI, capI, ksI, pkI, pkR, dh, ltk) @j ==> + not (Ex #k . K(ltk) @k ) +" + +lemma legOOB_secJW_double_impersonation: +" + All #i1 #i2 . + InitWillDoLegOOB()[+] @i1 & RespWillDoSecJW()[+] @i2 ==> + (All idI1 idR1 capI1 capR1 ksI1 ksR1 idI2 idR2 capI2 capR2 ksI2 ksR2 tk ni nr stk pkI pkR dh ltk #j1 #j2 . + InitiatorFinishedLegPairing(idI1, capI1, ksI1, idR1, capR1, ksR1, tk, ni, nr, stk) @j1 & + ResponderFinishedSecPairing(idR2, capR2, ksR2, idI2, capI2, ksI2, pkR, pkI, dh, ltk) @j2 ==> + not (Ex #k1 #k2 . + K(stk) @k1 & K(ltk) @k2 + ) + ) +" + +#endif + +/******************************************/ +/* End lemmas about LegOOB-SecJW exchange */ +/******************************************/ + +/***************************************/ +/* Lemmas about LegOOB-SecPEi exchange */ +/***************************************/ + +#ifdef LegOOBSecPEi +lemma legOOB_secPEi_functional: exists-trace +" + Ex #i1 #i2 . + InitWillDoLegOOB()[+] @i1 & RespWillDoSecPEi()[+] @i2 & + (Ex idI1 idR1 capI1 capR1 ksI1 ksR1 idI2 idR2 capI2 capR2 ksI2 ksR2 tk ni nr stk pkI pkR dh ltk #j1 #j2 . + InitiatorFinishedLegPairing(idI1, capI1, ksI1, idR1, capR1, ksR1, tk, ni, nr, stk) @j1 & + ResponderFinishedSecPairing(idR2, capR2, ksR2, idI2, capI2, ksI2, pkR, pkI, dh, ltk) @j2 + ) +" + +lemma legOOB_secPEi_auth_init: +" + All idI idR capI capR ksI ksR tk nli nlr stk #i1 #i2 #j . + InitWillDoLegOOB()[+] @i1 & RespWillDoSecPEi()[+] @i2 & + InitiatorFinishedLegPairing(idI, capI, ksI, idR, capR, ksR, tk, nli, nlr, stk) @j ==> + (Ex pkI pkR dh nsi nsr ri rr ei er #k . + RespDoneDHKeyCheck(idR, capR, ksR, idI, capI, ksI, pkR, pkI, dh, nsr, nsi, rr, ri, er, ei) @k + ) +" + +lemma legOOB_secPEi_auth_resp: +" + All idI idR capI capR ksI ksR pkI pkR dh ltk #i1 #i2 #j . + InitWillDoLegOOB()[+] @i1 & RespWillDoSecPEi()[+] @i2 & + ResponderFinishedSecPairing(idR, capR, ksR, idI, capI, ksI, pkI, pkR, dh, ltk) @j ==> + (Ex tk ni ci cr #k . + InitSentRandom(idI, capI, ksI, idR, capR, ksR, tk, ni, ci, cr) @k + ) +" + +lemma legOOB_secPEi_weaksecret_init: +" + All idI idR capI capR ksI ksR tk ni nr stk #i1 #i2 #j. + InitWillDoLegOOB()[+] @i1 & RespWillDoSecPEi()[+] @i2 & + InitiatorFinishedLegPairing(idI, capI, ksI, idR, capR, ksR, tk, ni, nr, stk) @j ==> + not (Ex #k . K(stk) @k ) +" + +lemma legOOB_secPEi_weaksecret_resp: +" + All idI idR capI capR ksI ksR pkI pkR dh ltk #i1 #i2 #j. + InitWillDoLegOOB()[+] @i1 & RespWillDoSecPEi()[+] @i2 & + ResponderFinishedSecPairing(idR, capR, ksR, idI, capI, ksI, pkI, pkR, dh, ltk) @j ==> + not (Ex #k . K(ltk) @k ) +" + +lemma legOOB_secPEi_double_impersonation: +" + All #i1 #i2 . + InitWillDoLegOOB()[+] @i1 & RespWillDoSecPEi()[+] @i2 ==> + (All idI1 idR1 capI1 capR1 ksI1 ksR1 idI2 idR2 capI2 capR2 ksI2 ksR2 tk ni nr stk pkI pkR dh ltk #j1 #j2 . + InitiatorFinishedLegPairing(idI1, capI1, ksI1, idR1, capR1, ksR1, tk, ni, nr, stk) @j1 & + ResponderFinishedSecPairing(idR2, capR2, ksR2, idI2, capI2, ksI2, pkR, pkI, dh, ltk) @j2 ==> + not (Ex #k1 #k2 . + K(stk) @k1 & K(ltk) @k2 + ) + ) +" + +#endif + +/*******************************************/ +/* End lemmas about LegOOB-SecPEi exchange */ +/*******************************************/ + +/***************************************/ +/* Lemmas about LegOOB-SecPEo exchange */ +/***************************************/ + +#ifdef LegOOBSecPEo +lemma legOOB_secPEo_functional: exists-trace +" + Ex #i1 #i2 . + InitWillDoLegOOB()[+] @i1 & RespWillDoSecPEo()[+] @i2 & + (Ex idI1 idR1 capI1 capR1 ksI1 ksR1 idI2 idR2 capI2 capR2 ksI2 ksR2 tk ni nr stk pkI pkR dh ltk #j1 #j2 . + InitiatorFinishedLegPairing(idI1, capI1, ksI1, idR1, capR1, ksR1, tk, ni, nr, stk) @j1 & + ResponderFinishedSecPairing(idR2, capR2, ksR2, idI2, capI2, ksI2, pkR, pkI, dh, ltk) @j2 + ) +" + +lemma legOOB_secPEo_auth_init: +" + All idI idR capI capR ksI ksR tk nli nlr stk #i1 #i2 #j . + InitWillDoLegOOB()[+] @i1 & RespWillDoSecPEo()[+] @i2 & + InitiatorFinishedLegPairing(idI, capI, ksI, idR, capR, ksR, tk, nli, nlr, stk) @j ==> + (Ex pkI pkR dh nsi nsr ri rr ei er #k . + RespDoneDHKeyCheck(idR, capR, ksR, idI, capI, ksI, pkR, pkI, dh, nsr, nsi, rr, ri, er, ei) @k + ) +" + +lemma legOOB_secPEo_auth_resp: +" + All idI idR capI capR ksI ksR pkI pkR dh ltk #i1 #i2 #j . + InitWillDoLegOOB()[+] @i1 & RespWillDoSecPEo()[+] @i2 & + ResponderFinishedSecPairing(idR, capR, ksR, idI, capI, ksI, pkI, pkR, dh, ltk) @j ==> + (Ex tk ni ci cr #k . + InitSentRandom(idI, capI, ksI, idR, capR, ksR, tk, ni, ci, cr) @k + ) +" + +lemma legOOB_secPEo_weaksecret_init: +" + All idI idR capI capR ksI ksR tk ni nr stk #i1 #i2 #j. + InitWillDoLegOOB()[+] @i1 & RespWillDoSecPEo()[+] @i2 & + InitiatorFinishedLegPairing(idI, capI, ksI, idR, capR, ksR, tk, ni, nr, stk) @j ==> + not (Ex #k . K(stk) @k ) +" + +lemma legOOB_secPEo_weaksecret_resp: +" + All idI idR capI capR ksI ksR pkI pkR dh ltk #i1 #i2 #j. + InitWillDoLegOOB()[+] @i1 & RespWillDoSecPEo()[+] @i2 & + ResponderFinishedSecPairing(idR, capR, ksR, idI, capI, ksI, pkI, pkR, dh, ltk) @j ==> + not (Ex #k . K(ltk) @k ) +" + +lemma legOOB_secPEo_double_impersonation: +" + All #i1 #i2 . + InitWillDoLegOOB()[+] @i1 & RespWillDoSecPEo()[+] @i2 ==> + (All idI1 idR1 capI1 capR1 ksI1 ksR1 idI2 idR2 capI2 capR2 ksI2 ksR2 tk ni nr stk pkI pkR dh ltk #j1 #j2 . + InitiatorFinishedLegPairing(idI1, capI1, ksI1, idR1, capR1, ksR1, tk, ni, nr, stk) @j1 & + ResponderFinishedSecPairing(idR2, capR2, ksR2, idI2, capI2, ksI2, pkR, pkI, dh, ltk) @j2 ==> + not (Ex #k1 #k2 . + K(stk) @k1 & K(ltk) @k2 + ) + ) +" + +#endif + +/*******************************************/ +/* End lemmas about LegOOB-SecPEo exchange */ +/*******************************************/ + +/****************************************/ +/* Lemmas about LegOOB-SecPEio exchange */ +/****************************************/ + +#ifdef LegOOBSecPEio +lemma legOOB_secPEio_functional: exists-trace +" + Ex #i1 #i2 . + InitWillDoLegOOB()[+] @i1 & RespWillDoSecPEio()[+] @i2 & + (Ex idI1 idR1 capI1 capR1 ksI1 ksR1 idI2 idR2 capI2 capR2 ksI2 ksR2 tk ni nr stk pkI pkR dh ltk #j1 #j2 . + InitiatorFinishedLegPairing(idI1, capI1, ksI1, idR1, capR1, ksR1, tk, ni, nr, stk) @j1 & + ResponderFinishedSecPairing(idR2, capR2, ksR2, idI2, capI2, ksI2, pkR, pkI, dh, ltk) @j2 + ) +" + +lemma legOOB_secPEio_auth_init: +" + All idI idR capI capR ksI ksR tk nli nlr stk #i1 #i2 #j . + InitWillDoLegOOB()[+] @i1 & RespWillDoSecPEio()[+] @i2 & + InitiatorFinishedLegPairing(idI, capI, ksI, idR, capR, ksR, tk, nli, nlr, stk) @j ==> + (Ex pkI pkR dh nsi nsr ri rr ei er #k . + RespDoneDHKeyCheck(idR, capR, ksR, idI, capI, ksI, pkR, pkI, dh, nsr, nsi, rr, ri, er, ei) @k + ) +" + +lemma legOOB_secPEio_auth_resp: +" + All idI idR capI capR ksI ksR pkI pkR dh ltk #i1 #i2 #j . + InitWillDoLegOOB()[+] @i1 & RespWillDoSecPEio()[+] @i2 & + ResponderFinishedSecPairing(idR, capR, ksR, idI, capI, ksI, pkI, pkR, dh, ltk) @j ==> + (Ex tk ni ci cr #k . + InitSentRandom(idI, capI, ksI, idR, capR, ksR, tk, ni, ci, cr) @k + ) +" + +lemma legOOB_secPEio_weaksecret_init: +" + All idI idR capI capR ksI ksR tk ni nr stk #i1 #i2 #j. + InitWillDoLegOOB()[+] @i1 & RespWillDoSecPEio()[+] @i2 & + InitiatorFinishedLegPairing(idI, capI, ksI, idR, capR, ksR, tk, ni, nr, stk) @j ==> + not (Ex #k . K(stk) @k ) +" + +lemma legOOB_secPEio_weaksecret_resp: +" + All idI idR capI capR ksI ksR pkI pkR dh ltk #i1 #i2 #j. + InitWillDoLegOOB()[+] @i1 & RespWillDoSecPEio()[+] @i2 & + ResponderFinishedSecPairing(idR, capR, ksR, idI, capI, ksI, pkI, pkR, dh, ltk) @j ==> + not (Ex #k . K(ltk) @k ) +" + +lemma legOOB_secPEio_double_impersonation: +" + All #i1 #i2 . + InitWillDoLegOOB()[+] @i1 & RespWillDoSecPEio()[+] @i2 ==> + (All idI1 idR1 capI1 capR1 ksI1 ksR1 idI2 idR2 capI2 capR2 ksI2 ksR2 tk ni nr stk pkI pkR dh ltk #j1 #j2 . + InitiatorFinishedLegPairing(idI1, capI1, ksI1, idR1, capR1, ksR1, tk, ni, nr, stk) @j1 & + ResponderFinishedSecPairing(idR2, capR2, ksR2, idI2, capI2, ksI2, pkR, pkI, dh, ltk) @j2 ==> + not (Ex #k1 #k2 . + K(stk) @k1 & K(ltk) @k2 + ) + ) +" + +#endif + +/********************************************/ +/* End lemmas about LegOOB-SecPEio exchange */ +/********************************************/ + +/**************************************/ +/* Lemmas about LegOOB-SecNC exchange */ +/**************************************/ + +#ifdef LegOOBSecNC +lemma legOOB_secNC_functional: exists-trace +" + Ex #i1 #i2 . + InitWillDoLegOOB()[+] @i1 & RespWillDoSecNC()[+] @i2 & + (Ex idI1 idR1 capI1 capR1 ksI1 ksR1 idI2 idR2 capI2 capR2 ksI2 ksR2 tk ni nr stk pkI pkR dh ltk #j1 #j2 . + InitiatorFinishedLegPairing(idI1, capI1, ksI1, idR1, capR1, ksR1, tk, ni, nr, stk) @j1 & + ResponderFinishedSecPairing(idR2, capR2, ksR2, idI2, capI2, ksI2, pkR, pkI, dh, ltk) @j2 + ) +" + +lemma legOOB_secNC_auth_init: +" + All idI idR capI capR ksI ksR tk nli nlr stk #i1 #i2 #j . + InitWillDoLegOOB()[+] @i1 & RespWillDoSecNC()[+] @i2 & + InitiatorFinishedLegPairing(idI, capI, ksI, idR, capR, ksR, tk, nli, nlr, stk) @j ==> + (Ex pkI pkR dh nsi nsr ri rr ei er #k . + RespDoneDHKeyCheck(idR, capR, ksR, idI, capI, ksI, pkR, pkI, dh, nsr, nsi, rr, ri, er, ei) @k + ) +" + +lemma legOOB_secNC_auth_resp: +" + All idI idR capI capR ksI ksR pkI pkR dh ltk #i1 #i2 #j . + InitWillDoLegOOB()[+] @i1 & RespWillDoSecNC()[+] @i2 & + ResponderFinishedSecPairing(idR, capR, ksR, idI, capI, ksI, pkI, pkR, dh, ltk) @j ==> + (Ex tk ni ci cr #k . + InitSentRandom(idI, capI, ksI, idR, capR, ksR, tk, ni, ci, cr) @k + ) +" + +lemma legOOB_secNC_weaksecret_init: +" + All idI idR capI capR ksI ksR tk ni nr stk #i1 #i2 #j. + InitWillDoLegOOB()[+] @i1 & RespWillDoSecNC()[+] @i2 & + InitiatorFinishedLegPairing(idI, capI, ksI, idR, capR, ksR, tk, ni, nr, stk) @j ==> + not (Ex #k . K(stk) @k ) +" + +lemma legOOB_secNC_weaksecret_resp: +" + All idI idR capI capR ksI ksR pkI pkR dh ltk #i1 #i2 #j. + InitWillDoLegOOB()[+] @i1 & RespWillDoSecNC()[+] @i2 & + ResponderFinishedSecPairing(idR, capR, ksR, idI, capI, ksI, pkI, pkR, dh, ltk) @j ==> + not (Ex #k . K(ltk) @k ) +" + +lemma legOOB_secNC_double_impersonation: +" + All #i1 #i2 . + InitWillDoLegOOB()[+] @i1 & RespWillDoSecNC()[+] @i2 ==> + (All idI1 idR1 capI1 capR1 ksI1 ksR1 idI2 idR2 capI2 capR2 ksI2 ksR2 tk ni nr stk pkI pkR dh ltk #j1 #j2 . + InitiatorFinishedLegPairing(idI1, capI1, ksI1, idR1, capR1, ksR1, tk, ni, nr, stk) @j1 & + ResponderFinishedSecPairing(idR2, capR2, ksR2, idI2, capI2, ksI2, pkR, pkI, dh, ltk) @j2 ==> + not (Ex #k1 #k2 . + K(stk) @k1 & K(ltk) @k2 + ) + ) +" + +#endif + +/******************************************/ +/* End lemmas about LegOOB-SecNC exchange */ +/******************************************/ + +/****************************************/ +/* Lemmas about LegOOB-SecOOBi exchange */ +/****************************************/ + +#ifdef LegOOBSecOOBi +lemma legOOB_secOOBi_functional: exists-trace +" + Ex #i1 #i2 . + InitWillDoLegOOB()[+] @i1 & RespWillDoSecOOBi()[+] @i2 & + (Ex idI1 idR1 capI1 capR1 ksI1 ksR1 idI2 idR2 capI2 capR2 ksI2 ksR2 tk ni nr stk pkI pkR dh ltk #j1 #j2 . + InitiatorFinishedLegPairing(idI1, capI1, ksI1, idR1, capR1, ksR1, tk, ni, nr, stk) @j1 & + ResponderFinishedSecPairing(idR2, capR2, ksR2, idI2, capI2, ksI2, pkR, pkI, dh, ltk) @j2 + ) +" + +lemma legOOB_secOOBi_auth_init: +" + All idI idR capI capR ksI ksR tk nli nlr stk #i1 #i2 #j . + InitWillDoLegOOB()[+] @i1 & RespWillDoSecOOBi()[+] @i2 & + InitiatorFinishedLegPairing(idI, capI, ksI, idR, capR, ksR, tk, nli, nlr, stk) @j ==> + (Ex pkI pkR dh nsi nsr ri rr ei er #k . + RespDoneDHKeyCheck(idR, capR, ksR, idI, capI, ksI, pkR, pkI, dh, nsr, nsi, rr, ri, er, ei) @k + ) +" + +lemma legOOB_secOOBi_auth_resp: +" + All idI idR capI capR ksI ksR pkI pkR dh ltk #i1 #i2 #j . + InitWillDoLegOOB()[+] @i1 & RespWillDoSecOOBi()[+] @i2 & + ResponderFinishedSecPairing(idR, capR, ksR, idI, capI, ksI, pkI, pkR, dh, ltk) @j ==> + (Ex tk ni ci cr #k . + InitSentRandom(idI, capI, ksI, idR, capR, ksR, tk, ni, ci, cr) @k + ) +" + +lemma legOOB_secOOBi_weaksecret_init: +" + All idI idR capI capR ksI ksR tk ni nr stk #i1 #i2 #j. + InitWillDoLegOOB()[+] @i1 & RespWillDoSecOOBi()[+] @i2 & + InitiatorFinishedLegPairing(idI, capI, ksI, idR, capR, ksR, tk, ni, nr, stk) @j ==> + not (Ex #k . K(stk) @k ) +" + +lemma legOOB_secOOBi_weaksecret_resp: +" + All idI idR capI capR ksI ksR pkI pkR dh ltk #i1 #i2 #j. + InitWillDoLegOOB()[+] @i1 & RespWillDoSecOOBi()[+] @i2 & + ResponderFinishedSecPairing(idR, capR, ksR, idI, capI, ksI, pkI, pkR, dh, ltk) @j ==> + not (Ex #k . K(ltk) @k ) +" + +lemma legOOB_secOOBi_double_impersonation: +" + All #i1 #i2 . + InitWillDoLegOOB()[+] @i1 & RespWillDoSecOOBi()[+] @i2 ==> + (All idI1 idR1 capI1 capR1 ksI1 ksR1 idI2 idR2 capI2 capR2 ksI2 ksR2 tk ni nr stk pkI pkR dh ltk #j1 #j2 . + InitiatorFinishedLegPairing(idI1, capI1, ksI1, idR1, capR1, ksR1, tk, ni, nr, stk) @j1 & + ResponderFinishedSecPairing(idR2, capR2, ksR2, idI2, capI2, ksI2, pkR, pkI, dh, ltk) @j2 ==> + not (Ex #k1 #k2 . + K(stk) @k1 & K(ltk) @k2 + ) + ) +" + +#endif + +/********************************************/ +/* End lemmas about LegOOB-SecOOBi exchange */ +/********************************************/ + +/****************************************/ +/* Lemmas about LegOOB-SecOOBo exchange */ +/****************************************/ + +#ifdef LegOOBSecOOBo +lemma legOOB_secOOBo_functional: exists-trace +" + Ex #i1 #i2 . + InitWillDoLegOOB()[+] @i1 & RespWillDoSecOOBo()[+] @i2 & + (Ex idI1 idR1 capI1 capR1 ksI1 ksR1 idI2 idR2 capI2 capR2 ksI2 ksR2 tk ni nr stk pkI pkR dh ltk #j1 #j2 . + InitiatorFinishedLegPairing(idI1, capI1, ksI1, idR1, capR1, ksR1, tk, ni, nr, stk) @j1 & + ResponderFinishedSecPairing(idR2, capR2, ksR2, idI2, capI2, ksI2, pkR, pkI, dh, ltk) @j2 + ) +" + +lemma legOOB_secOOBo_auth_init: +" + All idI idR capI capR ksI ksR tk nli nlr stk #i1 #i2 #j . + InitWillDoLegOOB()[+] @i1 & RespWillDoSecOOBo()[+] @i2 & + InitiatorFinishedLegPairing(idI, capI, ksI, idR, capR, ksR, tk, nli, nlr, stk) @j ==> + (Ex pkI pkR dh nsi nsr ri rr ei er #k . + RespDoneDHKeyCheck(idR, capR, ksR, idI, capI, ksI, pkR, pkI, dh, nsr, nsi, rr, ri, er, ei) @k + ) +" + +lemma legOOB_secOOBo_auth_resp: +" + All idI idR capI capR ksI ksR pkI pkR dh ltk #i1 #i2 #j . + InitWillDoLegOOB()[+] @i1 & RespWillDoSecOOBo()[+] @i2 & + ResponderFinishedSecPairing(idR, capR, ksR, idI, capI, ksI, pkI, pkR, dh, ltk) @j ==> + (Ex tk ni ci cr #k . + InitSentRandom(idI, capI, ksI, idR, capR, ksR, tk, ni, ci, cr) @k + ) +" + +lemma legOOB_secOOBo_weaksecret_init: +" + All idI idR capI capR ksI ksR tk ni nr stk #i1 #i2 #j. + InitWillDoLegOOB()[+] @i1 & RespWillDoSecOOBo()[+] @i2 & + InitiatorFinishedLegPairing(idI, capI, ksI, idR, capR, ksR, tk, ni, nr, stk) @j ==> + not (Ex #k . K(stk) @k ) +" + +lemma legOOB_secOOBo_weaksecret_resp: +" + All idI idR capI capR ksI ksR pkI pkR dh ltk #i1 #i2 #j. + InitWillDoLegOOB()[+] @i1 & RespWillDoSecOOBo()[+] @i2 & + ResponderFinishedSecPairing(idR, capR, ksR, idI, capI, ksI, pkI, pkR, dh, ltk) @j ==> + not (Ex #k . K(ltk) @k ) +" + +lemma legOOB_secOOBo_double_impersonation: +" + All #i1 #i2 . + InitWillDoLegOOB()[+] @i1 & RespWillDoSecOOBo()[+] @i2 ==> + (All idI1 idR1 capI1 capR1 ksI1 ksR1 idI2 idR2 capI2 capR2 ksI2 ksR2 tk ni nr stk pkI pkR dh ltk #j1 #j2 . + InitiatorFinishedLegPairing(idI1, capI1, ksI1, idR1, capR1, ksR1, tk, ni, nr, stk) @j1 & + ResponderFinishedSecPairing(idR2, capR2, ksR2, idI2, capI2, ksI2, pkR, pkI, dh, ltk) @j2 ==> + not (Ex #k1 #k2 . + K(stk) @k1 & K(ltk) @k2 + ) + ) +" + +#endif + +/********************************************/ +/* End lemmas about LegOOB-SecOOBo exchange */ +/********************************************/ + +/*****************************************/ +/* Lemmas about LegOOB-SecOOBio exchange */ +/*****************************************/ + +#ifdef LegOOBSecOOBio +lemma legOOB_secOOBio_functional: exists-trace +" + Ex #i1 #i2 . + InitWillDoLegOOB()[+] @i1 & RespWillDoSecOOBio()[+] @i2 & + (Ex idI1 idR1 capI1 capR1 ksI1 ksR1 idI2 idR2 capI2 capR2 ksI2 ksR2 tk ni nr stk pkI pkR dh ltk #j1 #j2 . + InitiatorFinishedLegPairing(idI1, capI1, ksI1, idR1, capR1, ksR1, tk, ni, nr, stk) @j1 & + ResponderFinishedSecPairing(idR2, capR2, ksR2, idI2, capI2, ksI2, pkR, pkI, dh, ltk) @j2 + ) +" + +lemma legOOB_secOOBio_auth_init: +" + All idI idR capI capR ksI ksR tk nli nlr stk #i1 #i2 #j . + InitWillDoLegOOB()[+] @i1 & RespWillDoSecOOBio()[+] @i2 & + InitiatorFinishedLegPairing(idI, capI, ksI, idR, capR, ksR, tk, nli, nlr, stk) @j ==> + (Ex pkI pkR dh nsi nsr ri rr ei er #k . + RespDoneDHKeyCheck(idR, capR, ksR, idI, capI, ksI, pkR, pkI, dh, nsr, nsi, rr, ri, er, ei) @k + ) +" + +lemma legOOB_secOOBio_auth_resp: +" + All idI idR capI capR ksI ksR pkI pkR dh ltk #i1 #i2 #j . + InitWillDoLegOOB()[+] @i1 & RespWillDoSecOOBio()[+] @i2 & + ResponderFinishedSecPairing(idR, capR, ksR, idI, capI, ksI, pkI, pkR, dh, ltk) @j ==> + (Ex tk ni ci cr #k . + InitSentRandom(idI, capI, ksI, idR, capR, ksR, tk, ni, ci, cr) @k + ) +" + +lemma legOOB_secOOBio_weaksecret_init: +" + All idI idR capI capR ksI ksR tk ni nr stk #i1 #i2 #j. + InitWillDoLegOOB()[+] @i1 & RespWillDoSecOOBio()[+] @i2 & + InitiatorFinishedLegPairing(idI, capI, ksI, idR, capR, ksR, tk, ni, nr, stk) @j ==> + not (Ex #k . K(stk) @k ) +" + +lemma legOOB_secOOBio_weaksecret_resp: +" + All idI idR capI capR ksI ksR pkI pkR dh ltk #i1 #i2 #j. + InitWillDoLegOOB()[+] @i1 & RespWillDoSecOOBio()[+] @i2 & + ResponderFinishedSecPairing(idR, capR, ksR, idI, capI, ksI, pkI, pkR, dh, ltk) @j ==> + not (Ex #k . K(ltk) @k ) +" + +lemma legOOB_secOOBio_double_impersonation: +" + All #i1 #i2 . + InitWillDoLegOOB()[+] @i1 & RespWillDoSecOOBio()[+] @i2 ==> + (All idI1 idR1 capI1 capR1 ksI1 ksR1 idI2 idR2 capI2 capR2 ksI2 ksR2 tk ni nr stk pkI pkR dh ltk #j1 #j2 . + InitiatorFinishedLegPairing(idI1, capI1, ksI1, idR1, capR1, ksR1, tk, ni, nr, stk) @j1 & + ResponderFinishedSecPairing(idR2, capR2, ksR2, idI2, capI2, ksI2, pkR, pkI, dh, ltk) @j2 ==> + not (Ex #k1 #k2 . + K(stk) @k1 & K(ltk) @k2 + ) + ) +" + +#endif + +/*********************************************/ +/* End lemmas about LegOOB-SecOOBio exchange */ +/*********************************************/ + +/*************************************/ +/* Lemmas about SecJW-LegJW exchange */ +/*************************************/ + +#ifdef SecJWLegJW +lemma secJW_legJW_functional: exists-trace +" + Ex #i1 #i2 . + InitWillDoSecJW()[+] @i1 & RespWillDoLegJW()[+] @i2 & + (Ex idI1 idR1 capI1 capR1 ksI1 ksR1 idI2 idR2 capI2 capR2 ksI2 ksR2 tk ni nr stk pkI pkR dh ltk #j1 #j2 . + InitiatorFinishedSecPairing(idI1, capI1, ksI1, idR1, capR1, ksR1, pkI, pkR, dh, ltk) @j1 & + ResponderFinishedLegPairing(idR2, capR2, ksR2, idI2, capI2, ksI2, tk, nr, ni, stk) @j2 + ) +" + +lemma secJW_legJW_auth_init: +" + All idI idR capI capR ksI ksR pkI pkR dh ltk #i1 #i2 #j . + InitWillDoSecJW()[+] @i1 & RespWillDoLegJW()[+] @i2 & + InitiatorFinishedSecPairing(idI, capI, ksI, idR, capR, ksR, pkI, pkR, dh, ltk) @j ==> + (Ex tk ni nr ci cr #k. + RespSentRandom(idR, capR, ksR, idI, capI, ksI, tk, nr, ni, cr, ci) @k + ) +" + +lemma secJW_legJW_auth_resp: +" + All idI idR capI capR ksI ksR tk ni nr stk #i1 #i2 #j. + InitWillDoSecJW()[+] @i1 & RespWillDoLegJW()[+] @i2 & + ResponderFinishedLegPairing(idR, capR, ksR, idI, capI, ksI, tk, nr, ni, stk) @j ==> + (Ex pkI pkR dh nsi nsr ri rr ei #k . + InitDHKeyCheck(idI, capI, ksI, idR, capR, ksR, pkI, pkR, dh, nsi, nsr, ri, rr, ei) @k + ) +" + +lemma secJW_legJW_weaksecret_init: +" + All idI idR capI capR ksI ksR pkI pkR dh ltk #i1 #i2 #j . + InitWillDoSecJW()[+] @i1 & RespWillDoLegJW()[+] @i2 & + InitiatorFinishedSecPairing(idI, capI, ksI, idR, capR, ksR, pkI, pkR, dh, ltk) @j ==> + not (Ex #k. K(ltk) @k ) +" + +lemma secJW_legJW_weaksecret_resp: +" + All idI idR capI capR ksI ksR tk ni nr stk #i1 #i2 #j . + InitWillDoSecJW()[+] @i1 & RespWillDoLegJW()[+] @i2 & + ResponderFinishedLegPairing(idR, capR, ksR, idI, capI, ksI, tk, nr, ni, stk) @j ==> + not (Ex #k. K(stk) @k ) +" + +lemma secJW_legJW_double_impersonation: +" + All #i1 #i2 . + InitWillDoSecJW()[+] @i1 & RespWillDoLegJW()[+] @i2 ==> + (All idI1 idR1 capI1 capR1 ksI1 ksR1 idI2 idR2 capI2 capR2 ksI2 ksR2 tk ni nr stk pkI pkR dh ltk #j1 #j2 . + InitiatorFinishedSecPairing(idI1, capI1, ksI1, idR1, capR1, ksR1, pkI, pkR, dh, ltk) @j1 & + ResponderFinishedLegPairing(idR2, capR2, ksR2, idI2, capI2, ksI2, tk, nr, ni, stk) @j2 ==> + not (Ex #k1 #k2 . + K(ltk) @k1 & K(stk) @k2 + ) + ) +" + +#endif + +/*****************************************/ +/* End lemmas about SecJW-LegJW exchange */ +/*****************************************/ + +/**************************************/ +/* Lemmas about SecJW-LegPEi exchange */ +/**************************************/ + +#ifdef SecJWLegPEi +lemma secJW_legPEi_functional: exists-trace +" + Ex #i1 #i2 . + InitWillDoSecJW()[+] @i1 & RespWillDoLegPEi()[+] @i2 & + (Ex idI1 idR1 capI1 capR1 ksI1 ksR1 idI2 idR2 capI2 capR2 ksI2 ksR2 tk ni nr stk pkI pkR dh ltk #j1 #j2 . + InitiatorFinishedSecPairing(idI1, capI1, ksI1, idR1, capR1, ksR1, pkI, pkR, dh, ltk) @j1 & + ResponderFinishedLegPairing(idR2, capR2, ksR2, idI2, capI2, ksI2, tk, nr, ni, stk) @j2 + ) +" + +lemma secJW_legPEi_auth_init: +" + All idI idR capI capR ksI ksR pkI pkR dh ltk #i1 #i2 #j . + InitWillDoSecJW()[+] @i1 & RespWillDoLegPEi()[+] @i2 & + InitiatorFinishedSecPairing(idI, capI, ksI, idR, capR, ksR, pkI, pkR, dh, ltk) @j ==> + (Ex tk ni nr ci cr #k. + RespSentRandom(idR, capR, ksR, idI, capI, ksI, tk, nr, ni, cr, ci) @k + ) +" + +lemma secJW_legPEi_auth_resp: +" + All idI idR capI capR ksI ksR tk ni nr stk #i1 #i2 #j. + InitWillDoSecJW()[+] @i1 & RespWillDoLegPEi()[+] @i2 & + ResponderFinishedLegPairing(idR, capR, ksR, idI, capI, ksI, tk, nr, ni, stk) @j ==> + (Ex pkI pkR dh nsi nsr ri rr ei #k . + InitDHKeyCheck(idI, capI, ksI, idR, capR, ksR, pkI, pkR, dh, nsi, nsr, ri, rr, ei) @k + ) +" + +lemma secJW_legPEi_weaksecret_init: +" + All idI idR capI capR ksI ksR pkI pkR dh ltk #i1 #i2 #j . + InitWillDoSecJW()[+] @i1 & RespWillDoLegPEi()[+] @i2 & + InitiatorFinishedSecPairing(idI, capI, ksI, idR, capR, ksR, pkI, pkR, dh, ltk) @j ==> + not (Ex #k. K(ltk) @k ) +" + +lemma secJW_legPEi_weaksecret_resp: +" + All idI idR capI capR ksI ksR tk ni nr stk #i1 #i2 #j . + InitWillDoSecJW()[+] @i1 & RespWillDoLegPEi()[+] @i2 & + ResponderFinishedLegPairing(idR, capR, ksR, idI, capI, ksI, tk, nr, ni, stk) @j ==> + not (Ex #k. K(stk) @k ) +" + +lemma secJW_legPEi_double_impersonation: +" + All #i1 #i2 . + InitWillDoSecJW()[+] @i1 & RespWillDoLegPEi()[+] @i2 ==> + (All idI1 idR1 capI1 capR1 ksI1 ksR1 idI2 idR2 capI2 capR2 ksI2 ksR2 tk ni nr stk pkI pkR dh ltk #j1 #j2 . + InitiatorFinishedSecPairing(idI1, capI1, ksI1, idR1, capR1, ksR1, pkI, pkR, dh, ltk) @j1 & + ResponderFinishedLegPairing(idR2, capR2, ksR2, idI2, capI2, ksI2, tk, nr, ni, stk) @j2 ==> + not (Ex #k1 #k2 . + K(ltk) @k1 & K(stk) @k2 + ) + ) +" + +#endif + +/******************************************/ +/* End lemmas about SecJW-LegPEi exchange */ +/******************************************/ + +/**************************************/ +/* Lemmas about SecJW-LegPEo exchange */ +/**************************************/ + +#ifdef SecJWLegPEo +lemma secJW_legPEo_functional: exists-trace +" + Ex #i1 #i2 . + InitWillDoSecJW()[+] @i1 & RespWillDoLegPEo()[+] @i2 & + (Ex idI1 idR1 capI1 capR1 ksI1 ksR1 idI2 idR2 capI2 capR2 ksI2 ksR2 tk ni nr stk pkI pkR dh ltk #j1 #j2 . + InitiatorFinishedSecPairing(idI1, capI1, ksI1, idR1, capR1, ksR1, pkI, pkR, dh, ltk) @j1 & + ResponderFinishedLegPairing(idR2, capR2, ksR2, idI2, capI2, ksI2, tk, nr, ni, stk) @j2 + ) +" + +lemma secJW_legPEo_auth_init: +" + All idI idR capI capR ksI ksR pkI pkR dh ltk #i1 #i2 #j . + InitWillDoSecJW()[+] @i1 & RespWillDoLegPEo()[+] @i2 & + InitiatorFinishedSecPairing(idI, capI, ksI, idR, capR, ksR, pkI, pkR, dh, ltk) @j ==> + (Ex tk ni nr ci cr #k. + RespSentRandom(idR, capR, ksR, idI, capI, ksI, tk, nr, ni, cr, ci) @k + ) +" + +lemma secJW_legPEo_auth_resp: +" + All idI idR capI capR ksI ksR tk ni nr stk #i1 #i2 #j. + InitWillDoSecJW()[+] @i1 & RespWillDoLegPEo()[+] @i2 & + ResponderFinishedLegPairing(idR, capR, ksR, idI, capI, ksI, tk, nr, ni, stk) @j ==> + (Ex pkI pkR dh nsi nsr ri rr ei #k . + InitDHKeyCheck(idI, capI, ksI, idR, capR, ksR, pkI, pkR, dh, nsi, nsr, ri, rr, ei) @k + ) +" + +lemma secJW_legPEo_weaksecret_init: +" + All idI idR capI capR ksI ksR pkI pkR dh ltk #i1 #i2 #j . + InitWillDoSecJW()[+] @i1 & RespWillDoLegPEo()[+] @i2 & + InitiatorFinishedSecPairing(idI, capI, ksI, idR, capR, ksR, pkI, pkR, dh, ltk) @j ==> + not (Ex #k. K(ltk) @k ) +" + +lemma secJW_legPEo_weaksecret_resp: +" + All idI idR capI capR ksI ksR tk ni nr stk #i1 #i2 #j . + InitWillDoSecJW()[+] @i1 & RespWillDoLegPEo()[+] @i2 & + ResponderFinishedLegPairing(idR, capR, ksR, idI, capI, ksI, tk, nr, ni, stk) @j ==> + not (Ex #k. K(stk) @k ) +" + +lemma secJW_legPEo_double_impersonation: +" + All #i1 #i2 . + InitWillDoSecJW()[+] @i1 & RespWillDoLegPEo()[+] @i2 ==> + (All idI1 idR1 capI1 capR1 ksI1 ksR1 idI2 idR2 capI2 capR2 ksI2 ksR2 tk ni nr stk pkI pkR dh ltk #j1 #j2 . + InitiatorFinishedSecPairing(idI1, capI1, ksI1, idR1, capR1, ksR1, pkI, pkR, dh, ltk) @j1 & + ResponderFinishedLegPairing(idR2, capR2, ksR2, idI2, capI2, ksI2, tk, nr, ni, stk) @j2 ==> + not (Ex #k1 #k2 . + K(ltk) @k1 & K(stk) @k2 + ) + ) +" + +#endif + +/******************************************/ +/* End lemmas about SecJW-LegPEo exchange */ +/******************************************/ + +/***************************************/ +/* Lemmas about SecJW-LegPEio exchange */ +/***************************************/ + +#ifdef SecJWLegPEio +lemma secJW_legPEio_functional: exists-trace +" + Ex #i1 #i2 . + InitWillDoSecJW()[+] @i1 & RespWillDoLegPEio()[+] @i2 & + (Ex idI1 idR1 capI1 capR1 ksI1 ksR1 idI2 idR2 capI2 capR2 ksI2 ksR2 tk ni nr stk pkI pkR dh ltk #j1 #j2 . + InitiatorFinishedSecPairing(idI1, capI1, ksI1, idR1, capR1, ksR1, pkI, pkR, dh, ltk) @j1 & + ResponderFinishedLegPairing(idR2, capR2, ksR2, idI2, capI2, ksI2, tk, nr, ni, stk) @j2 + ) +" + +lemma secJW_legPEio_auth_init: +" + All idI idR capI capR ksI ksR pkI pkR dh ltk #i1 #i2 #j . + InitWillDoSecJW()[+] @i1 & RespWillDoLegPEio()[+] @i2 & + InitiatorFinishedSecPairing(idI, capI, ksI, idR, capR, ksR, pkI, pkR, dh, ltk) @j ==> + (Ex tk ni nr ci cr #k. + RespSentRandom(idR, capR, ksR, idI, capI, ksI, tk, nr, ni, cr, ci) @k + ) +" + +lemma secJW_legPEio_auth_resp: +" + All idI idR capI capR ksI ksR tk ni nr stk #i1 #i2 #j. + InitWillDoSecJW()[+] @i1 & RespWillDoLegPEio()[+] @i2 & + ResponderFinishedLegPairing(idR, capR, ksR, idI, capI, ksI, tk, nr, ni, stk) @j ==> + (Ex pkI pkR dh nsi nsr ri rr ei #k . + InitDHKeyCheck(idI, capI, ksI, idR, capR, ksR, pkI, pkR, dh, nsi, nsr, ri, rr, ei) @k + ) +" + +lemma secJW_legPEio_weaksecret_init: +" + All idI idR capI capR ksI ksR pkI pkR dh ltk #i1 #i2 #j . + InitWillDoSecJW()[+] @i1 & RespWillDoLegPEio()[+] @i2 & + InitiatorFinishedSecPairing(idI, capI, ksI, idR, capR, ksR, pkI, pkR, dh, ltk) @j ==> + not (Ex #k. K(ltk) @k ) +" + +lemma secJW_legPEio_weaksecret_resp: +" + All idI idR capI capR ksI ksR tk ni nr stk #i1 #i2 #j . + InitWillDoSecJW()[+] @i1 & RespWillDoLegPEio()[+] @i2 & + ResponderFinishedLegPairing(idR, capR, ksR, idI, capI, ksI, tk, nr, ni, stk) @j ==> + not (Ex #k. K(stk) @k ) +" + +lemma secJW_legPEio_double_impersonation: +" + All #i1 #i2 . + InitWillDoSecJW()[+] @i1 & RespWillDoLegPEio()[+] @i2 ==> + (All idI1 idR1 capI1 capR1 ksI1 ksR1 idI2 idR2 capI2 capR2 ksI2 ksR2 tk ni nr stk pkI pkR dh ltk #j1 #j2 . + InitiatorFinishedSecPairing(idI1, capI1, ksI1, idR1, capR1, ksR1, pkI, pkR, dh, ltk) @j1 & + ResponderFinishedLegPairing(idR2, capR2, ksR2, idI2, capI2, ksI2, tk, nr, ni, stk) @j2 ==> + not (Ex #k1 #k2 . + K(ltk) @k1 & K(stk) @k2 + ) + ) +" + +#endif + +/*******************************************/ +/* End lemmas about SecJW-LegPEio exchange */ +/*******************************************/ + +/**************************************/ +/* Lemmas about SecJW-LegOOB exchange */ +/**************************************/ + +#ifdef SecJWLegOOB +lemma secJW_legOOB_functional: exists-trace +" + Ex #i1 #i2 . + InitWillDoSecJW()[+] @i1 & RespWillDoLegOOB()[+] @i2 & + (Ex idI1 idR1 capI1 capR1 ksI1 ksR1 idI2 idR2 capI2 capR2 ksI2 ksR2 tk ni nr stk pkI pkR dh ltk #j1 #j2 . + InitiatorFinishedSecPairing(idI1, capI1, ksI1, idR1, capR1, ksR1, pkI, pkR, dh, ltk) @j1 & + ResponderFinishedLegPairing(idR2, capR2, ksR2, idI2, capI2, ksI2, tk, nr, ni, stk) @j2 + ) +" + +lemma secJW_legOOB_auth_init: +" + All idI idR capI capR ksI ksR pkI pkR dh ltk #i1 #i2 #j . + InitWillDoSecJW()[+] @i1 & RespWillDoLegOOB()[+] @i2 & + InitiatorFinishedSecPairing(idI, capI, ksI, idR, capR, ksR, pkI, pkR, dh, ltk) @j ==> + (Ex tk ni nr ci cr #k. + RespSentRandom(idR, capR, ksR, idI, capI, ksI, tk, nr, ni, cr, ci) @k + ) +" + +lemma secJW_legOOB_auth_resp: +" + All idI idR capI capR ksI ksR tk ni nr stk #i1 #i2 #j. + InitWillDoSecJW()[+] @i1 & RespWillDoLegOOB()[+] @i2 & + ResponderFinishedLegPairing(idR, capR, ksR, idI, capI, ksI, tk, nr, ni, stk) @j ==> + (Ex pkI pkR dh nsi nsr ri rr ei #k . + InitDHKeyCheck(idI, capI, ksI, idR, capR, ksR, pkI, pkR, dh, nsi, nsr, ri, rr, ei) @k + ) +" + +lemma secJW_legOOB_weaksecret_init: +" + All idI idR capI capR ksI ksR pkI pkR dh ltk #i1 #i2 #j . + InitWillDoSecJW()[+] @i1 & RespWillDoLegOOB()[+] @i2 & + InitiatorFinishedSecPairing(idI, capI, ksI, idR, capR, ksR, pkI, pkR, dh, ltk) @j ==> + not (Ex #k. K(ltk) @k ) +" + +lemma secJW_legOOB_weaksecret_resp: +" + All idI idR capI capR ksI ksR tk ni nr stk #i1 #i2 #j . + InitWillDoSecJW()[+] @i1 & RespWillDoLegOOB()[+] @i2 & + ResponderFinishedLegPairing(idR, capR, ksR, idI, capI, ksI, tk, nr, ni, stk) @j ==> + not (Ex #k. K(stk) @k ) +" + +lemma secJW_legOOB_double_impersonation: +" + All #i1 #i2 . + InitWillDoSecJW()[+] @i1 & RespWillDoLegOOB()[+] @i2 ==> + (All idI1 idR1 capI1 capR1 ksI1 ksR1 idI2 idR2 capI2 capR2 ksI2 ksR2 tk ni nr stk pkI pkR dh ltk #j1 #j2 . + InitiatorFinishedSecPairing(idI1, capI1, ksI1, idR1, capR1, ksR1, pkI, pkR, dh, ltk) @j1 & + ResponderFinishedLegPairing(idR2, capR2, ksR2, idI2, capI2, ksI2, tk, nr, ni, stk) @j2 ==> + not (Ex #k1 #k2 . + K(ltk) @k1 & K(stk) @k2 + ) + ) +" + +#endif + +/******************************************/ +/* End lemmas about SecJW-LegOOB exchange */ +/******************************************/ + +/**************************************/ +/* Lemmas about SecPEi-LegJW exchange */ +/**************************************/ + +#ifdef SecPEiLegJW +lemma secPEi_legJW_functional: exists-trace +" + Ex #i1 #i2 . + InitWillDoSecPEi()[+] @i1 & RespWillDoLegJW()[+] @i2 & + (Ex idI1 idR1 capI1 capR1 ksI1 ksR1 idI2 idR2 capI2 capR2 ksI2 ksR2 tk ni nr stk pkI pkR dh ltk #j1 #j2 . + InitiatorFinishedSecPairing(idI1, capI1, ksI1, idR1, capR1, ksR1, pkI, pkR, dh, ltk) @j1 & + ResponderFinishedLegPairing(idR2, capR2, ksR2, idI2, capI2, ksI2, tk, nr, ni, stk) @j2 + ) +" + +lemma secPEi_legJW_auth_init: +" + All idI idR capI capR ksI ksR pkI pkR dh ltk #i1 #i2 #j . + InitWillDoSecPEi()[+] @i1 & RespWillDoLegJW()[+] @i2 & + InitiatorFinishedSecPairing(idI, capI, ksI, idR, capR, ksR, pkI, pkR, dh, ltk) @j ==> + (Ex tk ni nr ci cr #k. + RespSentRandom(idR, capR, ksR, idI, capI, ksI, tk, nr, ni, cr, ci) @k + ) +" + +lemma secPEi_legJW_auth_resp: +" + All idI idR capI capR ksI ksR tk ni nr stk #i1 #i2 #j. + InitWillDoSecPEi()[+] @i1 & RespWillDoLegJW()[+] @i2 & + ResponderFinishedLegPairing(idR, capR, ksR, idI, capI, ksI, tk, nr, ni, stk) @j ==> + (Ex pkI pkR dh nsi nsr ri rr ei #k . + InitDHKeyCheck(idI, capI, ksI, idR, capR, ksR, pkI, pkR, dh, nsi, nsr, ri, rr, ei) @k + ) +" + +lemma secPEi_legJW_weaksecret_init: +" + All idI idR capI capR ksI ksR pkI pkR dh ltk #i1 #i2 #j . + InitWillDoSecPEi()[+] @i1 & RespWillDoLegJW()[+] @i2 & + InitiatorFinishedSecPairing(idI, capI, ksI, idR, capR, ksR, pkI, pkR, dh, ltk) @j ==> + not (Ex #k. K(ltk) @k ) +" + +lemma secPEi_legJW_weaksecret_resp: +" + All idI idR capI capR ksI ksR tk ni nr stk #i1 #i2 #j . + InitWillDoSecPEi()[+] @i1 & RespWillDoLegJW()[+] @i2 & + ResponderFinishedLegPairing(idR, capR, ksR, idI, capI, ksI, tk, nr, ni, stk) @j ==> + not (Ex #k. K(stk) @k ) +" + +lemma secPEi_legJW_double_impersonation: +" + All #i1 #i2 . + InitWillDoSecPEi()[+] @i1 & RespWillDoLegJW()[+] @i2 ==> + (All idI1 idR1 capI1 capR1 ksI1 ksR1 idI2 idR2 capI2 capR2 ksI2 ksR2 tk ni nr stk pkI pkR dh ltk #j1 #j2 . + InitiatorFinishedSecPairing(idI1, capI1, ksI1, idR1, capR1, ksR1, pkI, pkR, dh, ltk) @j1 & + ResponderFinishedLegPairing(idR2, capR2, ksR2, idI2, capI2, ksI2, tk, nr, ni, stk) @j2 ==> + not (Ex #k1 #k2 . + K(ltk) @k1 & K(stk) @k2 + ) + ) +" + +#endif + +/******************************************/ +/* End lemmas about SecPEi-LegJW exchange */ +/******************************************/ + +/***************************************/ +/* Lemmas about SecPEi-LegPEi exchange */ +/***************************************/ + +#ifdef SecPEiLegPEi +lemma secPEi_legPEi_functional: exists-trace +" + Ex #i1 #i2 . + InitWillDoSecPEi()[+] @i1 & RespWillDoLegPEi()[+] @i2 & + (Ex idI1 idR1 capI1 capR1 ksI1 ksR1 idI2 idR2 capI2 capR2 ksI2 ksR2 tk ni nr stk pkI pkR dh ltk #j1 #j2 . + InitiatorFinishedSecPairing(idI1, capI1, ksI1, idR1, capR1, ksR1, pkI, pkR, dh, ltk) @j1 & + ResponderFinishedLegPairing(idR2, capR2, ksR2, idI2, capI2, ksI2, tk, nr, ni, stk) @j2 + ) +" + +lemma secPEi_legPEi_auth_init: +" + All idI idR capI capR ksI ksR pkI pkR dh ltk #i1 #i2 #j . + InitWillDoSecPEi()[+] @i1 & RespWillDoLegPEi()[+] @i2 & + InitiatorFinishedSecPairing(idI, capI, ksI, idR, capR, ksR, pkI, pkR, dh, ltk) @j ==> + (Ex tk ni nr ci cr #k. + RespSentRandom(idR, capR, ksR, idI, capI, ksI, tk, nr, ni, cr, ci) @k + ) +" + +lemma secPEi_legPEi_auth_resp: +" + All idI idR capI capR ksI ksR tk ni nr stk #i1 #i2 #j. + InitWillDoSecPEi()[+] @i1 & RespWillDoLegPEi()[+] @i2 & + ResponderFinishedLegPairing(idR, capR, ksR, idI, capI, ksI, tk, nr, ni, stk) @j ==> + (Ex pkI pkR dh nsi nsr ri rr ei #k . + InitDHKeyCheck(idI, capI, ksI, idR, capR, ksR, pkI, pkR, dh, nsi, nsr, ri, rr, ei) @k + ) +" + +lemma secPEi_legPEi_weaksecret_init: +" + All idI idR capI capR ksI ksR pkI pkR dh ltk #i1 #i2 #j . + InitWillDoSecPEi()[+] @i1 & RespWillDoLegPEi()[+] @i2 & + InitiatorFinishedSecPairing(idI, capI, ksI, idR, capR, ksR, pkI, pkR, dh, ltk) @j ==> + not (Ex #k. K(ltk) @k ) +" + +lemma secPEi_legPEi_weaksecret_resp: +" + All idI idR capI capR ksI ksR tk ni nr stk #i1 #i2 #j . + InitWillDoSecPEi()[+] @i1 & RespWillDoLegPEi()[+] @i2 & + ResponderFinishedLegPairing(idR, capR, ksR, idI, capI, ksI, tk, nr, ni, stk) @j ==> + not (Ex #k. K(stk) @k ) +" + +lemma secPEi_legPEi_double_impersonation: +" + All #i1 #i2 . + InitWillDoSecPEi()[+] @i1 & RespWillDoLegPEi()[+] @i2 ==> + (All idI1 idR1 capI1 capR1 ksI1 ksR1 idI2 idR2 capI2 capR2 ksI2 ksR2 tk ni nr stk pkI pkR dh ltk #j1 #j2 . + InitiatorFinishedSecPairing(idI1, capI1, ksI1, idR1, capR1, ksR1, pkI, pkR, dh, ltk) @j1 & + ResponderFinishedLegPairing(idR2, capR2, ksR2, idI2, capI2, ksI2, tk, nr, ni, stk) @j2 ==> + not (Ex #k1 #k2 . + K(ltk) @k1 & K(stk) @k2 + ) + ) +" + +#endif + +/*******************************************/ +/* End lemmas about SecPEi-LegPEi exchange */ +/*******************************************/ + +/***************************************/ +/* Lemmas about SecPEi-LegPEo exchange */ +/***************************************/ + +#ifdef SecPEiLegPEo +lemma secPEi_legPEo_functional: exists-trace +" + Ex #i1 #i2 . + InitWillDoSecPEi()[+] @i1 & RespWillDoLegPEo()[+] @i2 & + (Ex idI1 idR1 capI1 capR1 ksI1 ksR1 idI2 idR2 capI2 capR2 ksI2 ksR2 tk ni nr stk pkI pkR dh ltk #j1 #j2 . + InitiatorFinishedSecPairing(idI1, capI1, ksI1, idR1, capR1, ksR1, pkI, pkR, dh, ltk) @j1 & + ResponderFinishedLegPairing(idR2, capR2, ksR2, idI2, capI2, ksI2, tk, nr, ni, stk) @j2 + ) +" + +lemma secPEi_legPEo_auth_init: +" + All idI idR capI capR ksI ksR pkI pkR dh ltk #i1 #i2 #j . + InitWillDoSecPEi()[+] @i1 & RespWillDoLegPEo()[+] @i2 & + InitiatorFinishedSecPairing(idI, capI, ksI, idR, capR, ksR, pkI, pkR, dh, ltk) @j ==> + (Ex tk ni nr ci cr #k. + RespSentRandom(idR, capR, ksR, idI, capI, ksI, tk, nr, ni, cr, ci) @k + ) +" + +lemma secPEi_legPEo_auth_resp: +" + All idI idR capI capR ksI ksR tk ni nr stk #i1 #i2 #j. + InitWillDoSecPEi()[+] @i1 & RespWillDoLegPEo()[+] @i2 & + ResponderFinishedLegPairing(idR, capR, ksR, idI, capI, ksI, tk, nr, ni, stk) @j ==> + (Ex pkI pkR dh nsi nsr ri rr ei #k . + InitDHKeyCheck(idI, capI, ksI, idR, capR, ksR, pkI, pkR, dh, nsi, nsr, ri, rr, ei) @k + ) +" + +lemma secPEi_legPEo_weaksecret_init: +" + All idI idR capI capR ksI ksR pkI pkR dh ltk #i1 #i2 #j . + InitWillDoSecPEi()[+] @i1 & RespWillDoLegPEo()[+] @i2 & + InitiatorFinishedSecPairing(idI, capI, ksI, idR, capR, ksR, pkI, pkR, dh, ltk) @j ==> + not (Ex #k. K(ltk) @k ) +" + +lemma secPEi_legPEo_weaksecret_resp: +" + All idI idR capI capR ksI ksR tk ni nr stk #i1 #i2 #j . + InitWillDoSecPEi()[+] @i1 & RespWillDoLegPEo()[+] @i2 & + ResponderFinishedLegPairing(idR, capR, ksR, idI, capI, ksI, tk, nr, ni, stk) @j ==> + not (Ex #k. K(stk) @k ) +" + +lemma secPEi_legPEo_double_impersonation: +" + All #i1 #i2 . + InitWillDoSecPEi()[+] @i1 & RespWillDoLegPEo()[+] @i2 ==> + (All idI1 idR1 capI1 capR1 ksI1 ksR1 idI2 idR2 capI2 capR2 ksI2 ksR2 tk ni nr stk pkI pkR dh ltk #j1 #j2 . + InitiatorFinishedSecPairing(idI1, capI1, ksI1, idR1, capR1, ksR1, pkI, pkR, dh, ltk) @j1 & + ResponderFinishedLegPairing(idR2, capR2, ksR2, idI2, capI2, ksI2, tk, nr, ni, stk) @j2 ==> + not (Ex #k1 #k2 . + K(ltk) @k1 & K(stk) @k2 + ) + ) +" + +#endif + +/*******************************************/ +/* End lemmas about SecPEi-LegPEo exchange */ +/*******************************************/ + +/****************************************/ +/* Lemmas about SecPEi-LegPEio exchange */ +/****************************************/ + +#ifdef SecPEiLegPEio +lemma secPEi_legPEio_functional: exists-trace +" + Ex #i1 #i2 . + InitWillDoSecPEi()[+] @i1 & RespWillDoLegPEio()[+] @i2 & + (Ex idI1 idR1 capI1 capR1 ksI1 ksR1 idI2 idR2 capI2 capR2 ksI2 ksR2 tk ni nr stk pkI pkR dh ltk #j1 #j2 . + InitiatorFinishedSecPairing(idI1, capI1, ksI1, idR1, capR1, ksR1, pkI, pkR, dh, ltk) @j1 & + ResponderFinishedLegPairing(idR2, capR2, ksR2, idI2, capI2, ksI2, tk, nr, ni, stk) @j2 + ) +" + +lemma secPEi_legPEio_auth_init: +" + All idI idR capI capR ksI ksR pkI pkR dh ltk #i1 #i2 #j . + InitWillDoSecPEi()[+] @i1 & RespWillDoLegPEio()[+] @i2 & + InitiatorFinishedSecPairing(idI, capI, ksI, idR, capR, ksR, pkI, pkR, dh, ltk) @j ==> + (Ex tk ni nr ci cr #k. + RespSentRandom(idR, capR, ksR, idI, capI, ksI, tk, nr, ni, cr, ci) @k + ) +" + +lemma secPEi_legPEio_auth_resp: +" + All idI idR capI capR ksI ksR tk ni nr stk #i1 #i2 #j. + InitWillDoSecPEi()[+] @i1 & RespWillDoLegPEio()[+] @i2 & + ResponderFinishedLegPairing(idR, capR, ksR, idI, capI, ksI, tk, nr, ni, stk) @j ==> + (Ex pkI pkR dh nsi nsr ri rr ei #k . + InitDHKeyCheck(idI, capI, ksI, idR, capR, ksR, pkI, pkR, dh, nsi, nsr, ri, rr, ei) @k + ) +" + +lemma secPEi_legPEio_weaksecret_init: +" + All idI idR capI capR ksI ksR pkI pkR dh ltk #i1 #i2 #j . + InitWillDoSecPEi()[+] @i1 & RespWillDoLegPEio()[+] @i2 & + InitiatorFinishedSecPairing(idI, capI, ksI, idR, capR, ksR, pkI, pkR, dh, ltk) @j ==> + not (Ex #k. K(ltk) @k ) +" + +lemma secPEi_legPEio_weaksecret_resp: +" + All idI idR capI capR ksI ksR tk ni nr stk #i1 #i2 #j . + InitWillDoSecPEi()[+] @i1 & RespWillDoLegPEio()[+] @i2 & + ResponderFinishedLegPairing(idR, capR, ksR, idI, capI, ksI, tk, nr, ni, stk) @j ==> + not (Ex #k. K(stk) @k ) +" + +lemma secPEi_legPEio_double_impersonation: +" + All #i1 #i2 . + InitWillDoSecPEi()[+] @i1 & RespWillDoLegPEio()[+] @i2 ==> + (All idI1 idR1 capI1 capR1 ksI1 ksR1 idI2 idR2 capI2 capR2 ksI2 ksR2 tk ni nr stk pkI pkR dh ltk #j1 #j2 . + InitiatorFinishedSecPairing(idI1, capI1, ksI1, idR1, capR1, ksR1, pkI, pkR, dh, ltk) @j1 & + ResponderFinishedLegPairing(idR2, capR2, ksR2, idI2, capI2, ksI2, tk, nr, ni, stk) @j2 ==> + not (Ex #k1 #k2 . + K(ltk) @k1 & K(stk) @k2 + ) + ) +" + +#endif + +/********************************************/ +/* End lemmas about SecPEi-LegPEio exchange */ +/********************************************/ + +/***************************************/ +/* Lemmas about SecPEi-LegOOB exchange */ +/***************************************/ + +#ifdef SecPEiLegOOB +lemma secPEi_legOOB_functional: exists-trace +" + Ex #i1 #i2 . + InitWillDoSecPEi()[+] @i1 & RespWillDoLegOOB()[+] @i2 & + (Ex idI1 idR1 capI1 capR1 ksI1 ksR1 idI2 idR2 capI2 capR2 ksI2 ksR2 tk ni nr stk pkI pkR dh ltk #j1 #j2 . + InitiatorFinishedSecPairing(idI1, capI1, ksI1, idR1, capR1, ksR1, pkI, pkR, dh, ltk) @j1 & + ResponderFinishedLegPairing(idR2, capR2, ksR2, idI2, capI2, ksI2, tk, nr, ni, stk) @j2 + ) +" + +lemma secPEi_legOOB_auth_init: +" + All idI idR capI capR ksI ksR pkI pkR dh ltk #i1 #i2 #j . + InitWillDoSecPEi()[+] @i1 & RespWillDoLegOOB()[+] @i2 & + InitiatorFinishedSecPairing(idI, capI, ksI, idR, capR, ksR, pkI, pkR, dh, ltk) @j ==> + (Ex tk ni nr ci cr #k. + RespSentRandom(idR, capR, ksR, idI, capI, ksI, tk, nr, ni, cr, ci) @k + ) +" + +lemma secPEi_legOOB_auth_resp: +" + All idI idR capI capR ksI ksR tk ni nr stk #i1 #i2 #j. + InitWillDoSecPEi()[+] @i1 & RespWillDoLegOOB()[+] @i2 & + ResponderFinishedLegPairing(idR, capR, ksR, idI, capI, ksI, tk, nr, ni, stk) @j ==> + (Ex pkI pkR dh nsi nsr ri rr ei #k . + InitDHKeyCheck(idI, capI, ksI, idR, capR, ksR, pkI, pkR, dh, nsi, nsr, ri, rr, ei) @k + ) +" + +lemma secPEi_legOOB_weaksecret_init: +" + All idI idR capI capR ksI ksR pkI pkR dh ltk #i1 #i2 #j . + InitWillDoSecPEi()[+] @i1 & RespWillDoLegOOB()[+] @i2 & + InitiatorFinishedSecPairing(idI, capI, ksI, idR, capR, ksR, pkI, pkR, dh, ltk) @j ==> + not (Ex #k. K(ltk) @k ) +" + +lemma secPEi_legOOB_weaksecret_resp: +" + All idI idR capI capR ksI ksR tk ni nr stk #i1 #i2 #j . + InitWillDoSecPEi()[+] @i1 & RespWillDoLegOOB()[+] @i2 & + ResponderFinishedLegPairing(idR, capR, ksR, idI, capI, ksI, tk, nr, ni, stk) @j ==> + not (Ex #k. K(stk) @k ) +" + +lemma secPEi_legOOB_double_impersonation: +" + All #i1 #i2 . + InitWillDoSecPEi()[+] @i1 & RespWillDoLegOOB()[+] @i2 ==> + (All idI1 idR1 capI1 capR1 ksI1 ksR1 idI2 idR2 capI2 capR2 ksI2 ksR2 tk ni nr stk pkI pkR dh ltk #j1 #j2 . + InitiatorFinishedSecPairing(idI1, capI1, ksI1, idR1, capR1, ksR1, pkI, pkR, dh, ltk) @j1 & + ResponderFinishedLegPairing(idR2, capR2, ksR2, idI2, capI2, ksI2, tk, nr, ni, stk) @j2 ==> + not (Ex #k1 #k2 . + K(ltk) @k1 & K(stk) @k2 + ) + ) +" + +#endif + +/*******************************************/ +/* End lemmas about SecPEi-LegOOB exchange */ +/*******************************************/ + +/**************************************/ +/* Lemmas about SecPEo-LegJW exchange */ +/**************************************/ + +#ifdef SecPEoLegJW +lemma secPEo_legJW_functional: exists-trace +" + Ex #i1 #i2 . + InitWillDoSecPEo()[+] @i1 & RespWillDoLegJW()[+] @i2 & + (Ex idI1 idR1 capI1 capR1 ksI1 ksR1 idI2 idR2 capI2 capR2 ksI2 ksR2 tk ni nr stk pkI pkR dh ltk #j1 #j2 . + InitiatorFinishedSecPairing(idI1, capI1, ksI1, idR1, capR1, ksR1, pkI, pkR, dh, ltk) @j1 & + ResponderFinishedLegPairing(idR2, capR2, ksR2, idI2, capI2, ksI2, tk, nr, ni, stk) @j2 + ) +" + +lemma secPEo_legJW_auth_init: +" + All idI idR capI capR ksI ksR pkI pkR dh ltk #i1 #i2 #j . + InitWillDoSecPEo()[+] @i1 & RespWillDoLegJW()[+] @i2 & + InitiatorFinishedSecPairing(idI, capI, ksI, idR, capR, ksR, pkI, pkR, dh, ltk) @j ==> + (Ex tk ni nr ci cr #k. + RespSentRandom(idR, capR, ksR, idI, capI, ksI, tk, nr, ni, cr, ci) @k + ) +" + +lemma secPEo_legJW_auth_resp: +" + All idI idR capI capR ksI ksR tk ni nr stk #i1 #i2 #j. + InitWillDoSecPEo()[+] @i1 & RespWillDoLegJW()[+] @i2 & + ResponderFinishedLegPairing(idR, capR, ksR, idI, capI, ksI, tk, nr, ni, stk) @j ==> + (Ex pkI pkR dh nsi nsr ri rr ei #k . + InitDHKeyCheck(idI, capI, ksI, idR, capR, ksR, pkI, pkR, dh, nsi, nsr, ri, rr, ei) @k + ) +" + +lemma secPEo_legJW_weaksecret_init: +" + All idI idR capI capR ksI ksR pkI pkR dh ltk #i1 #i2 #j . + InitWillDoSecPEo()[+] @i1 & RespWillDoLegJW()[+] @i2 & + InitiatorFinishedSecPairing(idI, capI, ksI, idR, capR, ksR, pkI, pkR, dh, ltk) @j ==> + not (Ex #k. K(ltk) @k ) +" + +lemma secPEo_legJW_weaksecret_resp: +" + All idI idR capI capR ksI ksR tk ni nr stk #i1 #i2 #j . + InitWillDoSecPEo()[+] @i1 & RespWillDoLegJW()[+] @i2 & + ResponderFinishedLegPairing(idR, capR, ksR, idI, capI, ksI, tk, nr, ni, stk) @j ==> + not (Ex #k. K(stk) @k ) +" + +lemma secPEo_legJW_double_impersonation: +" + All #i1 #i2 . + InitWillDoSecPEo()[+] @i1 & RespWillDoLegJW()[+] @i2 ==> + (All idI1 idR1 capI1 capR1 ksI1 ksR1 idI2 idR2 capI2 capR2 ksI2 ksR2 tk ni nr stk pkI pkR dh ltk #j1 #j2 . + InitiatorFinishedSecPairing(idI1, capI1, ksI1, idR1, capR1, ksR1, pkI, pkR, dh, ltk) @j1 & + ResponderFinishedLegPairing(idR2, capR2, ksR2, idI2, capI2, ksI2, tk, nr, ni, stk) @j2 ==> + not (Ex #k1 #k2 . + K(ltk) @k1 & K(stk) @k2 + ) + ) +" + +#endif + +/******************************************/ +/* End lemmas about SecPEo-LegJW exchange */ +/******************************************/ + +/***************************************/ +/* Lemmas about SecPEo-LegPEi exchange */ +/***************************************/ + +#ifdef SecPEoLegPEi +lemma secPEo_legPEi_functional: exists-trace +" + Ex #i1 #i2 . + InitWillDoSecPEo()[+] @i1 & RespWillDoLegPEi()[+] @i2 & + (Ex idI1 idR1 capI1 capR1 ksI1 ksR1 idI2 idR2 capI2 capR2 ksI2 ksR2 tk ni nr stk pkI pkR dh ltk #j1 #j2 . + InitiatorFinishedSecPairing(idI1, capI1, ksI1, idR1, capR1, ksR1, pkI, pkR, dh, ltk) @j1 & + ResponderFinishedLegPairing(idR2, capR2, ksR2, idI2, capI2, ksI2, tk, nr, ni, stk) @j2 + ) +" + +lemma secPEo_legPEi_auth_init: +" + All idI idR capI capR ksI ksR pkI pkR dh ltk #i1 #i2 #j . + InitWillDoSecPEo()[+] @i1 & RespWillDoLegPEi()[+] @i2 & + InitiatorFinishedSecPairing(idI, capI, ksI, idR, capR, ksR, pkI, pkR, dh, ltk) @j ==> + (Ex tk ni nr ci cr #k. + RespSentRandom(idR, capR, ksR, idI, capI, ksI, tk, nr, ni, cr, ci) @k + ) +" + +lemma secPEo_legPEi_auth_resp: +" + All idI idR capI capR ksI ksR tk ni nr stk #i1 #i2 #j. + InitWillDoSecPEo()[+] @i1 & RespWillDoLegPEi()[+] @i2 & + ResponderFinishedLegPairing(idR, capR, ksR, idI, capI, ksI, tk, nr, ni, stk) @j ==> + (Ex pkI pkR dh nsi nsr ri rr ei #k . + InitDHKeyCheck(idI, capI, ksI, idR, capR, ksR, pkI, pkR, dh, nsi, nsr, ri, rr, ei) @k + ) +" + +lemma secPEo_legPEi_weaksecret_init: +" + All idI idR capI capR ksI ksR pkI pkR dh ltk #i1 #i2 #j . + InitWillDoSecPEo()[+] @i1 & RespWillDoLegPEi()[+] @i2 & + InitiatorFinishedSecPairing(idI, capI, ksI, idR, capR, ksR, pkI, pkR, dh, ltk) @j ==> + not (Ex #k. K(ltk) @k ) +" + +lemma secPEo_legPEi_weaksecret_resp: +" + All idI idR capI capR ksI ksR tk ni nr stk #i1 #i2 #j . + InitWillDoSecPEo()[+] @i1 & RespWillDoLegPEi()[+] @i2 & + ResponderFinishedLegPairing(idR, capR, ksR, idI, capI, ksI, tk, nr, ni, stk) @j ==> + not (Ex #k. K(stk) @k ) +" + +lemma secPEo_legPEi_double_impersonation: +" + All #i1 #i2 . + InitWillDoSecPEo()[+] @i1 & RespWillDoLegPEi()[+] @i2 ==> + (All idI1 idR1 capI1 capR1 ksI1 ksR1 idI2 idR2 capI2 capR2 ksI2 ksR2 tk ni nr stk pkI pkR dh ltk #j1 #j2 . + InitiatorFinishedSecPairing(idI1, capI1, ksI1, idR1, capR1, ksR1, pkI, pkR, dh, ltk) @j1 & + ResponderFinishedLegPairing(idR2, capR2, ksR2, idI2, capI2, ksI2, tk, nr, ni, stk) @j2 ==> + not (Ex #k1 #k2 . + K(ltk) @k1 & K(stk) @k2 + ) + ) +" + +#endif + +/*******************************************/ +/* End lemmas about SecPEo-LegPEi exchange */ +/*******************************************/ + +/***************************************/ +/* Lemmas about SecPEo-LegPEo exchange */ +/***************************************/ + +#ifdef SecPEoLegPEo +lemma secPEo_legPEo_functional: exists-trace +" + Ex #i1 #i2 . + InitWillDoSecPEo()[+] @i1 & RespWillDoLegPEo()[+] @i2 & + (Ex idI1 idR1 capI1 capR1 ksI1 ksR1 idI2 idR2 capI2 capR2 ksI2 ksR2 tk ni nr stk pkI pkR dh ltk #j1 #j2 . + InitiatorFinishedSecPairing(idI1, capI1, ksI1, idR1, capR1, ksR1, pkI, pkR, dh, ltk) @j1 & + ResponderFinishedLegPairing(idR2, capR2, ksR2, idI2, capI2, ksI2, tk, nr, ni, stk) @j2 + ) +" + +lemma secPEo_legPEo_auth_init: +" + All idI idR capI capR ksI ksR pkI pkR dh ltk #i1 #i2 #j . + InitWillDoSecPEo()[+] @i1 & RespWillDoLegPEo()[+] @i2 & + InitiatorFinishedSecPairing(idI, capI, ksI, idR, capR, ksR, pkI, pkR, dh, ltk) @j ==> + (Ex tk ni nr ci cr #k. + RespSentRandom(idR, capR, ksR, idI, capI, ksI, tk, nr, ni, cr, ci) @k + ) +" + +lemma secPEo_legPEo_auth_resp: +" + All idI idR capI capR ksI ksR tk ni nr stk #i1 #i2 #j. + InitWillDoSecPEo()[+] @i1 & RespWillDoLegPEo()[+] @i2 & + ResponderFinishedLegPairing(idR, capR, ksR, idI, capI, ksI, tk, nr, ni, stk) @j ==> + (Ex pkI pkR dh nsi nsr ri rr ei #k . + InitDHKeyCheck(idI, capI, ksI, idR, capR, ksR, pkI, pkR, dh, nsi, nsr, ri, rr, ei) @k + ) +" + +lemma secPEo_legPEo_weaksecret_init: +" + All idI idR capI capR ksI ksR pkI pkR dh ltk #i1 #i2 #j . + InitWillDoSecPEo()[+] @i1 & RespWillDoLegPEo()[+] @i2 & + InitiatorFinishedSecPairing(idI, capI, ksI, idR, capR, ksR, pkI, pkR, dh, ltk) @j ==> + not (Ex #k. K(ltk) @k ) +" + +lemma secPEo_legPEo_weaksecret_resp: +" + All idI idR capI capR ksI ksR tk ni nr stk #i1 #i2 #j . + InitWillDoSecPEo()[+] @i1 & RespWillDoLegPEo()[+] @i2 & + ResponderFinishedLegPairing(idR, capR, ksR, idI, capI, ksI, tk, nr, ni, stk) @j ==> + not (Ex #k. K(stk) @k ) +" + +lemma secPEo_legPEo_double_impersonation: +" + All #i1 #i2 . + InitWillDoSecPEo()[+] @i1 & RespWillDoLegPEo()[+] @i2 ==> + (All idI1 idR1 capI1 capR1 ksI1 ksR1 idI2 idR2 capI2 capR2 ksI2 ksR2 tk ni nr stk pkI pkR dh ltk #j1 #j2 . + InitiatorFinishedSecPairing(idI1, capI1, ksI1, idR1, capR1, ksR1, pkI, pkR, dh, ltk) @j1 & + ResponderFinishedLegPairing(idR2, capR2, ksR2, idI2, capI2, ksI2, tk, nr, ni, stk) @j2 ==> + not (Ex #k1 #k2 . + K(ltk) @k1 & K(stk) @k2 + ) + ) +" + +#endif + +/*******************************************/ +/* End lemmas about SecPEo-LegPEo exchange */ +/*******************************************/ + +/****************************************/ +/* Lemmas about SecPEo-LegPEio exchange */ +/****************************************/ + +#ifdef SecPEoLegPEio +lemma secPEo_legPEio_functional: exists-trace +" + Ex #i1 #i2 . + InitWillDoSecPEo()[+] @i1 & RespWillDoLegPEio()[+] @i2 & + (Ex idI1 idR1 capI1 capR1 ksI1 ksR1 idI2 idR2 capI2 capR2 ksI2 ksR2 tk ni nr stk pkI pkR dh ltk #j1 #j2 . + InitiatorFinishedSecPairing(idI1, capI1, ksI1, idR1, capR1, ksR1, pkI, pkR, dh, ltk) @j1 & + ResponderFinishedLegPairing(idR2, capR2, ksR2, idI2, capI2, ksI2, tk, nr, ni, stk) @j2 + ) +" + +lemma secPEo_legPEio_auth_init: +" + All idI idR capI capR ksI ksR pkI pkR dh ltk #i1 #i2 #j . + InitWillDoSecPEo()[+] @i1 & RespWillDoLegPEio()[+] @i2 & + InitiatorFinishedSecPairing(idI, capI, ksI, idR, capR, ksR, pkI, pkR, dh, ltk) @j ==> + (Ex tk ni nr ci cr #k. + RespSentRandom(idR, capR, ksR, idI, capI, ksI, tk, nr, ni, cr, ci) @k + ) +" + +lemma secPEo_legPEio_auth_resp: +" + All idI idR capI capR ksI ksR tk ni nr stk #i1 #i2 #j. + InitWillDoSecPEo()[+] @i1 & RespWillDoLegPEio()[+] @i2 & + ResponderFinishedLegPairing(idR, capR, ksR, idI, capI, ksI, tk, nr, ni, stk) @j ==> + (Ex pkI pkR dh nsi nsr ri rr ei #k . + InitDHKeyCheck(idI, capI, ksI, idR, capR, ksR, pkI, pkR, dh, nsi, nsr, ri, rr, ei) @k + ) +" + +lemma secPEo_legPEio_weaksecret_init: +" + All idI idR capI capR ksI ksR pkI pkR dh ltk #i1 #i2 #j . + InitWillDoSecPEo()[+] @i1 & RespWillDoLegPEio()[+] @i2 & + InitiatorFinishedSecPairing(idI, capI, ksI, idR, capR, ksR, pkI, pkR, dh, ltk) @j ==> + not (Ex #k. K(ltk) @k ) +" + +lemma secPEo_legPEio_weaksecret_resp: +" + All idI idR capI capR ksI ksR tk ni nr stk #i1 #i2 #j . + InitWillDoSecPEo()[+] @i1 & RespWillDoLegPEio()[+] @i2 & + ResponderFinishedLegPairing(idR, capR, ksR, idI, capI, ksI, tk, nr, ni, stk) @j ==> + not (Ex #k. K(stk) @k ) +" + +lemma secPEo_legPEio_double_impersonation: +" + All #i1 #i2 . + InitWillDoSecPEo()[+] @i1 & RespWillDoLegPEio()[+] @i2 ==> + (All idI1 idR1 capI1 capR1 ksI1 ksR1 idI2 idR2 capI2 capR2 ksI2 ksR2 tk ni nr stk pkI pkR dh ltk #j1 #j2 . + InitiatorFinishedSecPairing(idI1, capI1, ksI1, idR1, capR1, ksR1, pkI, pkR, dh, ltk) @j1 & + ResponderFinishedLegPairing(idR2, capR2, ksR2, idI2, capI2, ksI2, tk, nr, ni, stk) @j2 ==> + not (Ex #k1 #k2 . + K(ltk) @k1 & K(stk) @k2 + ) + ) +" + +#endif + +/********************************************/ +/* End lemmas about SecPEo-LegPEio exchange */ +/********************************************/ + +/***************************************/ +/* Lemmas about SecPEo-LegOOB exchange */ +/***************************************/ + +#ifdef SecPEoLegOOB +lemma secPEo_legOOB_functional: exists-trace +" + Ex #i1 #i2 . + InitWillDoSecPEo()[+] @i1 & RespWillDoLegOOB()[+] @i2 & + (Ex idI1 idR1 capI1 capR1 ksI1 ksR1 idI2 idR2 capI2 capR2 ksI2 ksR2 tk ni nr stk pkI pkR dh ltk #j1 #j2 . + InitiatorFinishedSecPairing(idI1, capI1, ksI1, idR1, capR1, ksR1, pkI, pkR, dh, ltk) @j1 & + ResponderFinishedLegPairing(idR2, capR2, ksR2, idI2, capI2, ksI2, tk, nr, ni, stk) @j2 + ) +" + +lemma secPEo_legOOB_auth_init: +" + All idI idR capI capR ksI ksR pkI pkR dh ltk #i1 #i2 #j . + InitWillDoSecPEo()[+] @i1 & RespWillDoLegOOB()[+] @i2 & + InitiatorFinishedSecPairing(idI, capI, ksI, idR, capR, ksR, pkI, pkR, dh, ltk) @j ==> + (Ex tk ni nr ci cr #k. + RespSentRandom(idR, capR, ksR, idI, capI, ksI, tk, nr, ni, cr, ci) @k + ) +" + +lemma secPEo_legOOB_auth_resp: +" + All idI idR capI capR ksI ksR tk ni nr stk #i1 #i2 #j. + InitWillDoSecPEo()[+] @i1 & RespWillDoLegOOB()[+] @i2 & + ResponderFinishedLegPairing(idR, capR, ksR, idI, capI, ksI, tk, nr, ni, stk) @j ==> + (Ex pkI pkR dh nsi nsr ri rr ei #k . + InitDHKeyCheck(idI, capI, ksI, idR, capR, ksR, pkI, pkR, dh, nsi, nsr, ri, rr, ei) @k + ) +" + +lemma secPEo_legOOB_weaksecret_init: +" + All idI idR capI capR ksI ksR pkI pkR dh ltk #i1 #i2 #j . + InitWillDoSecPEo()[+] @i1 & RespWillDoLegOOB()[+] @i2 & + InitiatorFinishedSecPairing(idI, capI, ksI, idR, capR, ksR, pkI, pkR, dh, ltk) @j ==> + not (Ex #k. K(ltk) @k ) +" + +lemma secPEo_legOOB_weaksecret_resp: +" + All idI idR capI capR ksI ksR tk ni nr stk #i1 #i2 #j . + InitWillDoSecPEo()[+] @i1 & RespWillDoLegOOB()[+] @i2 & + ResponderFinishedLegPairing(idR, capR, ksR, idI, capI, ksI, tk, nr, ni, stk) @j ==> + not (Ex #k. K(stk) @k ) +" + +lemma secPEo_legOOB_double_impersonation: +" + All #i1 #i2 . + InitWillDoSecPEo()[+] @i1 & RespWillDoLegOOB()[+] @i2 ==> + (All idI1 idR1 capI1 capR1 ksI1 ksR1 idI2 idR2 capI2 capR2 ksI2 ksR2 tk ni nr stk pkI pkR dh ltk #j1 #j2 . + InitiatorFinishedSecPairing(idI1, capI1, ksI1, idR1, capR1, ksR1, pkI, pkR, dh, ltk) @j1 & + ResponderFinishedLegPairing(idR2, capR2, ksR2, idI2, capI2, ksI2, tk, nr, ni, stk) @j2 ==> + not (Ex #k1 #k2 . + K(ltk) @k1 & K(stk) @k2 + ) + ) +" + +#endif + +/*******************************************/ +/* End lemmas about SecPEo-LegOOB exchange */ +/*******************************************/ + +/***************************************/ +/* Lemmas about SecPEio-LegJW exchange */ +/***************************************/ + +#ifdef SecPEioLegJW +lemma secPEio_legJW_functional: exists-trace +" + Ex #i1 #i2 . + InitWillDoSecPEio()[+] @i1 & RespWillDoLegJW()[+] @i2 & + (Ex idI1 idR1 capI1 capR1 ksI1 ksR1 idI2 idR2 capI2 capR2 ksI2 ksR2 tk ni nr stk pkI pkR dh ltk #j1 #j2 . + InitiatorFinishedSecPairing(idI1, capI1, ksI1, idR1, capR1, ksR1, pkI, pkR, dh, ltk) @j1 & + ResponderFinishedLegPairing(idR2, capR2, ksR2, idI2, capI2, ksI2, tk, nr, ni, stk) @j2 + ) +" + +lemma secPEio_legJW_auth_init: +" + All idI idR capI capR ksI ksR pkI pkR dh ltk #i1 #i2 #j . + InitWillDoSecPEio()[+] @i1 & RespWillDoLegJW()[+] @i2 & + InitiatorFinishedSecPairing(idI, capI, ksI, idR, capR, ksR, pkI, pkR, dh, ltk) @j ==> + (Ex tk ni nr ci cr #k. + RespSentRandom(idR, capR, ksR, idI, capI, ksI, tk, nr, ni, cr, ci) @k + ) +" + +lemma secPEio_legJW_auth_resp: +" + All idI idR capI capR ksI ksR tk ni nr stk #i1 #i2 #j. + InitWillDoSecPEio()[+] @i1 & RespWillDoLegJW()[+] @i2 & + ResponderFinishedLegPairing(idR, capR, ksR, idI, capI, ksI, tk, nr, ni, stk) @j ==> + (Ex pkI pkR dh nsi nsr ri rr ei #k . + InitDHKeyCheck(idI, capI, ksI, idR, capR, ksR, pkI, pkR, dh, nsi, nsr, ri, rr, ei) @k + ) +" + +lemma secPEio_legJW_weaksecret_init: +" + All idI idR capI capR ksI ksR pkI pkR dh ltk #i1 #i2 #j . + InitWillDoSecPEio()[+] @i1 & RespWillDoLegJW()[+] @i2 & + InitiatorFinishedSecPairing(idI, capI, ksI, idR, capR, ksR, pkI, pkR, dh, ltk) @j ==> + not (Ex #k. K(ltk) @k ) +" + +lemma secPEio_legJW_weaksecret_resp: +" + All idI idR capI capR ksI ksR tk ni nr stk #i1 #i2 #j . + InitWillDoSecPEio()[+] @i1 & RespWillDoLegJW()[+] @i2 & + ResponderFinishedLegPairing(idR, capR, ksR, idI, capI, ksI, tk, nr, ni, stk) @j ==> + not (Ex #k. K(stk) @k ) +" + +lemma secPEio_legJW_double_impersonation: +" + All #i1 #i2 . + InitWillDoSecPEio()[+] @i1 & RespWillDoLegJW()[+] @i2 ==> + (All idI1 idR1 capI1 capR1 ksI1 ksR1 idI2 idR2 capI2 capR2 ksI2 ksR2 tk ni nr stk pkI pkR dh ltk #j1 #j2 . + InitiatorFinishedSecPairing(idI1, capI1, ksI1, idR1, capR1, ksR1, pkI, pkR, dh, ltk) @j1 & + ResponderFinishedLegPairing(idR2, capR2, ksR2, idI2, capI2, ksI2, tk, nr, ni, stk) @j2 ==> + not (Ex #k1 #k2 . + K(ltk) @k1 & K(stk) @k2 + ) + ) +" + +#endif + +/*******************************************/ +/* End lemmas about SecPEio-LegJW exchange */ +/*******************************************/ + +/****************************************/ +/* Lemmas about SecPEio-LegPEi exchange */ +/****************************************/ + +#ifdef SecPEioLegPEi +lemma secPEio_legPEi_functional: exists-trace +" + Ex #i1 #i2 . + InitWillDoSecPEio()[+] @i1 & RespWillDoLegPEi()[+] @i2 & + (Ex idI1 idR1 capI1 capR1 ksI1 ksR1 idI2 idR2 capI2 capR2 ksI2 ksR2 tk ni nr stk pkI pkR dh ltk #j1 #j2 . + InitiatorFinishedSecPairing(idI1, capI1, ksI1, idR1, capR1, ksR1, pkI, pkR, dh, ltk) @j1 & + ResponderFinishedLegPairing(idR2, capR2, ksR2, idI2, capI2, ksI2, tk, nr, ni, stk) @j2 + ) +" + +lemma secPEio_legPEi_auth_init: +" + All idI idR capI capR ksI ksR pkI pkR dh ltk #i1 #i2 #j . + InitWillDoSecPEio()[+] @i1 & RespWillDoLegPEi()[+] @i2 & + InitiatorFinishedSecPairing(idI, capI, ksI, idR, capR, ksR, pkI, pkR, dh, ltk) @j ==> + (Ex tk ni nr ci cr #k. + RespSentRandom(idR, capR, ksR, idI, capI, ksI, tk, nr, ni, cr, ci) @k + ) +" + +lemma secPEio_legPEi_auth_resp: +" + All idI idR capI capR ksI ksR tk ni nr stk #i1 #i2 #j. + InitWillDoSecPEio()[+] @i1 & RespWillDoLegPEi()[+] @i2 & + ResponderFinishedLegPairing(idR, capR, ksR, idI, capI, ksI, tk, nr, ni, stk) @j ==> + (Ex pkI pkR dh nsi nsr ri rr ei #k . + InitDHKeyCheck(idI, capI, ksI, idR, capR, ksR, pkI, pkR, dh, nsi, nsr, ri, rr, ei) @k + ) +" + +lemma secPEio_legPEi_weaksecret_init: +" + All idI idR capI capR ksI ksR pkI pkR dh ltk #i1 #i2 #j . + InitWillDoSecPEio()[+] @i1 & RespWillDoLegPEi()[+] @i2 & + InitiatorFinishedSecPairing(idI, capI, ksI, idR, capR, ksR, pkI, pkR, dh, ltk) @j ==> + not (Ex #k. K(ltk) @k ) +" + +lemma secPEio_legPEi_weaksecret_resp: +" + All idI idR capI capR ksI ksR tk ni nr stk #i1 #i2 #j . + InitWillDoSecPEio()[+] @i1 & RespWillDoLegPEi()[+] @i2 & + ResponderFinishedLegPairing(idR, capR, ksR, idI, capI, ksI, tk, nr, ni, stk) @j ==> + not (Ex #k. K(stk) @k ) +" + +lemma secPEio_legPEi_double_impersonation: +" + All #i1 #i2 . + InitWillDoSecPEio()[+] @i1 & RespWillDoLegPEi()[+] @i2 ==> + (All idI1 idR1 capI1 capR1 ksI1 ksR1 idI2 idR2 capI2 capR2 ksI2 ksR2 tk ni nr stk pkI pkR dh ltk #j1 #j2 . + InitiatorFinishedSecPairing(idI1, capI1, ksI1, idR1, capR1, ksR1, pkI, pkR, dh, ltk) @j1 & + ResponderFinishedLegPairing(idR2, capR2, ksR2, idI2, capI2, ksI2, tk, nr, ni, stk) @j2 ==> + not (Ex #k1 #k2 . + K(ltk) @k1 & K(stk) @k2 + ) + ) +" + +#endif + +/********************************************/ +/* End lemmas about SecPEio-LegPEi exchange */ +/********************************************/ + +/****************************************/ +/* Lemmas about SecPEio-LegPEo exchange */ +/****************************************/ + +#ifdef SecPEioLegPEo +lemma secPEio_legPEo_functional: exists-trace +" + Ex #i1 #i2 . + InitWillDoSecPEio()[+] @i1 & RespWillDoLegPEo()[+] @i2 & + (Ex idI1 idR1 capI1 capR1 ksI1 ksR1 idI2 idR2 capI2 capR2 ksI2 ksR2 tk ni nr stk pkI pkR dh ltk #j1 #j2 . + InitiatorFinishedSecPairing(idI1, capI1, ksI1, idR1, capR1, ksR1, pkI, pkR, dh, ltk) @j1 & + ResponderFinishedLegPairing(idR2, capR2, ksR2, idI2, capI2, ksI2, tk, nr, ni, stk) @j2 + ) +" + +lemma secPEio_legPEo_auth_init: +" + All idI idR capI capR ksI ksR pkI pkR dh ltk #i1 #i2 #j . + InitWillDoSecPEio()[+] @i1 & RespWillDoLegPEo()[+] @i2 & + InitiatorFinishedSecPairing(idI, capI, ksI, idR, capR, ksR, pkI, pkR, dh, ltk) @j ==> + (Ex tk ni nr ci cr #k. + RespSentRandom(idR, capR, ksR, idI, capI, ksI, tk, nr, ni, cr, ci) @k + ) +" + +lemma secPEio_legPEo_auth_resp: +" + All idI idR capI capR ksI ksR tk ni nr stk #i1 #i2 #j. + InitWillDoSecPEio()[+] @i1 & RespWillDoLegPEo()[+] @i2 & + ResponderFinishedLegPairing(idR, capR, ksR, idI, capI, ksI, tk, nr, ni, stk) @j ==> + (Ex pkI pkR dh nsi nsr ri rr ei #k . + InitDHKeyCheck(idI, capI, ksI, idR, capR, ksR, pkI, pkR, dh, nsi, nsr, ri, rr, ei) @k + ) +" + +lemma secPEio_legPEo_weaksecret_init: +" + All idI idR capI capR ksI ksR pkI pkR dh ltk #i1 #i2 #j . + InitWillDoSecPEio()[+] @i1 & RespWillDoLegPEo()[+] @i2 & + InitiatorFinishedSecPairing(idI, capI, ksI, idR, capR, ksR, pkI, pkR, dh, ltk) @j ==> + not (Ex #k. K(ltk) @k ) +" + +lemma secPEio_legPEo_weaksecret_resp: +" + All idI idR capI capR ksI ksR tk ni nr stk #i1 #i2 #j . + InitWillDoSecPEio()[+] @i1 & RespWillDoLegPEo()[+] @i2 & + ResponderFinishedLegPairing(idR, capR, ksR, idI, capI, ksI, tk, nr, ni, stk) @j ==> + not (Ex #k. K(stk) @k ) +" + +lemma secPEio_legPEo_double_impersonation: +" + All #i1 #i2 . + InitWillDoSecPEio()[+] @i1 & RespWillDoLegPEo()[+] @i2 ==> + (All idI1 idR1 capI1 capR1 ksI1 ksR1 idI2 idR2 capI2 capR2 ksI2 ksR2 tk ni nr stk pkI pkR dh ltk #j1 #j2 . + InitiatorFinishedSecPairing(idI1, capI1, ksI1, idR1, capR1, ksR1, pkI, pkR, dh, ltk) @j1 & + ResponderFinishedLegPairing(idR2, capR2, ksR2, idI2, capI2, ksI2, tk, nr, ni, stk) @j2 ==> + not (Ex #k1 #k2 . + K(ltk) @k1 & K(stk) @k2 + ) + ) +" + +#endif + +/********************************************/ +/* End lemmas about SecPEio-LegPEo exchange */ +/********************************************/ + +/*****************************************/ +/* Lemmas about SecPEio-LegPEio exchange */ +/*****************************************/ + +#ifdef SecPEioLegPEio +lemma secPEio_legPEio_functional: exists-trace +" + Ex #i1 #i2 . + InitWillDoSecPEio()[+] @i1 & RespWillDoLegPEio()[+] @i2 & + (Ex idI1 idR1 capI1 capR1 ksI1 ksR1 idI2 idR2 capI2 capR2 ksI2 ksR2 tk ni nr stk pkI pkR dh ltk #j1 #j2 . + InitiatorFinishedSecPairing(idI1, capI1, ksI1, idR1, capR1, ksR1, pkI, pkR, dh, ltk) @j1 & + ResponderFinishedLegPairing(idR2, capR2, ksR2, idI2, capI2, ksI2, tk, nr, ni, stk) @j2 + ) +" + +lemma secPEio_legPEio_auth_init: +" + All idI idR capI capR ksI ksR pkI pkR dh ltk #i1 #i2 #j . + InitWillDoSecPEio()[+] @i1 & RespWillDoLegPEio()[+] @i2 & + InitiatorFinishedSecPairing(idI, capI, ksI, idR, capR, ksR, pkI, pkR, dh, ltk) @j ==> + (Ex tk ni nr ci cr #k. + RespSentRandom(idR, capR, ksR, idI, capI, ksI, tk, nr, ni, cr, ci) @k + ) +" + +lemma secPEio_legPEio_auth_resp: +" + All idI idR capI capR ksI ksR tk ni nr stk #i1 #i2 #j. + InitWillDoSecPEio()[+] @i1 & RespWillDoLegPEio()[+] @i2 & + ResponderFinishedLegPairing(idR, capR, ksR, idI, capI, ksI, tk, nr, ni, stk) @j ==> + (Ex pkI pkR dh nsi nsr ri rr ei #k . + InitDHKeyCheck(idI, capI, ksI, idR, capR, ksR, pkI, pkR, dh, nsi, nsr, ri, rr, ei) @k + ) +" + +lemma secPEio_legPEio_weaksecret_init: +" + All idI idR capI capR ksI ksR pkI pkR dh ltk #i1 #i2 #j . + InitWillDoSecPEio()[+] @i1 & RespWillDoLegPEio()[+] @i2 & + InitiatorFinishedSecPairing(idI, capI, ksI, idR, capR, ksR, pkI, pkR, dh, ltk) @j ==> + not (Ex #k. K(ltk) @k ) +" + +lemma secPEio_legPEio_weaksecret_resp: +" + All idI idR capI capR ksI ksR tk ni nr stk #i1 #i2 #j . + InitWillDoSecPEio()[+] @i1 & RespWillDoLegPEio()[+] @i2 & + ResponderFinishedLegPairing(idR, capR, ksR, idI, capI, ksI, tk, nr, ni, stk) @j ==> + not (Ex #k. K(stk) @k ) +" + +lemma secPEio_legPEio_double_impersonation: +" + All #i1 #i2 . + InitWillDoSecPEio()[+] @i1 & RespWillDoLegPEio()[+] @i2 ==> + (All idI1 idR1 capI1 capR1 ksI1 ksR1 idI2 idR2 capI2 capR2 ksI2 ksR2 tk ni nr stk pkI pkR dh ltk #j1 #j2 . + InitiatorFinishedSecPairing(idI1, capI1, ksI1, idR1, capR1, ksR1, pkI, pkR, dh, ltk) @j1 & + ResponderFinishedLegPairing(idR2, capR2, ksR2, idI2, capI2, ksI2, tk, nr, ni, stk) @j2 ==> + not (Ex #k1 #k2 . + K(ltk) @k1 & K(stk) @k2 + ) + ) +" + +#endif + +/*********************************************/ +/* End lemmas about SecPEio-LegPEio exchange */ +/*********************************************/ + +/****************************************/ +/* Lemmas about SecPEio-LegOOB exchange */ +/****************************************/ + +#ifdef SecPEioLegOOB +lemma secPEio_legOOB_functional: exists-trace +" + Ex #i1 #i2 . + InitWillDoSecPEio()[+] @i1 & RespWillDoLegOOB()[+] @i2 & + (Ex idI1 idR1 capI1 capR1 ksI1 ksR1 idI2 idR2 capI2 capR2 ksI2 ksR2 tk ni nr stk pkI pkR dh ltk #j1 #j2 . + InitiatorFinishedSecPairing(idI1, capI1, ksI1, idR1, capR1, ksR1, pkI, pkR, dh, ltk) @j1 & + ResponderFinishedLegPairing(idR2, capR2, ksR2, idI2, capI2, ksI2, tk, nr, ni, stk) @j2 + ) +" + +lemma secPEio_legOOB_auth_init: +" + All idI idR capI capR ksI ksR pkI pkR dh ltk #i1 #i2 #j . + InitWillDoSecPEio()[+] @i1 & RespWillDoLegOOB()[+] @i2 & + InitiatorFinishedSecPairing(idI, capI, ksI, idR, capR, ksR, pkI, pkR, dh, ltk) @j ==> + (Ex tk ni nr ci cr #k. + RespSentRandom(idR, capR, ksR, idI, capI, ksI, tk, nr, ni, cr, ci) @k + ) +" + +lemma secPEio_legOOB_auth_resp: +" + All idI idR capI capR ksI ksR tk ni nr stk #i1 #i2 #j. + InitWillDoSecPEio()[+] @i1 & RespWillDoLegOOB()[+] @i2 & + ResponderFinishedLegPairing(idR, capR, ksR, idI, capI, ksI, tk, nr, ni, stk) @j ==> + (Ex pkI pkR dh nsi nsr ri rr ei #k . + InitDHKeyCheck(idI, capI, ksI, idR, capR, ksR, pkI, pkR, dh, nsi, nsr, ri, rr, ei) @k + ) +" + +lemma secPEio_legOOB_weaksecret_init: +" + All idI idR capI capR ksI ksR pkI pkR dh ltk #i1 #i2 #j . + InitWillDoSecPEio()[+] @i1 & RespWillDoLegOOB()[+] @i2 & + InitiatorFinishedSecPairing(idI, capI, ksI, idR, capR, ksR, pkI, pkR, dh, ltk) @j ==> + not (Ex #k. K(ltk) @k ) +" + +lemma secPEio_legOOB_weaksecret_resp: +" + All idI idR capI capR ksI ksR tk ni nr stk #i1 #i2 #j . + InitWillDoSecPEio()[+] @i1 & RespWillDoLegOOB()[+] @i2 & + ResponderFinishedLegPairing(idR, capR, ksR, idI, capI, ksI, tk, nr, ni, stk) @j ==> + not (Ex #k. K(stk) @k ) +" + +lemma secPEio_legOOB_double_impersonation: +" + All #i1 #i2 . + InitWillDoSecPEio()[+] @i1 & RespWillDoLegOOB()[+] @i2 ==> + (All idI1 idR1 capI1 capR1 ksI1 ksR1 idI2 idR2 capI2 capR2 ksI2 ksR2 tk ni nr stk pkI pkR dh ltk #j1 #j2 . + InitiatorFinishedSecPairing(idI1, capI1, ksI1, idR1, capR1, ksR1, pkI, pkR, dh, ltk) @j1 & + ResponderFinishedLegPairing(idR2, capR2, ksR2, idI2, capI2, ksI2, tk, nr, ni, stk) @j2 ==> + not (Ex #k1 #k2 . + K(ltk) @k1 & K(stk) @k2 + ) + ) +" + +#endif + +/********************************************/ +/* End lemmas about SecPEio-LegOOB exchange */ +/********************************************/ + +/*************************************/ +/* Lemmas about SecNC-LegJW exchange */ +/*************************************/ + +#ifdef SecNCLegJW +lemma secNC_legJW_functional: exists-trace +" + Ex #i1 #i2 . + InitWillDoSecNC()[+] @i1 & RespWillDoLegJW()[+] @i2 & + (Ex idI1 idR1 capI1 capR1 ksI1 ksR1 idI2 idR2 capI2 capR2 ksI2 ksR2 tk ni nr stk pkI pkR dh ltk #j1 #j2 . + InitiatorFinishedSecPairing(idI1, capI1, ksI1, idR1, capR1, ksR1, pkI, pkR, dh, ltk) @j1 & + ResponderFinishedLegPairing(idR2, capR2, ksR2, idI2, capI2, ksI2, tk, nr, ni, stk) @j2 + ) +" + +lemma secNC_legJW_auth_init: +" + All idI idR capI capR ksI ksR pkI pkR dh ltk #i1 #i2 #j . + InitWillDoSecNC()[+] @i1 & RespWillDoLegJW()[+] @i2 & + InitiatorFinishedSecPairing(idI, capI, ksI, idR, capR, ksR, pkI, pkR, dh, ltk) @j ==> + (Ex tk ni nr ci cr #k. + RespSentRandom(idR, capR, ksR, idI, capI, ksI, tk, nr, ni, cr, ci) @k + ) +" + +lemma secNC_legJW_auth_resp: +" + All idI idR capI capR ksI ksR tk ni nr stk #i1 #i2 #j. + InitWillDoSecNC()[+] @i1 & RespWillDoLegJW()[+] @i2 & + ResponderFinishedLegPairing(idR, capR, ksR, idI, capI, ksI, tk, nr, ni, stk) @j ==> + (Ex pkI pkR dh nsi nsr ri rr ei #k . + InitDHKeyCheck(idI, capI, ksI, idR, capR, ksR, pkI, pkR, dh, nsi, nsr, ri, rr, ei) @k + ) +" + +lemma secNC_legJW_weaksecret_init: +" + All idI idR capI capR ksI ksR pkI pkR dh ltk #i1 #i2 #j . + InitWillDoSecNC()[+] @i1 & RespWillDoLegJW()[+] @i2 & + InitiatorFinishedSecPairing(idI, capI, ksI, idR, capR, ksR, pkI, pkR, dh, ltk) @j ==> + not (Ex #k. K(ltk) @k ) +" + +lemma secNC_legJW_weaksecret_resp: +" + All idI idR capI capR ksI ksR tk ni nr stk #i1 #i2 #j . + InitWillDoSecNC()[+] @i1 & RespWillDoLegJW()[+] @i2 & + ResponderFinishedLegPairing(idR, capR, ksR, idI, capI, ksI, tk, nr, ni, stk) @j ==> + not (Ex #k. K(stk) @k ) +" + +lemma secNC_legJW_double_impersonation: +" + All #i1 #i2 . + InitWillDoSecNC()[+] @i1 & RespWillDoLegJW()[+] @i2 ==> + (All idI1 idR1 capI1 capR1 ksI1 ksR1 idI2 idR2 capI2 capR2 ksI2 ksR2 tk ni nr stk pkI pkR dh ltk #j1 #j2 . + InitiatorFinishedSecPairing(idI1, capI1, ksI1, idR1, capR1, ksR1, pkI, pkR, dh, ltk) @j1 & + ResponderFinishedLegPairing(idR2, capR2, ksR2, idI2, capI2, ksI2, tk, nr, ni, stk) @j2 ==> + not (Ex #k1 #k2 . + K(ltk) @k1 & K(stk) @k2 + ) + ) +" + +#endif + +/*****************************************/ +/* End lemmas about SecNC-LegJW exchange */ +/*****************************************/ + +/**************************************/ +/* Lemmas about SecNC-LegPEi exchange */ +/**************************************/ + +#ifdef SecNCLegPEi +lemma secNC_legPEi_functional: exists-trace +" + Ex #i1 #i2 . + InitWillDoSecNC()[+] @i1 & RespWillDoLegPEi()[+] @i2 & + (Ex idI1 idR1 capI1 capR1 ksI1 ksR1 idI2 idR2 capI2 capR2 ksI2 ksR2 tk ni nr stk pkI pkR dh ltk #j1 #j2 . + InitiatorFinishedSecPairing(idI1, capI1, ksI1, idR1, capR1, ksR1, pkI, pkR, dh, ltk) @j1 & + ResponderFinishedLegPairing(idR2, capR2, ksR2, idI2, capI2, ksI2, tk, nr, ni, stk) @j2 + ) +" + +lemma secNC_legPEi_auth_init: +" + All idI idR capI capR ksI ksR pkI pkR dh ltk #i1 #i2 #j . + InitWillDoSecNC()[+] @i1 & RespWillDoLegPEi()[+] @i2 & + InitiatorFinishedSecPairing(idI, capI, ksI, idR, capR, ksR, pkI, pkR, dh, ltk) @j ==> + (Ex tk ni nr ci cr #k. + RespSentRandom(idR, capR, ksR, idI, capI, ksI, tk, nr, ni, cr, ci) @k + ) +" + +lemma secNC_legPEi_auth_resp: +" + All idI idR capI capR ksI ksR tk ni nr stk #i1 #i2 #j. + InitWillDoSecNC()[+] @i1 & RespWillDoLegPEi()[+] @i2 & + ResponderFinishedLegPairing(idR, capR, ksR, idI, capI, ksI, tk, nr, ni, stk) @j ==> + (Ex pkI pkR dh nsi nsr ri rr ei #k . + InitDHKeyCheck(idI, capI, ksI, idR, capR, ksR, pkI, pkR, dh, nsi, nsr, ri, rr, ei) @k + ) +" + +lemma secNC_legPEi_weaksecret_init: +" + All idI idR capI capR ksI ksR pkI pkR dh ltk #i1 #i2 #j . + InitWillDoSecNC()[+] @i1 & RespWillDoLegPEi()[+] @i2 & + InitiatorFinishedSecPairing(idI, capI, ksI, idR, capR, ksR, pkI, pkR, dh, ltk) @j ==> + not (Ex #k. K(ltk) @k ) +" + +lemma secNC_legPEi_weaksecret_resp: +" + All idI idR capI capR ksI ksR tk ni nr stk #i1 #i2 #j . + InitWillDoSecNC()[+] @i1 & RespWillDoLegPEi()[+] @i2 & + ResponderFinishedLegPairing(idR, capR, ksR, idI, capI, ksI, tk, nr, ni, stk) @j ==> + not (Ex #k. K(stk) @k ) +" + +lemma secNC_legPEi_double_impersonation: +" + All #i1 #i2 . + InitWillDoSecNC()[+] @i1 & RespWillDoLegPEi()[+] @i2 ==> + (All idI1 idR1 capI1 capR1 ksI1 ksR1 idI2 idR2 capI2 capR2 ksI2 ksR2 tk ni nr stk pkI pkR dh ltk #j1 #j2 . + InitiatorFinishedSecPairing(idI1, capI1, ksI1, idR1, capR1, ksR1, pkI, pkR, dh, ltk) @j1 & + ResponderFinishedLegPairing(idR2, capR2, ksR2, idI2, capI2, ksI2, tk, nr, ni, stk) @j2 ==> + not (Ex #k1 #k2 . + K(ltk) @k1 & K(stk) @k2 + ) + ) +" + +#endif + +/******************************************/ +/* End lemmas about SecNC-LegPEi exchange */ +/******************************************/ + +/**************************************/ +/* Lemmas about SecNC-LegPEo exchange */ +/**************************************/ + +#ifdef SecNCLegPEo +lemma secNC_legPEo_functional: exists-trace +" + Ex #i1 #i2 . + InitWillDoSecNC()[+] @i1 & RespWillDoLegPEo()[+] @i2 & + (Ex idI1 idR1 capI1 capR1 ksI1 ksR1 idI2 idR2 capI2 capR2 ksI2 ksR2 tk ni nr stk pkI pkR dh ltk #j1 #j2 . + InitiatorFinishedSecPairing(idI1, capI1, ksI1, idR1, capR1, ksR1, pkI, pkR, dh, ltk) @j1 & + ResponderFinishedLegPairing(idR2, capR2, ksR2, idI2, capI2, ksI2, tk, nr, ni, stk) @j2 + ) +" + +lemma secNC_legPEo_auth_init: +" + All idI idR capI capR ksI ksR pkI pkR dh ltk #i1 #i2 #j . + InitWillDoSecNC()[+] @i1 & RespWillDoLegPEo()[+] @i2 & + InitiatorFinishedSecPairing(idI, capI, ksI, idR, capR, ksR, pkI, pkR, dh, ltk) @j ==> + (Ex tk ni nr ci cr #k. + RespSentRandom(idR, capR, ksR, idI, capI, ksI, tk, nr, ni, cr, ci) @k + ) +" + +lemma secNC_legPEo_auth_resp: +" + All idI idR capI capR ksI ksR tk ni nr stk #i1 #i2 #j. + InitWillDoSecNC()[+] @i1 & RespWillDoLegPEo()[+] @i2 & + ResponderFinishedLegPairing(idR, capR, ksR, idI, capI, ksI, tk, nr, ni, stk) @j ==> + (Ex pkI pkR dh nsi nsr ri rr ei #k . + InitDHKeyCheck(idI, capI, ksI, idR, capR, ksR, pkI, pkR, dh, nsi, nsr, ri, rr, ei) @k + ) +" + +lemma secNC_legPEo_weaksecret_init: +" + All idI idR capI capR ksI ksR pkI pkR dh ltk #i1 #i2 #j . + InitWillDoSecNC()[+] @i1 & RespWillDoLegPEo()[+] @i2 & + InitiatorFinishedSecPairing(idI, capI, ksI, idR, capR, ksR, pkI, pkR, dh, ltk) @j ==> + not (Ex #k. K(ltk) @k ) +" + +lemma secNC_legPEo_weaksecret_resp: +" + All idI idR capI capR ksI ksR tk ni nr stk #i1 #i2 #j . + InitWillDoSecNC()[+] @i1 & RespWillDoLegPEo()[+] @i2 & + ResponderFinishedLegPairing(idR, capR, ksR, idI, capI, ksI, tk, nr, ni, stk) @j ==> + not (Ex #k. K(stk) @k ) +" + +lemma secNC_legPEo_double_impersonation: +" + All #i1 #i2 . + InitWillDoSecNC()[+] @i1 & RespWillDoLegPEo()[+] @i2 ==> + (All idI1 idR1 capI1 capR1 ksI1 ksR1 idI2 idR2 capI2 capR2 ksI2 ksR2 tk ni nr stk pkI pkR dh ltk #j1 #j2 . + InitiatorFinishedSecPairing(idI1, capI1, ksI1, idR1, capR1, ksR1, pkI, pkR, dh, ltk) @j1 & + ResponderFinishedLegPairing(idR2, capR2, ksR2, idI2, capI2, ksI2, tk, nr, ni, stk) @j2 ==> + not (Ex #k1 #k2 . + K(ltk) @k1 & K(stk) @k2 + ) + ) +" + +#endif + +/******************************************/ +/* End lemmas about SecNC-LegPEo exchange */ +/******************************************/ + +/***************************************/ +/* Lemmas about SecNC-LegPEio exchange */ +/***************************************/ + +#ifdef SecNCLegPEio +lemma secNC_legPEio_functional: exists-trace +" + Ex #i1 #i2 . + InitWillDoSecNC()[+] @i1 & RespWillDoLegPEio()[+] @i2 & + (Ex idI1 idR1 capI1 capR1 ksI1 ksR1 idI2 idR2 capI2 capR2 ksI2 ksR2 tk ni nr stk pkI pkR dh ltk #j1 #j2 . + InitiatorFinishedSecPairing(idI1, capI1, ksI1, idR1, capR1, ksR1, pkI, pkR, dh, ltk) @j1 & + ResponderFinishedLegPairing(idR2, capR2, ksR2, idI2, capI2, ksI2, tk, nr, ni, stk) @j2 + ) +" + +lemma secNC_legPEio_auth_init: +" + All idI idR capI capR ksI ksR pkI pkR dh ltk #i1 #i2 #j . + InitWillDoSecNC()[+] @i1 & RespWillDoLegPEio()[+] @i2 & + InitiatorFinishedSecPairing(idI, capI, ksI, idR, capR, ksR, pkI, pkR, dh, ltk) @j ==> + (Ex tk ni nr ci cr #k. + RespSentRandom(idR, capR, ksR, idI, capI, ksI, tk, nr, ni, cr, ci) @k + ) +" + +lemma secNC_legPEio_auth_resp: +" + All idI idR capI capR ksI ksR tk ni nr stk #i1 #i2 #j. + InitWillDoSecNC()[+] @i1 & RespWillDoLegPEio()[+] @i2 & + ResponderFinishedLegPairing(idR, capR, ksR, idI, capI, ksI, tk, nr, ni, stk) @j ==> + (Ex pkI pkR dh nsi nsr ri rr ei #k . + InitDHKeyCheck(idI, capI, ksI, idR, capR, ksR, pkI, pkR, dh, nsi, nsr, ri, rr, ei) @k + ) +" + +lemma secNC_legPEio_weaksecret_init: +" + All idI idR capI capR ksI ksR pkI pkR dh ltk #i1 #i2 #j . + InitWillDoSecNC()[+] @i1 & RespWillDoLegPEio()[+] @i2 & + InitiatorFinishedSecPairing(idI, capI, ksI, idR, capR, ksR, pkI, pkR, dh, ltk) @j ==> + not (Ex #k. K(ltk) @k ) +" + +lemma secNC_legPEio_weaksecret_resp: +" + All idI idR capI capR ksI ksR tk ni nr stk #i1 #i2 #j . + InitWillDoSecNC()[+] @i1 & RespWillDoLegPEio()[+] @i2 & + ResponderFinishedLegPairing(idR, capR, ksR, idI, capI, ksI, tk, nr, ni, stk) @j ==> + not (Ex #k. K(stk) @k ) +" + +lemma secNC_legPEio_double_impersonation: +" + All #i1 #i2 . + InitWillDoSecNC()[+] @i1 & RespWillDoLegPEio()[+] @i2 ==> + (All idI1 idR1 capI1 capR1 ksI1 ksR1 idI2 idR2 capI2 capR2 ksI2 ksR2 tk ni nr stk pkI pkR dh ltk #j1 #j2 . + InitiatorFinishedSecPairing(idI1, capI1, ksI1, idR1, capR1, ksR1, pkI, pkR, dh, ltk) @j1 & + ResponderFinishedLegPairing(idR2, capR2, ksR2, idI2, capI2, ksI2, tk, nr, ni, stk) @j2 ==> + not (Ex #k1 #k2 . + K(ltk) @k1 & K(stk) @k2 + ) + ) +" + +#endif + +/*******************************************/ +/* End lemmas about SecNC-LegPEio exchange */ +/*******************************************/ + +/**************************************/ +/* Lemmas about SecNC-LegOOB exchange */ +/**************************************/ + +#ifdef SecNCLegOOB +lemma secNC_legOOB_functional: exists-trace +" + Ex #i1 #i2 . + InitWillDoSecNC()[+] @i1 & RespWillDoLegOOB()[+] @i2 & + (Ex idI1 idR1 capI1 capR1 ksI1 ksR1 idI2 idR2 capI2 capR2 ksI2 ksR2 tk ni nr stk pkI pkR dh ltk #j1 #j2 . + InitiatorFinishedSecPairing(idI1, capI1, ksI1, idR1, capR1, ksR1, pkI, pkR, dh, ltk) @j1 & + ResponderFinishedLegPairing(idR2, capR2, ksR2, idI2, capI2, ksI2, tk, nr, ni, stk) @j2 + ) +" + +lemma secNC_legOOB_auth_init: +" + All idI idR capI capR ksI ksR pkI pkR dh ltk #i1 #i2 #j . + InitWillDoSecNC()[+] @i1 & RespWillDoLegOOB()[+] @i2 & + InitiatorFinishedSecPairing(idI, capI, ksI, idR, capR, ksR, pkI, pkR, dh, ltk) @j ==> + (Ex tk ni nr ci cr #k. + RespSentRandom(idR, capR, ksR, idI, capI, ksI, tk, nr, ni, cr, ci) @k + ) +" + +lemma secNC_legOOB_auth_resp: +" + All idI idR capI capR ksI ksR tk ni nr stk #i1 #i2 #j. + InitWillDoSecNC()[+] @i1 & RespWillDoLegOOB()[+] @i2 & + ResponderFinishedLegPairing(idR, capR, ksR, idI, capI, ksI, tk, nr, ni, stk) @j ==> + (Ex pkI pkR dh nsi nsr ri rr ei #k . + InitDHKeyCheck(idI, capI, ksI, idR, capR, ksR, pkI, pkR, dh, nsi, nsr, ri, rr, ei) @k + ) +" + +lemma secNC_legOOB_weaksecret_init: +" + All idI idR capI capR ksI ksR pkI pkR dh ltk #i1 #i2 #j . + InitWillDoSecNC()[+] @i1 & RespWillDoLegOOB()[+] @i2 & + InitiatorFinishedSecPairing(idI, capI, ksI, idR, capR, ksR, pkI, pkR, dh, ltk) @j ==> + not (Ex #k. K(ltk) @k ) +" + +lemma secNC_legOOB_weaksecret_resp: +" + All idI idR capI capR ksI ksR tk ni nr stk #i1 #i2 #j . + InitWillDoSecNC()[+] @i1 & RespWillDoLegOOB()[+] @i2 & + ResponderFinishedLegPairing(idR, capR, ksR, idI, capI, ksI, tk, nr, ni, stk) @j ==> + not (Ex #k. K(stk) @k ) +" + +lemma secNC_legOOB_double_impersonation: +" + All #i1 #i2 . + InitWillDoSecNC()[+] @i1 & RespWillDoLegOOB()[+] @i2 ==> + (All idI1 idR1 capI1 capR1 ksI1 ksR1 idI2 idR2 capI2 capR2 ksI2 ksR2 tk ni nr stk pkI pkR dh ltk #j1 #j2 . + InitiatorFinishedSecPairing(idI1, capI1, ksI1, idR1, capR1, ksR1, pkI, pkR, dh, ltk) @j1 & + ResponderFinishedLegPairing(idR2, capR2, ksR2, idI2, capI2, ksI2, tk, nr, ni, stk) @j2 ==> + not (Ex #k1 #k2 . + K(ltk) @k1 & K(stk) @k2 + ) + ) +" + +#endif + +/******************************************/ +/* End lemmas about SecNC-LegOOB exchange */ +/******************************************/ + +/***************************************/ +/* Lemmas about SecOOBi-LegJW exchange */ +/***************************************/ + +#ifdef SecOOBiLegJW +lemma secOOBi_legJW_functional: exists-trace +" + Ex #i1 #i2 . + InitWillDoSecOOBi()[+] @i1 & RespWillDoLegJW()[+] @i2 & + (Ex idI1 idR1 capI1 capR1 ksI1 ksR1 idI2 idR2 capI2 capR2 ksI2 ksR2 tk ni nr stk pkI pkR dh ltk #j1 #j2 . + InitiatorFinishedSecPairing(idI1, capI1, ksI1, idR1, capR1, ksR1, pkI, pkR, dh, ltk) @j1 & + ResponderFinishedLegPairing(idR2, capR2, ksR2, idI2, capI2, ksI2, tk, nr, ni, stk) @j2 + ) +" + +lemma secOOBi_legJW_auth_init: +" + All idI idR capI capR ksI ksR pkI pkR dh ltk #i1 #i2 #j . + InitWillDoSecOOBi()[+] @i1 & RespWillDoLegJW()[+] @i2 & + InitiatorFinishedSecPairing(idI, capI, ksI, idR, capR, ksR, pkI, pkR, dh, ltk) @j ==> + (Ex tk ni nr ci cr #k. + RespSentRandom(idR, capR, ksR, idI, capI, ksI, tk, nr, ni, cr, ci) @k + ) +" + +lemma secOOBi_legJW_auth_resp: +" + All idI idR capI capR ksI ksR tk ni nr stk #i1 #i2 #j. + InitWillDoSecOOBi()[+] @i1 & RespWillDoLegJW()[+] @i2 & + ResponderFinishedLegPairing(idR, capR, ksR, idI, capI, ksI, tk, nr, ni, stk) @j ==> + (Ex pkI pkR dh nsi nsr ri rr ei #k . + InitDHKeyCheck(idI, capI, ksI, idR, capR, ksR, pkI, pkR, dh, nsi, nsr, ri, rr, ei) @k + ) +" + +lemma secOOBi_legJW_weaksecret_init: +" + All idI idR capI capR ksI ksR pkI pkR dh ltk #i1 #i2 #j . + InitWillDoSecOOBi()[+] @i1 & RespWillDoLegJW()[+] @i2 & + InitiatorFinishedSecPairing(idI, capI, ksI, idR, capR, ksR, pkI, pkR, dh, ltk) @j ==> + not (Ex #k. K(ltk) @k ) +" + +lemma secOOBi_legJW_weaksecret_resp: +" + All idI idR capI capR ksI ksR tk ni nr stk #i1 #i2 #j . + InitWillDoSecOOBi()[+] @i1 & RespWillDoLegJW()[+] @i2 & + ResponderFinishedLegPairing(idR, capR, ksR, idI, capI, ksI, tk, nr, ni, stk) @j ==> + not (Ex #k. K(stk) @k ) +" + +lemma secOOBi_legJW_double_impersonation: +" + All #i1 #i2 . + InitWillDoSecOOBi()[+] @i1 & RespWillDoLegJW()[+] @i2 ==> + (All idI1 idR1 capI1 capR1 ksI1 ksR1 idI2 idR2 capI2 capR2 ksI2 ksR2 tk ni nr stk pkI pkR dh ltk #j1 #j2 . + InitiatorFinishedSecPairing(idI1, capI1, ksI1, idR1, capR1, ksR1, pkI, pkR, dh, ltk) @j1 & + ResponderFinishedLegPairing(idR2, capR2, ksR2, idI2, capI2, ksI2, tk, nr, ni, stk) @j2 ==> + not (Ex #k1 #k2 . + K(ltk) @k1 & K(stk) @k2 + ) + ) +" + +#endif + +/*******************************************/ +/* End lemmas about SecOOBi-LegJW exchange */ +/*******************************************/ + +/****************************************/ +/* Lemmas about SecOOBi-LegPEi exchange */ +/****************************************/ + +#ifdef SecOOBiLegPEi +lemma secOOBi_legPEi_functional: exists-trace +" + Ex #i1 #i2 . + InitWillDoSecOOBi()[+] @i1 & RespWillDoLegPEi()[+] @i2 & + (Ex idI1 idR1 capI1 capR1 ksI1 ksR1 idI2 idR2 capI2 capR2 ksI2 ksR2 tk ni nr stk pkI pkR dh ltk #j1 #j2 . + InitiatorFinishedSecPairing(idI1, capI1, ksI1, idR1, capR1, ksR1, pkI, pkR, dh, ltk) @j1 & + ResponderFinishedLegPairing(idR2, capR2, ksR2, idI2, capI2, ksI2, tk, nr, ni, stk) @j2 + ) +" + +lemma secOOBi_legPEi_auth_init: +" + All idI idR capI capR ksI ksR pkI pkR dh ltk #i1 #i2 #j . + InitWillDoSecOOBi()[+] @i1 & RespWillDoLegPEi()[+] @i2 & + InitiatorFinishedSecPairing(idI, capI, ksI, idR, capR, ksR, pkI, pkR, dh, ltk) @j ==> + (Ex tk ni nr ci cr #k. + RespSentRandom(idR, capR, ksR, idI, capI, ksI, tk, nr, ni, cr, ci) @k + ) +" + +lemma secOOBi_legPEi_auth_resp: +" + All idI idR capI capR ksI ksR tk ni nr stk #i1 #i2 #j. + InitWillDoSecOOBi()[+] @i1 & RespWillDoLegPEi()[+] @i2 & + ResponderFinishedLegPairing(idR, capR, ksR, idI, capI, ksI, tk, nr, ni, stk) @j ==> + (Ex pkI pkR dh nsi nsr ri rr ei #k . + InitDHKeyCheck(idI, capI, ksI, idR, capR, ksR, pkI, pkR, dh, nsi, nsr, ri, rr, ei) @k + ) +" + +lemma secOOBi_legPEi_weaksecret_init: +" + All idI idR capI capR ksI ksR pkI pkR dh ltk #i1 #i2 #j . + InitWillDoSecOOBi()[+] @i1 & RespWillDoLegPEi()[+] @i2 & + InitiatorFinishedSecPairing(idI, capI, ksI, idR, capR, ksR, pkI, pkR, dh, ltk) @j ==> + not (Ex #k. K(ltk) @k ) +" + +lemma secOOBi_legPEi_weaksecret_resp: +" + All idI idR capI capR ksI ksR tk ni nr stk #i1 #i2 #j . + InitWillDoSecOOBi()[+] @i1 & RespWillDoLegPEi()[+] @i2 & + ResponderFinishedLegPairing(idR, capR, ksR, idI, capI, ksI, tk, nr, ni, stk) @j ==> + not (Ex #k. K(stk) @k ) +" + +lemma secOOBi_legPEi_double_impersonation: +" + All #i1 #i2 . + InitWillDoSecOOBi()[+] @i1 & RespWillDoLegPEi()[+] @i2 ==> + (All idI1 idR1 capI1 capR1 ksI1 ksR1 idI2 idR2 capI2 capR2 ksI2 ksR2 tk ni nr stk pkI pkR dh ltk #j1 #j2 . + InitiatorFinishedSecPairing(idI1, capI1, ksI1, idR1, capR1, ksR1, pkI, pkR, dh, ltk) @j1 & + ResponderFinishedLegPairing(idR2, capR2, ksR2, idI2, capI2, ksI2, tk, nr, ni, stk) @j2 ==> + not (Ex #k1 #k2 . + K(ltk) @k1 & K(stk) @k2 + ) + ) +" + +#endif + +/********************************************/ +/* End lemmas about SecOOBi-LegPEi exchange */ +/********************************************/ + +/****************************************/ +/* Lemmas about SecOOBi-LegPEo exchange */ +/****************************************/ + +#ifdef SecOOBiLegPEo +lemma secOOBi_legPEo_functional: exists-trace +" + Ex #i1 #i2 . + InitWillDoSecOOBi()[+] @i1 & RespWillDoLegPEo()[+] @i2 & + (Ex idI1 idR1 capI1 capR1 ksI1 ksR1 idI2 idR2 capI2 capR2 ksI2 ksR2 tk ni nr stk pkI pkR dh ltk #j1 #j2 . + InitiatorFinishedSecPairing(idI1, capI1, ksI1, idR1, capR1, ksR1, pkI, pkR, dh, ltk) @j1 & + ResponderFinishedLegPairing(idR2, capR2, ksR2, idI2, capI2, ksI2, tk, nr, ni, stk) @j2 + ) +" + +lemma secOOBi_legPEo_auth_init: +" + All idI idR capI capR ksI ksR pkI pkR dh ltk #i1 #i2 #j . + InitWillDoSecOOBi()[+] @i1 & RespWillDoLegPEo()[+] @i2 & + InitiatorFinishedSecPairing(idI, capI, ksI, idR, capR, ksR, pkI, pkR, dh, ltk) @j ==> + (Ex tk ni nr ci cr #k. + RespSentRandom(idR, capR, ksR, idI, capI, ksI, tk, nr, ni, cr, ci) @k + ) +" + +lemma secOOBi_legPEo_auth_resp: +" + All idI idR capI capR ksI ksR tk ni nr stk #i1 #i2 #j. + InitWillDoSecOOBi()[+] @i1 & RespWillDoLegPEo()[+] @i2 & + ResponderFinishedLegPairing(idR, capR, ksR, idI, capI, ksI, tk, nr, ni, stk) @j ==> + (Ex pkI pkR dh nsi nsr ri rr ei #k . + InitDHKeyCheck(idI, capI, ksI, idR, capR, ksR, pkI, pkR, dh, nsi, nsr, ri, rr, ei) @k + ) +" + +lemma secOOBi_legPEo_weaksecret_init: +" + All idI idR capI capR ksI ksR pkI pkR dh ltk #i1 #i2 #j . + InitWillDoSecOOBi()[+] @i1 & RespWillDoLegPEo()[+] @i2 & + InitiatorFinishedSecPairing(idI, capI, ksI, idR, capR, ksR, pkI, pkR, dh, ltk) @j ==> + not (Ex #k. K(ltk) @k ) +" + +lemma secOOBi_legPEo_weaksecret_resp: +" + All idI idR capI capR ksI ksR tk ni nr stk #i1 #i2 #j . + InitWillDoSecOOBi()[+] @i1 & RespWillDoLegPEo()[+] @i2 & + ResponderFinishedLegPairing(idR, capR, ksR, idI, capI, ksI, tk, nr, ni, stk) @j ==> + not (Ex #k. K(stk) @k ) +" + +lemma secOOBi_legPEo_double_impersonation: +" + All #i1 #i2 . + InitWillDoSecOOBi()[+] @i1 & RespWillDoLegPEo()[+] @i2 ==> + (All idI1 idR1 capI1 capR1 ksI1 ksR1 idI2 idR2 capI2 capR2 ksI2 ksR2 tk ni nr stk pkI pkR dh ltk #j1 #j2 . + InitiatorFinishedSecPairing(idI1, capI1, ksI1, idR1, capR1, ksR1, pkI, pkR, dh, ltk) @j1 & + ResponderFinishedLegPairing(idR2, capR2, ksR2, idI2, capI2, ksI2, tk, nr, ni, stk) @j2 ==> + not (Ex #k1 #k2 . + K(ltk) @k1 & K(stk) @k2 + ) + ) +" + +#endif + +/********************************************/ +/* End lemmas about SecOOBi-LegPEo exchange */ +/********************************************/ + +/*****************************************/ +/* Lemmas about SecOOBi-LegPEio exchange */ +/*****************************************/ + +#ifdef SecOOBiLegPEio +lemma secOOBi_legPEio_functional: exists-trace +" + Ex #i1 #i2 . + InitWillDoSecOOBi()[+] @i1 & RespWillDoLegPEio()[+] @i2 & + (Ex idI1 idR1 capI1 capR1 ksI1 ksR1 idI2 idR2 capI2 capR2 ksI2 ksR2 tk ni nr stk pkI pkR dh ltk #j1 #j2 . + InitiatorFinishedSecPairing(idI1, capI1, ksI1, idR1, capR1, ksR1, pkI, pkR, dh, ltk) @j1 & + ResponderFinishedLegPairing(idR2, capR2, ksR2, idI2, capI2, ksI2, tk, nr, ni, stk) @j2 + ) +" + +lemma secOOBi_legPEio_auth_init: +" + All idI idR capI capR ksI ksR pkI pkR dh ltk #i1 #i2 #j . + InitWillDoSecOOBi()[+] @i1 & RespWillDoLegPEio()[+] @i2 & + InitiatorFinishedSecPairing(idI, capI, ksI, idR, capR, ksR, pkI, pkR, dh, ltk) @j ==> + (Ex tk ni nr ci cr #k. + RespSentRandom(idR, capR, ksR, idI, capI, ksI, tk, nr, ni, cr, ci) @k + ) +" + +lemma secOOBi_legPEio_auth_resp: +" + All idI idR capI capR ksI ksR tk ni nr stk #i1 #i2 #j. + InitWillDoSecOOBi()[+] @i1 & RespWillDoLegPEio()[+] @i2 & + ResponderFinishedLegPairing(idR, capR, ksR, idI, capI, ksI, tk, nr, ni, stk) @j ==> + (Ex pkI pkR dh nsi nsr ri rr ei #k . + InitDHKeyCheck(idI, capI, ksI, idR, capR, ksR, pkI, pkR, dh, nsi, nsr, ri, rr, ei) @k + ) +" + +lemma secOOBi_legPEio_weaksecret_init: +" + All idI idR capI capR ksI ksR pkI pkR dh ltk #i1 #i2 #j . + InitWillDoSecOOBi()[+] @i1 & RespWillDoLegPEio()[+] @i2 & + InitiatorFinishedSecPairing(idI, capI, ksI, idR, capR, ksR, pkI, pkR, dh, ltk) @j ==> + not (Ex #k. K(ltk) @k ) +" + +lemma secOOBi_legPEio_weaksecret_resp: +" + All idI idR capI capR ksI ksR tk ni nr stk #i1 #i2 #j . + InitWillDoSecOOBi()[+] @i1 & RespWillDoLegPEio()[+] @i2 & + ResponderFinishedLegPairing(idR, capR, ksR, idI, capI, ksI, tk, nr, ni, stk) @j ==> + not (Ex #k. K(stk) @k ) +" + +lemma secOOBi_legPEio_double_impersonation: +" + All #i1 #i2 . + InitWillDoSecOOBi()[+] @i1 & RespWillDoLegPEio()[+] @i2 ==> + (All idI1 idR1 capI1 capR1 ksI1 ksR1 idI2 idR2 capI2 capR2 ksI2 ksR2 tk ni nr stk pkI pkR dh ltk #j1 #j2 . + InitiatorFinishedSecPairing(idI1, capI1, ksI1, idR1, capR1, ksR1, pkI, pkR, dh, ltk) @j1 & + ResponderFinishedLegPairing(idR2, capR2, ksR2, idI2, capI2, ksI2, tk, nr, ni, stk) @j2 ==> + not (Ex #k1 #k2 . + K(ltk) @k1 & K(stk) @k2 + ) + ) +" + +#endif + +/*********************************************/ +/* End lemmas about SecOOBi-LegPEio exchange */ +/*********************************************/ + +/****************************************/ +/* Lemmas about SecOOBi-LegOOB exchange */ +/****************************************/ + +#ifdef SecOOBiLegOOB +lemma secOOBi_legOOB_functional: exists-trace +" + Ex #i1 #i2 . + InitWillDoSecOOBi()[+] @i1 & RespWillDoLegOOB()[+] @i2 & + (Ex idI1 idR1 capI1 capR1 ksI1 ksR1 idI2 idR2 capI2 capR2 ksI2 ksR2 tk ni nr stk pkI pkR dh ltk #j1 #j2 . + InitiatorFinishedSecPairing(idI1, capI1, ksI1, idR1, capR1, ksR1, pkI, pkR, dh, ltk) @j1 & + ResponderFinishedLegPairing(idR2, capR2, ksR2, idI2, capI2, ksI2, tk, nr, ni, stk) @j2 + ) +" + +lemma secOOBi_legOOB_auth_init: +" + All idI idR capI capR ksI ksR pkI pkR dh ltk #i1 #i2 #j . + InitWillDoSecOOBi()[+] @i1 & RespWillDoLegOOB()[+] @i2 & + InitiatorFinishedSecPairing(idI, capI, ksI, idR, capR, ksR, pkI, pkR, dh, ltk) @j ==> + (Ex tk ni nr ci cr #k. + RespSentRandom(idR, capR, ksR, idI, capI, ksI, tk, nr, ni, cr, ci) @k + ) +" + +lemma secOOBi_legOOB_auth_resp: +" + All idI idR capI capR ksI ksR tk ni nr stk #i1 #i2 #j. + InitWillDoSecOOBi()[+] @i1 & RespWillDoLegOOB()[+] @i2 & + ResponderFinishedLegPairing(idR, capR, ksR, idI, capI, ksI, tk, nr, ni, stk) @j ==> + (Ex pkI pkR dh nsi nsr ri rr ei #k . + InitDHKeyCheck(idI, capI, ksI, idR, capR, ksR, pkI, pkR, dh, nsi, nsr, ri, rr, ei) @k + ) +" + +lemma secOOBi_legOOB_weaksecret_init: +" + All idI idR capI capR ksI ksR pkI pkR dh ltk #i1 #i2 #j . + InitWillDoSecOOBi()[+] @i1 & RespWillDoLegOOB()[+] @i2 & + InitiatorFinishedSecPairing(idI, capI, ksI, idR, capR, ksR, pkI, pkR, dh, ltk) @j ==> + not (Ex #k. K(ltk) @k ) +" + +lemma secOOBi_legOOB_weaksecret_resp: +" + All idI idR capI capR ksI ksR tk ni nr stk #i1 #i2 #j . + InitWillDoSecOOBi()[+] @i1 & RespWillDoLegOOB()[+] @i2 & + ResponderFinishedLegPairing(idR, capR, ksR, idI, capI, ksI, tk, nr, ni, stk) @j ==> + not (Ex #k. K(stk) @k ) +" + +lemma secOOBi_legOOB_double_impersonation: +" + All #i1 #i2 . + InitWillDoSecOOBi()[+] @i1 & RespWillDoLegOOB()[+] @i2 ==> + (All idI1 idR1 capI1 capR1 ksI1 ksR1 idI2 idR2 capI2 capR2 ksI2 ksR2 tk ni nr stk pkI pkR dh ltk #j1 #j2 . + InitiatorFinishedSecPairing(idI1, capI1, ksI1, idR1, capR1, ksR1, pkI, pkR, dh, ltk) @j1 & + ResponderFinishedLegPairing(idR2, capR2, ksR2, idI2, capI2, ksI2, tk, nr, ni, stk) @j2 ==> + not (Ex #k1 #k2 . + K(ltk) @k1 & K(stk) @k2 + ) + ) +" + +#endif + +/********************************************/ +/* End lemmas about SecOOBi-LegOOB exchange */ +/********************************************/ + +/***************************************/ +/* Lemmas about SecOOBo-LegJW exchange */ +/***************************************/ + +#ifdef SecOOBoLegJW +lemma secOOBo_legJW_functional: exists-trace +" + Ex #i1 #i2 . + InitWillDoSecOOBo()[+] @i1 & RespWillDoLegJW()[+] @i2 & + (Ex idI1 idR1 capI1 capR1 ksI1 ksR1 idI2 idR2 capI2 capR2 ksI2 ksR2 tk ni nr stk pkI pkR dh ltk #j1 #j2 . + InitiatorFinishedSecPairing(idI1, capI1, ksI1, idR1, capR1, ksR1, pkI, pkR, dh, ltk) @j1 & + ResponderFinishedLegPairing(idR2, capR2, ksR2, idI2, capI2, ksI2, tk, nr, ni, stk) @j2 + ) +" + +lemma secOOBo_legJW_auth_init: +" + All idI idR capI capR ksI ksR pkI pkR dh ltk #i1 #i2 #j . + InitWillDoSecOOBo()[+] @i1 & RespWillDoLegJW()[+] @i2 & + InitiatorFinishedSecPairing(idI, capI, ksI, idR, capR, ksR, pkI, pkR, dh, ltk) @j ==> + (Ex tk ni nr ci cr #k. + RespSentRandom(idR, capR, ksR, idI, capI, ksI, tk, nr, ni, cr, ci) @k + ) +" + +lemma secOOBo_legJW_auth_resp: +" + All idI idR capI capR ksI ksR tk ni nr stk #i1 #i2 #j. + InitWillDoSecOOBo()[+] @i1 & RespWillDoLegJW()[+] @i2 & + ResponderFinishedLegPairing(idR, capR, ksR, idI, capI, ksI, tk, nr, ni, stk) @j ==> + (Ex pkI pkR dh nsi nsr ri rr ei #k . + InitDHKeyCheck(idI, capI, ksI, idR, capR, ksR, pkI, pkR, dh, nsi, nsr, ri, rr, ei) @k + ) +" + +lemma secOOBo_legJW_weaksecret_init: +" + All idI idR capI capR ksI ksR pkI pkR dh ltk #i1 #i2 #j . + InitWillDoSecOOBo()[+] @i1 & RespWillDoLegJW()[+] @i2 & + InitiatorFinishedSecPairing(idI, capI, ksI, idR, capR, ksR, pkI, pkR, dh, ltk) @j ==> + not (Ex #k. K(ltk) @k ) +" + +lemma secOOBo_legJW_weaksecret_resp: +" + All idI idR capI capR ksI ksR tk ni nr stk #i1 #i2 #j . + InitWillDoSecOOBo()[+] @i1 & RespWillDoLegJW()[+] @i2 & + ResponderFinishedLegPairing(idR, capR, ksR, idI, capI, ksI, tk, nr, ni, stk) @j ==> + not (Ex #k. K(stk) @k ) +" + +lemma secOOBo_legJW_double_impersonation: +" + All #i1 #i2 . + InitWillDoSecOOBo()[+] @i1 & RespWillDoLegJW()[+] @i2 ==> + (All idI1 idR1 capI1 capR1 ksI1 ksR1 idI2 idR2 capI2 capR2 ksI2 ksR2 tk ni nr stk pkI pkR dh ltk #j1 #j2 . + InitiatorFinishedSecPairing(idI1, capI1, ksI1, idR1, capR1, ksR1, pkI, pkR, dh, ltk) @j1 & + ResponderFinishedLegPairing(idR2, capR2, ksR2, idI2, capI2, ksI2, tk, nr, ni, stk) @j2 ==> + not (Ex #k1 #k2 . + K(ltk) @k1 & K(stk) @k2 + ) + ) +" + +#endif + +/*******************************************/ +/* End lemmas about SecOOBo-LegJW exchange */ +/*******************************************/ + +/****************************************/ +/* Lemmas about SecOOBo-LegPEi exchange */ +/****************************************/ + +#ifdef SecOOBoLegPEi +lemma secOOBo_legPEi_functional: exists-trace +" + Ex #i1 #i2 . + InitWillDoSecOOBo()[+] @i1 & RespWillDoLegPEi()[+] @i2 & + (Ex idI1 idR1 capI1 capR1 ksI1 ksR1 idI2 idR2 capI2 capR2 ksI2 ksR2 tk ni nr stk pkI pkR dh ltk #j1 #j2 . + InitiatorFinishedSecPairing(idI1, capI1, ksI1, idR1, capR1, ksR1, pkI, pkR, dh, ltk) @j1 & + ResponderFinishedLegPairing(idR2, capR2, ksR2, idI2, capI2, ksI2, tk, nr, ni, stk) @j2 + ) +" + +lemma secOOBo_legPEi_auth_init: +" + All idI idR capI capR ksI ksR pkI pkR dh ltk #i1 #i2 #j . + InitWillDoSecOOBo()[+] @i1 & RespWillDoLegPEi()[+] @i2 & + InitiatorFinishedSecPairing(idI, capI, ksI, idR, capR, ksR, pkI, pkR, dh, ltk) @j ==> + (Ex tk ni nr ci cr #k. + RespSentRandom(idR, capR, ksR, idI, capI, ksI, tk, nr, ni, cr, ci) @k + ) +" + +lemma secOOBo_legPEi_auth_resp: +" + All idI idR capI capR ksI ksR tk ni nr stk #i1 #i2 #j. + InitWillDoSecOOBo()[+] @i1 & RespWillDoLegPEi()[+] @i2 & + ResponderFinishedLegPairing(idR, capR, ksR, idI, capI, ksI, tk, nr, ni, stk) @j ==> + (Ex pkI pkR dh nsi nsr ri rr ei #k . + InitDHKeyCheck(idI, capI, ksI, idR, capR, ksR, pkI, pkR, dh, nsi, nsr, ri, rr, ei) @k + ) +" + +lemma secOOBo_legPEi_weaksecret_init: +" + All idI idR capI capR ksI ksR pkI pkR dh ltk #i1 #i2 #j . + InitWillDoSecOOBo()[+] @i1 & RespWillDoLegPEi()[+] @i2 & + InitiatorFinishedSecPairing(idI, capI, ksI, idR, capR, ksR, pkI, pkR, dh, ltk) @j ==> + not (Ex #k. K(ltk) @k ) +" + +lemma secOOBo_legPEi_weaksecret_resp: +" + All idI idR capI capR ksI ksR tk ni nr stk #i1 #i2 #j . + InitWillDoSecOOBo()[+] @i1 & RespWillDoLegPEi()[+] @i2 & + ResponderFinishedLegPairing(idR, capR, ksR, idI, capI, ksI, tk, nr, ni, stk) @j ==> + not (Ex #k. K(stk) @k ) +" + +lemma secOOBo_legPEi_double_impersonation: +" + All #i1 #i2 . + InitWillDoSecOOBo()[+] @i1 & RespWillDoLegPEi()[+] @i2 ==> + (All idI1 idR1 capI1 capR1 ksI1 ksR1 idI2 idR2 capI2 capR2 ksI2 ksR2 tk ni nr stk pkI pkR dh ltk #j1 #j2 . + InitiatorFinishedSecPairing(idI1, capI1, ksI1, idR1, capR1, ksR1, pkI, pkR, dh, ltk) @j1 & + ResponderFinishedLegPairing(idR2, capR2, ksR2, idI2, capI2, ksI2, tk, nr, ni, stk) @j2 ==> + not (Ex #k1 #k2 . + K(ltk) @k1 & K(stk) @k2 + ) + ) +" + +#endif + +/********************************************/ +/* End lemmas about SecOOBo-LegPEi exchange */ +/********************************************/ + +/****************************************/ +/* Lemmas about SecOOBo-LegPEo exchange */ +/****************************************/ + +#ifdef SecOOBoLegPEo +lemma secOOBo_legPEo_functional: exists-trace +" + Ex #i1 #i2 . + InitWillDoSecOOBo()[+] @i1 & RespWillDoLegPEo()[+] @i2 & + (Ex idI1 idR1 capI1 capR1 ksI1 ksR1 idI2 idR2 capI2 capR2 ksI2 ksR2 tk ni nr stk pkI pkR dh ltk #j1 #j2 . + InitiatorFinishedSecPairing(idI1, capI1, ksI1, idR1, capR1, ksR1, pkI, pkR, dh, ltk) @j1 & + ResponderFinishedLegPairing(idR2, capR2, ksR2, idI2, capI2, ksI2, tk, nr, ni, stk) @j2 + ) +" + +lemma secOOBo_legPEo_auth_init: +" + All idI idR capI capR ksI ksR pkI pkR dh ltk #i1 #i2 #j . + InitWillDoSecOOBo()[+] @i1 & RespWillDoLegPEo()[+] @i2 & + InitiatorFinishedSecPairing(idI, capI, ksI, idR, capR, ksR, pkI, pkR, dh, ltk) @j ==> + (Ex tk ni nr ci cr #k. + RespSentRandom(idR, capR, ksR, idI, capI, ksI, tk, nr, ni, cr, ci) @k + ) +" + +lemma secOOBo_legPEo_auth_resp: +" + All idI idR capI capR ksI ksR tk ni nr stk #i1 #i2 #j. + InitWillDoSecOOBo()[+] @i1 & RespWillDoLegPEo()[+] @i2 & + ResponderFinishedLegPairing(idR, capR, ksR, idI, capI, ksI, tk, nr, ni, stk) @j ==> + (Ex pkI pkR dh nsi nsr ri rr ei #k . + InitDHKeyCheck(idI, capI, ksI, idR, capR, ksR, pkI, pkR, dh, nsi, nsr, ri, rr, ei) @k + ) +" + +lemma secOOBo_legPEo_weaksecret_init: +" + All idI idR capI capR ksI ksR pkI pkR dh ltk #i1 #i2 #j . + InitWillDoSecOOBo()[+] @i1 & RespWillDoLegPEo()[+] @i2 & + InitiatorFinishedSecPairing(idI, capI, ksI, idR, capR, ksR, pkI, pkR, dh, ltk) @j ==> + not (Ex #k. K(ltk) @k ) +" + +lemma secOOBo_legPEo_weaksecret_resp: +" + All idI idR capI capR ksI ksR tk ni nr stk #i1 #i2 #j . + InitWillDoSecOOBo()[+] @i1 & RespWillDoLegPEo()[+] @i2 & + ResponderFinishedLegPairing(idR, capR, ksR, idI, capI, ksI, tk, nr, ni, stk) @j ==> + not (Ex #k. K(stk) @k ) +" + +lemma secOOBo_legPEo_double_impersonation: +" + All #i1 #i2 . + InitWillDoSecOOBo()[+] @i1 & RespWillDoLegPEo()[+] @i2 ==> + (All idI1 idR1 capI1 capR1 ksI1 ksR1 idI2 idR2 capI2 capR2 ksI2 ksR2 tk ni nr stk pkI pkR dh ltk #j1 #j2 . + InitiatorFinishedSecPairing(idI1, capI1, ksI1, idR1, capR1, ksR1, pkI, pkR, dh, ltk) @j1 & + ResponderFinishedLegPairing(idR2, capR2, ksR2, idI2, capI2, ksI2, tk, nr, ni, stk) @j2 ==> + not (Ex #k1 #k2 . + K(ltk) @k1 & K(stk) @k2 + ) + ) +" + +#endif + +/********************************************/ +/* End lemmas about SecOOBo-LegPEo exchange */ +/********************************************/ + +/*****************************************/ +/* Lemmas about SecOOBo-LegPEio exchange */ +/*****************************************/ + +#ifdef SecOOBoLegPEio +lemma secOOBo_legPEio_functional: exists-trace +" + Ex #i1 #i2 . + InitWillDoSecOOBo()[+] @i1 & RespWillDoLegPEio()[+] @i2 & + (Ex idI1 idR1 capI1 capR1 ksI1 ksR1 idI2 idR2 capI2 capR2 ksI2 ksR2 tk ni nr stk pkI pkR dh ltk #j1 #j2 . + InitiatorFinishedSecPairing(idI1, capI1, ksI1, idR1, capR1, ksR1, pkI, pkR, dh, ltk) @j1 & + ResponderFinishedLegPairing(idR2, capR2, ksR2, idI2, capI2, ksI2, tk, nr, ni, stk) @j2 + ) +" + +lemma secOOBo_legPEio_auth_init: +" + All idI idR capI capR ksI ksR pkI pkR dh ltk #i1 #i2 #j . + InitWillDoSecOOBo()[+] @i1 & RespWillDoLegPEio()[+] @i2 & + InitiatorFinishedSecPairing(idI, capI, ksI, idR, capR, ksR, pkI, pkR, dh, ltk) @j ==> + (Ex tk ni nr ci cr #k. + RespSentRandom(idR, capR, ksR, idI, capI, ksI, tk, nr, ni, cr, ci) @k + ) +" + +lemma secOOBo_legPEio_auth_resp: +" + All idI idR capI capR ksI ksR tk ni nr stk #i1 #i2 #j. + InitWillDoSecOOBo()[+] @i1 & RespWillDoLegPEio()[+] @i2 & + ResponderFinishedLegPairing(idR, capR, ksR, idI, capI, ksI, tk, nr, ni, stk) @j ==> + (Ex pkI pkR dh nsi nsr ri rr ei #k . + InitDHKeyCheck(idI, capI, ksI, idR, capR, ksR, pkI, pkR, dh, nsi, nsr, ri, rr, ei) @k + ) +" + +lemma secOOBo_legPEio_weaksecret_init: +" + All idI idR capI capR ksI ksR pkI pkR dh ltk #i1 #i2 #j . + InitWillDoSecOOBo()[+] @i1 & RespWillDoLegPEio()[+] @i2 & + InitiatorFinishedSecPairing(idI, capI, ksI, idR, capR, ksR, pkI, pkR, dh, ltk) @j ==> + not (Ex #k. K(ltk) @k ) +" + +lemma secOOBo_legPEio_weaksecret_resp: +" + All idI idR capI capR ksI ksR tk ni nr stk #i1 #i2 #j . + InitWillDoSecOOBo()[+] @i1 & RespWillDoLegPEio()[+] @i2 & + ResponderFinishedLegPairing(idR, capR, ksR, idI, capI, ksI, tk, nr, ni, stk) @j ==> + not (Ex #k. K(stk) @k ) +" + +lemma secOOBo_legPEio_double_impersonation: +" + All #i1 #i2 . + InitWillDoSecOOBo()[+] @i1 & RespWillDoLegPEio()[+] @i2 ==> + (All idI1 idR1 capI1 capR1 ksI1 ksR1 idI2 idR2 capI2 capR2 ksI2 ksR2 tk ni nr stk pkI pkR dh ltk #j1 #j2 . + InitiatorFinishedSecPairing(idI1, capI1, ksI1, idR1, capR1, ksR1, pkI, pkR, dh, ltk) @j1 & + ResponderFinishedLegPairing(idR2, capR2, ksR2, idI2, capI2, ksI2, tk, nr, ni, stk) @j2 ==> + not (Ex #k1 #k2 . + K(ltk) @k1 & K(stk) @k2 + ) + ) +" + +#endif + +/*********************************************/ +/* End lemmas about SecOOBo-LegPEio exchange */ +/*********************************************/ + +/****************************************/ +/* Lemmas about SecOOBo-LegOOB exchange */ +/****************************************/ + +#ifdef SecOOBoLegOOB +lemma secOOBo_legOOB_functional: exists-trace +" + Ex #i1 #i2 . + InitWillDoSecOOBo()[+] @i1 & RespWillDoLegOOB()[+] @i2 & + (Ex idI1 idR1 capI1 capR1 ksI1 ksR1 idI2 idR2 capI2 capR2 ksI2 ksR2 tk ni nr stk pkI pkR dh ltk #j1 #j2 . + InitiatorFinishedSecPairing(idI1, capI1, ksI1, idR1, capR1, ksR1, pkI, pkR, dh, ltk) @j1 & + ResponderFinishedLegPairing(idR2, capR2, ksR2, idI2, capI2, ksI2, tk, nr, ni, stk) @j2 + ) +" + +lemma secOOBo_legOOB_auth_init: +" + All idI idR capI capR ksI ksR pkI pkR dh ltk #i1 #i2 #j . + InitWillDoSecOOBo()[+] @i1 & RespWillDoLegOOB()[+] @i2 & + InitiatorFinishedSecPairing(idI, capI, ksI, idR, capR, ksR, pkI, pkR, dh, ltk) @j ==> + (Ex tk ni nr ci cr #k. + RespSentRandom(idR, capR, ksR, idI, capI, ksI, tk, nr, ni, cr, ci) @k + ) +" + +lemma secOOBo_legOOB_auth_resp: +" + All idI idR capI capR ksI ksR tk ni nr stk #i1 #i2 #j. + InitWillDoSecOOBo()[+] @i1 & RespWillDoLegOOB()[+] @i2 & + ResponderFinishedLegPairing(idR, capR, ksR, idI, capI, ksI, tk, nr, ni, stk) @j ==> + (Ex pkI pkR dh nsi nsr ri rr ei #k . + InitDHKeyCheck(idI, capI, ksI, idR, capR, ksR, pkI, pkR, dh, nsi, nsr, ri, rr, ei) @k + ) +" + +lemma secOOBo_legOOB_weaksecret_init: +" + All idI idR capI capR ksI ksR pkI pkR dh ltk #i1 #i2 #j . + InitWillDoSecOOBo()[+] @i1 & RespWillDoLegOOB()[+] @i2 & + InitiatorFinishedSecPairing(idI, capI, ksI, idR, capR, ksR, pkI, pkR, dh, ltk) @j ==> + not (Ex #k. K(ltk) @k ) +" + +lemma secOOBo_legOOB_weaksecret_resp: +" + All idI idR capI capR ksI ksR tk ni nr stk #i1 #i2 #j . + InitWillDoSecOOBo()[+] @i1 & RespWillDoLegOOB()[+] @i2 & + ResponderFinishedLegPairing(idR, capR, ksR, idI, capI, ksI, tk, nr, ni, stk) @j ==> + not (Ex #k. K(stk) @k ) +" + +lemma secOOBo_legOOB_double_impersonation: +" + All #i1 #i2 . + InitWillDoSecOOBo()[+] @i1 & RespWillDoLegOOB()[+] @i2 ==> + (All idI1 idR1 capI1 capR1 ksI1 ksR1 idI2 idR2 capI2 capR2 ksI2 ksR2 tk ni nr stk pkI pkR dh ltk #j1 #j2 . + InitiatorFinishedSecPairing(idI1, capI1, ksI1, idR1, capR1, ksR1, pkI, pkR, dh, ltk) @j1 & + ResponderFinishedLegPairing(idR2, capR2, ksR2, idI2, capI2, ksI2, tk, nr, ni, stk) @j2 ==> + not (Ex #k1 #k2 . + K(ltk) @k1 & K(stk) @k2 + ) + ) +" + +#endif + +/********************************************/ +/* End lemmas about SecOOBo-LegOOB exchange */ +/********************************************/ + +/****************************************/ +/* Lemmas about SecOOBio-LegJW exchange */ +/****************************************/ + +#ifdef SecOOBioLegJW +lemma secOOBio_legJW_functional: exists-trace +" + Ex #i1 #i2 . + InitWillDoSecOOBio()[+] @i1 & RespWillDoLegJW()[+] @i2 & + (Ex idI1 idR1 capI1 capR1 ksI1 ksR1 idI2 idR2 capI2 capR2 ksI2 ksR2 tk ni nr stk pkI pkR dh ltk #j1 #j2 . + InitiatorFinishedSecPairing(idI1, capI1, ksI1, idR1, capR1, ksR1, pkI, pkR, dh, ltk) @j1 & + ResponderFinishedLegPairing(idR2, capR2, ksR2, idI2, capI2, ksI2, tk, nr, ni, stk) @j2 + ) +" + +lemma secOOBio_legJW_auth_init: +" + All idI idR capI capR ksI ksR pkI pkR dh ltk #i1 #i2 #j . + InitWillDoSecOOBio()[+] @i1 & RespWillDoLegJW()[+] @i2 & + InitiatorFinishedSecPairing(idI, capI, ksI, idR, capR, ksR, pkI, pkR, dh, ltk) @j ==> + (Ex tk ni nr ci cr #k. + RespSentRandom(idR, capR, ksR, idI, capI, ksI, tk, nr, ni, cr, ci) @k + ) +" + +lemma secOOBio_legJW_auth_resp: +" + All idI idR capI capR ksI ksR tk ni nr stk #i1 #i2 #j. + InitWillDoSecOOBio()[+] @i1 & RespWillDoLegJW()[+] @i2 & + ResponderFinishedLegPairing(idR, capR, ksR, idI, capI, ksI, tk, nr, ni, stk) @j ==> + (Ex pkI pkR dh nsi nsr ri rr ei #k . + InitDHKeyCheck(idI, capI, ksI, idR, capR, ksR, pkI, pkR, dh, nsi, nsr, ri, rr, ei) @k + ) +" + +lemma secOOBio_legJW_weaksecret_init: +" + All idI idR capI capR ksI ksR pkI pkR dh ltk #i1 #i2 #j . + InitWillDoSecOOBio()[+] @i1 & RespWillDoLegJW()[+] @i2 & + InitiatorFinishedSecPairing(idI, capI, ksI, idR, capR, ksR, pkI, pkR, dh, ltk) @j ==> + not (Ex #k. K(ltk) @k ) +" + +lemma secOOBio_legJW_weaksecret_resp: +" + All idI idR capI capR ksI ksR tk ni nr stk #i1 #i2 #j . + InitWillDoSecOOBio()[+] @i1 & RespWillDoLegJW()[+] @i2 & + ResponderFinishedLegPairing(idR, capR, ksR, idI, capI, ksI, tk, nr, ni, stk) @j ==> + not (Ex #k. K(stk) @k ) +" + +lemma secOOBio_legJW_double_impersonation: +" + All #i1 #i2 . + InitWillDoSecOOBio()[+] @i1 & RespWillDoLegJW()[+] @i2 ==> + (All idI1 idR1 capI1 capR1 ksI1 ksR1 idI2 idR2 capI2 capR2 ksI2 ksR2 tk ni nr stk pkI pkR dh ltk #j1 #j2 . + InitiatorFinishedSecPairing(idI1, capI1, ksI1, idR1, capR1, ksR1, pkI, pkR, dh, ltk) @j1 & + ResponderFinishedLegPairing(idR2, capR2, ksR2, idI2, capI2, ksI2, tk, nr, ni, stk) @j2 ==> + not (Ex #k1 #k2 . + K(ltk) @k1 & K(stk) @k2 + ) + ) +" + +#endif + +/********************************************/ +/* End lemmas about SecOOBio-LegJW exchange */ +/********************************************/ + +/*****************************************/ +/* Lemmas about SecOOBio-LegPEi exchange */ +/*****************************************/ + +#ifdef SecOOBioLegPEi +lemma secOOBio_legPEi_functional: exists-trace +" + Ex #i1 #i2 . + InitWillDoSecOOBio()[+] @i1 & RespWillDoLegPEi()[+] @i2 & + (Ex idI1 idR1 capI1 capR1 ksI1 ksR1 idI2 idR2 capI2 capR2 ksI2 ksR2 tk ni nr stk pkI pkR dh ltk #j1 #j2 . + InitiatorFinishedSecPairing(idI1, capI1, ksI1, idR1, capR1, ksR1, pkI, pkR, dh, ltk) @j1 & + ResponderFinishedLegPairing(idR2, capR2, ksR2, idI2, capI2, ksI2, tk, nr, ni, stk) @j2 + ) +" + +lemma secOOBio_legPEi_auth_init: +" + All idI idR capI capR ksI ksR pkI pkR dh ltk #i1 #i2 #j . + InitWillDoSecOOBio()[+] @i1 & RespWillDoLegPEi()[+] @i2 & + InitiatorFinishedSecPairing(idI, capI, ksI, idR, capR, ksR, pkI, pkR, dh, ltk) @j ==> + (Ex tk ni nr ci cr #k. + RespSentRandom(idR, capR, ksR, idI, capI, ksI, tk, nr, ni, cr, ci) @k + ) +" + +lemma secOOBio_legPEi_auth_resp: +" + All idI idR capI capR ksI ksR tk ni nr stk #i1 #i2 #j. + InitWillDoSecOOBio()[+] @i1 & RespWillDoLegPEi()[+] @i2 & + ResponderFinishedLegPairing(idR, capR, ksR, idI, capI, ksI, tk, nr, ni, stk) @j ==> + (Ex pkI pkR dh nsi nsr ri rr ei #k . + InitDHKeyCheck(idI, capI, ksI, idR, capR, ksR, pkI, pkR, dh, nsi, nsr, ri, rr, ei) @k + ) +" + +lemma secOOBio_legPEi_weaksecret_init: +" + All idI idR capI capR ksI ksR pkI pkR dh ltk #i1 #i2 #j . + InitWillDoSecOOBio()[+] @i1 & RespWillDoLegPEi()[+] @i2 & + InitiatorFinishedSecPairing(idI, capI, ksI, idR, capR, ksR, pkI, pkR, dh, ltk) @j ==> + not (Ex #k. K(ltk) @k ) +" + +lemma secOOBio_legPEi_weaksecret_resp: +" + All idI idR capI capR ksI ksR tk ni nr stk #i1 #i2 #j . + InitWillDoSecOOBio()[+] @i1 & RespWillDoLegPEi()[+] @i2 & + ResponderFinishedLegPairing(idR, capR, ksR, idI, capI, ksI, tk, nr, ni, stk) @j ==> + not (Ex #k. K(stk) @k ) +" + +lemma secOOBio_legPEi_double_impersonation: +" + All #i1 #i2 . + InitWillDoSecOOBio()[+] @i1 & RespWillDoLegPEi()[+] @i2 ==> + (All idI1 idR1 capI1 capR1 ksI1 ksR1 idI2 idR2 capI2 capR2 ksI2 ksR2 tk ni nr stk pkI pkR dh ltk #j1 #j2 . + InitiatorFinishedSecPairing(idI1, capI1, ksI1, idR1, capR1, ksR1, pkI, pkR, dh, ltk) @j1 & + ResponderFinishedLegPairing(idR2, capR2, ksR2, idI2, capI2, ksI2, tk, nr, ni, stk) @j2 ==> + not (Ex #k1 #k2 . + K(ltk) @k1 & K(stk) @k2 + ) + ) +" + +#endif + +/*********************************************/ +/* End lemmas about SecOOBio-LegPEi exchange */ +/*********************************************/ + +/*****************************************/ +/* Lemmas about SecOOBio-LegPEo exchange */ +/*****************************************/ + +#ifdef SecOOBioLegPEo +lemma secOOBio_legPEo_functional: exists-trace +" + Ex #i1 #i2 . + InitWillDoSecOOBio()[+] @i1 & RespWillDoLegPEo()[+] @i2 & + (Ex idI1 idR1 capI1 capR1 ksI1 ksR1 idI2 idR2 capI2 capR2 ksI2 ksR2 tk ni nr stk pkI pkR dh ltk #j1 #j2 . + InitiatorFinishedSecPairing(idI1, capI1, ksI1, idR1, capR1, ksR1, pkI, pkR, dh, ltk) @j1 & + ResponderFinishedLegPairing(idR2, capR2, ksR2, idI2, capI2, ksI2, tk, nr, ni, stk) @j2 + ) +" + +lemma secOOBio_legPEo_auth_init: +" + All idI idR capI capR ksI ksR pkI pkR dh ltk #i1 #i2 #j . + InitWillDoSecOOBio()[+] @i1 & RespWillDoLegPEo()[+] @i2 & + InitiatorFinishedSecPairing(idI, capI, ksI, idR, capR, ksR, pkI, pkR, dh, ltk) @j ==> + (Ex tk ni nr ci cr #k. + RespSentRandom(idR, capR, ksR, idI, capI, ksI, tk, nr, ni, cr, ci) @k + ) +" + +lemma secOOBio_legPEo_auth_resp: +" + All idI idR capI capR ksI ksR tk ni nr stk #i1 #i2 #j. + InitWillDoSecOOBio()[+] @i1 & RespWillDoLegPEo()[+] @i2 & + ResponderFinishedLegPairing(idR, capR, ksR, idI, capI, ksI, tk, nr, ni, stk) @j ==> + (Ex pkI pkR dh nsi nsr ri rr ei #k . + InitDHKeyCheck(idI, capI, ksI, idR, capR, ksR, pkI, pkR, dh, nsi, nsr, ri, rr, ei) @k + ) +" + +lemma secOOBio_legPEo_weaksecret_init: +" + All idI idR capI capR ksI ksR pkI pkR dh ltk #i1 #i2 #j . + InitWillDoSecOOBio()[+] @i1 & RespWillDoLegPEo()[+] @i2 & + InitiatorFinishedSecPairing(idI, capI, ksI, idR, capR, ksR, pkI, pkR, dh, ltk) @j ==> + not (Ex #k. K(ltk) @k ) +" + +lemma secOOBio_legPEo_weaksecret_resp: +" + All idI idR capI capR ksI ksR tk ni nr stk #i1 #i2 #j . + InitWillDoSecOOBio()[+] @i1 & RespWillDoLegPEo()[+] @i2 & + ResponderFinishedLegPairing(idR, capR, ksR, idI, capI, ksI, tk, nr, ni, stk) @j ==> + not (Ex #k. K(stk) @k ) +" + +lemma secOOBio_legPEo_double_impersonation: +" + All #i1 #i2 . + InitWillDoSecOOBio()[+] @i1 & RespWillDoLegPEo()[+] @i2 ==> + (All idI1 idR1 capI1 capR1 ksI1 ksR1 idI2 idR2 capI2 capR2 ksI2 ksR2 tk ni nr stk pkI pkR dh ltk #j1 #j2 . + InitiatorFinishedSecPairing(idI1, capI1, ksI1, idR1, capR1, ksR1, pkI, pkR, dh, ltk) @j1 & + ResponderFinishedLegPairing(idR2, capR2, ksR2, idI2, capI2, ksI2, tk, nr, ni, stk) @j2 ==> + not (Ex #k1 #k2 . + K(ltk) @k1 & K(stk) @k2 + ) + ) +" + +#endif + +/*********************************************/ +/* End lemmas about SecOOBio-LegPEo exchange */ +/*********************************************/ + +/******************************************/ +/* Lemmas about SecOOBio-LegPEio exchange */ +/******************************************/ + +#ifdef SecOOBioLegPEio +lemma secOOBio_legPEio_functional: exists-trace +" + Ex #i1 #i2 . + InitWillDoSecOOBio()[+] @i1 & RespWillDoLegPEio()[+] @i2 & + (Ex idI1 idR1 capI1 capR1 ksI1 ksR1 idI2 idR2 capI2 capR2 ksI2 ksR2 tk ni nr stk pkI pkR dh ltk #j1 #j2 . + InitiatorFinishedSecPairing(idI1, capI1, ksI1, idR1, capR1, ksR1, pkI, pkR, dh, ltk) @j1 & + ResponderFinishedLegPairing(idR2, capR2, ksR2, idI2, capI2, ksI2, tk, nr, ni, stk) @j2 + ) +" + +lemma secOOBio_legPEio_auth_init: +" + All idI idR capI capR ksI ksR pkI pkR dh ltk #i1 #i2 #j . + InitWillDoSecOOBio()[+] @i1 & RespWillDoLegPEio()[+] @i2 & + InitiatorFinishedSecPairing(idI, capI, ksI, idR, capR, ksR, pkI, pkR, dh, ltk) @j ==> + (Ex tk ni nr ci cr #k. + RespSentRandom(idR, capR, ksR, idI, capI, ksI, tk, nr, ni, cr, ci) @k + ) +" + +lemma secOOBio_legPEio_auth_resp: +" + All idI idR capI capR ksI ksR tk ni nr stk #i1 #i2 #j. + InitWillDoSecOOBio()[+] @i1 & RespWillDoLegPEio()[+] @i2 & + ResponderFinishedLegPairing(idR, capR, ksR, idI, capI, ksI, tk, nr, ni, stk) @j ==> + (Ex pkI pkR dh nsi nsr ri rr ei #k . + InitDHKeyCheck(idI, capI, ksI, idR, capR, ksR, pkI, pkR, dh, nsi, nsr, ri, rr, ei) @k + ) +" + +lemma secOOBio_legPEio_weaksecret_init: +" + All idI idR capI capR ksI ksR pkI pkR dh ltk #i1 #i2 #j . + InitWillDoSecOOBio()[+] @i1 & RespWillDoLegPEio()[+] @i2 & + InitiatorFinishedSecPairing(idI, capI, ksI, idR, capR, ksR, pkI, pkR, dh, ltk) @j ==> + not (Ex #k. K(ltk) @k ) +" + +lemma secOOBio_legPEio_weaksecret_resp: +" + All idI idR capI capR ksI ksR tk ni nr stk #i1 #i2 #j . + InitWillDoSecOOBio()[+] @i1 & RespWillDoLegPEio()[+] @i2 & + ResponderFinishedLegPairing(idR, capR, ksR, idI, capI, ksI, tk, nr, ni, stk) @j ==> + not (Ex #k. K(stk) @k ) +" + +lemma secOOBio_legPEio_double_impersonation: +" + All #i1 #i2 . + InitWillDoSecOOBio()[+] @i1 & RespWillDoLegPEio()[+] @i2 ==> + (All idI1 idR1 capI1 capR1 ksI1 ksR1 idI2 idR2 capI2 capR2 ksI2 ksR2 tk ni nr stk pkI pkR dh ltk #j1 #j2 . + InitiatorFinishedSecPairing(idI1, capI1, ksI1, idR1, capR1, ksR1, pkI, pkR, dh, ltk) @j1 & + ResponderFinishedLegPairing(idR2, capR2, ksR2, idI2, capI2, ksI2, tk, nr, ni, stk) @j2 ==> + not (Ex #k1 #k2 . + K(ltk) @k1 & K(stk) @k2 + ) + ) +" + +#endif + +/**********************************************/ +/* End lemmas about SecOOBio-LegPEio exchange */ +/**********************************************/ + +/*****************************************/ +/* Lemmas about SecOOBio-LegOOB exchange */ +/*****************************************/ + +#ifdef SecOOBioLegOOB +lemma secOOBio_legOOB_functional: exists-trace +" + Ex #i1 #i2 . + InitWillDoSecOOBio()[+] @i1 & RespWillDoLegOOB()[+] @i2 & + (Ex idI1 idR1 capI1 capR1 ksI1 ksR1 idI2 idR2 capI2 capR2 ksI2 ksR2 tk ni nr stk pkI pkR dh ltk #j1 #j2 . + InitiatorFinishedSecPairing(idI1, capI1, ksI1, idR1, capR1, ksR1, pkI, pkR, dh, ltk) @j1 & + ResponderFinishedLegPairing(idR2, capR2, ksR2, idI2, capI2, ksI2, tk, nr, ni, stk) @j2 + ) +" + +lemma secOOBio_legOOB_auth_init: +" + All idI idR capI capR ksI ksR pkI pkR dh ltk #i1 #i2 #j . + InitWillDoSecOOBio()[+] @i1 & RespWillDoLegOOB()[+] @i2 & + InitiatorFinishedSecPairing(idI, capI, ksI, idR, capR, ksR, pkI, pkR, dh, ltk) @j ==> + (Ex tk ni nr ci cr #k. + RespSentRandom(idR, capR, ksR, idI, capI, ksI, tk, nr, ni, cr, ci) @k + ) +" + +lemma secOOBio_legOOB_auth_resp: +" + All idI idR capI capR ksI ksR tk ni nr stk #i1 #i2 #j. + InitWillDoSecOOBio()[+] @i1 & RespWillDoLegOOB()[+] @i2 & + ResponderFinishedLegPairing(idR, capR, ksR, idI, capI, ksI, tk, nr, ni, stk) @j ==> + (Ex pkI pkR dh nsi nsr ri rr ei #k . + InitDHKeyCheck(idI, capI, ksI, idR, capR, ksR, pkI, pkR, dh, nsi, nsr, ri, rr, ei) @k + ) +" + +lemma secOOBio_legOOB_weaksecret_init: +" + All idI idR capI capR ksI ksR pkI pkR dh ltk #i1 #i2 #j . + InitWillDoSecOOBio()[+] @i1 & RespWillDoLegOOB()[+] @i2 & + InitiatorFinishedSecPairing(idI, capI, ksI, idR, capR, ksR, pkI, pkR, dh, ltk) @j ==> + not (Ex #k. K(ltk) @k ) +" + +lemma secOOBio_legOOB_weaksecret_resp: +" + All idI idR capI capR ksI ksR tk ni nr stk #i1 #i2 #j . + InitWillDoSecOOBio()[+] @i1 & RespWillDoLegOOB()[+] @i2 & + ResponderFinishedLegPairing(idR, capR, ksR, idI, capI, ksI, tk, nr, ni, stk) @j ==> + not (Ex #k. K(stk) @k ) +" + +lemma secOOBio_legOOB_double_impersonation: +" + All #i1 #i2 . + InitWillDoSecOOBio()[+] @i1 & RespWillDoLegOOB()[+] @i2 ==> + (All idI1 idR1 capI1 capR1 ksI1 ksR1 idI2 idR2 capI2 capR2 ksI2 ksR2 tk ni nr stk pkI pkR dh ltk #j1 #j2 . + InitiatorFinishedSecPairing(idI1, capI1, ksI1, idR1, capR1, ksR1, pkI, pkR, dh, ltk) @j1 & + ResponderFinishedLegPairing(idR2, capR2, ksR2, idI2, capI2, ksI2, tk, nr, ni, stk) @j2 ==> + not (Ex #k1 #k2 . + K(ltk) @k1 & K(stk) @k2 + ) + ) +" + +#endif + +/*********************************************/ +/* End lemmas about SecOOBio-LegOOB exchange */ +/*********************************************/ + +/* +* Command-line to generate a Tamarin file with the entire model without all preprocessor macros: +* tamarin-prover ble.spthy -DSecNCSecNC -DLegPEiSecPEo -DSecPEiLegOOB -DSecOOBiLegPEi -DRespLegPE -DLegPEiSecNC -DInitLegPE -DSecJWLegOOB -DLegJWSecJW -DLegPEiLegPEi -DLegPEiLegPEo -DLegJWSecPEo -DRespSecPEo -DSecOOBioSecNC -DLegJWLegPEio -DSecJWSecPEi -DLegPEiLegJW -DRespSec -DSecOOBiSecPEio -DSecPEiSecPEi -DSecPEoLegPEio -DSecOOBioLegOOB -DLegJWLegJW -DLegPEioLegOOB -DLegJWSecNC -DSecNCSecJW -DLegOOBSecPEi -DSecOOBioSecOOBio -DLegPEoLegPEio -DLegPEoSecPEio -DSecNCSecOOBo -DSecPEioSecJW -DInitSecOOBo -DLegOOBSecJW -DLegPEiSecJW -DLegOOBSecOOBi -DSecOOBiLegJW -DSecPEioSecOOBio -DInitSecJW -DLegJWSecOOBio -DRespSecJW -DSecJWLegPEo -DInoutInput -DLegPEioLegJW -DSecPEiSecOOBo -DSecOOBiSecJW -DLegPEoLegJW -DSecOOBoSecPEio -DSecPEioSecPEi -DLegPEiSecOOBo -DInitSecPEio -DLegPEiSecOOBi -DInitSecOOBi -DSecPEoSecJW -DInitLeg -DSecPEiLegPEo -DSecOOBoSecPEi -DRespSecOOBi -DLegOOBLegJW -DSecPEoLegJW -DLegPEioSecOOBi -DInitSecOOBio -DSecPEioSecPEo -DLegPEiSecPEi -DSecOOBoLegPEio -DSecPEoSecPEi -DSecPEiSecPEo -DSecPEiSecOOBi -DRespSecOOBo -DInitLegOOB -DSecPEoSecPEo -DLegJWLegPEi -DSecJWSecJW -DSecPEiLegPEi -DSecOOBoLegOOB -DRespLegPEi -DSecOOBiLegPEio -DSecJWSecNC -DInitLegJW -DSecJWSecOOBio -DRespLegOOB -DSecNCSecOOBi -DRespLeg -DLegPEioLegPEo -DSecNCLegPEo -DLegPEoLegPEi -DSecPEioSecOOBo -DInitSecPEo -DLegPEioSecOOBo -DLegOOBSecPEo -DSecPEoLegPEi -DSecJWSecOOBi -DRespSecPEi -DSecOOBioSecPEio -DSecNCLegJW -DRespSecOOBio -DInitSec -DSecPEoSecOOBi -DSecPEioSecNC -DSecPEiSecOOBio -DInputInput -DSecOOBioSecOOBo -DLegPEioSecNC -DRespLegPEo -DSecNCSecPEio -DSecOOBioSecOOBi -DOutputOutput -DLegJWLegPEo -DLegOOBSecPEio -DSecOOBiSecOOBi -DSecPEioSecPEio -DSecOOBoSecOOBi -DInitLegPEo -DLegJWSecPEi -DSecPEiSecNC -DLegJWSecOOBi -DLegPEiSecOOBio -DSecPEoLegOOB -DRespSecPE -DSecOOBoSecPEo -DSecPEioLegPEo -DLegPEoSecJW -DInitSecNC -DLegPEoSecOOBio -DInputOutput -DLegOOBSecOOBio -DSecOOBoLegPEi -DInoutOutput -DSecOOBioSecPEi -DSecPEiLegJW -DSecOOBiLegPEo -DSecOOBioSecPEo -DLegOOBLegPEio -DLegOOBSecNC -DSecOOBoSecOOBio -DLegPEoSecPEi -DSecOOBioLegPEio -DSecOOBiSecPEo -DSecOOBoSecOOBo -DSecNCLegPEi -DSecJWSecOOBo -DSecPEoSecOOBo -DSecOOBioSecJW -DSecJWLegJW -DLegPEioSecPEi -DSecPEiSecPEio -DSecPEoSecOOBio -DLegOOBLegOOB -DSecOOBiSecOOBio -DInitSecPE -DRespSecNC -DSecOOBioLegPEi -DLegJWSecOOBo -DSecNCLegOOB -DLegPEoLegPEo -DInitSecOOB -DSecOOBoLegJW -DLegPEioSecPEio -DLegPEoSecOOBi -DLegOOBLegPEo -DLegPEioSecPEo -DSecOOBiLegOOB -DLegPEoLegOOB -DSecNCLegPEio -DSecPEiSecJW -DRespSecPEio -DSecNCSecPEi -DOutputInput -DLegPEoSecPEo -DLegPEioSecJW -DSecOOBoSecJW -DInitLegPEio -DOutputInout -DSecPEiLegPEio -DSecPEioLegJW -DSecOOBoLegPEo -DInoutInout -DLegPEoSecOOBo -DRespLegJW -DLegOOBSecOOBo -DSecOOBoSecNC -DLegPEioLegPEi -DLegJWLegOOB -DLegPEoSecNC -DSecPEoLegPEo -DLegPEioSecOOBio -DRespSecOOB -DInitLegPEi -DSecJWLegPEi -DLegPEiLegOOB -DSecNCSecOOBio -DRespLegPEio -DSecPEioLegPEio -DInputInout -DSecNCSecPEo -DSecOOBiSecNC -DSecOOBiSecPEi -DSecOOBioLegPEo -DSecJWSecPEio -DSecOOBioLegJW -DSecOOBiSecOOBo -DSecJWLegPEio -DSecPEioLegPEi -DLegOOBLegPEi -DLegJWSecPEio -DLegPEiSecPEio -DInitSecPEi -DSecJWSecPEo -DLegPEiLegPEio -DSecPEioLegOOB -DSecPEoSecPEio -DSecPEoSecNC -DLegPEioLegPEio -DSecPEioSecOOBi +*/ + +/* Command lines to prove individual cases: +tamarin-prover ble.spthy -DInitLeg -DInitLegJW -DRespLeg -DRespLegJW -DLegJWLegJW --prove +tamarin-prover ble.spthy -DInitLeg -DInitLegJW -DRespLeg -DRespLegPE -DRespLegPEi -DLegJWLegPEi --prove +tamarin-prover ble.spthy -DInitLeg -DInitLegJW -DRespLeg -DRespLegPE -DRespLegPEo -DLegJWLegPEo --prove +tamarin-prover ble.spthy -DInitLeg -DInitLegJW -DRespLeg -DRespLegPE -DRespLegPEio -DLegJWLegPEio --prove +tamarin-prover ble.spthy -DInitLeg -DInitLegJW -DRespLeg -DRespLegOOB -DLegJWLegOOB --prove +tamarin-prover ble.spthy -DInitLeg -DInitLegPE -DInitLegPEi -DRespLeg -DRespLegJW -DLegPEiLegJW -DInputInput -DInputOutput -DInputInout --prove +tamarin-prover ble.spthy -DInitLeg -DInitLegPE -DInitLegPEi -DRespLeg -DRespLegPE -DRespLegPEi -DLegPEiLegPEi -DInputInput --prove +tamarin-prover ble.spthy -DInitLeg -DInitLegPE -DInitLegPEi -DRespLeg -DRespLegPE -DRespLegPEo -DLegPEiLegPEo -DInputOutput --prove +tamarin-prover ble.spthy -DInitLeg -DInitLegPE -DInitLegPEi -DRespLeg -DRespLegPE -DRespLegPEio -DLegPEiLegPEio -DInputInout --prove +tamarin-prover ble.spthy -DInitLeg -DInitLegPE -DInitLegPEi -DRespLeg -DRespLegOOB -DLegPEiLegOOB -DInputInput -DInputOutput -DInputInout --prove +tamarin-prover ble.spthy -DInitLeg -DInitLegPE -DInitLegPEo -DRespLeg -DRespLegJW -DLegPEoLegJW -DOutputInput -DOutputOutput -DOutputInout --prove +tamarin-prover ble.spthy -DInitLeg -DInitLegPE -DInitLegPEo -DRespLeg -DRespLegPE -DRespLegPEi -DLegPEoLegPEi -DOutputInput --prove +tamarin-prover ble.spthy -DInitLeg -DInitLegPE -DInitLegPEo -DRespLeg -DRespLegPE -DRespLegPEo -DLegPEoLegPEo -DOutputOutput --prove +tamarin-prover ble.spthy -DInitLeg -DInitLegPE -DInitLegPEo -DRespLeg -DRespLegPE -DRespLegPEio -DLegPEoLegPEio -DOutputInout --prove +tamarin-prover ble.spthy -DInitLeg -DInitLegPE -DInitLegPEo -DRespLeg -DRespLegOOB -DLegPEoLegOOB -DOutputInput -DOutputOutput -DOutputInout --prove +tamarin-prover ble.spthy -DInitLeg -DInitLegPE -DInitLegPEio -DRespLeg -DRespLegJW -DLegPEioLegJW -DInoutInput -DInoutOutput -DInoutInout --prove +tamarin-prover ble.spthy -DInitLeg -DInitLegPE -DInitLegPEio -DRespLeg -DRespLegPE -DRespLegPEi -DLegPEioLegPEi -DInoutInput --prove +tamarin-prover ble.spthy -DInitLeg -DInitLegPE -DInitLegPEio -DRespLeg -DRespLegPE -DRespLegPEo -DLegPEioLegPEo -DInoutOutput --prove +tamarin-prover ble.spthy -DInitLeg -DInitLegPE -DInitLegPEio -DRespLeg -DRespLegPE -DRespLegPEio -DLegPEioLegPEio -DInoutInout --prove +tamarin-prover ble.spthy -DInitLeg -DInitLegPE -DInitLegPEio -DRespLeg -DRespLegOOB -DLegPEioLegOOB -DInoutInput -DInoutOutput -DInoutInout --prove +tamarin-prover ble.spthy -DInitLeg -DInitLegOOB -DRespLeg -DRespLegJW -DLegOOBLegJW --prove +tamarin-prover ble.spthy -DInitLeg -DInitLegOOB -DRespLeg -DRespLegPE -DRespLegPEi -DLegOOBLegPEi --prove +tamarin-prover ble.spthy -DInitLeg -DInitLegOOB -DRespLeg -DRespLegPE -DRespLegPEo -DLegOOBLegPEo --prove +tamarin-prover ble.spthy -DInitLeg -DInitLegOOB -DRespLeg -DRespLegPE -DRespLegPEio -DLegOOBLegPEio --prove +tamarin-prover ble.spthy -DInitLeg -DInitLegOOB -DRespLeg -DRespLegOOB -DLegOOBLegOOB --prove +tamarin-prover ble.spthy -DInitSec -DInitSecJW -DRespSec -DRespSecJW -DSecJWSecJW --prove +tamarin-prover ble.spthy -DInitSec -DInitSecJW -DRespSec -DRespSecPE -DRespSecPEi -DSecJWSecPEi --prove +tamarin-prover ble.spthy -DInitSec -DInitSecJW -DRespSec -DRespSecPE -DRespSecPEo -DSecJWSecPEo --prove +tamarin-prover ble.spthy -DInitSec -DInitSecJW -DRespSec -DRespSecPE -DRespSecPEio -DSecJWSecPEio --prove +tamarin-prover ble.spthy -DInitSec -DInitSecJW -DRespSec -DRespSecNC -DSecJWSecNC --prove +tamarin-prover ble.spthy -DInitSec -DInitSecJW -DRespSec -DRespSecOOB -DRespSecOOBi -DSecJWSecOOBi --prove +tamarin-prover ble.spthy -DInitSec -DInitSecJW -DRespSec -DRespSecOOB -DRespSecOOBo -DSecJWSecOOBo --prove +tamarin-prover ble.spthy -DInitSec -DInitSecJW -DRespSec -DRespSecOOB -DRespSecOOBio -DSecJWSecOOBio --prove +tamarin-prover ble.spthy -DInitSec -DInitSecPE -DInitSecPEi -DRespSec -DRespSecJW -DSecPEiSecJW -DInputInput -DInputOutput -DInputInout --prove +tamarin-prover ble.spthy -DInitSec -DInitSecPE -DInitSecPEi -DRespSec -DRespSecPE -DRespSecPEi -DSecPEiSecPEi -DInputInput --prove +tamarin-prover ble.spthy -DInitSec -DInitSecPE -DInitSecPEi -DRespSec -DRespSecPE -DRespSecPEo -DSecPEiSecPEo -DInputOutput --prove +tamarin-prover ble.spthy -DInitSec -DInitSecPE -DInitSecPEi -DRespSec -DRespSecPE -DRespSecPEio -DSecPEiSecPEio -DInputInout --prove +tamarin-prover ble.spthy -DInitSec -DInitSecPE -DInitSecPEi -DRespSec -DRespSecNC -DSecPEiSecNC -DInputOutput --prove +tamarin-prover ble.spthy -DInitSec -DInitSecPE -DInitSecPEi -DRespSec -DRespSecOOB -DRespSecOOBi -DSecPEiSecOOBi -DInputInput -DInputOutput -DInputInout --prove +tamarin-prover ble.spthy -DInitSec -DInitSecPE -DInitSecPEi -DRespSec -DRespSecOOB -DRespSecOOBo -DSecPEiSecOOBo -DInputInput -DInputOutput -DInputInout --prove +tamarin-prover ble.spthy -DInitSec -DInitSecPE -DInitSecPEi -DRespSec -DRespSecOOB -DRespSecOOBio -DSecPEiSecOOBio -DInputInput -DInputOutput -DInputInout --prove +tamarin-prover ble.spthy -DInitSec -DInitSecPE -DInitSecPEo -DRespSec -DRespSecJW -DSecPEoSecJW -DOutputInput -DOutputOutput -DOutputInout --prove +tamarin-prover ble.spthy -DInitSec -DInitSecPE -DInitSecPEo -DRespSec -DRespSecPE -DRespSecPEi -DSecPEoSecPEi -DOutputInput --prove +tamarin-prover ble.spthy -DInitSec -DInitSecPE -DInitSecPEo -DRespSec -DRespSecPE -DRespSecPEo -DSecPEoSecPEo -DOutputOutput --prove +tamarin-prover ble.spthy -DInitSec -DInitSecPE -DInitSecPEo -DRespSec -DRespSecPE -DRespSecPEio -DSecPEoSecPEio -DOutputInout --prove +tamarin-prover ble.spthy -DInitSec -DInitSecPE -DInitSecPEo -DRespSec -DRespSecNC -DSecPEoSecNC -DOutputOutput --prove +tamarin-prover ble.spthy -DInitSec -DInitSecPE -DInitSecPEo -DRespSec -DRespSecOOB -DRespSecOOBi -DSecPEoSecOOBi -DOutputInput -DOutputOutput -DOutputInout --prove +tamarin-prover ble.spthy -DInitSec -DInitSecPE -DInitSecPEo -DRespSec -DRespSecOOB -DRespSecOOBo -DSecPEoSecOOBo -DOutputInput -DOutputOutput -DOutputInout --prove +tamarin-prover ble.spthy -DInitSec -DInitSecPE -DInitSecPEo -DRespSec -DRespSecOOB -DRespSecOOBio -DSecPEoSecOOBio -DOutputInput -DOutputOutput -DOutputInout --prove +tamarin-prover ble.spthy -DInitSec -DInitSecPE -DInitSecPEio -DRespSec -DRespSecJW -DSecPEioSecJW -DInoutInput -DInoutOutput -DInoutInout --prove +tamarin-prover ble.spthy -DInitSec -DInitSecPE -DInitSecPEio -DRespSec -DRespSecPE -DRespSecPEi -DSecPEioSecPEi -DInoutInput --prove +tamarin-prover ble.spthy -DInitSec -DInitSecPE -DInitSecPEio -DRespSec -DRespSecPE -DRespSecPEo -DSecPEioSecPEo -DInoutOutput --prove +tamarin-prover ble.spthy -DInitSec -DInitSecPE -DInitSecPEio -DRespSec -DRespSecPE -DRespSecPEio -DSecPEioSecPEio -DInoutInout --prove +tamarin-prover ble.spthy -DInitSec -DInitSecPE -DInitSecPEio -DRespSec -DRespSecNC -DSecPEioSecNC -DInoutOutput --prove +tamarin-prover ble.spthy -DInitSec -DInitSecPE -DInitSecPEio -DRespSec -DRespSecOOB -DRespSecOOBi -DSecPEioSecOOBi -DInoutInput -DInoutOutput -DInoutInout --prove +tamarin-prover ble.spthy -DInitSec -DInitSecPE -DInitSecPEio -DRespSec -DRespSecOOB -DRespSecOOBo -DSecPEioSecOOBo -DInoutInput -DInoutOutput -DInoutInout --prove +tamarin-prover ble.spthy -DInitSec -DInitSecPE -DInitSecPEio -DRespSec -DRespSecOOB -DRespSecOOBio -DSecPEioSecOOBio -DInoutInput -DInoutOutput -DInoutInout --prove +tamarin-prover ble.spthy -DInitSec -DInitSecNC -DRespSec -DRespSecJW -DSecNCSecJW -DOutputInput -DOutputOutput -DOutputInout --prove +tamarin-prover ble.spthy -DInitSec -DInitSecNC -DRespSec -DRespSecPE -DRespSecPEi -DSecNCSecPEi -DOutputInput --prove +tamarin-prover ble.spthy -DInitSec -DInitSecNC -DRespSec -DRespSecPE -DRespSecPEo -DSecNCSecPEo -DOutputOutput --prove +tamarin-prover ble.spthy -DInitSec -DInitSecNC -DRespSec -DRespSecPE -DRespSecPEio -DSecNCSecPEio -DOutputInout --prove +tamarin-prover ble.spthy -DInitSec -DInitSecNC -DRespSec -DRespSecNC -DSecNCSecNC -DOutputOutput --prove +tamarin-prover ble.spthy -DInitSec -DInitSecNC -DRespSec -DRespSecOOB -DRespSecOOBi -DSecNCSecOOBi -DOutputInput -DOutputOutput -DOutputInout --prove +tamarin-prover ble.spthy -DInitSec -DInitSecNC -DRespSec -DRespSecOOB -DRespSecOOBo -DSecNCSecOOBo -DOutputInput -DOutputOutput -DOutputInout --prove +tamarin-prover ble.spthy -DInitSec -DInitSecNC -DRespSec -DRespSecOOB -DRespSecOOBio -DSecNCSecOOBio -DOutputInput -DOutputOutput -DOutputInout --prove +tamarin-prover ble.spthy -DInitSec -DInitSecOOB -DInitSecOOBi -DRespSec -DRespSecJW -DSecOOBiSecJW --prove +tamarin-prover ble.spthy -DInitSec -DInitSecOOB -DInitSecOOBi -DRespSec -DRespSecPE -DRespSecPEi -DSecOOBiSecPEi --prove +tamarin-prover ble.spthy -DInitSec -DInitSecOOB -DInitSecOOBi -DRespSec -DRespSecPE -DRespSecPEo -DSecOOBiSecPEo --prove +tamarin-prover ble.spthy -DInitSec -DInitSecOOB -DInitSecOOBi -DRespSec -DRespSecPE -DRespSecPEio -DSecOOBiSecPEio --prove +tamarin-prover ble.spthy -DInitSec -DInitSecOOB -DInitSecOOBi -DRespSec -DRespSecNC -DSecOOBiSecNC --prove +tamarin-prover ble.spthy -DInitSec -DInitSecOOB -DInitSecOOBi -DRespSec -DRespSecOOB -DRespSecOOBi -DSecOOBiSecOOBi --prove +tamarin-prover ble.spthy -DInitSec -DInitSecOOB -DInitSecOOBi -DRespSec -DRespSecOOB -DRespSecOOBo -DSecOOBiSecOOBo --prove +tamarin-prover ble.spthy -DInitSec -DInitSecOOB -DInitSecOOBi -DRespSec -DRespSecOOB -DRespSecOOBio -DSecOOBiSecOOBio --prove +tamarin-prover ble.spthy -DInitSec -DInitSecOOB -DInitSecOOBo -DRespSec -DRespSecJW -DSecOOBoSecJW --prove +tamarin-prover ble.spthy -DInitSec -DInitSecOOB -DInitSecOOBo -DRespSec -DRespSecPE -DRespSecPEi -DSecOOBoSecPEi --prove +tamarin-prover ble.spthy -DInitSec -DInitSecOOB -DInitSecOOBo -DRespSec -DRespSecPE -DRespSecPEo -DSecOOBoSecPEo --prove +tamarin-prover ble.spthy -DInitSec -DInitSecOOB -DInitSecOOBo -DRespSec -DRespSecPE -DRespSecPEio -DSecOOBoSecPEio --prove +tamarin-prover ble.spthy -DInitSec -DInitSecOOB -DInitSecOOBo -DRespSec -DRespSecNC -DSecOOBoSecNC --prove +tamarin-prover ble.spthy -DInitSec -DInitSecOOB -DInitSecOOBo -DRespSec -DRespSecOOB -DRespSecOOBi -DSecOOBoSecOOBi --prove +tamarin-prover ble.spthy -DInitSec -DInitSecOOB -DInitSecOOBo -DRespSec -DRespSecOOB -DRespSecOOBo -DSecOOBoSecOOBo --prove +tamarin-prover ble.spthy -DInitSec -DInitSecOOB -DInitSecOOBo -DRespSec -DRespSecOOB -DRespSecOOBio -DSecOOBoSecOOBio --prove +tamarin-prover ble.spthy -DInitSec -DInitSecOOB -DInitSecOOBio -DRespSec -DRespSecJW -DSecOOBioSecJW --prove +tamarin-prover ble.spthy -DInitSec -DInitSecOOB -DInitSecOOBio -DRespSec -DRespSecPE -DRespSecPEi -DSecOOBioSecPEi --prove +tamarin-prover ble.spthy -DInitSec -DInitSecOOB -DInitSecOOBio -DRespSec -DRespSecPE -DRespSecPEo -DSecOOBioSecPEo --prove +tamarin-prover ble.spthy -DInitSec -DInitSecOOB -DInitSecOOBio -DRespSec -DRespSecPE -DRespSecPEio -DSecOOBioSecPEio --prove +tamarin-prover ble.spthy -DInitSec -DInitSecOOB -DInitSecOOBio -DRespSec -DRespSecNC -DSecOOBioSecNC --prove +tamarin-prover ble.spthy -DInitSec -DInitSecOOB -DInitSecOOBio -DRespSec -DRespSecOOB -DRespSecOOBi -DSecOOBioSecOOBi --prove +tamarin-prover ble.spthy -DInitSec -DInitSecOOB -DInitSecOOBio -DRespSec -DRespSecOOB -DRespSecOOBo -DSecOOBioSecOOBo --prove +tamarin-prover ble.spthy -DInitSec -DInitSecOOB -DInitSecOOBio -DRespSec -DRespSecOOB -DRespSecOOBio -DSecOOBioSecOOBio --prove +tamarin-prover ble.spthy -DInitLeg -DInitLegJW -DRespSec -DRespSecJW -DLegJWSecJW --prove +tamarin-prover ble.spthy -DInitLeg -DInitLegJW -DRespSec -DRespSecPE -DRespSecPEi -DLegJWSecPEi --prove +tamarin-prover ble.spthy -DInitLeg -DInitLegJW -DRespSec -DRespSecPE -DRespSecPEo -DLegJWSecPEo --prove +tamarin-prover ble.spthy -DInitLeg -DInitLegJW -DRespSec -DRespSecPE -DRespSecPEio -DLegJWSecPEio --prove +tamarin-prover ble.spthy -DInitLeg -DInitLegJW -DRespSec -DRespSecNC -DLegJWSecNC --prove +tamarin-prover ble.spthy -DInitLeg -DInitLegJW -DRespSec -DRespSecOOB -DRespSecOOBi -DLegJWSecOOBi --prove +tamarin-prover ble.spthy -DInitLeg -DInitLegJW -DRespSec -DRespSecOOB -DRespSecOOBo -DLegJWSecOOBo --prove +tamarin-prover ble.spthy -DInitLeg -DInitLegJW -DRespSec -DRespSecOOB -DRespSecOOBio -DLegJWSecOOBio --prove +tamarin-prover ble.spthy -DInitLeg -DInitLegPE -DInitLegPEi -DRespSec -DRespSecJW -DLegPEiSecJW -DInputInput -DInputOutput -DInputInout --prove +tamarin-prover ble.spthy -DInitLeg -DInitLegPE -DInitLegPEi -DRespSec -DRespSecPE -DRespSecPEi -DLegPEiSecPEi -DInputInput --prove +tamarin-prover ble.spthy -DInitLeg -DInitLegPE -DInitLegPEi -DRespSec -DRespSecPE -DRespSecPEo -DLegPEiSecPEo -DInputOutput --prove +tamarin-prover ble.spthy -DInitLeg -DInitLegPE -DInitLegPEi -DRespSec -DRespSecPE -DRespSecPEio -DLegPEiSecPEio -DInputInout --prove +tamarin-prover ble.spthy -DInitLeg -DInitLegPE -DInitLegPEi -DRespSec -DRespSecNC -DLegPEiSecNC -DInputOutput --prove +tamarin-prover ble.spthy -DInitLeg -DInitLegPE -DInitLegPEi -DRespSec -DRespSecOOB -DRespSecOOBi -DLegPEiSecOOBi -DInputInput -DInputOutput -DInputInout --prove +tamarin-prover ble.spthy -DInitLeg -DInitLegPE -DInitLegPEi -DRespSec -DRespSecOOB -DRespSecOOBo -DLegPEiSecOOBo -DInputInput -DInputOutput -DInputInout --prove +tamarin-prover ble.spthy -DInitLeg -DInitLegPE -DInitLegPEi -DRespSec -DRespSecOOB -DRespSecOOBio -DLegPEiSecOOBio -DInputInput -DInputOutput -DInputInout --prove +tamarin-prover ble.spthy -DInitLeg -DInitLegPE -DInitLegPEo -DRespSec -DRespSecJW -DLegPEoSecJW -DOutputInput -DOutputOutput -DOutputInout --prove +tamarin-prover ble.spthy -DInitLeg -DInitLegPE -DInitLegPEo -DRespSec -DRespSecPE -DRespSecPEi -DLegPEoSecPEi -DOutputInput --prove +tamarin-prover ble.spthy -DInitLeg -DInitLegPE -DInitLegPEo -DRespSec -DRespSecPE -DRespSecPEo -DLegPEoSecPEo -DOutputOutput --prove +tamarin-prover ble.spthy -DInitLeg -DInitLegPE -DInitLegPEo -DRespSec -DRespSecPE -DRespSecPEio -DLegPEoSecPEio -DOutputInout --prove +tamarin-prover ble.spthy -DInitLeg -DInitLegPE -DInitLegPEo -DRespSec -DRespSecNC -DLegPEoSecNC -DOutputOutput --prove +tamarin-prover ble.spthy -DInitLeg -DInitLegPE -DInitLegPEo -DRespSec -DRespSecOOB -DRespSecOOBi -DLegPEoSecOOBi -DOutputInput -DOutputOutput -DOutputInout --prove +tamarin-prover ble.spthy -DInitLeg -DInitLegPE -DInitLegPEo -DRespSec -DRespSecOOB -DRespSecOOBo -DLegPEoSecOOBo -DOutputInput -DOutputOutput -DOutputInout --prove +tamarin-prover ble.spthy -DInitLeg -DInitLegPE -DInitLegPEo -DRespSec -DRespSecOOB -DRespSecOOBio -DLegPEoSecOOBio -DOutputInput -DOutputOutput -DOutputInout --prove +tamarin-prover ble.spthy -DInitLeg -DInitLegPE -DInitLegPEio -DRespSec -DRespSecJW -DLegPEioSecJW -DInoutInput -DInoutOutput -DInoutInout --prove +tamarin-prover ble.spthy -DInitLeg -DInitLegPE -DInitLegPEio -DRespSec -DRespSecPE -DRespSecPEi -DLegPEioSecPEi -DInoutInput --prove +tamarin-prover ble.spthy -DInitLeg -DInitLegPE -DInitLegPEio -DRespSec -DRespSecPE -DRespSecPEo -DLegPEioSecPEo -DInoutOutput --prove +tamarin-prover ble.spthy -DInitLeg -DInitLegPE -DInitLegPEio -DRespSec -DRespSecPE -DRespSecPEio -DLegPEioSecPEio -DInoutInout --prove +tamarin-prover ble.spthy -DInitLeg -DInitLegPE -DInitLegPEio -DRespSec -DRespSecNC -DLegPEioSecNC -DInoutOutput --prove +tamarin-prover ble.spthy -DInitLeg -DInitLegPE -DInitLegPEio -DRespSec -DRespSecOOB -DRespSecOOBi -DLegPEioSecOOBi -DInoutInput -DInoutOutput -DInoutInout --prove +tamarin-prover ble.spthy -DInitLeg -DInitLegPE -DInitLegPEio -DRespSec -DRespSecOOB -DRespSecOOBo -DLegPEioSecOOBo -DInoutInput -DInoutOutput -DInoutInout --prove +tamarin-prover ble.spthy -DInitLeg -DInitLegPE -DInitLegPEio -DRespSec -DRespSecOOB -DRespSecOOBio -DLegPEioSecOOBio -DInoutInput -DInoutOutput -DInoutInout --prove +tamarin-prover ble.spthy -DInitLeg -DInitLegOOB -DRespSec -DRespSecJW -DLegOOBSecJW --prove +tamarin-prover ble.spthy -DInitLeg -DInitLegOOB -DRespSec -DRespSecPE -DRespSecPEi -DLegOOBSecPEi --prove +tamarin-prover ble.spthy -DInitLeg -DInitLegOOB -DRespSec -DRespSecPE -DRespSecPEo -DLegOOBSecPEo --prove +tamarin-prover ble.spthy -DInitLeg -DInitLegOOB -DRespSec -DRespSecPE -DRespSecPEio -DLegOOBSecPEio --prove +tamarin-prover ble.spthy -DInitLeg -DInitLegOOB -DRespSec -DRespSecNC -DLegOOBSecNC --prove +tamarin-prover ble.spthy -DInitLeg -DInitLegOOB -DRespSec -DRespSecOOB -DRespSecOOBi -DLegOOBSecOOBi --prove +tamarin-prover ble.spthy -DInitLeg -DInitLegOOB -DRespSec -DRespSecOOB -DRespSecOOBo -DLegOOBSecOOBo --prove +tamarin-prover ble.spthy -DInitLeg -DInitLegOOB -DRespSec -DRespSecOOB -DRespSecOOBio -DLegOOBSecOOBio --prove +tamarin-prover ble.spthy -DInitSec -DInitSecJW -DRespLeg -DRespLegJW -DSecJWLegJW --prove +tamarin-prover ble.spthy -DInitSec -DInitSecJW -DRespLeg -DRespLegPE -DRespLegPEi -DSecJWLegPEi --prove +tamarin-prover ble.spthy -DInitSec -DInitSecJW -DRespLeg -DRespLegPE -DRespLegPEo -DSecJWLegPEo --prove +tamarin-prover ble.spthy -DInitSec -DInitSecJW -DRespLeg -DRespLegPE -DRespLegPEio -DSecJWLegPEio --prove +tamarin-prover ble.spthy -DInitSec -DInitSecJW -DRespLeg -DRespLegOOB -DSecJWLegOOB --prove +tamarin-prover ble.spthy -DInitSec -DInitSecPE -DInitSecPEi -DRespLeg -DRespLegJW -DSecPEiLegJW -DInputInput -DInputOutput -DInputInout --prove +tamarin-prover ble.spthy -DInitSec -DInitSecPE -DInitSecPEi -DRespLeg -DRespLegPE -DRespLegPEi -DSecPEiLegPEi -DInputInput --prove +tamarin-prover ble.spthy -DInitSec -DInitSecPE -DInitSecPEi -DRespLeg -DRespLegPE -DRespLegPEo -DSecPEiLegPEo -DInputOutput --prove +tamarin-prover ble.spthy -DInitSec -DInitSecPE -DInitSecPEi -DRespLeg -DRespLegPE -DRespLegPEio -DSecPEiLegPEio -DInputInout --prove +tamarin-prover ble.spthy -DInitSec -DInitSecPE -DInitSecPEi -DRespLeg -DRespLegOOB -DSecPEiLegOOB -DInputInput -DInputOutput -DInputInout --prove +tamarin-prover ble.spthy -DInitSec -DInitSecPE -DInitSecPEo -DRespLeg -DRespLegJW -DSecPEoLegJW -DOutputInput -DOutputOutput -DOutputInout --prove +tamarin-prover ble.spthy -DInitSec -DInitSecPE -DInitSecPEo -DRespLeg -DRespLegPE -DRespLegPEi -DSecPEoLegPEi -DOutputInput --prove +tamarin-prover ble.spthy -DInitSec -DInitSecPE -DInitSecPEo -DRespLeg -DRespLegPE -DRespLegPEo -DSecPEoLegPEo -DOutputOutput --prove +tamarin-prover ble.spthy -DInitSec -DInitSecPE -DInitSecPEo -DRespLeg -DRespLegPE -DRespLegPEio -DSecPEoLegPEio -DOutputInout --prove +tamarin-prover ble.spthy -DInitSec -DInitSecPE -DInitSecPEo -DRespLeg -DRespLegOOB -DSecPEoLegOOB -DOutputInput -DOutputOutput -DOutputInout --prove +tamarin-prover ble.spthy -DInitSec -DInitSecPE -DInitSecPEio -DRespLeg -DRespLegJW -DSecPEioLegJW -DInoutInput -DInoutOutput -DInoutInout --prove +tamarin-prover ble.spthy -DInitSec -DInitSecPE -DInitSecPEio -DRespLeg -DRespLegPE -DRespLegPEi -DSecPEioLegPEi -DInoutInput --prove +tamarin-prover ble.spthy -DInitSec -DInitSecPE -DInitSecPEio -DRespLeg -DRespLegPE -DRespLegPEo -DSecPEioLegPEo -DInoutOutput --prove +tamarin-prover ble.spthy -DInitSec -DInitSecPE -DInitSecPEio -DRespLeg -DRespLegPE -DRespLegPEio -DSecPEioLegPEio -DInoutInout --prove +tamarin-prover ble.spthy -DInitSec -DInitSecPE -DInitSecPEio -DRespLeg -DRespLegOOB -DSecPEioLegOOB -DInoutInput -DInoutOutput -DInoutInout --prove +tamarin-prover ble.spthy -DInitSec -DInitSecNC -DRespLeg -DRespLegJW -DSecNCLegJW -DOutputInput -DOutputOutput -DOutputInout --prove +tamarin-prover ble.spthy -DInitSec -DInitSecNC -DRespLeg -DRespLegPE -DRespLegPEi -DSecNCLegPEi -DOutputInput --prove +tamarin-prover ble.spthy -DInitSec -DInitSecNC -DRespLeg -DRespLegPE -DRespLegPEo -DSecNCLegPEo -DOutputOutput --prove +tamarin-prover ble.spthy -DInitSec -DInitSecNC -DRespLeg -DRespLegPE -DRespLegPEio -DSecNCLegPEio -DOutputInout --prove +tamarin-prover ble.spthy -DInitSec -DInitSecNC -DRespLeg -DRespLegOOB -DSecNCLegOOB -DOutputInput -DOutputOutput -DOutputInout --prove +tamarin-prover ble.spthy -DInitSec -DInitSecOOB -DInitSecOOBi -DRespLeg -DRespLegJW -DSecOOBiLegJW --prove +tamarin-prover ble.spthy -DInitSec -DInitSecOOB -DInitSecOOBi -DRespLeg -DRespLegPE -DRespLegPEi -DSecOOBiLegPEi --prove +tamarin-prover ble.spthy -DInitSec -DInitSecOOB -DInitSecOOBi -DRespLeg -DRespLegPE -DRespLegPEo -DSecOOBiLegPEo --prove +tamarin-prover ble.spthy -DInitSec -DInitSecOOB -DInitSecOOBi -DRespLeg -DRespLegPE -DRespLegPEio -DSecOOBiLegPEio --prove +tamarin-prover ble.spthy -DInitSec -DInitSecOOB -DInitSecOOBi -DRespLeg -DRespLegOOB -DSecOOBiLegOOB --prove +tamarin-prover ble.spthy -DInitSec -DInitSecOOB -DInitSecOOBo -DRespLeg -DRespLegJW -DSecOOBoLegJW --prove +tamarin-prover ble.spthy -DInitSec -DInitSecOOB -DInitSecOOBo -DRespLeg -DRespLegPE -DRespLegPEi -DSecOOBoLegPEi --prove +tamarin-prover ble.spthy -DInitSec -DInitSecOOB -DInitSecOOBo -DRespLeg -DRespLegPE -DRespLegPEo -DSecOOBoLegPEo --prove +tamarin-prover ble.spthy -DInitSec -DInitSecOOB -DInitSecOOBo -DRespLeg -DRespLegPE -DRespLegPEio -DSecOOBoLegPEio --prove +tamarin-prover ble.spthy -DInitSec -DInitSecOOB -DInitSecOOBo -DRespLeg -DRespLegOOB -DSecOOBoLegOOB --prove +tamarin-prover ble.spthy -DInitSec -DInitSecOOB -DInitSecOOBio -DRespLeg -DRespLegJW -DSecOOBioLegJW --prove +tamarin-prover ble.spthy -DInitSec -DInitSecOOB -DInitSecOOBio -DRespLeg -DRespLegPE -DRespLegPEi -DSecOOBioLegPEi --prove +tamarin-prover ble.spthy -DInitSec -DInitSecOOB -DInitSecOOBio -DRespLeg -DRespLegPE -DRespLegPEo -DSecOOBioLegPEo --prove +tamarin-prover ble.spthy -DInitSec -DInitSecOOB -DInitSecOOBio -DRespLeg -DRespLegPE -DRespLegPEio -DSecOOBioLegPEio --prove +tamarin-prover ble.spthy -DInitSec -DInitSecOOB -DInitSecOOBio -DRespLeg -DRespLegOOB -DSecOOBioLegOOB --prove + + +JSON configuration file: +{ +"LegJWLegJW": ["InitLeg","InitLegJW","RespLeg","RespLegJW","LegJWLegJW"], +"LegJWLegPEi": ["InitLeg","InitLegJW","RespLeg","RespLegPE","RespLegPEi","LegJWLegPEi"], +"LegJWLegPEo": ["InitLeg","InitLegJW","RespLeg","RespLegPE","RespLegPEo","LegJWLegPEo"], +"LegJWLegPEio": ["InitLeg","InitLegJW","RespLeg","RespLegPE","RespLegPEio","LegJWLegPEio"], +"LegJWLegOOB": ["InitLeg","InitLegJW","RespLeg","RespLegOOB","LegJWLegOOB"], +"LegPEiLegJW": ["InitLeg","InitLegPE","InitLegPEi","RespLeg","RespLegJW","LegPEiLegJW","InputInput","InputOutput","InputInout"], +"LegPEiLegPEi": ["InitLeg","InitLegPE","InitLegPEi","RespLeg","RespLegPE","RespLegPEi","LegPEiLegPEi","InputInput"], +"LegPEiLegPEo": ["InitLeg","InitLegPE","InitLegPEi","RespLeg","RespLegPE","RespLegPEo","LegPEiLegPEo","InputOutput"], +"LegPEiLegPEio": ["InitLeg","InitLegPE","InitLegPEi","RespLeg","RespLegPE","RespLegPEio","LegPEiLegPEio","InputInout"], +"LegPEiLegOOB": ["InitLeg","InitLegPE","InitLegPEi","RespLeg","RespLegOOB","LegPEiLegOOB","InputInput","InputOutput","InputInout"], +"LegPEoLegJW": ["InitLeg","InitLegPE","InitLegPEo","RespLeg","RespLegJW","LegPEoLegJW","OutputInput","OutputOutput","OutputInout"], +"LegPEoLegPEi": ["InitLeg","InitLegPE","InitLegPEo","RespLeg","RespLegPE","RespLegPEi","LegPEoLegPEi","OutputInput"], +"LegPEoLegPEo": ["InitLeg","InitLegPE","InitLegPEo","RespLeg","RespLegPE","RespLegPEo","LegPEoLegPEo","OutputOutput"], +"LegPEoLegPEio": ["InitLeg","InitLegPE","InitLegPEo","RespLeg","RespLegPE","RespLegPEio","LegPEoLegPEio","OutputInout"], +"LegPEoLegOOB": ["InitLeg","InitLegPE","InitLegPEo","RespLeg","RespLegOOB","LegPEoLegOOB","OutputInput","OutputOutput","OutputInout"], +"LegPEioLegJW": ["InitLeg","InitLegPE","InitLegPEio","RespLeg","RespLegJW","LegPEioLegJW","InoutInput","InoutOutput","InoutInout"], +"LegPEioLegPEi": ["InitLeg","InitLegPE","InitLegPEio","RespLeg","RespLegPE","RespLegPEi","LegPEioLegPEi","InoutInput"], +"LegPEioLegPEo": ["InitLeg","InitLegPE","InitLegPEio","RespLeg","RespLegPE","RespLegPEo","LegPEioLegPEo","InoutOutput"], +"LegPEioLegPEio": ["InitLeg","InitLegPE","InitLegPEio","RespLeg","RespLegPE","RespLegPEio","LegPEioLegPEio","InoutInout"], +"LegPEioLegOOB": ["InitLeg","InitLegPE","InitLegPEio","RespLeg","RespLegOOB","LegPEioLegOOB","InoutInput","InoutOutput","InoutInout"], +"LegOOBLegJW": ["InitLeg","InitLegOOB","RespLeg","RespLegJW","LegOOBLegJW"], +"LegOOBLegPEi": ["InitLeg","InitLegOOB","RespLeg","RespLegPE","RespLegPEi","LegOOBLegPEi"], +"LegOOBLegPEo": ["InitLeg","InitLegOOB","RespLeg","RespLegPE","RespLegPEo","LegOOBLegPEo"], +"LegOOBLegPEio": ["InitLeg","InitLegOOB","RespLeg","RespLegPE","RespLegPEio","LegOOBLegPEio"], +"LegOOBLegOOB": ["InitLeg","InitLegOOB","RespLeg","RespLegOOB","LegOOBLegOOB"], +"SecJWSecJW": ["InitSec","InitSecJW","RespSec","RespSecJW","SecJWSecJW"], +"SecJWSecPEi": ["InitSec","InitSecJW","RespSec","RespSecPE","RespSecPEi","SecJWSecPEi"], +"SecJWSecPEo": ["InitSec","InitSecJW","RespSec","RespSecPE","RespSecPEo","SecJWSecPEo"], +"SecJWSecPEio": ["InitSec","InitSecJW","RespSec","RespSecPE","RespSecPEio","SecJWSecPEio"], +"SecJWSecNC": ["InitSec","InitSecJW","RespSec","RespSecNC","SecJWSecNC"], +"SecJWSecOOBi": ["InitSec","InitSecJW","RespSec","RespSecOOB","RespSecOOBi","SecJWSecOOBi"], +"SecJWSecOOBo": ["InitSec","InitSecJW","RespSec","RespSecOOB","RespSecOOBo","SecJWSecOOBo"], +"SecJWSecOOBio": ["InitSec","InitSecJW","RespSec","RespSecOOB","RespSecOOBio","SecJWSecOOBio"], +"SecPEiSecJW": ["InitSec","InitSecPE","InitSecPEi","RespSec","RespSecJW","SecPEiSecJW","InputInput","InputOutput","InputInout"], +"SecPEiSecPEi": ["InitSec","InitSecPE","InitSecPEi","RespSec","RespSecPE","RespSecPEi","SecPEiSecPEi","InputInput"], +"SecPEiSecPEo": ["InitSec","InitSecPE","InitSecPEi","RespSec","RespSecPE","RespSecPEo","SecPEiSecPEo","InputOutput"], +"SecPEiSecPEio": ["InitSec","InitSecPE","InitSecPEi","RespSec","RespSecPE","RespSecPEio","SecPEiSecPEio","InputInout"], +"SecPEiSecNC": ["InitSec","InitSecPE","InitSecPEi","RespSec","RespSecNC","SecPEiSecNC","InputOutput"], +"SecPEiSecOOBi": ["InitSec","InitSecPE","InitSecPEi","RespSec","RespSecOOB","RespSecOOBi","SecPEiSecOOBi","InputInput","InputOutput","InputInout"], +"SecPEiSecOOBo": ["InitSec","InitSecPE","InitSecPEi","RespSec","RespSecOOB","RespSecOOBo","SecPEiSecOOBo","InputInput","InputOutput","InputInout"], +"SecPEiSecOOBio": ["InitSec","InitSecPE","InitSecPEi","RespSec","RespSecOOB","RespSecOOBio","SecPEiSecOOBio","InputInput","InputOutput","InputInout"], +"SecPEoSecJW": ["InitSec","InitSecPE","InitSecPEo","RespSec","RespSecJW","SecPEoSecJW","OutputInput","OutputOutput","OutputInout"], +"SecPEoSecPEi": ["InitSec","InitSecPE","InitSecPEo","RespSec","RespSecPE","RespSecPEi","SecPEoSecPEi","OutputInput"], +"SecPEoSecPEo": ["InitSec","InitSecPE","InitSecPEo","RespSec","RespSecPE","RespSecPEo","SecPEoSecPEo","OutputOutput"], +"SecPEoSecPEio": ["InitSec","InitSecPE","InitSecPEo","RespSec","RespSecPE","RespSecPEio","SecPEoSecPEio","OutputInout"], +"SecPEoSecNC": ["InitSec","InitSecPE","InitSecPEo","RespSec","RespSecNC","SecPEoSecNC","OutputOutput"], +"SecPEoSecOOBi": ["InitSec","InitSecPE","InitSecPEo","RespSec","RespSecOOB","RespSecOOBi","SecPEoSecOOBi","OutputInput","OutputOutput","OutputInout"], +"SecPEoSecOOBo": ["InitSec","InitSecPE","InitSecPEo","RespSec","RespSecOOB","RespSecOOBo","SecPEoSecOOBo","OutputInput","OutputOutput","OutputInout"], +"SecPEoSecOOBio": ["InitSec","InitSecPE","InitSecPEo","RespSec","RespSecOOB","RespSecOOBio","SecPEoSecOOBio","OutputInput","OutputOutput","OutputInout"], +"SecPEioSecJW": ["InitSec","InitSecPE","InitSecPEio","RespSec","RespSecJW","SecPEioSecJW","InoutInput","InoutOutput","InoutInout"], +"SecPEioSecPEi": ["InitSec","InitSecPE","InitSecPEio","RespSec","RespSecPE","RespSecPEi","SecPEioSecPEi","InoutInput"], +"SecPEioSecPEo": ["InitSec","InitSecPE","InitSecPEio","RespSec","RespSecPE","RespSecPEo","SecPEioSecPEo","InoutOutput"], +"SecPEioSecPEio": ["InitSec","InitSecPE","InitSecPEio","RespSec","RespSecPE","RespSecPEio","SecPEioSecPEio","InoutInout"], +"SecPEioSecNC": ["InitSec","InitSecPE","InitSecPEio","RespSec","RespSecNC","SecPEioSecNC","InoutOutput"], +"SecPEioSecOOBi": ["InitSec","InitSecPE","InitSecPEio","RespSec","RespSecOOB","RespSecOOBi","SecPEioSecOOBi","InoutInput","InoutOutput","InoutInout"], +"SecPEioSecOOBo": ["InitSec","InitSecPE","InitSecPEio","RespSec","RespSecOOB","RespSecOOBo","SecPEioSecOOBo","InoutInput","InoutOutput","InoutInout"], +"SecPEioSecOOBio": ["InitSec","InitSecPE","InitSecPEio","RespSec","RespSecOOB","RespSecOOBio","SecPEioSecOOBio","InoutInput","InoutOutput","InoutInout"], +"SecNCSecJW": ["InitSec","InitSecNC","RespSec","RespSecJW","SecNCSecJW","OutputInput","OutputOutput","OutputInout"], +"SecNCSecPEi": ["InitSec","InitSecNC","RespSec","RespSecPE","RespSecPEi","SecNCSecPEi","OutputInput"], +"SecNCSecPEo": ["InitSec","InitSecNC","RespSec","RespSecPE","RespSecPEo","SecNCSecPEo","OutputOutput"], +"SecNCSecPEio": ["InitSec","InitSecNC","RespSec","RespSecPE","RespSecPEio","SecNCSecPEio","OutputInout"], +"SecNCSecNC": ["InitSec","InitSecNC","RespSec","RespSecNC","SecNCSecNC","OutputOutput"], +"SecNCSecOOBi": ["InitSec","InitSecNC","RespSec","RespSecOOB","RespSecOOBi","SecNCSecOOBi","OutputInput","OutputOutput","OutputInout"], +"SecNCSecOOBo": ["InitSec","InitSecNC","RespSec","RespSecOOB","RespSecOOBo","SecNCSecOOBo","OutputInput","OutputOutput","OutputInout"], +"SecNCSecOOBio": ["InitSec","InitSecNC","RespSec","RespSecOOB","RespSecOOBio","SecNCSecOOBio","OutputInput","OutputOutput","OutputInout"], +"SecOOBiSecJW": ["InitSec","InitSecOOB","InitSecOOBi","RespSec","RespSecJW","SecOOBiSecJW"], +"SecOOBiSecPEi": ["InitSec","InitSecOOB","InitSecOOBi","RespSec","RespSecPE","RespSecPEi","SecOOBiSecPEi"], +"SecOOBiSecPEo": ["InitSec","InitSecOOB","InitSecOOBi","RespSec","RespSecPE","RespSecPEo","SecOOBiSecPEo"], +"SecOOBiSecPEio": ["InitSec","InitSecOOB","InitSecOOBi","RespSec","RespSecPE","RespSecPEio","SecOOBiSecPEio"], +"SecOOBiSecNC": ["InitSec","InitSecOOB","InitSecOOBi","RespSec","RespSecNC","SecOOBiSecNC"], +"SecOOBiSecOOBi": ["InitSec","InitSecOOB","InitSecOOBi","RespSec","RespSecOOB","RespSecOOBi","SecOOBiSecOOBi"], +"SecOOBiSecOOBo": ["InitSec","InitSecOOB","InitSecOOBi","RespSec","RespSecOOB","RespSecOOBo","SecOOBiSecOOBo"], +"SecOOBiSecOOBio": ["InitSec","InitSecOOB","InitSecOOBi","RespSec","RespSecOOB","RespSecOOBio","SecOOBiSecOOBio"], +"SecOOBoSecJW": ["InitSec","InitSecOOB","InitSecOOBo","RespSec","RespSecJW","SecOOBoSecJW"], +"SecOOBoSecPEi": ["InitSec","InitSecOOB","InitSecOOBo","RespSec","RespSecPE","RespSecPEi","SecOOBoSecPEi"], +"SecOOBoSecPEo": ["InitSec","InitSecOOB","InitSecOOBo","RespSec","RespSecPE","RespSecPEo","SecOOBoSecPEo"], +"SecOOBoSecPEio": ["InitSec","InitSecOOB","InitSecOOBo","RespSec","RespSecPE","RespSecPEio","SecOOBoSecPEio"], +"SecOOBoSecNC": ["InitSec","InitSecOOB","InitSecOOBo","RespSec","RespSecNC","SecOOBoSecNC"], +"SecOOBoSecOOBi": ["InitSec","InitSecOOB","InitSecOOBo","RespSec","RespSecOOB","RespSecOOBi","SecOOBoSecOOBi"], +"SecOOBoSecOOBo": ["InitSec","InitSecOOB","InitSecOOBo","RespSec","RespSecOOB","RespSecOOBo","SecOOBoSecOOBo"], +"SecOOBoSecOOBio": ["InitSec","InitSecOOB","InitSecOOBo","RespSec","RespSecOOB","RespSecOOBio","SecOOBoSecOOBio"], +"SecOOBioSecJW": ["InitSec","InitSecOOB","InitSecOOBio","RespSec","RespSecJW","SecOOBioSecJW"], +"SecOOBioSecPEi": ["InitSec","InitSecOOB","InitSecOOBio","RespSec","RespSecPE","RespSecPEi","SecOOBioSecPEi"], +"SecOOBioSecPEo": ["InitSec","InitSecOOB","InitSecOOBio","RespSec","RespSecPE","RespSecPEo","SecOOBioSecPEo"], +"SecOOBioSecPEio": ["InitSec","InitSecOOB","InitSecOOBio","RespSec","RespSecPE","RespSecPEio","SecOOBioSecPEio"], +"SecOOBioSecNC": ["InitSec","InitSecOOB","InitSecOOBio","RespSec","RespSecNC","SecOOBioSecNC"], +"SecOOBioSecOOBi": ["InitSec","InitSecOOB","InitSecOOBio","RespSec","RespSecOOB","RespSecOOBi","SecOOBioSecOOBi"], +"SecOOBioSecOOBo": ["InitSec","InitSecOOB","InitSecOOBio","RespSec","RespSecOOB","RespSecOOBo","SecOOBioSecOOBo"], +"SecOOBioSecOOBio": ["InitSec","InitSecOOB","InitSecOOBio","RespSec","RespSecOOB","RespSecOOBio","SecOOBioSecOOBio"], +"LegJWSecJW": ["InitLeg","InitLegJW","RespSec","RespSecJW","LegJWSecJW"], +"LegJWSecPEi": ["InitLeg","InitLegJW","RespSec","RespSecPE","RespSecPEi","LegJWSecPEi"], +"LegJWSecPEo": ["InitLeg","InitLegJW","RespSec","RespSecPE","RespSecPEo","LegJWSecPEo"], +"LegJWSecPEio": ["InitLeg","InitLegJW","RespSec","RespSecPE","RespSecPEio","LegJWSecPEio"], +"LegJWSecNC": ["InitLeg","InitLegJW","RespSec","RespSecNC","LegJWSecNC"], +"LegJWSecOOBi": ["InitLeg","InitLegJW","RespSec","RespSecOOB","RespSecOOBi","LegJWSecOOBi"], +"LegJWSecOOBo": ["InitLeg","InitLegJW","RespSec","RespSecOOB","RespSecOOBo","LegJWSecOOBo"], +"LegJWSecOOBio": ["InitLeg","InitLegJW","RespSec","RespSecOOB","RespSecOOBio","LegJWSecOOBio"], +"LegPEiSecJW": ["InitLeg","InitLegPE","InitLegPEi","RespSec","RespSecJW","LegPEiSecJW","InputInput","InputOutput","InputInout"], +"LegPEiSecPEi": ["InitLeg","InitLegPE","InitLegPEi","RespSec","RespSecPE","RespSecPEi","LegPEiSecPEi","InputInput"], +"LegPEiSecPEo": ["InitLeg","InitLegPE","InitLegPEi","RespSec","RespSecPE","RespSecPEo","LegPEiSecPEo","InputOutput"], +"LegPEiSecPEio": ["InitLeg","InitLegPE","InitLegPEi","RespSec","RespSecPE","RespSecPEio","LegPEiSecPEio","InputInout"], +"LegPEiSecNC": ["InitLeg","InitLegPE","InitLegPEi","RespSec","RespSecNC","LegPEiSecNC","InputOutput"], +"LegPEiSecOOBi": ["InitLeg","InitLegPE","InitLegPEi","RespSec","RespSecOOB","RespSecOOBi","LegPEiSecOOBi","InputInput","InputOutput","InputInout"], +"LegPEiSecOOBo": ["InitLeg","InitLegPE","InitLegPEi","RespSec","RespSecOOB","RespSecOOBo","LegPEiSecOOBo","InputInput","InputOutput","InputInout"], +"LegPEiSecOOBio": ["InitLeg","InitLegPE","InitLegPEi","RespSec","RespSecOOB","RespSecOOBio","LegPEiSecOOBio","InputInput","InputOutput","InputInout"], +"LegPEoSecJW": ["InitLeg","InitLegPE","InitLegPEo","RespSec","RespSecJW","LegPEoSecJW","OutputInput","OutputOutput","OutputInout"], +"LegPEoSecPEi": ["InitLeg","InitLegPE","InitLegPEo","RespSec","RespSecPE","RespSecPEi","LegPEoSecPEi","OutputInput"], +"LegPEoSecPEo": ["InitLeg","InitLegPE","InitLegPEo","RespSec","RespSecPE","RespSecPEo","LegPEoSecPEo","OutputOutput"], +"LegPEoSecPEio": ["InitLeg","InitLegPE","InitLegPEo","RespSec","RespSecPE","RespSecPEio","LegPEoSecPEio","OutputInout"], +"LegPEoSecNC": ["InitLeg","InitLegPE","InitLegPEo","RespSec","RespSecNC","LegPEoSecNC","OutputOutput"], +"LegPEoSecOOBi": ["InitLeg","InitLegPE","InitLegPEo","RespSec","RespSecOOB","RespSecOOBi","LegPEoSecOOBi","OutputInput","OutputOutput","OutputInout"], +"LegPEoSecOOBo": ["InitLeg","InitLegPE","InitLegPEo","RespSec","RespSecOOB","RespSecOOBo","LegPEoSecOOBo","OutputInput","OutputOutput","OutputInout"], +"LegPEoSecOOBio": ["InitLeg","InitLegPE","InitLegPEo","RespSec","RespSecOOB","RespSecOOBio","LegPEoSecOOBio","OutputInput","OutputOutput","OutputInout"], +"LegPEioSecJW": ["InitLeg","InitLegPE","InitLegPEio","RespSec","RespSecJW","LegPEioSecJW","InoutInput","InoutOutput","InoutInout"], +"LegPEioSecPEi": ["InitLeg","InitLegPE","InitLegPEio","RespSec","RespSecPE","RespSecPEi","LegPEioSecPEi","InoutInput"], +"LegPEioSecPEo": ["InitLeg","InitLegPE","InitLegPEio","RespSec","RespSecPE","RespSecPEo","LegPEioSecPEo","InoutOutput"], +"LegPEioSecPEio": ["InitLeg","InitLegPE","InitLegPEio","RespSec","RespSecPE","RespSecPEio","LegPEioSecPEio","InoutInout"], +"LegPEioSecNC": ["InitLeg","InitLegPE","InitLegPEio","RespSec","RespSecNC","LegPEioSecNC","InoutOutput"], +"LegPEioSecOOBi": ["InitLeg","InitLegPE","InitLegPEio","RespSec","RespSecOOB","RespSecOOBi","LegPEioSecOOBi","InoutInput","InoutOutput","InoutInout"], +"LegPEioSecOOBo": ["InitLeg","InitLegPE","InitLegPEio","RespSec","RespSecOOB","RespSecOOBo","LegPEioSecOOBo","InoutInput","InoutOutput","InoutInout"], +"LegPEioSecOOBio": ["InitLeg","InitLegPE","InitLegPEio","RespSec","RespSecOOB","RespSecOOBio","LegPEioSecOOBio","InoutInput","InoutOutput","InoutInout"], +"LegOOBSecJW": ["InitLeg","InitLegOOB","RespSec","RespSecJW","LegOOBSecJW"], +"LegOOBSecPEi": ["InitLeg","InitLegOOB","RespSec","RespSecPE","RespSecPEi","LegOOBSecPEi"], +"LegOOBSecPEo": ["InitLeg","InitLegOOB","RespSec","RespSecPE","RespSecPEo","LegOOBSecPEo"], +"LegOOBSecPEio": ["InitLeg","InitLegOOB","RespSec","RespSecPE","RespSecPEio","LegOOBSecPEio"], +"LegOOBSecNC": ["InitLeg","InitLegOOB","RespSec","RespSecNC","LegOOBSecNC"], +"LegOOBSecOOBi": ["InitLeg","InitLegOOB","RespSec","RespSecOOB","RespSecOOBi","LegOOBSecOOBi"], +"LegOOBSecOOBo": ["InitLeg","InitLegOOB","RespSec","RespSecOOB","RespSecOOBo","LegOOBSecOOBo"], +"LegOOBSecOOBio": ["InitLeg","InitLegOOB","RespSec","RespSecOOB","RespSecOOBio","LegOOBSecOOBio"], +"SecJWLegJW": ["InitSec","InitSecJW","RespLeg","RespLegJW","SecJWLegJW"], +"SecJWLegPEi": ["InitSec","InitSecJW","RespLeg","RespLegPE","RespLegPEi","SecJWLegPEi"], +"SecJWLegPEo": ["InitSec","InitSecJW","RespLeg","RespLegPE","RespLegPEo","SecJWLegPEo"], +"SecJWLegPEio": ["InitSec","InitSecJW","RespLeg","RespLegPE","RespLegPEio","SecJWLegPEio"], +"SecJWLegOOB": ["InitSec","InitSecJW","RespLeg","RespLegOOB","SecJWLegOOB"], +"SecPEiLegJW": ["InitSec","InitSecPE","InitSecPEi","RespLeg","RespLegJW","SecPEiLegJW","InputInput","InputOutput","InputInout"], +"SecPEiLegPEi": ["InitSec","InitSecPE","InitSecPEi","RespLeg","RespLegPE","RespLegPEi","SecPEiLegPEi","InputInput"], +"SecPEiLegPEo": ["InitSec","InitSecPE","InitSecPEi","RespLeg","RespLegPE","RespLegPEo","SecPEiLegPEo","InputOutput"], +"SecPEiLegPEio": ["InitSec","InitSecPE","InitSecPEi","RespLeg","RespLegPE","RespLegPEio","SecPEiLegPEio","InputInout"], +"SecPEiLegOOB": ["InitSec","InitSecPE","InitSecPEi","RespLeg","RespLegOOB","SecPEiLegOOB","InputInput","InputOutput","InputInout"], +"SecPEoLegJW": ["InitSec","InitSecPE","InitSecPEo","RespLeg","RespLegJW","SecPEoLegJW","OutputInput","OutputOutput","OutputInout"], +"SecPEoLegPEi": ["InitSec","InitSecPE","InitSecPEo","RespLeg","RespLegPE","RespLegPEi","SecPEoLegPEi","OutputInput"], +"SecPEoLegPEo": ["InitSec","InitSecPE","InitSecPEo","RespLeg","RespLegPE","RespLegPEo","SecPEoLegPEo","OutputOutput"], +"SecPEoLegPEio": ["InitSec","InitSecPE","InitSecPEo","RespLeg","RespLegPE","RespLegPEio","SecPEoLegPEio","OutputInout"], +"SecPEoLegOOB": ["InitSec","InitSecPE","InitSecPEo","RespLeg","RespLegOOB","SecPEoLegOOB","OutputInput","OutputOutput","OutputInout"], +"SecPEioLegJW": ["InitSec","InitSecPE","InitSecPEio","RespLeg","RespLegJW","SecPEioLegJW","InoutInput","InoutOutput","InoutInout"], +"SecPEioLegPEi": ["InitSec","InitSecPE","InitSecPEio","RespLeg","RespLegPE","RespLegPEi","SecPEioLegPEi","InoutInput"], +"SecPEioLegPEo": ["InitSec","InitSecPE","InitSecPEio","RespLeg","RespLegPE","RespLegPEo","SecPEioLegPEo","InoutOutput"], +"SecPEioLegPEio": ["InitSec","InitSecPE","InitSecPEio","RespLeg","RespLegPE","RespLegPEio","SecPEioLegPEio","InoutInout"], +"SecPEioLegOOB": ["InitSec","InitSecPE","InitSecPEio","RespLeg","RespLegOOB","SecPEioLegOOB","InoutInput","InoutOutput","InoutInout"], +"SecNCLegJW": ["InitSec","InitSecNC","RespLeg","RespLegJW","SecNCLegJW","OutputInput","OutputOutput","OutputInout"], +"SecNCLegPEi": ["InitSec","InitSecNC","RespLeg","RespLegPE","RespLegPEi","SecNCLegPEi","OutputInput"], +"SecNCLegPEo": ["InitSec","InitSecNC","RespLeg","RespLegPE","RespLegPEo","SecNCLegPEo","OutputOutput"], +"SecNCLegPEio": ["InitSec","InitSecNC","RespLeg","RespLegPE","RespLegPEio","SecNCLegPEio","OutputInout"], +"SecNCLegOOB": ["InitSec","InitSecNC","RespLeg","RespLegOOB","SecNCLegOOB","OutputInput","OutputOutput","OutputInout"], +"SecOOBiLegJW": ["InitSec","InitSecOOB","InitSecOOBi","RespLeg","RespLegJW","SecOOBiLegJW"], +"SecOOBiLegPEi": ["InitSec","InitSecOOB","InitSecOOBi","RespLeg","RespLegPE","RespLegPEi","SecOOBiLegPEi"], +"SecOOBiLegPEo": ["InitSec","InitSecOOB","InitSecOOBi","RespLeg","RespLegPE","RespLegPEo","SecOOBiLegPEo"], +"SecOOBiLegPEio": ["InitSec","InitSecOOB","InitSecOOBi","RespLeg","RespLegPE","RespLegPEio","SecOOBiLegPEio"], +"SecOOBiLegOOB": ["InitSec","InitSecOOB","InitSecOOBi","RespLeg","RespLegOOB","SecOOBiLegOOB"], +"SecOOBoLegJW": ["InitSec","InitSecOOB","InitSecOOBo","RespLeg","RespLegJW","SecOOBoLegJW"], +"SecOOBoLegPEi": ["InitSec","InitSecOOB","InitSecOOBo","RespLeg","RespLegPE","RespLegPEi","SecOOBoLegPEi"], +"SecOOBoLegPEo": ["InitSec","InitSecOOB","InitSecOOBo","RespLeg","RespLegPE","RespLegPEo","SecOOBoLegPEo"], +"SecOOBoLegPEio": ["InitSec","InitSecOOB","InitSecOOBo","RespLeg","RespLegPE","RespLegPEio","SecOOBoLegPEio"], +"SecOOBoLegOOB": ["InitSec","InitSecOOB","InitSecOOBo","RespLeg","RespLegOOB","SecOOBoLegOOB"], +"SecOOBioLegJW": ["InitSec","InitSecOOB","InitSecOOBio","RespLeg","RespLegJW","SecOOBioLegJW"], +"SecOOBioLegPEi": ["InitSec","InitSecOOB","InitSecOOBio","RespLeg","RespLegPE","RespLegPEi","SecOOBioLegPEi"], +"SecOOBioLegPEo": ["InitSec","InitSecOOB","InitSecOOBio","RespLeg","RespLegPE","RespLegPEo","SecOOBioLegPEo"], +"SecOOBioLegPEio": ["InitSec","InitSecOOB","InitSecOOBio","RespLeg","RespLegPE","RespLegPEio","SecOOBioLegPEio"], +"SecOOBioLegOOB": ["InitSec","InitSecOOB","InitSecOOBio","RespLeg","RespLegOOB","SecOOBioLegOOB"], +} +*/ + +end diff --git a/examples/esorics23-bluetooth/models/bredr.spthy b/examples/esorics23-bluetooth/models/bredr.spthy new file mode 100644 index 000000000..2bee73297 --- /dev/null +++ b/examples/esorics23-bluetooth/models/bredr.spthy @@ -0,0 +1,11315 @@ +theory BluetoothClassicPairing +begin + +builtins: diffie-hellman, symmetric-encryption, xor + +functions: + hmac_sha256/2, // Interface is hmac_sha256(key, data) + sha256/1, // sha256(data) + f1/4, // Commitment computation function + g/4, // Numeric code computation + f2/6, // Key derivation, get LK + f3/7, //Generation of dhkeycheck + e22/2, // Key generation, generation of Kinit + e21/2, // Key generation, generation of LK + e1_sres/3, // Authentication function in Legacy Pairing + e1_aco/3, // Authentication function in Legacy Pairing + e0/3, // Encryption, not precise + split1/1, + split2/1, + recover/2, + e/3, + extract_e/1 +equations: + f1(u,v,x,z) = hmac_sha256(x,), // f1 according to the spec (Vol 2 Part H, 7.7.1) + g(u,v,x,y) = sha256(), // g according to the spec (Vol 2 Part H, 7.7.2) + f2(w, n1, n2, kid, a1, a2) = hmac_sha256(w, ), // f2 according to the spec (Vol 2 Part H 7.7.3) + f3(w, n1, n2, r, iocap, a1, a2) = hmac_sha256(w, ), // f3 according to the spec (Vol 2 Part H 7.7.4) + recover(split1(x), split2(x)) = x, // Allow the attacker to reconstruct the passkey from two halves + extract_e(e(t,s,n)) = n + +rule CreateDevice: + [] + --[]-> + [!Device(<$id,$cap>), // Represents a device + Out(<$id,$cap>)] // The device announces itself (sort of) + +/* +This represents the messages leading to Pairing (it is very simplified). +Here, the Initiator receives the responder's address and capabilities, +the Responder receives the Initiator's address and capabilities. +*/ +rule InitPreparePairing: + [ + !Device(<$idI, $capI>), + In(<$idR, $capR>) + ] + --[ + InitPreparePairing($idI, $capI, $idR, $capR) + ]-> + [ + InitPreparePairing($idI, $capI, $idR, $capR) + ] + +rule RespPreparePairing: + [ + !Device(<$idR, $capR>), + In(<$idI, $capI>) + ] + --[ + RespPreparePairing($idR, $capR, $idI, $capI) + ]-> + [ + RespPreparePairing($idR, $capR, $idI, $capI) + ] + +/* +* Select the Pairing method. Here, it is one of : +* - Legacy PIN Pairing +* - Secure JustWorks (SecJW) +* - Secure Passkey Entry (SecPE) +* - Secure NumericComparison (SecNC) +* - Secure Out of Band (SecOOB) +* +* The model restricts the choice to one Pairing method per role (Initiator or Responder) +* through the restrictions InitOnlyOncePairing / RespOnlyOncePairing +* Therefore, only one session can be ran. While not ideal, this prevents a state explosion : +* Even with a much simpler model (one Pairing method), Tamarin runs out of RAM when studying +* an unbounded number of sessions +* +* Possibility: Change the model to create a bounded number of sessions +*/ + +/* +The variables for BR/EDR PIN Pairing: +The PIN can be either: fixed or variable +The device can have input, output, inputoutput capabilities +*/ +#ifdef InitLeg +rule InitPrepareLegPIN: + [ + InitPreparePairing($idI, $capI, $idR, $capR) + ] + --[ + InitOnlyOncePairing(), + InitWillDoLegPIN() + ]-> + [ + InitDoLegPIN($idI, $capI, $idR, $capR), + InitChooseLegPINMode($idI, $capI, $idR, $capR) + ] +#endif + +#ifdef RespLeg +rule RespPrepareLegPIN: + [ + RespPreparePairing($idI, $capI, $idR, $capR) + ] + --[ + RespOnlyOncePairing(), + RespWillDoLegPIN() + ]-> + [ + RespDoLegPIN($idI, $capI, $idR, $capR), + RespChooseLegPINMode($idI, $capI, $idR, $capR) + ] +#endif + +#ifdef InitSecJW +rule InitPrepareSecJW: + [ + InitPreparePairing($idI, $capI, $idR, $capR) + ] + --[ + InitOnlyOncePairing(), + InitWillDoSecJW() + ]-> + [ + InitDoSecJW($idI, $capI, $idR, $capR), + InitDoECDH($idI, $capI, $idR, $capR) + ] +#endif + +#ifdef RespSecJW +rule RespPrepareSecJW: + [ + RespPreparePairing($idR, $capR, $idI, $capI) + ] + --[ + RespOnlyOncePairing(), + RespWillDoSecJW() + ]-> + [ + RespDoSecJW($idR, $capR, $idI, $capI), + RespDoECDH($idR, $capR, $idI, $capI) + ] +#endif + +#ifdef InitSecPE +rule InitPrepareSecPE: + [ + InitPreparePairing($idI, $capI, $idR, $capR) + ] + --[ + InitOnlyOncePairing(), + InitWillDoSecPE() + ]-> + [ + InitDoSecPE($idI, $capI, $idR, $capR), + InitChooseSecPEMode($idI, $capI, $idR, $capR) + ] +#endif + +#ifdef RespSecPE +rule RespPrepareSecPE: + [ + RespPreparePairing($idR, $capR, $idI, $capI) + ] + --[ + RespOnlyOncePairing(), + RespWillDoSecPE() + ]-> + [ + RespDoSecPE($idR, $capR, $idI, $capI), + RespChooseSecPEMode($idR, $capR, $idI, $capI) + ] +#endif + +#ifdef InitSecNC +rule InitPrepareSecNC: + [ + InitPreparePairing($idI, $capI, $idR, $capR) + ] + --[ + InitOnlyOncePairing(), + InitWillDoSecNC() + ]-> + [ + InitDoSecNC($idI, $capI, $idR, $capR), + InitDoECDH($idI, $capI, $idR, $capR) + ] +#endif + +#ifdef RespSecNC +rule RespPrepareSecNC: + [ + RespPreparePairing($idR, $capR, $idI, $capI) + ] + --[ + RespOnlyOncePairing(), + RespWillDoSecNC() + ]-> + [ + RespDoSecNC($idR, $capR, $idI, $capI), + RespDoECDH($idR, $capR, $idI, $capI) + ] +#endif + +#ifdef InitSecOOB +rule InitPrepareSecOOB: + [ + InitPreparePairing($idI, $capI, $idR, $capR) + ] + --[ + InitOnlyOncePairing(), + InitWillDoSecOOB() + ]-> + [ + InitDoSecOOB($idI, $capI, $idR, $capR), + InitChooseOOBMode($idI, $capI, $idR, $capR) + ] +#endif + +#ifdef RespSecOOB +rule RespPrepareSecOOB: + [ + RespPreparePairing($idR, $capR, $idI, $capI) + ] + --[ + RespOnlyOncePairing(), + RespWillDoSecOOB() + ]-> + [ + RespDoSecOOB($idR, $capR, $idI, $capI), + RespChooseOOBMode($idR, $capR, $idI, $capI) + ] +#endif + +/* + * This dispatches the Initiator and Responder to the chosen variant + * of the PE Pairing method. + * The possibility are: + * - PEi : Passkey Entry, can take inputs from the user + * - PEo : Passkey Entry, device outputs to the user + * - PEio : Passkey Entry, device can take inputs or outputs to the user +*/ + + +/* TODO: To delete, only for example +#ifdef RespLegPEio +rule RespDoLegPEio: + [ + RespChooseLegPEMode($idR, $capR, $idI, $capI), + Fr(~passkey) + ] + --[ + RespLegPEOnlyOnce(), + RespWillDoLegPEio() + ]-> + [ + RespWaitUserInout(~passkey), + RespTriggerUserInteraction(), + RespReadyPE($idR, $capR, $idI, $capI) + ] +#endif +*/ + +#ifdef InitLegPINi +rule InitDoLegPINi: + [ + InitChooseLegPINMode($idI, $capI, $idR, $capR) + ] + --[ + InitLegPINOnlyOnce(), + InitWillDoLegPINi() + ]-> + [ + InitWaitUserInput(), + InitTriggerUserInteraction(), + InitReadyPIN($idI, $capI, $idR, $capR) + ] +#endif + +#ifdef InitLegPINo +rule InitDoLegPINo: + [ + InitChooseLegPINMode($idI, $capI, $idR, $capR), + Fr(~pin) + ] + --[ + InitLegPINOnlyOnce(), + InitWillDoLegPINo() + ]-> + [ + InitWaitUserConfirm(~pin), + InitTriggerUserInteraction(), + InitReadyPIN($idI, $capI, $idR, $capR) + ] +#endif + +#ifdef InitLegPINio +rule InitDoLegPINio: + [ + InitChooseLegPINMode($idI, $capI, $idR, $capR), + Fr(~pin) + ] + --[ + InitLegPINOnlyOnce(), + InitWillDoLegPINio() + ]-> + [ + InitWaitUserInout(~pin), + InitTriggerUserInteraction(), + InitReadyPIN($idI, $capI, $idR, $capR) + ] +#endif + +#ifdef RespLegPINi +rule RespDoLegPINi: + [ + RespChooseLegPINMode($idR, $capR, $idI, $capI) + ] + --[ + RespLegPINOnlyOnce(), + RespWillDoLegPINi() + ]-> + [ + RespWaitUserInput(), + RespTriggerUserInteraction(), + RespReadyPIN($idR, $capR, $idI, $capI) + ] +#endif + +#ifdef RespLegPINo +rule RespDoLegPINo: + [ + RespChooseLegPINMode($idR, $capR, $idI, $capI), + Fr(~pin) + ] + --[ + RespLegPINOnlyOnce(), + RespWillDoLegPINo() + ]-> + [ + RespWaitUserConfirm(~pin), + RespTriggerUserInteraction(), + RespReadyPIN($idR, $capR, $idI, $capI) + ] +#endif + +#ifdef RespLegPINio +rule RespDoLegPINio: + [ + RespChooseLegPINMode($idR, $capR, $idI, $capI), + Fr(~pin) + ] + --[ + RespLegPINOnlyOnce(), + RespWillDoLegPINio() + ]-> + [ + RespWaitUserInout(~pin), + RespTriggerUserInteraction(), + RespReadyPIN($idR, $capR, $idI, $capI) + ] +#endif + +#ifdef InitSecPEi +rule InitChooseSecPEi: + [ + InitChooseSecPEMode($idI, $capI, $idR, $capR) + ] + --[ + InitSecPEOnlyOnce(), + InitWillDoSecPEi() + ]-> + [ + InitWaitUserInput(), + InitDoSecPEi($idI, $capI, $idR, $capR), + InitDoECDH($idI, $capI, $idR, $capR) + ] +#endif + +#ifdef InitSecPEo +rule InitChooseSecPEo: + [ + InitChooseSecPEMode($idI, $capI, $idR, $capR), + Fr(~passkey) + ] + --[ + InitSecPEOnlyOnce(), + InitWillDoSecPEo() + ]-> + [ + InitWaitUserConfirm(~passkey), + InitDoSecPEo($idI, $capI, $idR, $capR), + InitDoECDH($idI, $capI, $idR, $capR) + ] +#endif + +#ifdef InitSecPEio +rule InitChooseSecPEio: + [ + InitChooseSecPEMode($idI, $capI, $idR, $capR), + Fr(~passkey) + ] + --[ + InitSecPEOnlyOnce(), + InitWillDoSecPEio() + ]-> + [ + InitWaitUserInout(~passkey), + InitDoSecPEio($idI, $capI, $idR, $capR), + InitDoECDH($idI, $capI, $idR, $capR) + ] +#endif + +#ifdef RespSecPEi +rule RespChooseSecPEi: + [ + RespChooseSecPEMode($idR, $capR, $idI, $capI) + ] + --[ + RespSecPEOnlyOnce(), + RespWillDoSecPEi() + ]-> + [ + RespWaitUserInput(), + RespDoSecPEi($idR, $capR, $idI, $capI), + RespDoECDH($idR, $capR, $idI, $capI) + ] +#endif + +#ifdef RespSecPEo +rule RespChooseSecPEo: + [ + RespChooseSecPEMode($idR, $capR, $idI, $capI), + Fr(~passkey) + ] + --[ + RespSecPEOnlyOnce(), + RespWillDoSecPEo() + ]-> + [ + RespWaitUserConfirm(~passkey), + RespDoSecPEo($idR, $capR, $idI, $capI), + RespDoECDH($idR, $capR, $idI, $capI) + ] +#endif + +#ifdef RespSecPEio +rule RespChooseSecPEio: + [ + RespChooseSecPEMode($idR, $capR, $idI, $capI), + Fr(~passkey) + ] + --[ + RespSecPEOnlyOnce(), + RespWillDoSecPEio() + ]-> + [ + RespWaitUserInout(~passkey), + RespDoSecPEio($idR, $capR, $idI, $capI), + RespDoECDH($idR, $capR, $idI, $capI) + ] +#endif + +/* + * This dispatches the Initiator and Responder to the chosen variant + * of the Secure OOB Pairing method. + * The possibility are: + * - OOBi : OOB, device expects input OOB data + * - OOBo : OOB, device outputs OOB data + * - OOBio : OOB, device expects and outputs OOB data +*/ +#ifdef InitSecOOBi +rule InitChooseSecOOBi: + [ + InitChooseOOBMode($idI, $capI, $idR, $capR) + ] + --[ + InitSecOOBOnlyOnce(), + InitWillDoSecOOBi() + ]-> + [ + InitDoSecOOBi($idI, $capI, $idR, $capR), + InitDoECDH($idI, $capI, $idR, $capR) + ] +#endif + +#ifdef InitSecOOBo +rule InitChooseSecOOBo: + [ + InitChooseOOBMode($idI, $capI, $idR, $capR) + ] + --[ + InitSecOOBOnlyOnce(), + InitWillDoSecOOBo() + ]-> + [ + InitDoSecOOBo($idI, $capI, $idR, $capR), + InitDoECDH($idI, $capI, $idR, $capR) + ] +#endif + +#ifdef InitSecOOBio +rule InitChooseSecOOBio: + [ + InitChooseOOBMode($idI, $capI, $idR, $capR) + ] + --[ + InitSecOOBOnlyOnce(), + InitWillDoSecOOBio() + ]-> + [ + InitDoSecOOBio($idI, $capI, $idR, $capR), + InitDoECDH($idI, $capI, $idR, $capR) + ] +#endif + +#ifdef RespSecOOBi +rule RespChooseSecOOBi: + [ + RespChooseOOBMode($idR, $capR, $idI, $capI) + ] + --[ + RespSecOOBOnlyOnce(), + RespWillDoSecOOBi() + ]-> + [ + RespDoSecOOBi($idR, $capR, $idI, $capI), + RespDoECDH($idR, $capR, $idI, $capI) + ] +#endif + +#ifdef RespSecOOBo +rule RespChooseSecOOBo: + [ + RespChooseOOBMode($idR, $capR, $idI, $capI) + ] + --[ + RespSecOOBOnlyOnce(), + RespWillDoSecOOBo() + ]-> + [ + RespDoSecOOBo($idR, $capR, $idI, $capI), + RespDoECDH($idR, $capR, $idI, $capI) + ] +#endif + +#ifdef RespSecOOBio +rule RespChooseSecOOBio: + [ + RespChooseOOBMode($idR, $capR, $idI, $capI) + ] + --[ + RespSecOOBOnlyOnce(), + RespWillDoSecOOBio() + ]-> + [ + RespDoSecOOBio($idR, $capR, $idI, $capI), + RespDoECDH($idR, $capR, $idI, $capI) + ] +#endif + +// Legacy PIN Pairing +#ifdef InitLeg +rule InitLegSendInRand: + let Kinit = e22(pin, ~in_rand) in + [ + InitReadyPIN($idI, $capI, $idR, $capR), + InitUserProceed(pin), + Fr(~in_rand) + ] + --[ + InitStartLegPIN($idI, $capI, $idR, $capR, pin, Kinit), + LowEntropy(pin) + ]-> + [ + InitDoLegPairing($idI, $capI, $idR, $capR, Kinit), + LowEntropy(pin), + Out(~in_rand) + ] +#endif + +#ifdef RespLeg +rule RespLegSendInRand: + let Kinit = e22(pin, in_rand) in + [ + RespReadyPIN($idR, $capR, $idI, $capI), + RespUserProceed(pin), + In(in_rand) + ] + --[ + RespStartLegPIN($idR, $capR, $idI, $capI, pin, Kinit), + LowEntropy(pin) + ]-> + [ + RespDoLegPairing($idI, $capI, $idR, $capR, Kinit), + LowEntropy(pin) + ] +#endif + +#ifdef InitLeg +rule InitSendCompRand: + let masked_rand_i = Kinit XOR ~rand_i in + [ + InitDoLegPairing($idI, $capI, $idR, $capR, Kinit), + Fr(~rand_i) + ] + --[ + ]-> + [ + InitSendCompRand($idI, $capI, $idR, $capR, Kinit, ~rand_i), + Out(masked_rand_i) + ] +#endif + +#ifdef RespLeg +rule RespSendCompRand: + let + masked_rand_r = Kinit XOR ~rand_r + rand_i = Kinit XOR recvd_rand_i + in + [ + RespDoLegPairing($idR, $capR, $idI, $capI, Kinit), + Fr(~rand_r), + In(recvd_rand_i) + ] + --[ + ]-> + [ + RespSendCompRand($idR, $capR, $idI, $capI, Kinit, ~rand_r, rand_i), + Out(masked_rand_r) + ] +#endif + +#ifdef InitLeg +rule InitDeriveLK: + let + rand_r = Kinit XOR recv_rand_r + LK = e21(~rand_i, $idI) XOR e21(rand_r, $idR) + in + [ + InitSendCompRand($idI, $capI, $idR, $capR, Kinit, ~rand_i), + In(recv_rand_r) + ] + --[ + InitFinishedKeyDerivation($idI, $capI, $idR, $capR, LK) + ]-> + [ + InitFinishedKeyDerivation($idI, $capI, $idR, $capR, LK) + ] +#endif + +#ifdef RespLeg +rule RespDeriveLK: + let + LK = e21(rand_i, $idI) XOR e21(~rand_r, $idR) + in + [ + RespSendCompRand($idR, $capR, $idI, $capI, Kinit, ~rand_r, rand_i) + ] + --[ + RespFinishedKeyDerivation($idR, $capR, $idI, $capI, LK) + ]-> + [ + RespFinishedKeyDerivation($idR, $capR, $idI, $capI, LK) + ] +#endif + +/* +In the spec +Vol 2 Part C, $4.2.2.4: When the new link key has been created mutual authentication shall be +performed to confirm that the same link key has been created in both devices. +*/ + +#ifdef InitLeg +rule InitBeginAuthVerifier1: + [ + InitFinishedKeyDerivation($idI, $capI, $idR, $capR, LK), + Fr(~au_rand_1) + ] + --[ + AuthOnlyOneBegin(), + InitBeginAuth($idI, $capI, $idR, $capR, LK, ~au_rand_1) + ]-> + [ + InitBeginAuth($idI, $capI, $idR, $capR, LK, ~au_rand_1), + Out(~au_rand_1) + ] +#endif + +#ifdef RespLeg +rule RespClaimantAuth1: + let + sres = e1_sres(LK, $idR, au_rand_1) + aco = e1_aco(LK, $idR, au_rand_1) + in + [ + RespFinishedKeyDerivation($idR, $capR, $idI, $capI, LK), + In(au_rand_1) + ] + --[ + RespClaimantAuth1($idR, $capR, $idI, $capI, LK, sres, aco) + ]-> + [ + RespClaimantAuth1($idR, $capR, $idI, $capI, LK, sres, aco), + OracleLK(au_rand_1, sres), + Out(sres) + ] +#endif + +#ifdef InitLeg +rule InitVerifierRecvAuth1: + let + sres = e1_sres(LK, $idR, ~au_rand_1) + aco = e1_aco(LK, $idR, ~au_rand_1) + in + [ + InitBeginAuth($idI, $capI, $idR, $capR, LK, ~au_rand_1), + In(e1_sres(LK, $idR, ~au_rand_1)) + ] + --[ ]-> + [ + InitVerifierAuth1($idI, $capI, $idR, $capR, LK, aco) + ] +#endif + +#ifdef RespLeg +rule RespVerifierSendAuth2: + [ + RespClaimantAuth1($idR, $capR, $idI, $capI, LK, sres, aco), + Fr(~au_rand_2) + ] + --[ + RespVerifierSendAuth2($idR, $capR, $idI, $capI, LK, ~au_rand_2) + ]-> + [ + RespVerifierSendAuth2($idR, $capR, $idI, $capI, LK, ~au_rand_2), + Out(~au_rand_2) + ] +#endif + +#ifdef InitLeg +rule InitClaimantAuth2: + let + sres = e1_sres(LK, $idI, au_rand_2) + aco = e1_aco(LK, $idI, au_rand_2) + in + [ + InitVerifierAuth1($idI, $capI, $idR, $capR, LK, old_aco), + In(au_rand_2) + ] + --[ + InitClaimantAuth2($idI, $capI, $idR, $capR, LK, aco) + ]-> + [ + InitClaimantAuth2($idI, $capI, $idR, $capR, LK, aco), + OracleLK(au_rand_2, sres), + Out(sres) + ] +#endif + +#ifdef RespLeg +rule RespVerifierRecvAuth2: + let aco = e1_aco(LK, $idI, ~au_rand_2) in + [ + RespVerifierSendAuth2($idR, $capR, $idI, $capI, LK, ~au_rand_2), + In(e1_sres(LK, $idI, ~au_rand_2)) + ] + --[ + ResponderFinishedLegPairing($idR, $capR, $idI, $capI, LK, aco) + ]-> + [ + ResponderFinishedLegPairing($idR, $capR, $idI, $capI, LK, aco) + ] +#endif + +#ifdef InitLeg +rule InitLegFinishPairing: + [ + InitClaimantAuth2($idI, $capI, $idR, $capR, LK, aco) + ] + --[ + InitiatorFinishedLegPairing($idI, $capI, $idR, $capR, LK, aco) + ]-> + [ + InitiatorFinishedLegPairing($idI, $capI, $idR, $capR, LK, aco) + ] +#endif + +#ifdef RespLeg +rule RespBeginAuthVerifier1: + [ + RespFinishedKeyDerivation($idR, $capR, $idI, $capI, LK), + Fr(~au_rand_1) + ] + --[ + AuthOnlyOneBegin(), + RespBeginAuth($idR, $capR, $idI, $capI, LK, ~au_rand_1) + ]-> + [ + RespBeginAuth($idR, $capR, $idI, $capI, LK, ~au_rand_1), + Out(~au_rand_1) + ] +#endif + +#ifdef InitLeg +rule InitClaimantAuth1: + let + sres = e1_sres(LK, $idI, au_rand_1) + aco = e1_aco(LK, $idI, au_rand_1) + in + [ + InitFinishedKeyDerivation($idI, $capI, $idR, $capR, LK), + In(au_rand_1) + ] + --[ + InitClaimantAuth1($idI, $capI, $idR, $capR, LK, aco) + ]-> + [ + InitClaimantAuth1($idI, $capI, $idR, $capR, LK, aco), + OracleLK(au_rand_1, sres), + Out(sres) + ] +#endif + +#ifdef RespLeg +rule RespVerifierRecvAuth1: + let aco = e1_aco(LK, $idI, ~au_rand_1) in + [ + RespBeginAuth($idR, $capR, $idI, $capI, LK, ~au_rand_1), + In(e1_sres(LK, $idI, ~au_rand_1)) + ] + --[ + RespVerifierRecvAuth1($idR, $capR, $idI, $capI, LK, aco) + ]-> + [ + RespVerifierRecvAuth1($idR, $capR, $idI, $capI, LK, aco) + ] +#endif + +#ifdef InitLeg +rule InitVerifierSendAuth2: + [ + InitClaimantAuth1($idI, $capI, $idR, $capR, LK, old_aco), + Fr(~au_rand_2) + ] + --[ + InitVerifierSendAuth2($idI, $capI, $idR, $capR, LK, ~au_rand_2) + ]-> + [ + InitVerifierSendAuth2($idI, $capI, $idR, $capR, LK, ~au_rand_2), + Out(~au_rand_2) + ] +#endif + +#ifdef RespLeg +rule RespClaimantAuth2: + let + sres = e1_sres(LK, $idR, au_rand_2) + aco = e1_aco(LK, $idR, au_rand_2) + in + [ + RespVerifierRecvAuth1($idR, $capR, $idI, $capI, LK, old_aco), + In(au_rand_2) + ] + --[ + RespClaimantAuth2($idR, $capR, $idI, $capI, LK, aco) + ]-> + [ + RespClaimantAuth2($idR, $capR, $idI, $capI, LK, aco), + OracleLK(au_rand_2, sres), + Out(sres) + ] +#endif + +#ifdef InitLeg +rule InitVerifierRecvAuth2: + let + aco = e1_aco(LK, $idR, ~au_rand_2) + in + [ + InitVerifierSendAuth2($idI, $capI, $idR, $capR, LK, ~au_rand_2), + In(e1_sres(LK, $idR, ~au_rand_2)) + ] + --[ + InitiatorFinishedLegPairing($idI, $capI, $idR, $capR, LK, aco) + ]-> + [ + InitiatorFinishedLegPairing($idI, $capI, $idR, $capR, LK, aco) + ] +#endif + +#ifdef RespLeg +rule RespFinishedPairing: + [ + RespClaimantAuth2($idR, $capR, $idI, $capI, LK, aco) + ] + --[ + ResponderFinishedLegPairing($idR, $capR, $idI, $capI, LK, aco) + ]-> + [ + ResponderFinishedLegPairing($idR, $capR, $idI, $capI, LK, aco) + ] +#endif + +/* Easy encryption, decryption, to be able to make lemmas which will encompass both authentication paths */ + +#ifdef InitLeg +rule InitLegSendMsg: + [ + InitiatorFinishedLegPairing($idI, $capI, $idR, $capR, LK, aco) + ] + --[ + InitSendMsg($idI, $capI, $idR, $capR, LK, aco, 'init') + ]-> + [ + InitLegSentMsg($idI, $capI, $idR, $capR, LK, aco, 'init'), + Out(e0(LK, aco, 'init')) + ] +#endif + +#ifdef RespLeg +rule RespLegRecvMsg: + [ + ResponderFinishedLegPairing($idR, $capR, $idI, $capI, LK, aco), + In(e0(LK, aco, 'init')) + ] + --[ + RespRecvSendMsg($idR, $capR, $idI, $capI, LK, aco, 'resp') + ]-> + [ + RespLegSentMsg($idR, $capR, $idI, $capI, LK, aco, 'resp'), + Out(e0(LK, aco, 'resp')) + ] +#endif + +#ifdef InitLeg +rule InitLegRecvMsg: + [ + InitLegSentMsg($idI, $capI, $idR, $capR, LK, aco, m), + In(e0(LK, aco, 'resp')) + ] + --[ + InitRecvMsg($idI, $capI, $idR, $capR, LK, aco, 'resp') + ]-> + [ + InitLegRecvMsg($idI, $capI, $idR, $capR, LK, aco, 'resp') + ] +#endif + +/* +* Public key exchange, common for all Secure Pairing protocols +* The Initiator sends its public key, and receives the one from +* the Responder: +* I -> R: pkI = is * G +* R -> I: pkR = rs * G +* dh = is * rs * G = rs * pkI = is * pkR +*/ + +#ifdef InitSec +rule InitSendPublicKey: + let pkI = in + [ + InitDoECDH($idI, $capI, $idR, $capR), + Fr(~is) + ] + --[ + InitBeginECDH($idI, $capI, $idR, $capR, ~is, pkI) + ]-> + [ + InitBeginECDH($idI, $capI, $idR, $capR, ~is, pkI), + Out(pkI) + ] + +rule InitRecvPublicKey: + [ + InitBeginECDH($idI, $capI, $idR, $capR, ~is, pkI), + In(pkR) + ] + --[ + InitComputeECDH( $idI, $capI, $idR, $capR, pkI, pkR, ~is) + ]-> + [ + InitComputeECDH( $idI, $capI, $idR, $capR, pkI, pkR, ~is) + ] + +rule InitDeriveNormalDHKey: + let + pkRx = e('C', DH_neutral, n) + dhkey = e('C', r, n^~is) // In Bluetooth, only X is taken + in + [ + InitComputeECDH( $idI, $capI, $idR, $capR, , , ~is), + In(r) + ] + --[ + ValidPt(pkRx,pkRy), Raised('C', DH_neutral, r, ~is), + InitEndECDH($idI, $capI, $idR, $capR, pkIx, pkRx, dhkey) // Once DHKey is computed, only x-coordinate is used in the rest of the protocol + ]-> + [ + InitEndECDH($idI, $capI, $idR, $capR, pkIx, pkRx, dhkey) // Once DHKey is computed, only x-coordinate is used in the rest of the protocol + ] +#endif + +#ifdef InitECDHUnpatched +rule InitDeriveInvalidDHKey: + let + pkRx = e(otx,osx,orx) + pkRy = e(oty,osy,ory) + dhkey = e(tx, rx, nx^~is) // In Bluetooth, only X is taken + in + [ + InitComputeECDH( $idI, $capI, $idR, $capR, , , ~is), + In() + ] + --[ + InvalidPt(pkRx,pkRy), Raised(, , , ~is), + InitEndECDH($idI, $capI, $idR, $capR, pkIx, pkRx, dhkey) // Once DHKey is computed, only x-coordinate is used in the rest of the protocol + ]-> + [ + InitEndECDH($idI, $capI, $idR, $capR, pkIx, pkRx, dhkey) // Once DHKey is computed, only x-coordinate is used in the rest of the protocol + ] +#endif + +#ifdef RespSec +rule RespSendPublicKey: + let + pkR = + in + [ + RespDoECDH($idR, $capR, $idI, $capI), + Fr(~rs), + In(pkI) + ] + --[ + RespComputeECDH($idR, $capR, $idI, $capI, pkR, pkI, ~rs) + ]-> + [ + RespComputeECDH($idR, $capR, $idI, $capI, pkR, pkI, ~rs), + Out(pkR) + ] + +rule RespDeriveNormalDHKey: + let + pkIx = e('C', DH_neutral, n) + dhkey = e('C', r, n^~rs) // In Bluetooth, only X is taken + in + [ + RespComputeECDH( $idR, $capR, $idI, $capI, , , ~rs), + In(r) + ] + --[ + ValidPt(pkIx,pkIy), Raised('C', DH_neutral, r, ~rs), + RespEndECDH($idR, $capR, $idI, $capI, pkRx, pkIx, dhkey) // Once DHKey is computed, only x-coordinate is used in the rest of the protocol + ]-> + [ + RespEndECDH($idR, $capR, $idI, $capI, pkRx, pkIx, dhkey) // Once DHKey is computed, only x-coordinate is used in the rest of the protocol + ] +#endif + +#ifdef RespECDHUnpatched +rule RespDeriveInvalidDHKey: + let + pkIx = e(otx,osx,orx) + pkIy = e(oty,osy,ory) + dhkey = e(tx, rx, nx^~rs) // In Bluetooth, only X is taken + in + [ + RespComputeECDH( $idR, $capR, $idI, $capI, , , ~rs), + In() + ] + --[ + InvalidPt(pkIx,pkIy), Raised(, , , ~rs), + RespEndECDH($idR, $capR, $idI, $capI, pkRx, pkIx, dhkey) // Once DHKey is computed, only x-coordinate is used in the rest of the protocol + ]-> + [ + RespEndECDH($idR, $capR, $idI, $capI, pkRx, pkIx, dhkey) // Once DHKey is computed, only x-coordinate is used in the rest of the protocol + ] +#endif + +/* +* For the Secure Passkey Entry which requires it, we start the user interaction here. +* That is, we trigger the role to have the Passkey Entry user interaction +*/ + +#ifdef InitSecPE +rule InitTriggerSecPE: + [ + InitEndECDH($idI, $capI, $idR, $capR, pkI, pkR, dh), // The Initiator has ended the ECDH exchange + InitDoSecPE($idI, $capI, $idR, $capR) // The Initiator is doing a PE protocol + ] + --[]-> + [ + InitTriggerUserInteraction(), + InitReadySecPE($idI, $capI, $idR, $capR, pkI, pkR, dh) + ] +#endif + +#ifdef RespSecPE +rule RespTriggerSecPE: + [ + RespEndECDH($idR, $capR, $idI, $capI, pkR, pkI, dh), // The Initiator has ended the ECDH exchange + RespDoSecPE($idR, $capR, $idI, $capI) // The Initiator is doing a PE protocol + ] + --[]-> + [ + RespTriggerUserInteraction(), + RespReadySecPE($idR, $capR, $idI, $capI, pkR, pkI, dh) + ] +#endif + +/* +* This implements the Secure JustWorks method +* Devices using this method do not require a user interaction. +* The protocol is the following : +* R -> I: f1(pkR, pkI, nr, '0') +* I -> R: ni +* R -> I: nr +*/ + +#ifdef RespSecJW +rule RespSecJWSendConfirm: + let Cr = f1(pkR, pkI, ~nr, '0') in + [ + RespEndECDH($idR, $capR, $idI, $capI, pkR, pkI, dh), + Fr(~nr) + ] + --[ + RespSecJWSendConfirm($idR, $capR, $idI, $capI, pkR, pkI, dh, ~nr, Cr) + ]-> + [ + RespSecJWSendConfirm($idR, $capR, $idI, $capI, pkR, pkI, dh, ~nr, Cr), + Out(Cr) + ] + +rule RespSecJWSendRandom: + [ + RespSecJWSendConfirm($idR, $capR, $idI, $capI, pkR, pkI, dh, ~nr, Cr), + In(ni) + ] + --[ + RespSecJWSendRandom($idR, $capR, $idI, $capI, pkR, pkI, dh, ~nr, ni), + RespSecJWDone($idR, $capR, $idI, $capI, pkR, pkI, dh, ~nr, ni), + RespEndedStep2($idR, $capR, $idI, $capI, pkR, pkI, dh, ~nr, ni, '0', '0') + ]-> + [ + RespSecJWSendRandom($idR, $capR, $idI, $capI, pkR, pkI, dh, ~nr, ni), + RespEndedStep2($idR, $capR, $idI, $capI, pkR, pkI, dh, ~nr, ni, '0', '0'), // Responder ended step2, ra and rb = 0 in JW mode + Out(~nr) + ] +#endif + +#ifdef InitSecJW +rule InitSecJWSendRandom: + [ + InitEndECDH($idI, $capI, $idR, $capR, pkI, pkR, dh), + Fr(~ni), + In(Cr) + ] + --[ + InitSecJWSendRandom($idI, $capI, $idR, $capR, pkI, pkR, dh, ~ni, Cr) + ]-> + [ + InitSecJWSendRandom($idI, $capI, $idR, $capR, pkI, pkR, dh, ~ni, Cr), + Out(~ni) + ] + + +rule InitSecJWRecvRandom: + let computed_Cr = f1(pkR, pkI, nr, '0') in + [ + InitSecJWSendRandom($idI, $capI, $idR, $capR, pkI, pkR, dh, ~ni, computed_Cr), + In(nr) + ] + --[ + InitSecJWRecvRandom($idI, $capI, $idR, $capR, pkI, pkR, dh, ~ni, nr), + InitSecJWDone($idI, $capI, $idR, $capR, pkI, pkR, dh, ~ni, nr), + InitEndedStep2($idI, $capI, $idR, $capR, pkI, pkR, dh, ~ni, nr, '0', '0') + ]-> + [ + InitSecJWRecvRandom($idI, $capI, $idR, $capR, pkI, pkR, dh, ~ni, nr), + InitEndedStep2($idI, $capI, $idR, $capR, pkI, pkR, dh, ~ni, nr, '0', '0') // Responder ended step2, ra and rb = 0 in JW mode + ] +#endif + +/* +* Implement the Secure Passkey Entry method +* The protocol is based on commitment rounds, using the passkey. +* The passkey is always 20 bits long (by the specification) +* notation b0(passkey) represents the first bit of the passkey, b1(passkey) is the second bit, ... +* Round 0: +* I -> R: f1(pkI, pkR, ni0, b0(passkey) +* R -> I: f1(pkR, pkI, nr0, b0(passkey) +* I -> R: ni0 +* R -> I: nr0 +* Round 1: +* I -> R: f1(pkI, pkR, ni1, b1(passkey) +* R -> I: f1(pkR, pkI, nr1, b1(passkey) +* I -> R: ni1 +* R -> I: nr1 +* ... +* +* Nonces are drawn at random for each round. +* In this model, we use a reduced version of the Passkey Entry protocol, which consists +* of only two rounds. +* The passkey is split in two using functions split1/1 and split2/1 +*/ + +#ifdef InitSecPE +rule InitSecPESendConfirm1: + let Ci = f1(pkI, pkR, ~ni, split1(passkey)) in + [ + InitReadySecPE($idI, $capI, $idR, $capR, pkI, pkR, dh), // Initiator is ready to perform PE protocol + InitUserProceed(passkey), // The passkey is provided to the Initiator + Fr(~ni) + ] + --[]-> + [ + InitSecPESendConfirm1($idI, $capI, $idR, $capR, pkI, pkR, dh, passkey, ~ni, Ci), + LowEntropyf1(pkI, pkR, ~ni, split1(passkey)), + Out(Ci) + ] + +rule InitSecPESendRandom1: + [ + InitSecPESendConfirm1($idI, $capI, $idR, $capR, pkI, pkR, dh, passkey, ~ni, Ci), + In(Cr) + ] + --[]-> + [ + InitSecPESendRandom1($idI, $capI, $idR, $capR, pkI, pkR, dh, passkey, ~ni, Ci, Cr), + Out(~ni) + ] + +rule InitSecPERecvRandom1: + let computed_Cr = f1(pkR, pkI, nr, split1(passkey)) in + [ + InitSecPESendRandom1($idI, $capI, $idR, $capR, pkI, pkR, dh, passkey, ~ni, Ci, computed_Cr), + In(nr) + ] + --[ + ]-> + [ + InitSecPEEndPart1($idI, $capI, $idR, $capR, pkI, pkR, dh, passkey) + ] + +rule InitSecPESendConfirm2: + let Ci = f1(pkI, pkR, ~ni, split2(passkey)) in + [ + InitSecPEEndPart1($idI, $capI, $idR, $capR, pkI, pkR, dh, passkey), + Fr(~ni) + ] + --[]-> + [ + InitSecPESendConfirm2($idI, $capI, $idR, $capR, pkI, pkR, dh, passkey, ~ni, Ci), + LowEntropyf1(pkI, pkR, ~ni, split2(passkey)), + Out(Ci) + ] + +rule InitSecPESendRandom2: + [ + InitSecPESendConfirm2($idI, $capI, $idR, $capR, pkI, pkR, dh, passkey, ~ni, Ci), + In(Cr) + ] + --[]-> + [ + InitSecPESendRandom2($idI, $capI, $idR, $capR, pkI, pkR, dh, passkey, ~ni, Ci, Cr), + Out(~ni) + ] + +rule InitSecPERecvRandom2: + let computed_Cr = f1(pkR, pkI, nr, split2(passkey)) in + [ + InitSecPESendRandom2($idI, $capI, $idR, $capR, pkI, pkR, dh, passkey, ~ni, Ci, computed_Cr), + In(nr) + ] + --[ + InitSecPEDone($idI, $capI, $idR, $capR, pkI, pkR, dh, ~ni, nr, passkey), + InitEndedStep2($idI, $capI, $idR, $capR, pkI, pkR, dh, ~ni, nr, passkey, passkey) + ]-> + [ + InitEndedStep2($idI, $capI, $idR, $capR, pkI, pkR, dh, ~ni, nr, passkey, passkey) + ] +#endif + +#ifdef RespSecPE +rule RespSecPESendConfirm1: + let Cr = f1(pkR, pkI, ~nr, split1(passkey)) in + [ + RespReadySecPE($idR, $capR, $idI, $capI, pkR, pkI, dh), // Initiator is ready to perform PE protocol + RespUserProceed(passkey), // The passkey is provided to the Initiator + Fr(~nr), + In(Ci) + ] + --[]-> + [ + RespSecPESendConfirm1($idR, $capR, $idI, $capI, pkR, pkI, dh, passkey, ~nr, Cr, Ci), + LowEntropyf1(pkR, pkI, ~nr, split1(passkey)), + Out(Cr) + ] + +rule RespSecPESendRandom1: + let computed_Ci = f1(pkI, pkR, ni, split1(passkey)) in + [ + RespSecPESendConfirm1($idR, $capR, $idI, $capI, pkR, pkI, dh, passkey, ~nr, Cr, computed_Ci), + In(ni) + ] + --[ + ]-> + [ + RespSecPEEndPart1($idR, $capR, $idI, $capI, pkR, pkI, dh, passkey), + Out(~nr) + ] + +rule RespSecPESendConfirm2: + let Cr = f1(pkR, pkI, ~nr, split2(passkey)) in + [ + RespSecPEEndPart1($idR, $capR, $idI, $capI, pkR, pkI, dh, passkey), // Initiator is ready to perform PE protocol + Fr(~nr), + In(Ci) + ] + --[]-> + [ + RespSecPESendConfirm2($idR, $capR, $idI, $capI, pkR, pkI, dh, passkey, ~nr, Cr, Ci), + LowEntropyf1(pkR, pkI, ~nr, split2(passkey)), + Out(Cr) + ] + +rule RespSecPESendRandom2: + let computed_Ci = f1(pkI, pkR, ni, split2(passkey)) in + [ + RespSecPESendConfirm2($idR, $capR, $idI, $capI, pkR, pkI, dh, passkey, ~nr, Cr, computed_Ci), + In(ni) + ] + --[ + RespSecPEDone($idR, $capR, $idI, $capI, pkR, pkI, dh, ~nr, ni, passkey), + RespEndedStep2($idR, $capR, $idI, $capI, pkR, pkI, dh, ~nr, ni, passkey, passkey) + ]-> + [ + RespEndedStep2($idR, $capR, $idI, $capI, pkR, pkI, dh, ~nr, ni, passkey, passkey), + Out(~nr) + ] +#endif + +#ifdef NoLowEntropySecure +#else +rule Oracle_f1: + let verif_val = f1(pk1, pk2, n, s) in + [ + LowEntropyf1(pk1, pk2, n, s), + In(pk1), + In(pk2), + In(n), + In(verif_val) + ] + --[ + AttackerRecoveredPasskey(s) + ]-> + [ + Out(s) + ] +#endif + +#ifdef NoLowEntropyLegacy +#else +rule Oracle_pin: + let + Kinit = e22(pin, in_rand) + rand_i = Kinit XOR masked_rand_i + rand_r = Kinit XOR masked_rand_r + LK = e21(rand_i, idI) XOR e21(rand_r, idR) + sres = e1_sres(LK, id_sres, au_rand) + in + [ + LowEntropy(pin), + OracleLK(au_rand, sres), + In(in_rand), + In(masked_rand_i), + In(masked_rand_r), + In(au_rand), + In(id_sres), + In(idI), + In(idR), + In(sres) + ] + --[ + AttackerRecoveredPIN(pin) + ]-> + [ + Out(pin) + ] +#endif + +/* +* Numeric Comparison method +* This protocol is similar to the Secure JustWorks protocol, but the user is +* then presented a code to verify that the Pairing was done correctly +* R -> I: f1(pkR, pkI, nr, '0') +* I -> R: ni +* R -> I: nr +*/ + + +#ifdef RespSecNC +rule RespSecNCSendConfirm: + let Cr = f1(pkR, pkI, ~nr, '0') in + [ + RespEndECDH($idR, $capR, $idI, $capI, pkR, pkI, dh), + Fr(~nr) + ] + --[ + RespSecNCSendConfirm($idR, $capR, $idI, $capI, pkR, pkI, dh, ~nr, Cr) + ]-> + [ + RespSecNCSendConfirm($idR, $capR, $idI, $capI, pkR, pkI, dh, ~nr, Cr), + Out(Cr) + ] + +rule RespSecNCSendRandom: + let code = g(pkI, pkR, ni, ~nr) in + [ + RespSecNCSendConfirm($idR, $capR, $idI, $capI, pkR, pkI, dh, ~nr, Cr), + In(ni) + ] + --[ + RespSecNCSendRandom($idR, $capR, $idI, $capI, pkR, pkI, dh, ~nr, ni) + ]-> + [ + RespNCWaitConfirm($idR, $capR, $idI, $capI, pkR, pkI, dh, ~nr, ni), + RespWaitUserConfirm(code), + RespTriggerUserInteraction(), + Out(~nr) + ] + +rule RespSecNCDone: + [ + RespNCWaitConfirm($idR, $capR, $idI, $capI, pkR, pkI, dh, ~nr, ni), + RespUserProceed(code) + ] + --[ + RespSecNCDone($idR, $capR, $idI, $capI, pkR, pkI, dh, ~nr, ni), + RespEndedStep2($idR, $capR, $idI, $capI, pkR, pkI, dh, ~nr, ni, '0', '0') + ]-> + [ + RespEndedStep2($idR, $capR, $idI, $capI, pkR, pkI, dh, ~nr, ni, '0', '0') // Initiator ended step2, ra and rb = 0 in JW mode + ] +#endif + + +#ifdef InitSecNC +rule InitSecNCSendRandom: + [ + InitEndECDH($idI, $capI, $idR, $capR, pkI, pkR, dh), + Fr(~ni), + In(Cr) + ] + --[ + InitSecNCSendRandom($idI, $capI, $idR, $capR, pkI, pkR, dh, ~ni, Cr) + ]-> + [ + InitSecNCSendRandom($idI, $capI, $idR, $capR, pkI, pkR, dh, ~ni, Cr), + Out(~ni) + ] + +rule InitSecNCRecvRandom: + let + computed_Cr = f1(pkR, pkI, nr, '0') + code = g(pkI, pkR, ~ni, nr) + in + [ + InitSecNCSendRandom($idI, $capI, $idR, $capR, pkI, pkR, dh, ~ni, computed_Cr), + In(nr) + ] + --[ + InitSecNCRecvRandom($idI, $capI, $idR, $capR, pkI, pkR, dh, ~ni, nr) + ]-> + [ + InitNCWaitConfirm($idI, $capI, $idR, $capR, pkI, pkR, dh, ~ni, nr), + InitWaitUserConfirm(code), + InitTriggerUserInteraction() + ] + +rule InitSecNCDone: + [ + InitNCWaitConfirm($idI, $capI, $idR, $capR, pkI, pkR, dh, ~ni, nr), + InitUserProceed(code) + ] + --[ + InitSecNCDone($idI, $capI, $idR, $capR, pkI, pkR, dh, ~ni, nr), + InitEndedStep2($idI, $capI, $idR, $capR, pkI, pkR, dh, ~ni, nr, '0', '0') + ]-> + [ + InitEndedStep2($idI, $capI, $idR, $capR, pkI, pkR, dh, ~ni, nr, '0', '0') // Initiator ended step2, ra and rb = 0 in JW mode + ] +#endif + +/* +* Out of Band Pairing method. +* The exact exchange will depend on the choice done for the OOB method. +* If OOBi is used, the device expects an input message +* If OOBo is used, the device sends a message +* If OOBio is used, the device sends a message and expects an input message +* +* Once the OOB exchange is done, both device exchange a nonce, starting from the Initiator: +* I -> R: ni +* R -> I: nr +*/ + +#ifdef InitSecOOBi +rule InitDoSecOOBi: + [ + InitEndECDH($idI, $capI, $idR, $capR, pkI, pkR, dh), + InitDoSecOOBi($idI, $capI, $idR, $capR) + ] + --[ + ]-> + [ + InitWaitOOBInput(), + InitReadySecOOB($idI, $capI, $idR, $capR, pkI, pkR, dh) + ] +#endif + +#ifdef InitSecOOBo +rule InitDoSecOOBo: + [ + InitEndECDH($idI, $capI, $idR, $capR, pkI, pkR, dh), + InitDoSecOOBo($idI, $capI, $idR, $capR) + ] + --[ + ]-> + [ + InitWaitOOBOutput(), + InitReadySecOOB($idI, $capI, $idR, $capR, pkI, pkR, dh) + ] +#endif + +#ifdef InitSecOOBio +rule InitDoSecOOBio: + [ + InitEndECDH($idI, $capI, $idR, $capR, pkI, pkR, dh), + InitDoSecOOBio($idI, $capI, $idR, $capR) + ] + --[ + ]-> + [ + InitWaitOOBInout(), + InitReadySecOOB($idI, $capI, $idR, $capR, pkI, pkR, dh) + ] +#endif + +#ifdef RespSecOOBi +rule RespDoSecOOBi: + [ + RespEndECDH($idR, $capR, $idI, $capI, pkR, pkI, dh), + RespDoSecOOBi($idR, $capR, $idI, $capI) + ] + --[ + ]-> + [ + RespWaitOOBInput(), + RespReadySecOOB($idR, $capR, $idI, $capI, pkR, pkI, dh) + ] +#endif + +#ifdef RespSecOOBo +rule RespDoSecOOBo: + [ + RespEndECDH($idR, $capR, $idI, $capI, pkR, pkI, dh), + RespDoSecOOBo($idR, $capR, $idI, $capI) + ] + --[ + ]-> + [ + RespWaitOOBOutput(), + RespReadySecOOB($idR, $capR, $idI, $capI, pkR, pkI, dh) + ] +#endif + +#ifdef RespSecOOBio +rule RespDoSecOOBio: + [ + RespEndECDH($idR, $capR, $idI, $capI, pkR, pkI, dh), + RespDoSecOOBio($idR, $capR, $idI, $capI) + ] + --[ + ]-> + [ + RespWaitOOBInout(), + RespReadySecOOB($idR, $capR, $idI, $capI, pkR, pkI, dh) + ] +#endif + +#ifdef InitSecOOB +rule InitSecOOBOut: + let Ci = f1(pkI, pkI, ~ri, '0') in + [ + InitReadySecOOB($idI, $capI, $idR, $capR, pkI, pkR, dh), + InitWaitOOBOutput(), + Fr(~ri) + ] + --[ + InitSentOOB($idI, $capI, $idR, $capR, pkI, pkR, dh, ~ri, Ci) + ]-> + [ + InitDoneSecOOBexchange($idI, $capI, $idR, $capR, pkI, pkR, dh, ~ri, '0'), + InitOOBchannel(<$idI, ~ri, Ci>) + ] + +rule InitSecOOBin: + let computed_Cr = f1(pkR, pkR, ~rr, '0') in + [ + InitReadySecOOB($idI, $capI, $idR, $capR, pkI, pkR, dh), + InitWaitOOBInput(), + RespOOBchannel(<$idR, ~rr, computed_Cr>) + ] + --[ + ]-> + [ + InitDoneSecOOBexchange($idI, $capI, $idR, $capR, pkI, pkR, dh, '0', ~rr) + ] + +rule InitSecOOBinout_out: + let Ci = f1(pkI, pkI, ~ri, '0') in + [ + InitReadySecOOB($idI, $capI, $idR, $capR, pkI, pkR, dh), + InitWaitOOBInout(), + Fr(~ri) + ] + --[ + ]-> + [ + InitDoneSecOOBinout_out($idI, $capI, $idR, $capR, pkI, pkR, dh, ~ri), + InitOOBchannel(<$idI, ~ri, Ci>) + ] + +rule InitSecOOBinout_in: + let computed_Cr = f1(pkR, pkR, ~rr, '0') in + [ + InitDoneSecOOBinout_out($idI, $capI, $idR, $capR, pkI, pkR, dh, ~ri), + RespOOBchannel(<$idR, ~rr, computed_Cr>) + ] + --[ + ]-> + [ + InitDoneSecOOBexchange($idI, $capI, $idR, $capR, pkI, pkR, dh, ~ri, ~rr) + ] + +rule InitSecOOBSendRandom: + [ + InitDoneSecOOBexchange($idI, $capI, $idR, $capR, pkI, pkR, dh, ri, rr), + Fr(~ni) + ] + --[]-> + [ + InitSecOOBSendRandom($idI, $capI, $idR, $capR, pkI, pkR, dh, ri, rr, ~ni), + Out(~ni) + ] + +rule InitSecOOBRecvRandom: + [ + InitSecOOBSendRandom($idI, $capI, $idR, $capR, pkI, pkR, dh, ri, rr, ~ni), + In(nr) + ] + --[ + InitSecOOBDone($idI, $capI, $idR, $capR, pkI, pkR, dh, ~ni, nr, ri, rr), + InitEndedStep2($idI, $capI, $idR, $capR, pkI, pkR, dh, ~ni, nr, ri, rr) + ]-> + [ + InitEndedStep2($idI, $capI, $idR, $capR, pkI, pkR, dh, ~ni, nr, ri, rr) + ] +#endif + +#ifdef RespSecOOB +rule RespSecOOBOut: + let Cr = f1(pkR, pkR, ~rr, '0') in + [ + RespReadySecOOB($idR, $capR, $idI, $capI, pkR, pkI, dh), + RespWaitOOBOutput(), + Fr(~rr) + ] + --[ + RespSentSecOOB($idR, $capR, $idI, $capI, pkR, pkI, dh, ~rr, Cr) + ]-> + [ + RespDoneSecOOBexchange($idR, $capR, $idI, $capI, pkR, pkI, dh, ~rr, '0'), + RespOOBchannel(<$idR, ~rr, Cr>) + ] + +rule RespSecOOBin: + let computed_Ci = f1(pkI, pkI, ~ri, '0') in + [ + RespReadySecOOB($idR, $capR, $idI, $capI, pkR, pkI, dh), + RespWaitOOBInput(), + InitOOBchannel(<$idI, ~ri, computed_Ci>) + ] + --[ + ]-> + [ + RespDoneSecOOBexchange($idR, $capR, $idI, $capI, pkR, pkI, dh, '0', ~ri) + ] + +rule RespSecOOBinout_out: + let Cr = f1(pkR, pkR, ~rr, '0') in + [ + RespReadySecOOB($idR, $capR, $idI, $capI, pkR, pkI, dh), + RespWaitOOBInout(), + Fr(~rr) + ] + --[ + ]-> + [ + RespDoneSecOOBinout_out($idR, $capR, $idI, $capI, pkR, pkI, dh, ~rr), + RespOOBchannel(<$idR, ~rr, Cr>) + ] + +rule RespSecOOBinout_in: + let computed_Ci = f1(pkI, pkI, ~ri, '0') in + [ + RespDoneSecOOBinout_out($idR, $capR, $idI, $capI, pkR, pkI, dh, ~rr), + InitOOBchannel(<$idI, ~ri, computed_Ci>) + ] + --[ + ]-> + [ + RespDoneSecOOBexchange($idR, $capR, $idI, $capI, pkR, pkI, dh, ~rr, ~ri) + ] + +rule RespSecOOBSendRandom: + [ + RespDoneSecOOBexchange($idR, $capR, $idI, $capI, pkR, pkI, dh, rr, ri), + Fr(~nr), + In(ni) + ] + --[ + RespSecOOBDone($idR, $capR, $idI, $capI, pkR, pkI, dh, ~nr, ni, rr, ri), + RespEndedStep2($idR, $capR, $idI, $capI, pkR, pkI, dh, ~nr, ni, rr, ri) + ]-> + [ + RespSecOOBSendRandom($idR, $capR, $idI, $capI, pkR, pkI, dh, rr, ri, ~nr, ni), + Out(~nr), + RespEndedStep2($idR, $capR, $idI, $capI, pkR, pkI, dh, ~nr, ni, rr, ri) + ] +#endif + +/* +* DHKeyCheck, this is a key confirmation step +*/ + +#ifdef InitSec +rule InitDHKeyCheck: + let + //mackey = f5_mackey(dh, ~ni, nr, 'btle', $idI, $idR) + ei = f3(dh, ~ni, nr, rr, $capI, $idI, $idR) // Compute DHKeyCheck confirmation value + in + [ + InitEndedStep2($idI, $capI, $idR, $capR, pkI, pkR, dh, ~ni, nr, ri, rr) // Initiator needs to be done with step2 + ] + --[ InitDHKeyCheck($idI, $capI, $idR, $capR, pkI, pkR, dh, ~ni, nr, ri, rr, ei) ]-> // Intermediate fact + [ + InitSendDHKeyCheck($idI, $capI, $idR, $capR, pkI, pkR, dh, ~ni, nr, ri, rr, ei), // Initiator has sent its dhkey check + Out(ei) // Send the DHKey Check on the channel + ] + +rule InitDoneDHKeyCheck: + let + //mackey = f5_mackey(dh, ~ni, nr, 'btle', $idI, $idR) + computed_er = f3(dh, nr, ~ni, ri, $capR, $idR, $idI) + in + [ + InitSendDHKeyCheck($idI, $capI, $idR, $capR, pkI, pkR, dh, ~ni, nr, ri, rr, ei), + In(computed_er) + ] + --[ + InitDoneDHKeyCheck($idI, $capI, $idR, $capR, pkI, pkR, dh, ~ni, nr, ri, rr, ei, computed_er) + ]-> + [ + InitEndedDHKeyCheck($idI, $capI, $idR, $capR, pkI, pkR, dh, ~ni, nr) + ] +#endif + +#ifdef RespSec +rule RespDHKeyCheck: + let + //mackey = f5_mackey(dh, ni, ~nr, 'btle', $idI, $idR) + er = f3(dh, ~nr, ni, ri, $capR, $idR, $idI) + computed_ei = f3(dh, ni, ~nr, rr, $capI, $idI, $idR) + in + [ + RespEndedStep2($idR, $capR, $idI, $capI, pkR, pkI, dh, ~nr, ni, rr, ri), + In(computed_ei) + ] + --[ + RespDoneDHKeyCheck($idR, $capR, $idI, $capI, pkR, pkI, dh, ~nr, ni, rr, ri, er, computed_ei) + ]-> + [ + RespEndedDHKeyCheck($idR, $capR, $idI, $capI, pkR, pkI, dh, ~nr, ni), + Out(er) + ] +#endif + + +/* +Technically, ni should be the nonce sent by the central and nr should be the nonce sent by the peripheral +idI should be the address of the central and idR the address of the peripheral. + +Here, we assume Initiator == Central and Responder == Peripheral but that may not be always true + +Also, the session key derivation and authentication is not performed here. +*/ + +#ifdef InitSec +rule InitSecSendmsg: + let ltk = f2(dh, ~ni, nr, 'bredr', $idI, $idR) in + [ + InitEndedDHKeyCheck($idI, $capI, $idR, $capR, pkI, pkR, dh, ~ni, nr) + ] + --[ + InitiatorFinishedSecPairing($idI, $capI, $idR, $capR, pkI, pkR, dh, ltk), + InitiatorSecSentMessage(ltk, 'init') + ]-> + [ + InitiatorFinishedSecPairing($idI, $capI, $idR, $capR, pkI, pkR, dh, ltk), + Out(senc('init',ltk)) + ] +#endif + +#ifdef RespSec +rule RespSecSendmsg: + let ltk = f2(dh, ni, ~nr, 'bredr', $idI, $idR) in + [ + RespEndedDHKeyCheck($idR, $capR, $idI, $capI, pkR, pkI, dh, ~nr, ni), + In(senc('init', ltk)) + ] + --[ + ResponderFinishedSecPairing($idR, $capR, $idI, $capI, pkR, pkI, dh, ltk), + ResponderSentMessage(ltk, 'resp') + ]-> + [ + ResponderFinishedSecPairing($idR, $capR, $idI, $capI, pkR, pkI, dh, ltk), + Out(senc('resp',ltk)) + ] +#endif + +/* User interactions */ +/* This is used to represent user interactions in Bluetooth +Devices can have an output, input or input/output capability. +There are four facts that are used to represent interactions: +- InitUserWaitInput(): Initiator waits passkey input from user +- RespUserWaitInput(): Responder waits passkey input from user +- InitUserWaitConfirm(passkey): Initiator waits continuation of the protocol, it chooses passkey +- RespUserWaitConfirm(passkey): Responder waits continuation of the protocol, it chooses passkey +- InitUserWaitInout(passkey): Initiator waits continuation of the protocol +- RespUserWaitInout(passkey): Responder waits the continuation of the protocol + +We note that not both devices choose the passkey, in practice only one does. +However, the choice depends on the capabilities of the other device. +This is why when two devices have triggered UserWaitInout(passkey), only one passkey is propagated in the following +rules, to model the choice that was done at the beginning of the protocol. + +The possible combinations are: +InitUserWaitInput - RespUserWaitInput -> Valid interaction in PE, user selects a passkey and inputs it in both +InitUserWaitInput - RespUserWaitConfirm -> Valid interaction in PE, user copies the responder's passkey into initiator +InitUserWaitConfirm - RespUserWaitInput -> Valid interaction in PE, user copies the initiator's passkey into responder +InitUserWaitConfirm - RespUserWaitConfirm -> Valid interaction in NC, user verifies that both code match + -> May also occur in PEo/PEio - PEo/PEio, in which case it is valid +*/ + +#ifdef InputInput +rule UserInputInitInputResp: + [Fr(~passkey), + InitTriggerUserInteraction(),InitWaitUserInput(), + RespTriggerUserInteraction(),RespWaitUserInput()] + --[]-> + [InitUserProceed(~passkey),RespUserProceed(~passkey)] +#endif + +#ifdef InputOutput +rule UserInputInitConfirmResp: + [InitTriggerUserInteraction(),InitWaitUserInput(), + RespTriggerUserInteraction(),RespWaitUserConfirm(passkey)] + --[]-> + [InitUserProceed(passkey),RespUserProceed(passkey)] +#endif + +#ifdef InputInout +rule UserInputInitInoutResp: + [InitTriggerUserInteraction(),InitWaitUserInput(), + RespTriggerUserInteraction(),RespWaitUserInout(passkey)] + --[]-> + [InitUserProceed(passkey),RespUserProceed(passkey)] +#endif + +#ifdef OutputInput +rule UserConfirmInitInputResp: + [InitTriggerUserInteraction(),InitWaitUserConfirm(passkey), + RespTriggerUserInteraction(),RespWaitUserInput()] + --[]-> + [InitUserProceed(passkey),RespUserProceed(passkey)] +#endif + +#ifdef OutputInout +rule UserConfirmInitInoutResp: + [InitTriggerUserInteraction(),InitWaitUserConfirm(passkeyi), + RespTriggerUserInteraction(),RespWaitUserInout(passkeyr)] + --[]-> + [InitUserProceed(passkeyi),RespUserProceed(passkeyi)] +#endif + +#ifdef InoutInput +rule UserInoutInitInputResp: + [InitTriggerUserInteraction(),InitWaitUserInout(passkey), + RespTriggerUserInteraction(),RespWaitUserInput()] + --[]-> + [InitUserProceed(passkey),RespUserProceed(passkey)] +#endif + +#ifdef InoutOutput +rule UserInoutInitConfirmResp: + [InitTriggerUserInteraction(),InitWaitUserInout(passkeyi), + RespTriggerUserInteraction(),RespWaitUserConfirm(passkeyr)] + --[]-> + [InitUserProceed(passkeyr),RespUserProceed(passkeyr)] +#endif + +#ifdef InoutInout +rule UserInoutInitInoutResp: + [InitTriggerUserInteraction(),InitWaitUserInout(passkeyi), + RespTriggerUserInteraction(),RespWaitUserInout(passkeyr)] + --[]-> + [InitUserProceed(passkeyi),RespUserProceed(passkeyi)] +#endif + +#ifdef OutputOutput +// This represents Numeric Comparison protocol +rule UserConfirmInitConfirmResp: + [InitTriggerUserInteraction(),InitWaitUserConfirm(vi), + RespTriggerUserInteraction(),RespWaitUserConfirm(vi)] + --[]-> + [InitUserProceed(vi),RespUserProceed(vi)] +#endif + + +/* Those two restrictions limit to one honest initiator and one +honest responder. This helps having a finished analysis */ +restriction InitOnlyOncePairing: +"All #i #j. InitOnlyOncePairing() @i & InitOnlyOncePairing() @j ==> #i = #j" + +restriction RespOnlyOncePairing: +"All #i #j. RespOnlyOncePairing() @i & RespOnlyOncePairing() @j ==> #i = #j" + +restriction OnlyOneAuthPath: +"All #i #j. AuthOnlyOneBegin() @i & AuthOnlyOneBegin() @j ==> #i = #j" + +#ifdef InitLeg +restriction InitLegPINOnlyOnce: +"All #i #j. InitLegPINOnlyOnce() @i & InitLegPINOnlyOnce() @j ==> #i = #j" +#endif + +#ifdef RespLeg +restriction RespLegPINOnlyOnce: +"All #i #j. RespLegPINOnlyOnce() @i & RespLegPINOnlyOnce() @j ==> #i = #j" +#endif + +#ifdef InitSecPE +restriction InitSecPEOnlyOnce: +"All #i #j. InitSecPEOnlyOnce() @i & InitSecPEOnlyOnce() @j ==> #i = #j" +#endif + +#ifdef RespSecPE +restriction RespSecPEOnlyOnce: +"All #i #j. RespSecPEOnlyOnce() @i & RespSecPEOnlyOnce() @j ==> #i = #j" +#endif + +#ifdef InitSecOOB +restriction InitSecOOBOnlyOnce: +"All #i #j. InitSecOOBOnlyOnce() @i & InitSecOOBOnlyOnce() @j ==> #i = #j" +#endif + +#ifdef RespSecOOB +restriction RespSecOOBOnlyOnce: +"All #i #j. RespSecOOBOnlyOnce() @i & RespSecOOBOnlyOnce() @j ==> #i = #j" +#endif + +// For ECDH model +restriction DHConsistency: + "All t s r1 r2 y #i #j . + Raised(t,s,r1,y) @ i & Raised(t,s,r2,y) @j + ==> r1 = r2" + +restriction DHIdentity: + "All t r y #i . + Raised(t,DH_neutral,r,y) @ i ==> r = DH_neutral" + +restriction ValidPt: + "∀ x y #i. + (ValidPt(x,y) @ #i) ⇒ (x = y)" + +restriction InvalidPt: + "∀ x #i. + (InvalidPt(x,x) @ #i) ⇒ F" + + +/*****************************************/ +/* Lemmas about LegPINi-LegPINi exchange */ +/*****************************************/ + +#ifdef LegPINiLegPINi +lemma legPINi_legPINi_functional: exists-trace +" + Ex #i1 #i2 . + InitWillDoLegPINi()[+] @i1 & RespWillDoLegPINi()[+] @i2 & + (Ex idI1 idR1 capI1 capR1 idI2 idR2 capI2 capR2 lk1 lk2 aco1 aco2 #j1 #j2 . + InitiatorFinishedLegPairing(idI1, capI1, idR1, capR1, lk1, aco1) @j1 & + ResponderFinishedLegPairing(idR2, capR2, idI2, capI2, lk2, aco2) @j2 + ) +" + +lemma legPINi_legPINi_auth_init: +" + All #i1 #i2 . + InitWillDoLegPINi()[+] @i1 & RespWillDoLegPINi()[+] @i2 ==> + (All idI idR capI1 capR1 lk aco m #k1 . + InitRecvMsg(idI, capI1, idR, capR1, lk, aco, m) @k1 ==> + (Ex capI2 capR2 #k2 . + ResponderFinishedLegPairing(idR, capR2, idI, capI2, lk, aco) @k2 + ) + ) +" + +lemma legPINi_legPINi_auth_resp: +" + All #i1 #i2 . + InitWillDoLegPINi()[+] @i1 & RespWillDoLegPINi()[+] @i2 ==> + (All idI idR capI1 capR1 lk aco m #k1 . + RespRecvSendMsg(idR, capR1, idI, capI1, lk, aco, m) @k1 ==> + (Ex capI2 capR2 #k2 . + InitiatorFinishedLegPairing(idI, capI2, idR, capR2, lk, aco) @k2 + ) + ) +" + +lemma legPINi_legPINi_weaksecret_init: +" + All #i1 #i2 . + InitWillDoLegPINi()[+] @i1 & RespWillDoLegPINi()[+] @i2 ==> + (All idI idR capI capR lk aco #k1 . + InitiatorFinishedLegPairing(idI, capI, idR, capR, lk, aco) @k1 ==> + not (Ex #k2 . K(lk) @k2 ) + ) +" + +lemma legPINi_legPINi_weaksecret_resp: +" + All #i1 #i2 . + InitWillDoLegPINi()[+] @i1 & RespWillDoLegPINi()[+] @i2 ==> + (All idI idR capI capR lk aco #k1 . + ResponderFinishedLegPairing(idR, capR, idI, capI, lk, aco) @k1 ==> + not (Ex #k2 . K(lk) @k2 ) + ) +" + +lemma legPINi_legPINi_double_impersonation: +" + All #i1 #i2 . + InitWillDoLegPINi()[+] @i1 & RespWillDoLegPINi()[+] @i2 ==> + (All idI1 idR1 capI1 capR1 idI2 idR2 capI2 capR2 lk1 lk2 aco1 aco2 #j1 #j2 . + InitiatorFinishedLegPairing(idI1, capI1, idR1, capR1, lk1, aco1) @j1 & + ResponderFinishedLegPairing(idR2, capR2, idI2, capI2, lk2, aco2) @j2 ==> + not (Ex #k1 #k2 . + K(lk1) @k1 & K(lk2) @k2 + ) + ) +" + +#endif + +/*********************************************/ +/* End lemmas about LegPINi-LegPINi exchange */ +/*********************************************/ + +/*****************************************/ +/* Lemmas about LegPINi-LegPINo exchange */ +/*****************************************/ + +#ifdef LegPINiLegPINo +lemma legPINi_legPINo_functional: exists-trace +" + Ex #i1 #i2 . + InitWillDoLegPINi()[+] @i1 & RespWillDoLegPINo()[+] @i2 & + (Ex idI1 idR1 capI1 capR1 idI2 idR2 capI2 capR2 lk1 lk2 aco1 aco2 #j1 #j2 . + InitiatorFinishedLegPairing(idI1, capI1, idR1, capR1, lk1, aco1) @j1 & + ResponderFinishedLegPairing(idR2, capR2, idI2, capI2, lk2, aco2) @j2 + ) +" + +lemma legPINi_legPINo_auth_init: +" + All #i1 #i2 . + InitWillDoLegPINi()[+] @i1 & RespWillDoLegPINo()[+] @i2 ==> + (All idI idR capI1 capR1 lk aco m #k1 . + InitRecvMsg(idI, capI1, idR, capR1, lk, aco, m) @k1 ==> + (Ex capI2 capR2 #k2 . + ResponderFinishedLegPairing(idR, capR2, idI, capI2, lk, aco) @k2 + ) + ) +" + +lemma legPINi_legPINo_auth_resp: +" + All #i1 #i2 . + InitWillDoLegPINi()[+] @i1 & RespWillDoLegPINo()[+] @i2 ==> + (All idI idR capI1 capR1 lk aco m #k1 . + RespRecvSendMsg(idR, capR1, idI, capI1, lk, aco, m) @k1 ==> + (Ex capI2 capR2 #k2 . + InitiatorFinishedLegPairing(idI, capI2, idR, capR2, lk, aco) @k2 + ) + ) +" + +lemma legPINi_legPINo_weaksecret_init: +" + All #i1 #i2 . + InitWillDoLegPINi()[+] @i1 & RespWillDoLegPINo()[+] @i2 ==> + (All idI idR capI capR lk aco #k1 . + InitiatorFinishedLegPairing(idI, capI, idR, capR, lk, aco) @k1 ==> + not (Ex #k2 . K(lk) @k2 ) + ) +" + +lemma legPINi_legPINo_weaksecret_resp: +" + All #i1 #i2 . + InitWillDoLegPINi()[+] @i1 & RespWillDoLegPINo()[+] @i2 ==> + (All idI idR capI capR lk aco #k1 . + ResponderFinishedLegPairing(idR, capR, idI, capI, lk, aco) @k1 ==> + not (Ex #k2 . K(lk) @k2 ) + ) +" + +lemma legPINi_legPINo_double_impersonation: +" + All #i1 #i2 . + InitWillDoLegPINi()[+] @i1 & RespWillDoLegPINo()[+] @i2 ==> + (All idI1 idR1 capI1 capR1 idI2 idR2 capI2 capR2 lk1 lk2 aco1 aco2 #j1 #j2 . + InitiatorFinishedLegPairing(idI1, capI1, idR1, capR1, lk1, aco1) @j1 & + ResponderFinishedLegPairing(idR2, capR2, idI2, capI2, lk2, aco2) @j2 ==> + not (Ex #k1 #k2 . + K(lk1) @k1 & K(lk2) @k2 + ) + ) +" + +#endif + +/*********************************************/ +/* End lemmas about LegPINi-LegPINo exchange */ +/*********************************************/ + +/******************************************/ +/* Lemmas about LegPINi-LegPINio exchange */ +/******************************************/ + +#ifdef LegPINiLegPINio +lemma legPINi_legPINio_functional: exists-trace +" + Ex #i1 #i2 . + InitWillDoLegPINi()[+] @i1 & RespWillDoLegPINio()[+] @i2 & + (Ex idI1 idR1 capI1 capR1 idI2 idR2 capI2 capR2 lk1 lk2 aco1 aco2 #j1 #j2 . + InitiatorFinishedLegPairing(idI1, capI1, idR1, capR1, lk1, aco1) @j1 & + ResponderFinishedLegPairing(idR2, capR2, idI2, capI2, lk2, aco2) @j2 + ) +" + +lemma legPINi_legPINio_auth_init: +" + All #i1 #i2 . + InitWillDoLegPINi()[+] @i1 & RespWillDoLegPINio()[+] @i2 ==> + (All idI idR capI1 capR1 lk aco m #k1 . + InitRecvMsg(idI, capI1, idR, capR1, lk, aco, m) @k1 ==> + (Ex capI2 capR2 #k2 . + ResponderFinishedLegPairing(idR, capR2, idI, capI2, lk, aco) @k2 + ) + ) +" + +lemma legPINi_legPINio_auth_resp: +" + All #i1 #i2 . + InitWillDoLegPINi()[+] @i1 & RespWillDoLegPINio()[+] @i2 ==> + (All idI idR capI1 capR1 lk aco m #k1 . + RespRecvSendMsg(idR, capR1, idI, capI1, lk, aco, m) @k1 ==> + (Ex capI2 capR2 #k2 . + InitiatorFinishedLegPairing(idI, capI2, idR, capR2, lk, aco) @k2 + ) + ) +" + +lemma legPINi_legPINio_weaksecret_init: +" + All #i1 #i2 . + InitWillDoLegPINi()[+] @i1 & RespWillDoLegPINio()[+] @i2 ==> + (All idI idR capI capR lk aco #k1 . + InitiatorFinishedLegPairing(idI, capI, idR, capR, lk, aco) @k1 ==> + not (Ex #k2 . K(lk) @k2 ) + ) +" + +lemma legPINi_legPINio_weaksecret_resp: +" + All #i1 #i2 . + InitWillDoLegPINi()[+] @i1 & RespWillDoLegPINio()[+] @i2 ==> + (All idI idR capI capR lk aco #k1 . + ResponderFinishedLegPairing(idR, capR, idI, capI, lk, aco) @k1 ==> + not (Ex #k2 . K(lk) @k2 ) + ) +" + +lemma legPINi_legPINio_double_impersonation: +" + All #i1 #i2 . + InitWillDoLegPINi()[+] @i1 & RespWillDoLegPINio()[+] @i2 ==> + (All idI1 idR1 capI1 capR1 idI2 idR2 capI2 capR2 lk1 lk2 aco1 aco2 #j1 #j2 . + InitiatorFinishedLegPairing(idI1, capI1, idR1, capR1, lk1, aco1) @j1 & + ResponderFinishedLegPairing(idR2, capR2, idI2, capI2, lk2, aco2) @j2 ==> + not (Ex #k1 #k2 . + K(lk1) @k1 & K(lk2) @k2 + ) + ) +" + +#endif + +/**********************************************/ +/* End lemmas about LegPINi-LegPINio exchange */ +/**********************************************/ + +/*****************************************/ +/* Lemmas about LegPINo-LegPINi exchange */ +/*****************************************/ + +#ifdef LegPINoLegPINi +lemma legPINo_legPINi_functional: exists-trace +" + Ex #i1 #i2 . + InitWillDoLegPINo()[+] @i1 & RespWillDoLegPINi()[+] @i2 & + (Ex idI1 idR1 capI1 capR1 idI2 idR2 capI2 capR2 lk1 lk2 aco1 aco2 #j1 #j2 . + InitiatorFinishedLegPairing(idI1, capI1, idR1, capR1, lk1, aco1) @j1 & + ResponderFinishedLegPairing(idR2, capR2, idI2, capI2, lk2, aco2) @j2 + ) +" + +lemma legPINo_legPINi_auth_init: +" + All #i1 #i2 . + InitWillDoLegPINo()[+] @i1 & RespWillDoLegPINi()[+] @i2 ==> + (All idI idR capI1 capR1 lk aco m #k1 . + InitRecvMsg(idI, capI1, idR, capR1, lk, aco, m) @k1 ==> + (Ex capI2 capR2 #k2 . + ResponderFinishedLegPairing(idR, capR2, idI, capI2, lk, aco) @k2 + ) + ) +" + +lemma legPINo_legPINi_auth_resp: +" + All #i1 #i2 . + InitWillDoLegPINo()[+] @i1 & RespWillDoLegPINi()[+] @i2 ==> + (All idI idR capI1 capR1 lk aco m #k1 . + RespRecvSendMsg(idR, capR1, idI, capI1, lk, aco, m) @k1 ==> + (Ex capI2 capR2 #k2 . + InitiatorFinishedLegPairing(idI, capI2, idR, capR2, lk, aco) @k2 + ) + ) +" + +lemma legPINo_legPINi_weaksecret_init: +" + All #i1 #i2 . + InitWillDoLegPINo()[+] @i1 & RespWillDoLegPINi()[+] @i2 ==> + (All idI idR capI capR lk aco #k1 . + InitiatorFinishedLegPairing(idI, capI, idR, capR, lk, aco) @k1 ==> + not (Ex #k2 . K(lk) @k2 ) + ) +" + +lemma legPINo_legPINi_weaksecret_resp: +" + All #i1 #i2 . + InitWillDoLegPINo()[+] @i1 & RespWillDoLegPINi()[+] @i2 ==> + (All idI idR capI capR lk aco #k1 . + ResponderFinishedLegPairing(idR, capR, idI, capI, lk, aco) @k1 ==> + not (Ex #k2 . K(lk) @k2 ) + ) +" + +lemma legPINo_legPINi_double_impersonation: +" + All #i1 #i2 . + InitWillDoLegPINo()[+] @i1 & RespWillDoLegPINi()[+] @i2 ==> + (All idI1 idR1 capI1 capR1 idI2 idR2 capI2 capR2 lk1 lk2 aco1 aco2 #j1 #j2 . + InitiatorFinishedLegPairing(idI1, capI1, idR1, capR1, lk1, aco1) @j1 & + ResponderFinishedLegPairing(idR2, capR2, idI2, capI2, lk2, aco2) @j2 ==> + not (Ex #k1 #k2 . + K(lk1) @k1 & K(lk2) @k2 + ) + ) +" + +#endif + +/*********************************************/ +/* End lemmas about LegPINo-LegPINi exchange */ +/*********************************************/ + +/*****************************************/ +/* Lemmas about LegPINo-LegPINo exchange */ +/*****************************************/ + +#ifdef LegPINoLegPINo +lemma legPINo_legPINo_functional: exists-trace +" + Ex #i1 #i2 . + InitWillDoLegPINo()[+] @i1 & RespWillDoLegPINo()[+] @i2 & + (Ex idI1 idR1 capI1 capR1 idI2 idR2 capI2 capR2 lk1 lk2 aco1 aco2 #j1 #j2 . + InitiatorFinishedLegPairing(idI1, capI1, idR1, capR1, lk1, aco1) @j1 & + ResponderFinishedLegPairing(idR2, capR2, idI2, capI2, lk2, aco2) @j2 + ) +" + +lemma legPINo_legPINo_auth_init: +" + All #i1 #i2 . + InitWillDoLegPINo()[+] @i1 & RespWillDoLegPINo()[+] @i2 ==> + (All idI idR capI1 capR1 lk aco m #k1 . + InitRecvMsg(idI, capI1, idR, capR1, lk, aco, m) @k1 ==> + (Ex capI2 capR2 #k2 . + ResponderFinishedLegPairing(idR, capR2, idI, capI2, lk, aco) @k2 + ) + ) +" + +lemma legPINo_legPINo_auth_resp: +" + All #i1 #i2 . + InitWillDoLegPINo()[+] @i1 & RespWillDoLegPINo()[+] @i2 ==> + (All idI idR capI1 capR1 lk aco m #k1 . + RespRecvSendMsg(idR, capR1, idI, capI1, lk, aco, m) @k1 ==> + (Ex capI2 capR2 #k2 . + InitiatorFinishedLegPairing(idI, capI2, idR, capR2, lk, aco) @k2 + ) + ) +" + +lemma legPINo_legPINo_weaksecret_init: +" + All #i1 #i2 . + InitWillDoLegPINo()[+] @i1 & RespWillDoLegPINo()[+] @i2 ==> + (All idI idR capI capR lk aco #k1 . + InitiatorFinishedLegPairing(idI, capI, idR, capR, lk, aco) @k1 ==> + not (Ex #k2 . K(lk) @k2 ) + ) +" + +lemma legPINo_legPINo_weaksecret_resp: +" + All #i1 #i2 . + InitWillDoLegPINo()[+] @i1 & RespWillDoLegPINo()[+] @i2 ==> + (All idI idR capI capR lk aco #k1 . + ResponderFinishedLegPairing(idR, capR, idI, capI, lk, aco) @k1 ==> + not (Ex #k2 . K(lk) @k2 ) + ) +" + +lemma legPINo_legPINo_double_impersonation: +" + All #i1 #i2 . + InitWillDoLegPINo()[+] @i1 & RespWillDoLegPINo()[+] @i2 ==> + (All idI1 idR1 capI1 capR1 idI2 idR2 capI2 capR2 lk1 lk2 aco1 aco2 #j1 #j2 . + InitiatorFinishedLegPairing(idI1, capI1, idR1, capR1, lk1, aco1) @j1 & + ResponderFinishedLegPairing(idR2, capR2, idI2, capI2, lk2, aco2) @j2 ==> + not (Ex #k1 #k2 . + K(lk1) @k1 & K(lk2) @k2 + ) + ) +" + +#endif + +/*********************************************/ +/* End lemmas about LegPINo-LegPINo exchange */ +/*********************************************/ + +/******************************************/ +/* Lemmas about LegPINo-LegPINio exchange */ +/******************************************/ + +#ifdef LegPINoLegPINio +lemma legPINo_legPINio_functional: exists-trace +" + Ex #i1 #i2 . + InitWillDoLegPINo()[+] @i1 & RespWillDoLegPINio()[+] @i2 & + (Ex idI1 idR1 capI1 capR1 idI2 idR2 capI2 capR2 lk1 lk2 aco1 aco2 #j1 #j2 . + InitiatorFinishedLegPairing(idI1, capI1, idR1, capR1, lk1, aco1) @j1 & + ResponderFinishedLegPairing(idR2, capR2, idI2, capI2, lk2, aco2) @j2 + ) +" + +lemma legPINo_legPINio_auth_init: +" + All #i1 #i2 . + InitWillDoLegPINo()[+] @i1 & RespWillDoLegPINio()[+] @i2 ==> + (All idI idR capI1 capR1 lk aco m #k1 . + InitRecvMsg(idI, capI1, idR, capR1, lk, aco, m) @k1 ==> + (Ex capI2 capR2 #k2 . + ResponderFinishedLegPairing(idR, capR2, idI, capI2, lk, aco) @k2 + ) + ) +" + +lemma legPINo_legPINio_auth_resp: +" + All #i1 #i2 . + InitWillDoLegPINo()[+] @i1 & RespWillDoLegPINio()[+] @i2 ==> + (All idI idR capI1 capR1 lk aco m #k1 . + RespRecvSendMsg(idR, capR1, idI, capI1, lk, aco, m) @k1 ==> + (Ex capI2 capR2 #k2 . + InitiatorFinishedLegPairing(idI, capI2, idR, capR2, lk, aco) @k2 + ) + ) +" + +lemma legPINo_legPINio_weaksecret_init: +" + All #i1 #i2 . + InitWillDoLegPINo()[+] @i1 & RespWillDoLegPINio()[+] @i2 ==> + (All idI idR capI capR lk aco #k1 . + InitiatorFinishedLegPairing(idI, capI, idR, capR, lk, aco) @k1 ==> + not (Ex #k2 . K(lk) @k2 ) + ) +" + +lemma legPINo_legPINio_weaksecret_resp: +" + All #i1 #i2 . + InitWillDoLegPINo()[+] @i1 & RespWillDoLegPINio()[+] @i2 ==> + (All idI idR capI capR lk aco #k1 . + ResponderFinishedLegPairing(idR, capR, idI, capI, lk, aco) @k1 ==> + not (Ex #k2 . K(lk) @k2 ) + ) +" + +lemma legPINo_legPINio_double_impersonation: +" + All #i1 #i2 . + InitWillDoLegPINo()[+] @i1 & RespWillDoLegPINio()[+] @i2 ==> + (All idI1 idR1 capI1 capR1 idI2 idR2 capI2 capR2 lk1 lk2 aco1 aco2 #j1 #j2 . + InitiatorFinishedLegPairing(idI1, capI1, idR1, capR1, lk1, aco1) @j1 & + ResponderFinishedLegPairing(idR2, capR2, idI2, capI2, lk2, aco2) @j2 ==> + not (Ex #k1 #k2 . + K(lk1) @k1 & K(lk2) @k2 + ) + ) +" + +#endif + +/**********************************************/ +/* End lemmas about LegPINo-LegPINio exchange */ +/**********************************************/ + +/******************************************/ +/* Lemmas about LegPINio-LegPINi exchange */ +/******************************************/ + +#ifdef LegPINioLegPINi +lemma legPINio_legPINi_functional: exists-trace +" + Ex #i1 #i2 . + InitWillDoLegPINio()[+] @i1 & RespWillDoLegPINi()[+] @i2 & + (Ex idI1 idR1 capI1 capR1 idI2 idR2 capI2 capR2 lk1 lk2 aco1 aco2 #j1 #j2 . + InitiatorFinishedLegPairing(idI1, capI1, idR1, capR1, lk1, aco1) @j1 & + ResponderFinishedLegPairing(idR2, capR2, idI2, capI2, lk2, aco2) @j2 + ) +" + +lemma legPINio_legPINi_auth_init: +" + All #i1 #i2 . + InitWillDoLegPINio()[+] @i1 & RespWillDoLegPINi()[+] @i2 ==> + (All idI idR capI1 capR1 lk aco m #k1 . + InitRecvMsg(idI, capI1, idR, capR1, lk, aco, m) @k1 ==> + (Ex capI2 capR2 #k2 . + ResponderFinishedLegPairing(idR, capR2, idI, capI2, lk, aco) @k2 + ) + ) +" + +lemma legPINio_legPINi_auth_resp: +" + All #i1 #i2 . + InitWillDoLegPINio()[+] @i1 & RespWillDoLegPINi()[+] @i2 ==> + (All idI idR capI1 capR1 lk aco m #k1 . + RespRecvSendMsg(idR, capR1, idI, capI1, lk, aco, m) @k1 ==> + (Ex capI2 capR2 #k2 . + InitiatorFinishedLegPairing(idI, capI2, idR, capR2, lk, aco) @k2 + ) + ) +" + +lemma legPINio_legPINi_weaksecret_init: +" + All #i1 #i2 . + InitWillDoLegPINio()[+] @i1 & RespWillDoLegPINi()[+] @i2 ==> + (All idI idR capI capR lk aco #k1 . + InitiatorFinishedLegPairing(idI, capI, idR, capR, lk, aco) @k1 ==> + not (Ex #k2 . K(lk) @k2 ) + ) +" + +lemma legPINio_legPINi_weaksecret_resp: +" + All #i1 #i2 . + InitWillDoLegPINio()[+] @i1 & RespWillDoLegPINi()[+] @i2 ==> + (All idI idR capI capR lk aco #k1 . + ResponderFinishedLegPairing(idR, capR, idI, capI, lk, aco) @k1 ==> + not (Ex #k2 . K(lk) @k2 ) + ) +" + +lemma legPINio_legPINi_double_impersonation: +" + All #i1 #i2 . + InitWillDoLegPINio()[+] @i1 & RespWillDoLegPINi()[+] @i2 ==> + (All idI1 idR1 capI1 capR1 idI2 idR2 capI2 capR2 lk1 lk2 aco1 aco2 #j1 #j2 . + InitiatorFinishedLegPairing(idI1, capI1, idR1, capR1, lk1, aco1) @j1 & + ResponderFinishedLegPairing(idR2, capR2, idI2, capI2, lk2, aco2) @j2 ==> + not (Ex #k1 #k2 . + K(lk1) @k1 & K(lk2) @k2 + ) + ) +" + +#endif + +/**********************************************/ +/* End lemmas about LegPINio-LegPINi exchange */ +/**********************************************/ + +/******************************************/ +/* Lemmas about LegPINio-LegPINo exchange */ +/******************************************/ + +#ifdef LegPINioLegPINo +lemma legPINio_legPINo_functional: exists-trace +" + Ex #i1 #i2 . + InitWillDoLegPINio()[+] @i1 & RespWillDoLegPINo()[+] @i2 & + (Ex idI1 idR1 capI1 capR1 idI2 idR2 capI2 capR2 lk1 lk2 aco1 aco2 #j1 #j2 . + InitiatorFinishedLegPairing(idI1, capI1, idR1, capR1, lk1, aco1) @j1 & + ResponderFinishedLegPairing(idR2, capR2, idI2, capI2, lk2, aco2) @j2 + ) +" + +lemma legPINio_legPINo_auth_init: +" + All #i1 #i2 . + InitWillDoLegPINio()[+] @i1 & RespWillDoLegPINo()[+] @i2 ==> + (All idI idR capI1 capR1 lk aco m #k1 . + InitRecvMsg(idI, capI1, idR, capR1, lk, aco, m) @k1 ==> + (Ex capI2 capR2 #k2 . + ResponderFinishedLegPairing(idR, capR2, idI, capI2, lk, aco) @k2 + ) + ) +" + +lemma legPINio_legPINo_auth_resp: +" + All #i1 #i2 . + InitWillDoLegPINio()[+] @i1 & RespWillDoLegPINo()[+] @i2 ==> + (All idI idR capI1 capR1 lk aco m #k1 . + RespRecvSendMsg(idR, capR1, idI, capI1, lk, aco, m) @k1 ==> + (Ex capI2 capR2 #k2 . + InitiatorFinishedLegPairing(idI, capI2, idR, capR2, lk, aco) @k2 + ) + ) +" + +lemma legPINio_legPINo_weaksecret_init: +" + All #i1 #i2 . + InitWillDoLegPINio()[+] @i1 & RespWillDoLegPINo()[+] @i2 ==> + (All idI idR capI capR lk aco #k1 . + InitiatorFinishedLegPairing(idI, capI, idR, capR, lk, aco) @k1 ==> + not (Ex #k2 . K(lk) @k2 ) + ) +" + +lemma legPINio_legPINo_weaksecret_resp: +" + All #i1 #i2 . + InitWillDoLegPINio()[+] @i1 & RespWillDoLegPINo()[+] @i2 ==> + (All idI idR capI capR lk aco #k1 . + ResponderFinishedLegPairing(idR, capR, idI, capI, lk, aco) @k1 ==> + not (Ex #k2 . K(lk) @k2 ) + ) +" + +lemma legPINio_legPINo_double_impersonation: +" + All #i1 #i2 . + InitWillDoLegPINio()[+] @i1 & RespWillDoLegPINo()[+] @i2 ==> + (All idI1 idR1 capI1 capR1 idI2 idR2 capI2 capR2 lk1 lk2 aco1 aco2 #j1 #j2 . + InitiatorFinishedLegPairing(idI1, capI1, idR1, capR1, lk1, aco1) @j1 & + ResponderFinishedLegPairing(idR2, capR2, idI2, capI2, lk2, aco2) @j2 ==> + not (Ex #k1 #k2 . + K(lk1) @k1 & K(lk2) @k2 + ) + ) +" + +#endif + +/**********************************************/ +/* End lemmas about LegPINio-LegPINo exchange */ +/**********************************************/ + +/*******************************************/ +/* Lemmas about LegPINio-LegPINio exchange */ +/*******************************************/ + +#ifdef LegPINioLegPINio +lemma legPINio_legPINio_functional: exists-trace +" + Ex #i1 #i2 . + InitWillDoLegPINio()[+] @i1 & RespWillDoLegPINio()[+] @i2 & + (Ex idI1 idR1 capI1 capR1 idI2 idR2 capI2 capR2 lk1 lk2 aco1 aco2 #j1 #j2 . + InitiatorFinishedLegPairing(idI1, capI1, idR1, capR1, lk1, aco1) @j1 & + ResponderFinishedLegPairing(idR2, capR2, idI2, capI2, lk2, aco2) @j2 + ) +" + +lemma legPINio_legPINio_auth_init: +" + All #i1 #i2 . + InitWillDoLegPINio()[+] @i1 & RespWillDoLegPINio()[+] @i2 ==> + (All idI idR capI1 capR1 lk aco m #k1 . + InitRecvMsg(idI, capI1, idR, capR1, lk, aco, m) @k1 ==> + (Ex capI2 capR2 #k2 . + ResponderFinishedLegPairing(idR, capR2, idI, capI2, lk, aco) @k2 + ) + ) +" + +lemma legPINio_legPINio_auth_resp: +" + All #i1 #i2 . + InitWillDoLegPINio()[+] @i1 & RespWillDoLegPINio()[+] @i2 ==> + (All idI idR capI1 capR1 lk aco m #k1 . + RespRecvSendMsg(idR, capR1, idI, capI1, lk, aco, m) @k1 ==> + (Ex capI2 capR2 #k2 . + InitiatorFinishedLegPairing(idI, capI2, idR, capR2, lk, aco) @k2 + ) + ) +" + +lemma legPINio_legPINio_weaksecret_init: +" + All #i1 #i2 . + InitWillDoLegPINio()[+] @i1 & RespWillDoLegPINio()[+] @i2 ==> + (All idI idR capI capR lk aco #k1 . + InitiatorFinishedLegPairing(idI, capI, idR, capR, lk, aco) @k1 ==> + not (Ex #k2 . K(lk) @k2 ) + ) +" + +lemma legPINio_legPINio_weaksecret_resp: +" + All #i1 #i2 . + InitWillDoLegPINio()[+] @i1 & RespWillDoLegPINio()[+] @i2 ==> + (All idI idR capI capR lk aco #k1 . + ResponderFinishedLegPairing(idR, capR, idI, capI, lk, aco) @k1 ==> + not (Ex #k2 . K(lk) @k2 ) + ) +" + +lemma legPINio_legPINio_double_impersonation: +" + All #i1 #i2 . + InitWillDoLegPINio()[+] @i1 & RespWillDoLegPINio()[+] @i2 ==> + (All idI1 idR1 capI1 capR1 idI2 idR2 capI2 capR2 lk1 lk2 aco1 aco2 #j1 #j2 . + InitiatorFinishedLegPairing(idI1, capI1, idR1, capR1, lk1, aco1) @j1 & + ResponderFinishedLegPairing(idR2, capR2, idI2, capI2, lk2, aco2) @j2 ==> + not (Ex #k1 #k2 . + K(lk1) @k1 & K(lk2) @k2 + ) + ) +" + +#endif + +/***********************************************/ +/* End lemmas about LegPINio-LegPINio exchange */ +/***********************************************/ + +/*************************************/ +/* Lemmas about SecJW-SecJW exchange */ +/*************************************/ + +#ifdef SecJWSecJW +lemma secJW_secJW_functional: exists-trace +" + Ex #i1 #i2 . + InitWillDoSecJW()[+] @i1 & RespWillDoSecJW()[+] @i2 & + (Ex idI1 idR1 capI1 capR1 pkI1 pkR1 dh1 ltk1 idI2 idR2 capI2 capR2 pkI2 pkR2 dh2 ltk2 #j1 #j2 . + InitiatorFinishedSecPairing(idI1, capI1, idR1, capR1, pkI1, pkR1, dh1, ltk1) @j1 & + ResponderFinishedSecPairing(idR2, capR2, idI2, capI2, pkR2, pkI2, dh2, ltk2) @j2 + ) +" + +lemma secJW_secJW_auth_init: +" + All #i1 #i2 . + InitWillDoSecJW()[+] @i1 & RespWillDoSecJW()[+] @i2 ==> + (All idI idR capI capR pkI pkR dh ltk #k1 . + InitiatorFinishedSecPairing(idI, capI, idR, capR, pkI, pkR, dh, ltk) @k1 ==> + (Ex ni nr ri rr ei er #k2 . + RespDoneDHKeyCheck(idR, capR, idI, capI, pkR, pkI, dh, nr, ni, rr, ri, er, ei) @k2 + ) + ) +" + +lemma secJW_secJW_auth_resp: +" + All #i1 #i2 . + InitWillDoSecJW()[+] @i1 & RespWillDoSecJW()[+] @i2 ==> + (All idI idR capI capR pkI pkR dh ltk #k1 . + ResponderFinishedSecPairing(idR, capR, idI, capI, pkR, pkI, dh, ltk) @k1 ==> + (Ex #k2 . + InitiatorFinishedSecPairing(idI, capI, idR, capR, pkI, pkR, dh, ltk) @k2 + ) + ) +" + +lemma secJW_secJW_weaksecret_init: +" + All #i1 #i2 . + InitWillDoSecJW()[+] @i1 & RespWillDoSecJW()[+] @i2 ==> + (All idI idR capI capR pkI pkR dh ltk #k1 . + InitiatorFinishedSecPairing(idI, capI, idR, capR, pkI, pkR, dh, ltk) @k1 ==> + not (Ex #k2 . K(ltk) @k2) + ) +" + +lemma secJW_secJW_weaksecret_resp: +" + All #i1 #i2 . + InitWillDoSecJW()[+] @i1 & RespWillDoSecJW()[+] @i2 ==> + (All idI idR capI capR pkI pkR dh ltk #k1 . + ResponderFinishedSecPairing(idR, capR, idI, capI, pkR, pkI, dh, ltk) @k1 ==> + not (Ex #k2 . K(ltk) @k2) + ) +" + +lemma secJW_secJW_double_impersonation: +" + All #i1 #i2 . + InitWillDoSecJW()[+] @i1 & RespWillDoSecJW()[+] @i2 ==> + (All idI1 idR1 capI1 capR1 pkI1 pkR1 dh1 ltk1 idI2 idR2 capI2 capR2 pkI2 pkR2 dh2 ltk2 #j1 #j2 . + InitiatorFinishedSecPairing(idI1, capI1, idR1, capR1, pkI1, pkR1, dh1, ltk1) @j1 & + ResponderFinishedSecPairing(idR2, capR2, idI2, capI2, pkR2, pkI2, dh2, ltk2) @j2 ==> + not (Ex #k1 #k2 . + K(ltk1) @k1 & K(ltk2) @k2 + ) + ) +" + +#endif + +/*****************************************/ +/* End lemmas about SecJW-SecJW exchange */ +/*****************************************/ + +/**************************************/ +/* Lemmas about SecJW-SecPEi exchange */ +/**************************************/ + +#ifdef SecJWSecPEi +lemma secJW_secPEi_functional: exists-trace +" + Ex #i1 #i2 . + InitWillDoSecJW()[+] @i1 & RespWillDoSecPEi()[+] @i2 & + (Ex idI1 idR1 capI1 capR1 pkI1 pkR1 dh1 ltk1 idI2 idR2 capI2 capR2 pkI2 pkR2 dh2 ltk2 #j1 #j2 . + InitiatorFinishedSecPairing(idI1, capI1, idR1, capR1, pkI1, pkR1, dh1, ltk1) @j1 & + ResponderFinishedSecPairing(idR2, capR2, idI2, capI2, pkR2, pkI2, dh2, ltk2) @j2 + ) +" + +lemma secJW_secPEi_auth_init: +" + All #i1 #i2 . + InitWillDoSecJW()[+] @i1 & RespWillDoSecPEi()[+] @i2 ==> + (All idI idR capI capR pkI pkR dh ltk #k1 . + InitiatorFinishedSecPairing(idI, capI, idR, capR, pkI, pkR, dh, ltk) @k1 ==> + (Ex ni nr ri rr ei er #k2 . + RespDoneDHKeyCheck(idR, capR, idI, capI, pkR, pkI, dh, nr, ni, rr, ri, er, ei) @k2 + ) + ) +" + +lemma secJW_secPEi_auth_resp: +" + All #i1 #i2 . + InitWillDoSecJW()[+] @i1 & RespWillDoSecPEi()[+] @i2 ==> + (All idI idR capI capR pkI pkR dh ltk #k1 . + ResponderFinishedSecPairing(idR, capR, idI, capI, pkR, pkI, dh, ltk) @k1 ==> + (Ex #k2 . + InitiatorFinishedSecPairing(idI, capI, idR, capR, pkI, pkR, dh, ltk) @k2 + ) + ) +" + +lemma secJW_secPEi_weaksecret_init: +" + All #i1 #i2 . + InitWillDoSecJW()[+] @i1 & RespWillDoSecPEi()[+] @i2 ==> + (All idI idR capI capR pkI pkR dh ltk #k1 . + InitiatorFinishedSecPairing(idI, capI, idR, capR, pkI, pkR, dh, ltk) @k1 ==> + not (Ex #k2 . K(ltk) @k2) + ) +" + +lemma secJW_secPEi_weaksecret_resp: +" + All #i1 #i2 . + InitWillDoSecJW()[+] @i1 & RespWillDoSecPEi()[+] @i2 ==> + (All idI idR capI capR pkI pkR dh ltk #k1 . + ResponderFinishedSecPairing(idR, capR, idI, capI, pkR, pkI, dh, ltk) @k1 ==> + not (Ex #k2 . K(ltk) @k2) + ) +" + +lemma secJW_secPEi_double_impersonation: +" + All #i1 #i2 . + InitWillDoSecJW()[+] @i1 & RespWillDoSecPEi()[+] @i2 ==> + (All idI1 idR1 capI1 capR1 pkI1 pkR1 dh1 ltk1 idI2 idR2 capI2 capR2 pkI2 pkR2 dh2 ltk2 #j1 #j2 . + InitiatorFinishedSecPairing(idI1, capI1, idR1, capR1, pkI1, pkR1, dh1, ltk1) @j1 & + ResponderFinishedSecPairing(idR2, capR2, idI2, capI2, pkR2, pkI2, dh2, ltk2) @j2 ==> + not (Ex #k1 #k2 . + K(ltk1) @k1 & K(ltk2) @k2 + ) + ) +" + +#endif + +/******************************************/ +/* End lemmas about SecJW-SecPEi exchange */ +/******************************************/ + +/**************************************/ +/* Lemmas about SecJW-SecPEo exchange */ +/**************************************/ + +#ifdef SecJWSecPEo +lemma secJW_secPEo_functional: exists-trace +" + Ex #i1 #i2 . + InitWillDoSecJW()[+] @i1 & RespWillDoSecPEo()[+] @i2 & + (Ex idI1 idR1 capI1 capR1 pkI1 pkR1 dh1 ltk1 idI2 idR2 capI2 capR2 pkI2 pkR2 dh2 ltk2 #j1 #j2 . + InitiatorFinishedSecPairing(idI1, capI1, idR1, capR1, pkI1, pkR1, dh1, ltk1) @j1 & + ResponderFinishedSecPairing(idR2, capR2, idI2, capI2, pkR2, pkI2, dh2, ltk2) @j2 + ) +" + +lemma secJW_secPEo_auth_init: +" + All #i1 #i2 . + InitWillDoSecJW()[+] @i1 & RespWillDoSecPEo()[+] @i2 ==> + (All idI idR capI capR pkI pkR dh ltk #k1 . + InitiatorFinishedSecPairing(idI, capI, idR, capR, pkI, pkR, dh, ltk) @k1 ==> + (Ex ni nr ri rr ei er #k2 . + RespDoneDHKeyCheck(idR, capR, idI, capI, pkR, pkI, dh, nr, ni, rr, ri, er, ei) @k2 + ) + ) +" + +lemma secJW_secPEo_auth_resp: +" + All #i1 #i2 . + InitWillDoSecJW()[+] @i1 & RespWillDoSecPEo()[+] @i2 ==> + (All idI idR capI capR pkI pkR dh ltk #k1 . + ResponderFinishedSecPairing(idR, capR, idI, capI, pkR, pkI, dh, ltk) @k1 ==> + (Ex #k2 . + InitiatorFinishedSecPairing(idI, capI, idR, capR, pkI, pkR, dh, ltk) @k2 + ) + ) +" + +lemma secJW_secPEo_weaksecret_init: +" + All #i1 #i2 . + InitWillDoSecJW()[+] @i1 & RespWillDoSecPEo()[+] @i2 ==> + (All idI idR capI capR pkI pkR dh ltk #k1 . + InitiatorFinishedSecPairing(idI, capI, idR, capR, pkI, pkR, dh, ltk) @k1 ==> + not (Ex #k2 . K(ltk) @k2) + ) +" + +lemma secJW_secPEo_weaksecret_resp: +" + All #i1 #i2 . + InitWillDoSecJW()[+] @i1 & RespWillDoSecPEo()[+] @i2 ==> + (All idI idR capI capR pkI pkR dh ltk #k1 . + ResponderFinishedSecPairing(idR, capR, idI, capI, pkR, pkI, dh, ltk) @k1 ==> + not (Ex #k2 . K(ltk) @k2) + ) +" + +lemma secJW_secPEo_double_impersonation: +" + All #i1 #i2 . + InitWillDoSecJW()[+] @i1 & RespWillDoSecPEo()[+] @i2 ==> + (All idI1 idR1 capI1 capR1 pkI1 pkR1 dh1 ltk1 idI2 idR2 capI2 capR2 pkI2 pkR2 dh2 ltk2 #j1 #j2 . + InitiatorFinishedSecPairing(idI1, capI1, idR1, capR1, pkI1, pkR1, dh1, ltk1) @j1 & + ResponderFinishedSecPairing(idR2, capR2, idI2, capI2, pkR2, pkI2, dh2, ltk2) @j2 ==> + not (Ex #k1 #k2 . + K(ltk1) @k1 & K(ltk2) @k2 + ) + ) +" + +#endif + +/******************************************/ +/* End lemmas about SecJW-SecPEo exchange */ +/******************************************/ + +/***************************************/ +/* Lemmas about SecJW-SecPEio exchange */ +/***************************************/ + +#ifdef SecJWSecPEio +lemma secJW_secPEio_functional: exists-trace +" + Ex #i1 #i2 . + InitWillDoSecJW()[+] @i1 & RespWillDoSecPEio()[+] @i2 & + (Ex idI1 idR1 capI1 capR1 pkI1 pkR1 dh1 ltk1 idI2 idR2 capI2 capR2 pkI2 pkR2 dh2 ltk2 #j1 #j2 . + InitiatorFinishedSecPairing(idI1, capI1, idR1, capR1, pkI1, pkR1, dh1, ltk1) @j1 & + ResponderFinishedSecPairing(idR2, capR2, idI2, capI2, pkR2, pkI2, dh2, ltk2) @j2 + ) +" + +lemma secJW_secPEio_auth_init: +" + All #i1 #i2 . + InitWillDoSecJW()[+] @i1 & RespWillDoSecPEio()[+] @i2 ==> + (All idI idR capI capR pkI pkR dh ltk #k1 . + InitiatorFinishedSecPairing(idI, capI, idR, capR, pkI, pkR, dh, ltk) @k1 ==> + (Ex ni nr ri rr ei er #k2 . + RespDoneDHKeyCheck(idR, capR, idI, capI, pkR, pkI, dh, nr, ni, rr, ri, er, ei) @k2 + ) + ) +" + +lemma secJW_secPEio_auth_resp: +" + All #i1 #i2 . + InitWillDoSecJW()[+] @i1 & RespWillDoSecPEio()[+] @i2 ==> + (All idI idR capI capR pkI pkR dh ltk #k1 . + ResponderFinishedSecPairing(idR, capR, idI, capI, pkR, pkI, dh, ltk) @k1 ==> + (Ex #k2 . + InitiatorFinishedSecPairing(idI, capI, idR, capR, pkI, pkR, dh, ltk) @k2 + ) + ) +" + +lemma secJW_secPEio_weaksecret_init: +" + All #i1 #i2 . + InitWillDoSecJW()[+] @i1 & RespWillDoSecPEio()[+] @i2 ==> + (All idI idR capI capR pkI pkR dh ltk #k1 . + InitiatorFinishedSecPairing(idI, capI, idR, capR, pkI, pkR, dh, ltk) @k1 ==> + not (Ex #k2 . K(ltk) @k2) + ) +" + +lemma secJW_secPEio_weaksecret_resp: +" + All #i1 #i2 . + InitWillDoSecJW()[+] @i1 & RespWillDoSecPEio()[+] @i2 ==> + (All idI idR capI capR pkI pkR dh ltk #k1 . + ResponderFinishedSecPairing(idR, capR, idI, capI, pkR, pkI, dh, ltk) @k1 ==> + not (Ex #k2 . K(ltk) @k2) + ) +" + +lemma secJW_secPEio_double_impersonation: +" + All #i1 #i2 . + InitWillDoSecJW()[+] @i1 & RespWillDoSecPEio()[+] @i2 ==> + (All idI1 idR1 capI1 capR1 pkI1 pkR1 dh1 ltk1 idI2 idR2 capI2 capR2 pkI2 pkR2 dh2 ltk2 #j1 #j2 . + InitiatorFinishedSecPairing(idI1, capI1, idR1, capR1, pkI1, pkR1, dh1, ltk1) @j1 & + ResponderFinishedSecPairing(idR2, capR2, idI2, capI2, pkR2, pkI2, dh2, ltk2) @j2 ==> + not (Ex #k1 #k2 . + K(ltk1) @k1 & K(ltk2) @k2 + ) + ) +" + +#endif + +/*******************************************/ +/* End lemmas about SecJW-SecPEio exchange */ +/*******************************************/ + +/*************************************/ +/* Lemmas about SecJW-SecNC exchange */ +/*************************************/ + +#ifdef SecJWSecNC +lemma secJW_secNC_functional: exists-trace +" + Ex #i1 #i2 . + InitWillDoSecJW()[+] @i1 & RespWillDoSecNC()[+] @i2 & + (Ex idI1 idR1 capI1 capR1 pkI1 pkR1 dh1 ltk1 idI2 idR2 capI2 capR2 pkI2 pkR2 dh2 ltk2 #j1 #j2 . + InitiatorFinishedSecPairing(idI1, capI1, idR1, capR1, pkI1, pkR1, dh1, ltk1) @j1 & + ResponderFinishedSecPairing(idR2, capR2, idI2, capI2, pkR2, pkI2, dh2, ltk2) @j2 + ) +" + +lemma secJW_secNC_auth_init: +" + All #i1 #i2 . + InitWillDoSecJW()[+] @i1 & RespWillDoSecNC()[+] @i2 ==> + (All idI idR capI capR pkI pkR dh ltk #k1 . + InitiatorFinishedSecPairing(idI, capI, idR, capR, pkI, pkR, dh, ltk) @k1 ==> + (Ex ni nr ri rr ei er #k2 . + RespDoneDHKeyCheck(idR, capR, idI, capI, pkR, pkI, dh, nr, ni, rr, ri, er, ei) @k2 + ) + ) +" + +lemma secJW_secNC_auth_resp: +" + All #i1 #i2 . + InitWillDoSecJW()[+] @i1 & RespWillDoSecNC()[+] @i2 ==> + (All idI idR capI capR pkI pkR dh ltk #k1 . + ResponderFinishedSecPairing(idR, capR, idI, capI, pkR, pkI, dh, ltk) @k1 ==> + (Ex #k2 . + InitiatorFinishedSecPairing(idI, capI, idR, capR, pkI, pkR, dh, ltk) @k2 + ) + ) +" + +lemma secJW_secNC_weaksecret_init: +" + All #i1 #i2 . + InitWillDoSecJW()[+] @i1 & RespWillDoSecNC()[+] @i2 ==> + (All idI idR capI capR pkI pkR dh ltk #k1 . + InitiatorFinishedSecPairing(idI, capI, idR, capR, pkI, pkR, dh, ltk) @k1 ==> + not (Ex #k2 . K(ltk) @k2) + ) +" + +lemma secJW_secNC_weaksecret_resp: +" + All #i1 #i2 . + InitWillDoSecJW()[+] @i1 & RespWillDoSecNC()[+] @i2 ==> + (All idI idR capI capR pkI pkR dh ltk #k1 . + ResponderFinishedSecPairing(idR, capR, idI, capI, pkR, pkI, dh, ltk) @k1 ==> + not (Ex #k2 . K(ltk) @k2) + ) +" + +lemma secJW_secNC_double_impersonation: +" + All #i1 #i2 . + InitWillDoSecJW()[+] @i1 & RespWillDoSecNC()[+] @i2 ==> + (All idI1 idR1 capI1 capR1 pkI1 pkR1 dh1 ltk1 idI2 idR2 capI2 capR2 pkI2 pkR2 dh2 ltk2 #j1 #j2 . + InitiatorFinishedSecPairing(idI1, capI1, idR1, capR1, pkI1, pkR1, dh1, ltk1) @j1 & + ResponderFinishedSecPairing(idR2, capR2, idI2, capI2, pkR2, pkI2, dh2, ltk2) @j2 ==> + not (Ex #k1 #k2 . + K(ltk1) @k1 & K(ltk2) @k2 + ) + ) +" + +#endif + +/*****************************************/ +/* End lemmas about SecJW-SecNC exchange */ +/*****************************************/ + +/***************************************/ +/* Lemmas about SecJW-SecOOBi exchange */ +/***************************************/ + +#ifdef SecJWSecOOBi +lemma secJW_secOOBi_functional: exists-trace +" + Ex #i1 #i2 . + InitWillDoSecJW()[+] @i1 & RespWillDoSecOOBi()[+] @i2 & + (Ex idI1 idR1 capI1 capR1 pkI1 pkR1 dh1 ltk1 idI2 idR2 capI2 capR2 pkI2 pkR2 dh2 ltk2 #j1 #j2 . + InitiatorFinishedSecPairing(idI1, capI1, idR1, capR1, pkI1, pkR1, dh1, ltk1) @j1 & + ResponderFinishedSecPairing(idR2, capR2, idI2, capI2, pkR2, pkI2, dh2, ltk2) @j2 + ) +" + +lemma secJW_secOOBi_auth_init: +" + All #i1 #i2 . + InitWillDoSecJW()[+] @i1 & RespWillDoSecOOBi()[+] @i2 ==> + (All idI idR capI capR pkI pkR dh ltk #k1 . + InitiatorFinishedSecPairing(idI, capI, idR, capR, pkI, pkR, dh, ltk) @k1 ==> + (Ex ni nr ri rr ei er #k2 . + RespDoneDHKeyCheck(idR, capR, idI, capI, pkR, pkI, dh, nr, ni, rr, ri, er, ei) @k2 + ) + ) +" + +lemma secJW_secOOBi_auth_resp: +" + All #i1 #i2 . + InitWillDoSecJW()[+] @i1 & RespWillDoSecOOBi()[+] @i2 ==> + (All idI idR capI capR pkI pkR dh ltk #k1 . + ResponderFinishedSecPairing(idR, capR, idI, capI, pkR, pkI, dh, ltk) @k1 ==> + (Ex #k2 . + InitiatorFinishedSecPairing(idI, capI, idR, capR, pkI, pkR, dh, ltk) @k2 + ) + ) +" + +lemma secJW_secOOBi_weaksecret_init: +" + All #i1 #i2 . + InitWillDoSecJW()[+] @i1 & RespWillDoSecOOBi()[+] @i2 ==> + (All idI idR capI capR pkI pkR dh ltk #k1 . + InitiatorFinishedSecPairing(idI, capI, idR, capR, pkI, pkR, dh, ltk) @k1 ==> + not (Ex #k2 . K(ltk) @k2) + ) +" + +lemma secJW_secOOBi_weaksecret_resp: +" + All #i1 #i2 . + InitWillDoSecJW()[+] @i1 & RespWillDoSecOOBi()[+] @i2 ==> + (All idI idR capI capR pkI pkR dh ltk #k1 . + ResponderFinishedSecPairing(idR, capR, idI, capI, pkR, pkI, dh, ltk) @k1 ==> + not (Ex #k2 . K(ltk) @k2) + ) +" + +lemma secJW_secOOBi_double_impersonation: +" + All #i1 #i2 . + InitWillDoSecJW()[+] @i1 & RespWillDoSecOOBi()[+] @i2 ==> + (All idI1 idR1 capI1 capR1 pkI1 pkR1 dh1 ltk1 idI2 idR2 capI2 capR2 pkI2 pkR2 dh2 ltk2 #j1 #j2 . + InitiatorFinishedSecPairing(idI1, capI1, idR1, capR1, pkI1, pkR1, dh1, ltk1) @j1 & + ResponderFinishedSecPairing(idR2, capR2, idI2, capI2, pkR2, pkI2, dh2, ltk2) @j2 ==> + not (Ex #k1 #k2 . + K(ltk1) @k1 & K(ltk2) @k2 + ) + ) +" + +#endif + +/*******************************************/ +/* End lemmas about SecJW-SecOOBi exchange */ +/*******************************************/ + +/***************************************/ +/* Lemmas about SecJW-SecOOBo exchange */ +/***************************************/ + +#ifdef SecJWSecOOBo +lemma secJW_secOOBo_functional: exists-trace +" + Ex #i1 #i2 . + InitWillDoSecJW()[+] @i1 & RespWillDoSecOOBo()[+] @i2 & + (Ex idI1 idR1 capI1 capR1 pkI1 pkR1 dh1 ltk1 idI2 idR2 capI2 capR2 pkI2 pkR2 dh2 ltk2 #j1 #j2 . + InitiatorFinishedSecPairing(idI1, capI1, idR1, capR1, pkI1, pkR1, dh1, ltk1) @j1 & + ResponderFinishedSecPairing(idR2, capR2, idI2, capI2, pkR2, pkI2, dh2, ltk2) @j2 + ) +" + +lemma secJW_secOOBo_auth_init: +" + All #i1 #i2 . + InitWillDoSecJW()[+] @i1 & RespWillDoSecOOBo()[+] @i2 ==> + (All idI idR capI capR pkI pkR dh ltk #k1 . + InitiatorFinishedSecPairing(idI, capI, idR, capR, pkI, pkR, dh, ltk) @k1 ==> + (Ex ni nr ri rr ei er #k2 . + RespDoneDHKeyCheck(idR, capR, idI, capI, pkR, pkI, dh, nr, ni, rr, ri, er, ei) @k2 + ) + ) +" + +lemma secJW_secOOBo_auth_resp: +" + All #i1 #i2 . + InitWillDoSecJW()[+] @i1 & RespWillDoSecOOBo()[+] @i2 ==> + (All idI idR capI capR pkI pkR dh ltk #k1 . + ResponderFinishedSecPairing(idR, capR, idI, capI, pkR, pkI, dh, ltk) @k1 ==> + (Ex #k2 . + InitiatorFinishedSecPairing(idI, capI, idR, capR, pkI, pkR, dh, ltk) @k2 + ) + ) +" + +lemma secJW_secOOBo_weaksecret_init: +" + All #i1 #i2 . + InitWillDoSecJW()[+] @i1 & RespWillDoSecOOBo()[+] @i2 ==> + (All idI idR capI capR pkI pkR dh ltk #k1 . + InitiatorFinishedSecPairing(idI, capI, idR, capR, pkI, pkR, dh, ltk) @k1 ==> + not (Ex #k2 . K(ltk) @k2) + ) +" + +lemma secJW_secOOBo_weaksecret_resp: +" + All #i1 #i2 . + InitWillDoSecJW()[+] @i1 & RespWillDoSecOOBo()[+] @i2 ==> + (All idI idR capI capR pkI pkR dh ltk #k1 . + ResponderFinishedSecPairing(idR, capR, idI, capI, pkR, pkI, dh, ltk) @k1 ==> + not (Ex #k2 . K(ltk) @k2) + ) +" + +lemma secJW_secOOBo_double_impersonation: +" + All #i1 #i2 . + InitWillDoSecJW()[+] @i1 & RespWillDoSecOOBo()[+] @i2 ==> + (All idI1 idR1 capI1 capR1 pkI1 pkR1 dh1 ltk1 idI2 idR2 capI2 capR2 pkI2 pkR2 dh2 ltk2 #j1 #j2 . + InitiatorFinishedSecPairing(idI1, capI1, idR1, capR1, pkI1, pkR1, dh1, ltk1) @j1 & + ResponderFinishedSecPairing(idR2, capR2, idI2, capI2, pkR2, pkI2, dh2, ltk2) @j2 ==> + not (Ex #k1 #k2 . + K(ltk1) @k1 & K(ltk2) @k2 + ) + ) +" + +#endif + +/*******************************************/ +/* End lemmas about SecJW-SecOOBo exchange */ +/*******************************************/ + +/****************************************/ +/* Lemmas about SecJW-SecOOBio exchange */ +/****************************************/ + +#ifdef SecJWSecOOBio +lemma secJW_secOOBio_functional: exists-trace +" + Ex #i1 #i2 . + InitWillDoSecJW()[+] @i1 & RespWillDoSecOOBio()[+] @i2 & + (Ex idI1 idR1 capI1 capR1 pkI1 pkR1 dh1 ltk1 idI2 idR2 capI2 capR2 pkI2 pkR2 dh2 ltk2 #j1 #j2 . + InitiatorFinishedSecPairing(idI1, capI1, idR1, capR1, pkI1, pkR1, dh1, ltk1) @j1 & + ResponderFinishedSecPairing(idR2, capR2, idI2, capI2, pkR2, pkI2, dh2, ltk2) @j2 + ) +" + +lemma secJW_secOOBio_auth_init: +" + All #i1 #i2 . + InitWillDoSecJW()[+] @i1 & RespWillDoSecOOBio()[+] @i2 ==> + (All idI idR capI capR pkI pkR dh ltk #k1 . + InitiatorFinishedSecPairing(idI, capI, idR, capR, pkI, pkR, dh, ltk) @k1 ==> + (Ex ni nr ri rr ei er #k2 . + RespDoneDHKeyCheck(idR, capR, idI, capI, pkR, pkI, dh, nr, ni, rr, ri, er, ei) @k2 + ) + ) +" + +lemma secJW_secOOBio_auth_resp: +" + All #i1 #i2 . + InitWillDoSecJW()[+] @i1 & RespWillDoSecOOBio()[+] @i2 ==> + (All idI idR capI capR pkI pkR dh ltk #k1 . + ResponderFinishedSecPairing(idR, capR, idI, capI, pkR, pkI, dh, ltk) @k1 ==> + (Ex #k2 . + InitiatorFinishedSecPairing(idI, capI, idR, capR, pkI, pkR, dh, ltk) @k2 + ) + ) +" + +lemma secJW_secOOBio_weaksecret_init: +" + All #i1 #i2 . + InitWillDoSecJW()[+] @i1 & RespWillDoSecOOBio()[+] @i2 ==> + (All idI idR capI capR pkI pkR dh ltk #k1 . + InitiatorFinishedSecPairing(idI, capI, idR, capR, pkI, pkR, dh, ltk) @k1 ==> + not (Ex #k2 . K(ltk) @k2) + ) +" + +lemma secJW_secOOBio_weaksecret_resp: +" + All #i1 #i2 . + InitWillDoSecJW()[+] @i1 & RespWillDoSecOOBio()[+] @i2 ==> + (All idI idR capI capR pkI pkR dh ltk #k1 . + ResponderFinishedSecPairing(idR, capR, idI, capI, pkR, pkI, dh, ltk) @k1 ==> + not (Ex #k2 . K(ltk) @k2) + ) +" + +lemma secJW_secOOBio_double_impersonation: +" + All #i1 #i2 . + InitWillDoSecJW()[+] @i1 & RespWillDoSecOOBio()[+] @i2 ==> + (All idI1 idR1 capI1 capR1 pkI1 pkR1 dh1 ltk1 idI2 idR2 capI2 capR2 pkI2 pkR2 dh2 ltk2 #j1 #j2 . + InitiatorFinishedSecPairing(idI1, capI1, idR1, capR1, pkI1, pkR1, dh1, ltk1) @j1 & + ResponderFinishedSecPairing(idR2, capR2, idI2, capI2, pkR2, pkI2, dh2, ltk2) @j2 ==> + not (Ex #k1 #k2 . + K(ltk1) @k1 & K(ltk2) @k2 + ) + ) +" + +#endif + +/********************************************/ +/* End lemmas about SecJW-SecOOBio exchange */ +/********************************************/ + +/**************************************/ +/* Lemmas about SecPEi-SecJW exchange */ +/**************************************/ + +#ifdef SecPEiSecJW +lemma secPEi_secJW_functional: exists-trace +" + Ex #i1 #i2 . + InitWillDoSecPEi()[+] @i1 & RespWillDoSecJW()[+] @i2 & + (Ex idI1 idR1 capI1 capR1 pkI1 pkR1 dh1 ltk1 idI2 idR2 capI2 capR2 pkI2 pkR2 dh2 ltk2 #j1 #j2 . + InitiatorFinishedSecPairing(idI1, capI1, idR1, capR1, pkI1, pkR1, dh1, ltk1) @j1 & + ResponderFinishedSecPairing(idR2, capR2, idI2, capI2, pkR2, pkI2, dh2, ltk2) @j2 + ) +" + +lemma secPEi_secJW_auth_init: +" + All #i1 #i2 . + InitWillDoSecPEi()[+] @i1 & RespWillDoSecJW()[+] @i2 ==> + (All idI idR capI capR pkI pkR dh ltk #k1 . + InitiatorFinishedSecPairing(idI, capI, idR, capR, pkI, pkR, dh, ltk) @k1 ==> + (Ex ni nr ri rr ei er #k2 . + RespDoneDHKeyCheck(idR, capR, idI, capI, pkR, pkI, dh, nr, ni, rr, ri, er, ei) @k2 + ) + ) +" + +lemma secPEi_secJW_auth_resp: +" + All #i1 #i2 . + InitWillDoSecPEi()[+] @i1 & RespWillDoSecJW()[+] @i2 ==> + (All idI idR capI capR pkI pkR dh ltk #k1 . + ResponderFinishedSecPairing(idR, capR, idI, capI, pkR, pkI, dh, ltk) @k1 ==> + (Ex #k2 . + InitiatorFinishedSecPairing(idI, capI, idR, capR, pkI, pkR, dh, ltk) @k2 + ) + ) +" + +lemma secPEi_secJW_weaksecret_init: +" + All #i1 #i2 . + InitWillDoSecPEi()[+] @i1 & RespWillDoSecJW()[+] @i2 ==> + (All idI idR capI capR pkI pkR dh ltk #k1 . + InitiatorFinishedSecPairing(idI, capI, idR, capR, pkI, pkR, dh, ltk) @k1 ==> + not (Ex #k2 . K(ltk) @k2) + ) +" + +lemma secPEi_secJW_weaksecret_resp: +" + All #i1 #i2 . + InitWillDoSecPEi()[+] @i1 & RespWillDoSecJW()[+] @i2 ==> + (All idI idR capI capR pkI pkR dh ltk #k1 . + ResponderFinishedSecPairing(idR, capR, idI, capI, pkR, pkI, dh, ltk) @k1 ==> + not (Ex #k2 . K(ltk) @k2) + ) +" + +lemma secPEi_secJW_double_impersonation: +" + All #i1 #i2 . + InitWillDoSecPEi()[+] @i1 & RespWillDoSecJW()[+] @i2 ==> + (All idI1 idR1 capI1 capR1 pkI1 pkR1 dh1 ltk1 idI2 idR2 capI2 capR2 pkI2 pkR2 dh2 ltk2 #j1 #j2 . + InitiatorFinishedSecPairing(idI1, capI1, idR1, capR1, pkI1, pkR1, dh1, ltk1) @j1 & + ResponderFinishedSecPairing(idR2, capR2, idI2, capI2, pkR2, pkI2, dh2, ltk2) @j2 ==> + not (Ex #k1 #k2 . + K(ltk1) @k1 & K(ltk2) @k2 + ) + ) +" + +#endif + +/******************************************/ +/* End lemmas about SecPEi-SecJW exchange */ +/******************************************/ + +/***************************************/ +/* Lemmas about SecPEi-SecPEi exchange */ +/***************************************/ + +#ifdef SecPEiSecPEi +lemma secPEi_secPEi_functional: exists-trace +" + Ex #i1 #i2 . + InitWillDoSecPEi()[+] @i1 & RespWillDoSecPEi()[+] @i2 & + (Ex idI1 idR1 capI1 capR1 pkI1 pkR1 dh1 ltk1 idI2 idR2 capI2 capR2 pkI2 pkR2 dh2 ltk2 #j1 #j2 . + InitiatorFinishedSecPairing(idI1, capI1, idR1, capR1, pkI1, pkR1, dh1, ltk1) @j1 & + ResponderFinishedSecPairing(idR2, capR2, idI2, capI2, pkR2, pkI2, dh2, ltk2) @j2 + ) +" + +lemma secPEi_secPEi_auth_init: +" + All #i1 #i2 . + InitWillDoSecPEi()[+] @i1 & RespWillDoSecPEi()[+] @i2 ==> + (All idI idR capI capR pkI pkR dh ltk #k1 . + InitiatorFinishedSecPairing(idI, capI, idR, capR, pkI, pkR, dh, ltk) @k1 ==> + (Ex ni nr ri rr ei er #k2 . + RespDoneDHKeyCheck(idR, capR, idI, capI, pkR, pkI, dh, nr, ni, rr, ri, er, ei) @k2 + ) + ) +" + +lemma secPEi_secPEi_auth_resp: +" + All #i1 #i2 . + InitWillDoSecPEi()[+] @i1 & RespWillDoSecPEi()[+] @i2 ==> + (All idI idR capI capR pkI pkR dh ltk #k1 . + ResponderFinishedSecPairing(idR, capR, idI, capI, pkR, pkI, dh, ltk) @k1 ==> + (Ex #k2 . + InitiatorFinishedSecPairing(idI, capI, idR, capR, pkI, pkR, dh, ltk) @k2 + ) + ) +" + +lemma secPEi_secPEi_weaksecret_init: +" + All #i1 #i2 . + InitWillDoSecPEi()[+] @i1 & RespWillDoSecPEi()[+] @i2 ==> + (All idI idR capI capR pkI pkR dh ltk #k1 . + InitiatorFinishedSecPairing(idI, capI, idR, capR, pkI, pkR, dh, ltk) @k1 ==> + not (Ex #k2 . K(ltk) @k2) + ) +" + +lemma secPEi_secPEi_weaksecret_resp: +" + All #i1 #i2 . + InitWillDoSecPEi()[+] @i1 & RespWillDoSecPEi()[+] @i2 ==> + (All idI idR capI capR pkI pkR dh ltk #k1 . + ResponderFinishedSecPairing(idR, capR, idI, capI, pkR, pkI, dh, ltk) @k1 ==> + not (Ex #k2 . K(ltk) @k2) + ) +" + +lemma secPEi_secPEi_double_impersonation: +" + All #i1 #i2 . + InitWillDoSecPEi()[+] @i1 & RespWillDoSecPEi()[+] @i2 ==> + (All idI1 idR1 capI1 capR1 pkI1 pkR1 dh1 ltk1 idI2 idR2 capI2 capR2 pkI2 pkR2 dh2 ltk2 #j1 #j2 . + InitiatorFinishedSecPairing(idI1, capI1, idR1, capR1, pkI1, pkR1, dh1, ltk1) @j1 & + ResponderFinishedSecPairing(idR2, capR2, idI2, capI2, pkR2, pkI2, dh2, ltk2) @j2 ==> + not (Ex #k1 #k2 . + K(ltk1) @k1 & K(ltk2) @k2 + ) + ) +" + +#endif + +/*******************************************/ +/* End lemmas about SecPEi-SecPEi exchange */ +/*******************************************/ + +/***************************************/ +/* Lemmas about SecPEi-SecPEo exchange */ +/***************************************/ + +#ifdef SecPEiSecPEo +lemma secPEi_secPEo_functional: exists-trace +" + Ex #i1 #i2 . + InitWillDoSecPEi()[+] @i1 & RespWillDoSecPEo()[+] @i2 & + (Ex idI1 idR1 capI1 capR1 pkI1 pkR1 dh1 ltk1 idI2 idR2 capI2 capR2 pkI2 pkR2 dh2 ltk2 #j1 #j2 . + InitiatorFinishedSecPairing(idI1, capI1, idR1, capR1, pkI1, pkR1, dh1, ltk1) @j1 & + ResponderFinishedSecPairing(idR2, capR2, idI2, capI2, pkR2, pkI2, dh2, ltk2) @j2 + ) +" + +lemma secPEi_secPEo_auth_init: +" + All #i1 #i2 . + InitWillDoSecPEi()[+] @i1 & RespWillDoSecPEo()[+] @i2 ==> + (All idI idR capI capR pkI pkR dh ltk #k1 . + InitiatorFinishedSecPairing(idI, capI, idR, capR, pkI, pkR, dh, ltk) @k1 ==> + (Ex ni nr ri rr ei er #k2 . + RespDoneDHKeyCheck(idR, capR, idI, capI, pkR, pkI, dh, nr, ni, rr, ri, er, ei) @k2 + ) + ) +" + +lemma secPEi_secPEo_auth_resp: +" + All #i1 #i2 . + InitWillDoSecPEi()[+] @i1 & RespWillDoSecPEo()[+] @i2 ==> + (All idI idR capI capR pkI pkR dh ltk #k1 . + ResponderFinishedSecPairing(idR, capR, idI, capI, pkR, pkI, dh, ltk) @k1 ==> + (Ex #k2 . + InitiatorFinishedSecPairing(idI, capI, idR, capR, pkI, pkR, dh, ltk) @k2 + ) + ) +" + +lemma secPEi_secPEo_weaksecret_init: +" + All #i1 #i2 . + InitWillDoSecPEi()[+] @i1 & RespWillDoSecPEo()[+] @i2 ==> + (All idI idR capI capR pkI pkR dh ltk #k1 . + InitiatorFinishedSecPairing(idI, capI, idR, capR, pkI, pkR, dh, ltk) @k1 ==> + not (Ex #k2 . K(ltk) @k2) + ) +" + +lemma secPEi_secPEo_weaksecret_resp: +" + All #i1 #i2 . + InitWillDoSecPEi()[+] @i1 & RespWillDoSecPEo()[+] @i2 ==> + (All idI idR capI capR pkI pkR dh ltk #k1 . + ResponderFinishedSecPairing(idR, capR, idI, capI, pkR, pkI, dh, ltk) @k1 ==> + not (Ex #k2 . K(ltk) @k2) + ) +" + +lemma secPEi_secPEo_double_impersonation: +" + All #i1 #i2 . + InitWillDoSecPEi()[+] @i1 & RespWillDoSecPEo()[+] @i2 ==> + (All idI1 idR1 capI1 capR1 pkI1 pkR1 dh1 ltk1 idI2 idR2 capI2 capR2 pkI2 pkR2 dh2 ltk2 #j1 #j2 . + InitiatorFinishedSecPairing(idI1, capI1, idR1, capR1, pkI1, pkR1, dh1, ltk1) @j1 & + ResponderFinishedSecPairing(idR2, capR2, idI2, capI2, pkR2, pkI2, dh2, ltk2) @j2 ==> + not (Ex #k1 #k2 . + K(ltk1) @k1 & K(ltk2) @k2 + ) + ) +" + +#endif + +/*******************************************/ +/* End lemmas about SecPEi-SecPEo exchange */ +/*******************************************/ + +/****************************************/ +/* Lemmas about SecPEi-SecPEio exchange */ +/****************************************/ + +#ifdef SecPEiSecPEio +lemma secPEi_secPEio_functional: exists-trace +" + Ex #i1 #i2 . + InitWillDoSecPEi()[+] @i1 & RespWillDoSecPEio()[+] @i2 & + (Ex idI1 idR1 capI1 capR1 pkI1 pkR1 dh1 ltk1 idI2 idR2 capI2 capR2 pkI2 pkR2 dh2 ltk2 #j1 #j2 . + InitiatorFinishedSecPairing(idI1, capI1, idR1, capR1, pkI1, pkR1, dh1, ltk1) @j1 & + ResponderFinishedSecPairing(idR2, capR2, idI2, capI2, pkR2, pkI2, dh2, ltk2) @j2 + ) +" + +lemma secPEi_secPEio_auth_init: +" + All #i1 #i2 . + InitWillDoSecPEi()[+] @i1 & RespWillDoSecPEio()[+] @i2 ==> + (All idI idR capI capR pkI pkR dh ltk #k1 . + InitiatorFinishedSecPairing(idI, capI, idR, capR, pkI, pkR, dh, ltk) @k1 ==> + (Ex ni nr ri rr ei er #k2 . + RespDoneDHKeyCheck(idR, capR, idI, capI, pkR, pkI, dh, nr, ni, rr, ri, er, ei) @k2 + ) + ) +" + +lemma secPEi_secPEio_auth_resp: +" + All #i1 #i2 . + InitWillDoSecPEi()[+] @i1 & RespWillDoSecPEio()[+] @i2 ==> + (All idI idR capI capR pkI pkR dh ltk #k1 . + ResponderFinishedSecPairing(idR, capR, idI, capI, pkR, pkI, dh, ltk) @k1 ==> + (Ex #k2 . + InitiatorFinishedSecPairing(idI, capI, idR, capR, pkI, pkR, dh, ltk) @k2 + ) + ) +" + +lemma secPEi_secPEio_weaksecret_init: +" + All #i1 #i2 . + InitWillDoSecPEi()[+] @i1 & RespWillDoSecPEio()[+] @i2 ==> + (All idI idR capI capR pkI pkR dh ltk #k1 . + InitiatorFinishedSecPairing(idI, capI, idR, capR, pkI, pkR, dh, ltk) @k1 ==> + not (Ex #k2 . K(ltk) @k2) + ) +" + +lemma secPEi_secPEio_weaksecret_resp: +" + All #i1 #i2 . + InitWillDoSecPEi()[+] @i1 & RespWillDoSecPEio()[+] @i2 ==> + (All idI idR capI capR pkI pkR dh ltk #k1 . + ResponderFinishedSecPairing(idR, capR, idI, capI, pkR, pkI, dh, ltk) @k1 ==> + not (Ex #k2 . K(ltk) @k2) + ) +" + +lemma secPEi_secPEio_double_impersonation: +" + All #i1 #i2 . + InitWillDoSecPEi()[+] @i1 & RespWillDoSecPEio()[+] @i2 ==> + (All idI1 idR1 capI1 capR1 pkI1 pkR1 dh1 ltk1 idI2 idR2 capI2 capR2 pkI2 pkR2 dh2 ltk2 #j1 #j2 . + InitiatorFinishedSecPairing(idI1, capI1, idR1, capR1, pkI1, pkR1, dh1, ltk1) @j1 & + ResponderFinishedSecPairing(idR2, capR2, idI2, capI2, pkR2, pkI2, dh2, ltk2) @j2 ==> + not (Ex #k1 #k2 . + K(ltk1) @k1 & K(ltk2) @k2 + ) + ) +" + +#endif + +/********************************************/ +/* End lemmas about SecPEi-SecPEio exchange */ +/********************************************/ + +/**************************************/ +/* Lemmas about SecPEi-SecNC exchange */ +/**************************************/ + +#ifdef SecPEiSecNC +lemma secPEi_secNC_functional: exists-trace +" + Ex #i1 #i2 . + InitWillDoSecPEi()[+] @i1 & RespWillDoSecNC()[+] @i2 & + (Ex idI1 idR1 capI1 capR1 pkI1 pkR1 dh1 ltk1 idI2 idR2 capI2 capR2 pkI2 pkR2 dh2 ltk2 #j1 #j2 . + InitiatorFinishedSecPairing(idI1, capI1, idR1, capR1, pkI1, pkR1, dh1, ltk1) @j1 & + ResponderFinishedSecPairing(idR2, capR2, idI2, capI2, pkR2, pkI2, dh2, ltk2) @j2 + ) +" + +lemma secPEi_secNC_auth_init: +" + All #i1 #i2 . + InitWillDoSecPEi()[+] @i1 & RespWillDoSecNC()[+] @i2 ==> + (All idI idR capI capR pkI pkR dh ltk #k1 . + InitiatorFinishedSecPairing(idI, capI, idR, capR, pkI, pkR, dh, ltk) @k1 ==> + (Ex ni nr ri rr ei er #k2 . + RespDoneDHKeyCheck(idR, capR, idI, capI, pkR, pkI, dh, nr, ni, rr, ri, er, ei) @k2 + ) + ) +" + +lemma secPEi_secNC_auth_resp: +" + All #i1 #i2 . + InitWillDoSecPEi()[+] @i1 & RespWillDoSecNC()[+] @i2 ==> + (All idI idR capI capR pkI pkR dh ltk #k1 . + ResponderFinishedSecPairing(idR, capR, idI, capI, pkR, pkI, dh, ltk) @k1 ==> + (Ex #k2 . + InitiatorFinishedSecPairing(idI, capI, idR, capR, pkI, pkR, dh, ltk) @k2 + ) + ) +" + +lemma secPEi_secNC_weaksecret_init: +" + All #i1 #i2 . + InitWillDoSecPEi()[+] @i1 & RespWillDoSecNC()[+] @i2 ==> + (All idI idR capI capR pkI pkR dh ltk #k1 . + InitiatorFinishedSecPairing(idI, capI, idR, capR, pkI, pkR, dh, ltk) @k1 ==> + not (Ex #k2 . K(ltk) @k2) + ) +" + +lemma secPEi_secNC_weaksecret_resp: +" + All #i1 #i2 . + InitWillDoSecPEi()[+] @i1 & RespWillDoSecNC()[+] @i2 ==> + (All idI idR capI capR pkI pkR dh ltk #k1 . + ResponderFinishedSecPairing(idR, capR, idI, capI, pkR, pkI, dh, ltk) @k1 ==> + not (Ex #k2 . K(ltk) @k2) + ) +" + +lemma secPEi_secNC_double_impersonation: +" + All #i1 #i2 . + InitWillDoSecPEi()[+] @i1 & RespWillDoSecNC()[+] @i2 ==> + (All idI1 idR1 capI1 capR1 pkI1 pkR1 dh1 ltk1 idI2 idR2 capI2 capR2 pkI2 pkR2 dh2 ltk2 #j1 #j2 . + InitiatorFinishedSecPairing(idI1, capI1, idR1, capR1, pkI1, pkR1, dh1, ltk1) @j1 & + ResponderFinishedSecPairing(idR2, capR2, idI2, capI2, pkR2, pkI2, dh2, ltk2) @j2 ==> + not (Ex #k1 #k2 . + K(ltk1) @k1 & K(ltk2) @k2 + ) + ) +" + +#endif + +/******************************************/ +/* End lemmas about SecPEi-SecNC exchange */ +/******************************************/ + +/****************************************/ +/* Lemmas about SecPEi-SecOOBi exchange */ +/****************************************/ + +#ifdef SecPEiSecOOBi +lemma secPEi_secOOBi_functional: exists-trace +" + Ex #i1 #i2 . + InitWillDoSecPEi()[+] @i1 & RespWillDoSecOOBi()[+] @i2 & + (Ex idI1 idR1 capI1 capR1 pkI1 pkR1 dh1 ltk1 idI2 idR2 capI2 capR2 pkI2 pkR2 dh2 ltk2 #j1 #j2 . + InitiatorFinishedSecPairing(idI1, capI1, idR1, capR1, pkI1, pkR1, dh1, ltk1) @j1 & + ResponderFinishedSecPairing(idR2, capR2, idI2, capI2, pkR2, pkI2, dh2, ltk2) @j2 + ) +" + +lemma secPEi_secOOBi_auth_init: +" + All #i1 #i2 . + InitWillDoSecPEi()[+] @i1 & RespWillDoSecOOBi()[+] @i2 ==> + (All idI idR capI capR pkI pkR dh ltk #k1 . + InitiatorFinishedSecPairing(idI, capI, idR, capR, pkI, pkR, dh, ltk) @k1 ==> + (Ex ni nr ri rr ei er #k2 . + RespDoneDHKeyCheck(idR, capR, idI, capI, pkR, pkI, dh, nr, ni, rr, ri, er, ei) @k2 + ) + ) +" + +lemma secPEi_secOOBi_auth_resp: +" + All #i1 #i2 . + InitWillDoSecPEi()[+] @i1 & RespWillDoSecOOBi()[+] @i2 ==> + (All idI idR capI capR pkI pkR dh ltk #k1 . + ResponderFinishedSecPairing(idR, capR, idI, capI, pkR, pkI, dh, ltk) @k1 ==> + (Ex #k2 . + InitiatorFinishedSecPairing(idI, capI, idR, capR, pkI, pkR, dh, ltk) @k2 + ) + ) +" + +lemma secPEi_secOOBi_weaksecret_init: +" + All #i1 #i2 . + InitWillDoSecPEi()[+] @i1 & RespWillDoSecOOBi()[+] @i2 ==> + (All idI idR capI capR pkI pkR dh ltk #k1 . + InitiatorFinishedSecPairing(idI, capI, idR, capR, pkI, pkR, dh, ltk) @k1 ==> + not (Ex #k2 . K(ltk) @k2) + ) +" + +lemma secPEi_secOOBi_weaksecret_resp: +" + All #i1 #i2 . + InitWillDoSecPEi()[+] @i1 & RespWillDoSecOOBi()[+] @i2 ==> + (All idI idR capI capR pkI pkR dh ltk #k1 . + ResponderFinishedSecPairing(idR, capR, idI, capI, pkR, pkI, dh, ltk) @k1 ==> + not (Ex #k2 . K(ltk) @k2) + ) +" + +lemma secPEi_secOOBi_double_impersonation: +" + All #i1 #i2 . + InitWillDoSecPEi()[+] @i1 & RespWillDoSecOOBi()[+] @i2 ==> + (All idI1 idR1 capI1 capR1 pkI1 pkR1 dh1 ltk1 idI2 idR2 capI2 capR2 pkI2 pkR2 dh2 ltk2 #j1 #j2 . + InitiatorFinishedSecPairing(idI1, capI1, idR1, capR1, pkI1, pkR1, dh1, ltk1) @j1 & + ResponderFinishedSecPairing(idR2, capR2, idI2, capI2, pkR2, pkI2, dh2, ltk2) @j2 ==> + not (Ex #k1 #k2 . + K(ltk1) @k1 & K(ltk2) @k2 + ) + ) +" + +#endif + +/********************************************/ +/* End lemmas about SecPEi-SecOOBi exchange */ +/********************************************/ + +/****************************************/ +/* Lemmas about SecPEi-SecOOBo exchange */ +/****************************************/ + +#ifdef SecPEiSecOOBo +lemma secPEi_secOOBo_functional: exists-trace +" + Ex #i1 #i2 . + InitWillDoSecPEi()[+] @i1 & RespWillDoSecOOBo()[+] @i2 & + (Ex idI1 idR1 capI1 capR1 pkI1 pkR1 dh1 ltk1 idI2 idR2 capI2 capR2 pkI2 pkR2 dh2 ltk2 #j1 #j2 . + InitiatorFinishedSecPairing(idI1, capI1, idR1, capR1, pkI1, pkR1, dh1, ltk1) @j1 & + ResponderFinishedSecPairing(idR2, capR2, idI2, capI2, pkR2, pkI2, dh2, ltk2) @j2 + ) +" + +lemma secPEi_secOOBo_auth_init: +" + All #i1 #i2 . + InitWillDoSecPEi()[+] @i1 & RespWillDoSecOOBo()[+] @i2 ==> + (All idI idR capI capR pkI pkR dh ltk #k1 . + InitiatorFinishedSecPairing(idI, capI, idR, capR, pkI, pkR, dh, ltk) @k1 ==> + (Ex ni nr ri rr ei er #k2 . + RespDoneDHKeyCheck(idR, capR, idI, capI, pkR, pkI, dh, nr, ni, rr, ri, er, ei) @k2 + ) + ) +" + +lemma secPEi_secOOBo_auth_resp: +" + All #i1 #i2 . + InitWillDoSecPEi()[+] @i1 & RespWillDoSecOOBo()[+] @i2 ==> + (All idI idR capI capR pkI pkR dh ltk #k1 . + ResponderFinishedSecPairing(idR, capR, idI, capI, pkR, pkI, dh, ltk) @k1 ==> + (Ex #k2 . + InitiatorFinishedSecPairing(idI, capI, idR, capR, pkI, pkR, dh, ltk) @k2 + ) + ) +" + +lemma secPEi_secOOBo_weaksecret_init: +" + All #i1 #i2 . + InitWillDoSecPEi()[+] @i1 & RespWillDoSecOOBo()[+] @i2 ==> + (All idI idR capI capR pkI pkR dh ltk #k1 . + InitiatorFinishedSecPairing(idI, capI, idR, capR, pkI, pkR, dh, ltk) @k1 ==> + not (Ex #k2 . K(ltk) @k2) + ) +" + +lemma secPEi_secOOBo_weaksecret_resp: +" + All #i1 #i2 . + InitWillDoSecPEi()[+] @i1 & RespWillDoSecOOBo()[+] @i2 ==> + (All idI idR capI capR pkI pkR dh ltk #k1 . + ResponderFinishedSecPairing(idR, capR, idI, capI, pkR, pkI, dh, ltk) @k1 ==> + not (Ex #k2 . K(ltk) @k2) + ) +" + +lemma secPEi_secOOBo_double_impersonation: +" + All #i1 #i2 . + InitWillDoSecPEi()[+] @i1 & RespWillDoSecOOBo()[+] @i2 ==> + (All idI1 idR1 capI1 capR1 pkI1 pkR1 dh1 ltk1 idI2 idR2 capI2 capR2 pkI2 pkR2 dh2 ltk2 #j1 #j2 . + InitiatorFinishedSecPairing(idI1, capI1, idR1, capR1, pkI1, pkR1, dh1, ltk1) @j1 & + ResponderFinishedSecPairing(idR2, capR2, idI2, capI2, pkR2, pkI2, dh2, ltk2) @j2 ==> + not (Ex #k1 #k2 . + K(ltk1) @k1 & K(ltk2) @k2 + ) + ) +" + +#endif + +/********************************************/ +/* End lemmas about SecPEi-SecOOBo exchange */ +/********************************************/ + +/*****************************************/ +/* Lemmas about SecPEi-SecOOBio exchange */ +/*****************************************/ + +#ifdef SecPEiSecOOBio +lemma secPEi_secOOBio_functional: exists-trace +" + Ex #i1 #i2 . + InitWillDoSecPEi()[+] @i1 & RespWillDoSecOOBio()[+] @i2 & + (Ex idI1 idR1 capI1 capR1 pkI1 pkR1 dh1 ltk1 idI2 idR2 capI2 capR2 pkI2 pkR2 dh2 ltk2 #j1 #j2 . + InitiatorFinishedSecPairing(idI1, capI1, idR1, capR1, pkI1, pkR1, dh1, ltk1) @j1 & + ResponderFinishedSecPairing(idR2, capR2, idI2, capI2, pkR2, pkI2, dh2, ltk2) @j2 + ) +" + +lemma secPEi_secOOBio_auth_init: +" + All #i1 #i2 . + InitWillDoSecPEi()[+] @i1 & RespWillDoSecOOBio()[+] @i2 ==> + (All idI idR capI capR pkI pkR dh ltk #k1 . + InitiatorFinishedSecPairing(idI, capI, idR, capR, pkI, pkR, dh, ltk) @k1 ==> + (Ex ni nr ri rr ei er #k2 . + RespDoneDHKeyCheck(idR, capR, idI, capI, pkR, pkI, dh, nr, ni, rr, ri, er, ei) @k2 + ) + ) +" + +lemma secPEi_secOOBio_auth_resp: +" + All #i1 #i2 . + InitWillDoSecPEi()[+] @i1 & RespWillDoSecOOBio()[+] @i2 ==> + (All idI idR capI capR pkI pkR dh ltk #k1 . + ResponderFinishedSecPairing(idR, capR, idI, capI, pkR, pkI, dh, ltk) @k1 ==> + (Ex #k2 . + InitiatorFinishedSecPairing(idI, capI, idR, capR, pkI, pkR, dh, ltk) @k2 + ) + ) +" + +lemma secPEi_secOOBio_weaksecret_init: +" + All #i1 #i2 . + InitWillDoSecPEi()[+] @i1 & RespWillDoSecOOBio()[+] @i2 ==> + (All idI idR capI capR pkI pkR dh ltk #k1 . + InitiatorFinishedSecPairing(idI, capI, idR, capR, pkI, pkR, dh, ltk) @k1 ==> + not (Ex #k2 . K(ltk) @k2) + ) +" + +lemma secPEi_secOOBio_weaksecret_resp: +" + All #i1 #i2 . + InitWillDoSecPEi()[+] @i1 & RespWillDoSecOOBio()[+] @i2 ==> + (All idI idR capI capR pkI pkR dh ltk #k1 . + ResponderFinishedSecPairing(idR, capR, idI, capI, pkR, pkI, dh, ltk) @k1 ==> + not (Ex #k2 . K(ltk) @k2) + ) +" + +lemma secPEi_secOOBio_double_impersonation: +" + All #i1 #i2 . + InitWillDoSecPEi()[+] @i1 & RespWillDoSecOOBio()[+] @i2 ==> + (All idI1 idR1 capI1 capR1 pkI1 pkR1 dh1 ltk1 idI2 idR2 capI2 capR2 pkI2 pkR2 dh2 ltk2 #j1 #j2 . + InitiatorFinishedSecPairing(idI1, capI1, idR1, capR1, pkI1, pkR1, dh1, ltk1) @j1 & + ResponderFinishedSecPairing(idR2, capR2, idI2, capI2, pkR2, pkI2, dh2, ltk2) @j2 ==> + not (Ex #k1 #k2 . + K(ltk1) @k1 & K(ltk2) @k2 + ) + ) +" + +#endif + +/*********************************************/ +/* End lemmas about SecPEi-SecOOBio exchange */ +/*********************************************/ + +/**************************************/ +/* Lemmas about SecPEo-SecJW exchange */ +/**************************************/ + +#ifdef SecPEoSecJW +lemma secPEo_secJW_functional: exists-trace +" + Ex #i1 #i2 . + InitWillDoSecPEo()[+] @i1 & RespWillDoSecJW()[+] @i2 & + (Ex idI1 idR1 capI1 capR1 pkI1 pkR1 dh1 ltk1 idI2 idR2 capI2 capR2 pkI2 pkR2 dh2 ltk2 #j1 #j2 . + InitiatorFinishedSecPairing(idI1, capI1, idR1, capR1, pkI1, pkR1, dh1, ltk1) @j1 & + ResponderFinishedSecPairing(idR2, capR2, idI2, capI2, pkR2, pkI2, dh2, ltk2) @j2 + ) +" + +lemma secPEo_secJW_auth_init: +" + All #i1 #i2 . + InitWillDoSecPEo()[+] @i1 & RespWillDoSecJW()[+] @i2 ==> + (All idI idR capI capR pkI pkR dh ltk #k1 . + InitiatorFinishedSecPairing(idI, capI, idR, capR, pkI, pkR, dh, ltk) @k1 ==> + (Ex ni nr ri rr ei er #k2 . + RespDoneDHKeyCheck(idR, capR, idI, capI, pkR, pkI, dh, nr, ni, rr, ri, er, ei) @k2 + ) + ) +" + +lemma secPEo_secJW_auth_resp: +" + All #i1 #i2 . + InitWillDoSecPEo()[+] @i1 & RespWillDoSecJW()[+] @i2 ==> + (All idI idR capI capR pkI pkR dh ltk #k1 . + ResponderFinishedSecPairing(idR, capR, idI, capI, pkR, pkI, dh, ltk) @k1 ==> + (Ex #k2 . + InitiatorFinishedSecPairing(idI, capI, idR, capR, pkI, pkR, dh, ltk) @k2 + ) + ) +" + +lemma secPEo_secJW_weaksecret_init: +" + All #i1 #i2 . + InitWillDoSecPEo()[+] @i1 & RespWillDoSecJW()[+] @i2 ==> + (All idI idR capI capR pkI pkR dh ltk #k1 . + InitiatorFinishedSecPairing(idI, capI, idR, capR, pkI, pkR, dh, ltk) @k1 ==> + not (Ex #k2 . K(ltk) @k2) + ) +" + +lemma secPEo_secJW_weaksecret_resp: +" + All #i1 #i2 . + InitWillDoSecPEo()[+] @i1 & RespWillDoSecJW()[+] @i2 ==> + (All idI idR capI capR pkI pkR dh ltk #k1 . + ResponderFinishedSecPairing(idR, capR, idI, capI, pkR, pkI, dh, ltk) @k1 ==> + not (Ex #k2 . K(ltk) @k2) + ) +" + +lemma secPEo_secJW_double_impersonation: +" + All #i1 #i2 . + InitWillDoSecPEo()[+] @i1 & RespWillDoSecJW()[+] @i2 ==> + (All idI1 idR1 capI1 capR1 pkI1 pkR1 dh1 ltk1 idI2 idR2 capI2 capR2 pkI2 pkR2 dh2 ltk2 #j1 #j2 . + InitiatorFinishedSecPairing(idI1, capI1, idR1, capR1, pkI1, pkR1, dh1, ltk1) @j1 & + ResponderFinishedSecPairing(idR2, capR2, idI2, capI2, pkR2, pkI2, dh2, ltk2) @j2 ==> + not (Ex #k1 #k2 . + K(ltk1) @k1 & K(ltk2) @k2 + ) + ) +" + +#endif + +/******************************************/ +/* End lemmas about SecPEo-SecJW exchange */ +/******************************************/ + +/***************************************/ +/* Lemmas about SecPEo-SecPEi exchange */ +/***************************************/ + +#ifdef SecPEoSecPEi +lemma secPEo_secPEi_functional: exists-trace +" + Ex #i1 #i2 . + InitWillDoSecPEo()[+] @i1 & RespWillDoSecPEi()[+] @i2 & + (Ex idI1 idR1 capI1 capR1 pkI1 pkR1 dh1 ltk1 idI2 idR2 capI2 capR2 pkI2 pkR2 dh2 ltk2 #j1 #j2 . + InitiatorFinishedSecPairing(idI1, capI1, idR1, capR1, pkI1, pkR1, dh1, ltk1) @j1 & + ResponderFinishedSecPairing(idR2, capR2, idI2, capI2, pkR2, pkI2, dh2, ltk2) @j2 + ) +" + +lemma secPEo_secPEi_auth_init: +" + All #i1 #i2 . + InitWillDoSecPEo()[+] @i1 & RespWillDoSecPEi()[+] @i2 ==> + (All idI idR capI capR pkI pkR dh ltk #k1 . + InitiatorFinishedSecPairing(idI, capI, idR, capR, pkI, pkR, dh, ltk) @k1 ==> + (Ex ni nr ri rr ei er #k2 . + RespDoneDHKeyCheck(idR, capR, idI, capI, pkR, pkI, dh, nr, ni, rr, ri, er, ei) @k2 + ) + ) +" + +lemma secPEo_secPEi_auth_resp: +" + All #i1 #i2 . + InitWillDoSecPEo()[+] @i1 & RespWillDoSecPEi()[+] @i2 ==> + (All idI idR capI capR pkI pkR dh ltk #k1 . + ResponderFinishedSecPairing(idR, capR, idI, capI, pkR, pkI, dh, ltk) @k1 ==> + (Ex #k2 . + InitiatorFinishedSecPairing(idI, capI, idR, capR, pkI, pkR, dh, ltk) @k2 + ) + ) +" + +lemma secPEo_secPEi_weaksecret_init: +" + All #i1 #i2 . + InitWillDoSecPEo()[+] @i1 & RespWillDoSecPEi()[+] @i2 ==> + (All idI idR capI capR pkI pkR dh ltk #k1 . + InitiatorFinishedSecPairing(idI, capI, idR, capR, pkI, pkR, dh, ltk) @k1 ==> + not (Ex #k2 . K(ltk) @k2) + ) +" + +lemma secPEo_secPEi_weaksecret_resp: +" + All #i1 #i2 . + InitWillDoSecPEo()[+] @i1 & RespWillDoSecPEi()[+] @i2 ==> + (All idI idR capI capR pkI pkR dh ltk #k1 . + ResponderFinishedSecPairing(idR, capR, idI, capI, pkR, pkI, dh, ltk) @k1 ==> + not (Ex #k2 . K(ltk) @k2) + ) +" + +lemma secPEo_secPEi_double_impersonation: +" + All #i1 #i2 . + InitWillDoSecPEo()[+] @i1 & RespWillDoSecPEi()[+] @i2 ==> + (All idI1 idR1 capI1 capR1 pkI1 pkR1 dh1 ltk1 idI2 idR2 capI2 capR2 pkI2 pkR2 dh2 ltk2 #j1 #j2 . + InitiatorFinishedSecPairing(idI1, capI1, idR1, capR1, pkI1, pkR1, dh1, ltk1) @j1 & + ResponderFinishedSecPairing(idR2, capR2, idI2, capI2, pkR2, pkI2, dh2, ltk2) @j2 ==> + not (Ex #k1 #k2 . + K(ltk1) @k1 & K(ltk2) @k2 + ) + ) +" + +#endif + +/*******************************************/ +/* End lemmas about SecPEo-SecPEi exchange */ +/*******************************************/ + +/***************************************/ +/* Lemmas about SecPEo-SecPEo exchange */ +/***************************************/ + +#ifdef SecPEoSecPEo +lemma secPEo_secPEo_functional: exists-trace +" + Ex #i1 #i2 . + InitWillDoSecPEo()[+] @i1 & RespWillDoSecPEo()[+] @i2 & + (Ex idI1 idR1 capI1 capR1 pkI1 pkR1 dh1 ltk1 idI2 idR2 capI2 capR2 pkI2 pkR2 dh2 ltk2 #j1 #j2 . + InitiatorFinishedSecPairing(idI1, capI1, idR1, capR1, pkI1, pkR1, dh1, ltk1) @j1 & + ResponderFinishedSecPairing(idR2, capR2, idI2, capI2, pkR2, pkI2, dh2, ltk2) @j2 + ) +" + +lemma secPEo_secPEo_auth_init: +" + All #i1 #i2 . + InitWillDoSecPEo()[+] @i1 & RespWillDoSecPEo()[+] @i2 ==> + (All idI idR capI capR pkI pkR dh ltk #k1 . + InitiatorFinishedSecPairing(idI, capI, idR, capR, pkI, pkR, dh, ltk) @k1 ==> + (Ex ni nr ri rr ei er #k2 . + RespDoneDHKeyCheck(idR, capR, idI, capI, pkR, pkI, dh, nr, ni, rr, ri, er, ei) @k2 + ) + ) +" + +lemma secPEo_secPEo_auth_resp: +" + All #i1 #i2 . + InitWillDoSecPEo()[+] @i1 & RespWillDoSecPEo()[+] @i2 ==> + (All idI idR capI capR pkI pkR dh ltk #k1 . + ResponderFinishedSecPairing(idR, capR, idI, capI, pkR, pkI, dh, ltk) @k1 ==> + (Ex #k2 . + InitiatorFinishedSecPairing(idI, capI, idR, capR, pkI, pkR, dh, ltk) @k2 + ) + ) +" + +lemma secPEo_secPEo_weaksecret_init: +" + All #i1 #i2 . + InitWillDoSecPEo()[+] @i1 & RespWillDoSecPEo()[+] @i2 ==> + (All idI idR capI capR pkI pkR dh ltk #k1 . + InitiatorFinishedSecPairing(idI, capI, idR, capR, pkI, pkR, dh, ltk) @k1 ==> + not (Ex #k2 . K(ltk) @k2) + ) +" + +lemma secPEo_secPEo_weaksecret_resp: +" + All #i1 #i2 . + InitWillDoSecPEo()[+] @i1 & RespWillDoSecPEo()[+] @i2 ==> + (All idI idR capI capR pkI pkR dh ltk #k1 . + ResponderFinishedSecPairing(idR, capR, idI, capI, pkR, pkI, dh, ltk) @k1 ==> + not (Ex #k2 . K(ltk) @k2) + ) +" + +lemma secPEo_secPEo_double_impersonation: +" + All #i1 #i2 . + InitWillDoSecPEo()[+] @i1 & RespWillDoSecPEo()[+] @i2 ==> + (All idI1 idR1 capI1 capR1 pkI1 pkR1 dh1 ltk1 idI2 idR2 capI2 capR2 pkI2 pkR2 dh2 ltk2 #j1 #j2 . + InitiatorFinishedSecPairing(idI1, capI1, idR1, capR1, pkI1, pkR1, dh1, ltk1) @j1 & + ResponderFinishedSecPairing(idR2, capR2, idI2, capI2, pkR2, pkI2, dh2, ltk2) @j2 ==> + not (Ex #k1 #k2 . + K(ltk1) @k1 & K(ltk2) @k2 + ) + ) +" + +#endif + +/*******************************************/ +/* End lemmas about SecPEo-SecPEo exchange */ +/*******************************************/ + +/****************************************/ +/* Lemmas about SecPEo-SecPEio exchange */ +/****************************************/ + +#ifdef SecPEoSecPEio +lemma secPEo_secPEio_functional: exists-trace +" + Ex #i1 #i2 . + InitWillDoSecPEo()[+] @i1 & RespWillDoSecPEio()[+] @i2 & + (Ex idI1 idR1 capI1 capR1 pkI1 pkR1 dh1 ltk1 idI2 idR2 capI2 capR2 pkI2 pkR2 dh2 ltk2 #j1 #j2 . + InitiatorFinishedSecPairing(idI1, capI1, idR1, capR1, pkI1, pkR1, dh1, ltk1) @j1 & + ResponderFinishedSecPairing(idR2, capR2, idI2, capI2, pkR2, pkI2, dh2, ltk2) @j2 + ) +" + +lemma secPEo_secPEio_auth_init: +" + All #i1 #i2 . + InitWillDoSecPEo()[+] @i1 & RespWillDoSecPEio()[+] @i2 ==> + (All idI idR capI capR pkI pkR dh ltk #k1 . + InitiatorFinishedSecPairing(idI, capI, idR, capR, pkI, pkR, dh, ltk) @k1 ==> + (Ex ni nr ri rr ei er #k2 . + RespDoneDHKeyCheck(idR, capR, idI, capI, pkR, pkI, dh, nr, ni, rr, ri, er, ei) @k2 + ) + ) +" + +lemma secPEo_secPEio_auth_resp: +" + All #i1 #i2 . + InitWillDoSecPEo()[+] @i1 & RespWillDoSecPEio()[+] @i2 ==> + (All idI idR capI capR pkI pkR dh ltk #k1 . + ResponderFinishedSecPairing(idR, capR, idI, capI, pkR, pkI, dh, ltk) @k1 ==> + (Ex #k2 . + InitiatorFinishedSecPairing(idI, capI, idR, capR, pkI, pkR, dh, ltk) @k2 + ) + ) +" + +lemma secPEo_secPEio_weaksecret_init: +" + All #i1 #i2 . + InitWillDoSecPEo()[+] @i1 & RespWillDoSecPEio()[+] @i2 ==> + (All idI idR capI capR pkI pkR dh ltk #k1 . + InitiatorFinishedSecPairing(idI, capI, idR, capR, pkI, pkR, dh, ltk) @k1 ==> + not (Ex #k2 . K(ltk) @k2) + ) +" + +lemma secPEo_secPEio_weaksecret_resp: +" + All #i1 #i2 . + InitWillDoSecPEo()[+] @i1 & RespWillDoSecPEio()[+] @i2 ==> + (All idI idR capI capR pkI pkR dh ltk #k1 . + ResponderFinishedSecPairing(idR, capR, idI, capI, pkR, pkI, dh, ltk) @k1 ==> + not (Ex #k2 . K(ltk) @k2) + ) +" + +lemma secPEo_secPEio_double_impersonation: +" + All #i1 #i2 . + InitWillDoSecPEo()[+] @i1 & RespWillDoSecPEio()[+] @i2 ==> + (All idI1 idR1 capI1 capR1 pkI1 pkR1 dh1 ltk1 idI2 idR2 capI2 capR2 pkI2 pkR2 dh2 ltk2 #j1 #j2 . + InitiatorFinishedSecPairing(idI1, capI1, idR1, capR1, pkI1, pkR1, dh1, ltk1) @j1 & + ResponderFinishedSecPairing(idR2, capR2, idI2, capI2, pkR2, pkI2, dh2, ltk2) @j2 ==> + not (Ex #k1 #k2 . + K(ltk1) @k1 & K(ltk2) @k2 + ) + ) +" + +#endif + +/********************************************/ +/* End lemmas about SecPEo-SecPEio exchange */ +/********************************************/ + +/**************************************/ +/* Lemmas about SecPEo-SecNC exchange */ +/**************************************/ + +#ifdef SecPEoSecNC +lemma secPEo_secNC_functional: exists-trace +" + Ex #i1 #i2 . + InitWillDoSecPEo()[+] @i1 & RespWillDoSecNC()[+] @i2 & + (Ex idI1 idR1 capI1 capR1 pkI1 pkR1 dh1 ltk1 idI2 idR2 capI2 capR2 pkI2 pkR2 dh2 ltk2 #j1 #j2 . + InitiatorFinishedSecPairing(idI1, capI1, idR1, capR1, pkI1, pkR1, dh1, ltk1) @j1 & + ResponderFinishedSecPairing(idR2, capR2, idI2, capI2, pkR2, pkI2, dh2, ltk2) @j2 + ) +" + +lemma secPEo_secNC_auth_init: +" + All #i1 #i2 . + InitWillDoSecPEo()[+] @i1 & RespWillDoSecNC()[+] @i2 ==> + (All idI idR capI capR pkI pkR dh ltk #k1 . + InitiatorFinishedSecPairing(idI, capI, idR, capR, pkI, pkR, dh, ltk) @k1 ==> + (Ex ni nr ri rr ei er #k2 . + RespDoneDHKeyCheck(idR, capR, idI, capI, pkR, pkI, dh, nr, ni, rr, ri, er, ei) @k2 + ) + ) +" + +lemma secPEo_secNC_auth_resp: +" + All #i1 #i2 . + InitWillDoSecPEo()[+] @i1 & RespWillDoSecNC()[+] @i2 ==> + (All idI idR capI capR pkI pkR dh ltk #k1 . + ResponderFinishedSecPairing(idR, capR, idI, capI, pkR, pkI, dh, ltk) @k1 ==> + (Ex #k2 . + InitiatorFinishedSecPairing(idI, capI, idR, capR, pkI, pkR, dh, ltk) @k2 + ) + ) +" + +lemma secPEo_secNC_weaksecret_init: +" + All #i1 #i2 . + InitWillDoSecPEo()[+] @i1 & RespWillDoSecNC()[+] @i2 ==> + (All idI idR capI capR pkI pkR dh ltk #k1 . + InitiatorFinishedSecPairing(idI, capI, idR, capR, pkI, pkR, dh, ltk) @k1 ==> + not (Ex #k2 . K(ltk) @k2) + ) +" + +lemma secPEo_secNC_weaksecret_resp: +" + All #i1 #i2 . + InitWillDoSecPEo()[+] @i1 & RespWillDoSecNC()[+] @i2 ==> + (All idI idR capI capR pkI pkR dh ltk #k1 . + ResponderFinishedSecPairing(idR, capR, idI, capI, pkR, pkI, dh, ltk) @k1 ==> + not (Ex #k2 . K(ltk) @k2) + ) +" + +lemma secPEo_secNC_double_impersonation: +" + All #i1 #i2 . + InitWillDoSecPEo()[+] @i1 & RespWillDoSecNC()[+] @i2 ==> + (All idI1 idR1 capI1 capR1 pkI1 pkR1 dh1 ltk1 idI2 idR2 capI2 capR2 pkI2 pkR2 dh2 ltk2 #j1 #j2 . + InitiatorFinishedSecPairing(idI1, capI1, idR1, capR1, pkI1, pkR1, dh1, ltk1) @j1 & + ResponderFinishedSecPairing(idR2, capR2, idI2, capI2, pkR2, pkI2, dh2, ltk2) @j2 ==> + not (Ex #k1 #k2 . + K(ltk1) @k1 & K(ltk2) @k2 + ) + ) +" + +#endif + +/******************************************/ +/* End lemmas about SecPEo-SecNC exchange */ +/******************************************/ + +/****************************************/ +/* Lemmas about SecPEo-SecOOBi exchange */ +/****************************************/ + +#ifdef SecPEoSecOOBi +lemma secPEo_secOOBi_functional: exists-trace +" + Ex #i1 #i2 . + InitWillDoSecPEo()[+] @i1 & RespWillDoSecOOBi()[+] @i2 & + (Ex idI1 idR1 capI1 capR1 pkI1 pkR1 dh1 ltk1 idI2 idR2 capI2 capR2 pkI2 pkR2 dh2 ltk2 #j1 #j2 . + InitiatorFinishedSecPairing(idI1, capI1, idR1, capR1, pkI1, pkR1, dh1, ltk1) @j1 & + ResponderFinishedSecPairing(idR2, capR2, idI2, capI2, pkR2, pkI2, dh2, ltk2) @j2 + ) +" + +lemma secPEo_secOOBi_auth_init: +" + All #i1 #i2 . + InitWillDoSecPEo()[+] @i1 & RespWillDoSecOOBi()[+] @i2 ==> + (All idI idR capI capR pkI pkR dh ltk #k1 . + InitiatorFinishedSecPairing(idI, capI, idR, capR, pkI, pkR, dh, ltk) @k1 ==> + (Ex ni nr ri rr ei er #k2 . + RespDoneDHKeyCheck(idR, capR, idI, capI, pkR, pkI, dh, nr, ni, rr, ri, er, ei) @k2 + ) + ) +" + +lemma secPEo_secOOBi_auth_resp: +" + All #i1 #i2 . + InitWillDoSecPEo()[+] @i1 & RespWillDoSecOOBi()[+] @i2 ==> + (All idI idR capI capR pkI pkR dh ltk #k1 . + ResponderFinishedSecPairing(idR, capR, idI, capI, pkR, pkI, dh, ltk) @k1 ==> + (Ex #k2 . + InitiatorFinishedSecPairing(idI, capI, idR, capR, pkI, pkR, dh, ltk) @k2 + ) + ) +" + +lemma secPEo_secOOBi_weaksecret_init: +" + All #i1 #i2 . + InitWillDoSecPEo()[+] @i1 & RespWillDoSecOOBi()[+] @i2 ==> + (All idI idR capI capR pkI pkR dh ltk #k1 . + InitiatorFinishedSecPairing(idI, capI, idR, capR, pkI, pkR, dh, ltk) @k1 ==> + not (Ex #k2 . K(ltk) @k2) + ) +" + +lemma secPEo_secOOBi_weaksecret_resp: +" + All #i1 #i2 . + InitWillDoSecPEo()[+] @i1 & RespWillDoSecOOBi()[+] @i2 ==> + (All idI idR capI capR pkI pkR dh ltk #k1 . + ResponderFinishedSecPairing(idR, capR, idI, capI, pkR, pkI, dh, ltk) @k1 ==> + not (Ex #k2 . K(ltk) @k2) + ) +" + +lemma secPEo_secOOBi_double_impersonation: +" + All #i1 #i2 . + InitWillDoSecPEo()[+] @i1 & RespWillDoSecOOBi()[+] @i2 ==> + (All idI1 idR1 capI1 capR1 pkI1 pkR1 dh1 ltk1 idI2 idR2 capI2 capR2 pkI2 pkR2 dh2 ltk2 #j1 #j2 . + InitiatorFinishedSecPairing(idI1, capI1, idR1, capR1, pkI1, pkR1, dh1, ltk1) @j1 & + ResponderFinishedSecPairing(idR2, capR2, idI2, capI2, pkR2, pkI2, dh2, ltk2) @j2 ==> + not (Ex #k1 #k2 . + K(ltk1) @k1 & K(ltk2) @k2 + ) + ) +" + +#endif + +/********************************************/ +/* End lemmas about SecPEo-SecOOBi exchange */ +/********************************************/ + +/****************************************/ +/* Lemmas about SecPEo-SecOOBo exchange */ +/****************************************/ + +#ifdef SecPEoSecOOBo +lemma secPEo_secOOBo_functional: exists-trace +" + Ex #i1 #i2 . + InitWillDoSecPEo()[+] @i1 & RespWillDoSecOOBo()[+] @i2 & + (Ex idI1 idR1 capI1 capR1 pkI1 pkR1 dh1 ltk1 idI2 idR2 capI2 capR2 pkI2 pkR2 dh2 ltk2 #j1 #j2 . + InitiatorFinishedSecPairing(idI1, capI1, idR1, capR1, pkI1, pkR1, dh1, ltk1) @j1 & + ResponderFinishedSecPairing(idR2, capR2, idI2, capI2, pkR2, pkI2, dh2, ltk2) @j2 + ) +" + +lemma secPEo_secOOBo_auth_init: +" + All #i1 #i2 . + InitWillDoSecPEo()[+] @i1 & RespWillDoSecOOBo()[+] @i2 ==> + (All idI idR capI capR pkI pkR dh ltk #k1 . + InitiatorFinishedSecPairing(idI, capI, idR, capR, pkI, pkR, dh, ltk) @k1 ==> + (Ex ni nr ri rr ei er #k2 . + RespDoneDHKeyCheck(idR, capR, idI, capI, pkR, pkI, dh, nr, ni, rr, ri, er, ei) @k2 + ) + ) +" + +lemma secPEo_secOOBo_auth_resp: +" + All #i1 #i2 . + InitWillDoSecPEo()[+] @i1 & RespWillDoSecOOBo()[+] @i2 ==> + (All idI idR capI capR pkI pkR dh ltk #k1 . + ResponderFinishedSecPairing(idR, capR, idI, capI, pkR, pkI, dh, ltk) @k1 ==> + (Ex #k2 . + InitiatorFinishedSecPairing(idI, capI, idR, capR, pkI, pkR, dh, ltk) @k2 + ) + ) +" + +lemma secPEo_secOOBo_weaksecret_init: +" + All #i1 #i2 . + InitWillDoSecPEo()[+] @i1 & RespWillDoSecOOBo()[+] @i2 ==> + (All idI idR capI capR pkI pkR dh ltk #k1 . + InitiatorFinishedSecPairing(idI, capI, idR, capR, pkI, pkR, dh, ltk) @k1 ==> + not (Ex #k2 . K(ltk) @k2) + ) +" + +lemma secPEo_secOOBo_weaksecret_resp: +" + All #i1 #i2 . + InitWillDoSecPEo()[+] @i1 & RespWillDoSecOOBo()[+] @i2 ==> + (All idI idR capI capR pkI pkR dh ltk #k1 . + ResponderFinishedSecPairing(idR, capR, idI, capI, pkR, pkI, dh, ltk) @k1 ==> + not (Ex #k2 . K(ltk) @k2) + ) +" + +lemma secPEo_secOOBo_double_impersonation: +" + All #i1 #i2 . + InitWillDoSecPEo()[+] @i1 & RespWillDoSecOOBo()[+] @i2 ==> + (All idI1 idR1 capI1 capR1 pkI1 pkR1 dh1 ltk1 idI2 idR2 capI2 capR2 pkI2 pkR2 dh2 ltk2 #j1 #j2 . + InitiatorFinishedSecPairing(idI1, capI1, idR1, capR1, pkI1, pkR1, dh1, ltk1) @j1 & + ResponderFinishedSecPairing(idR2, capR2, idI2, capI2, pkR2, pkI2, dh2, ltk2) @j2 ==> + not (Ex #k1 #k2 . + K(ltk1) @k1 & K(ltk2) @k2 + ) + ) +" + +#endif + +/********************************************/ +/* End lemmas about SecPEo-SecOOBo exchange */ +/********************************************/ + +/*****************************************/ +/* Lemmas about SecPEo-SecOOBio exchange */ +/*****************************************/ + +#ifdef SecPEoSecOOBio +lemma secPEo_secOOBio_functional: exists-trace +" + Ex #i1 #i2 . + InitWillDoSecPEo()[+] @i1 & RespWillDoSecOOBio()[+] @i2 & + (Ex idI1 idR1 capI1 capR1 pkI1 pkR1 dh1 ltk1 idI2 idR2 capI2 capR2 pkI2 pkR2 dh2 ltk2 #j1 #j2 . + InitiatorFinishedSecPairing(idI1, capI1, idR1, capR1, pkI1, pkR1, dh1, ltk1) @j1 & + ResponderFinishedSecPairing(idR2, capR2, idI2, capI2, pkR2, pkI2, dh2, ltk2) @j2 + ) +" + +lemma secPEo_secOOBio_auth_init: +" + All #i1 #i2 . + InitWillDoSecPEo()[+] @i1 & RespWillDoSecOOBio()[+] @i2 ==> + (All idI idR capI capR pkI pkR dh ltk #k1 . + InitiatorFinishedSecPairing(idI, capI, idR, capR, pkI, pkR, dh, ltk) @k1 ==> + (Ex ni nr ri rr ei er #k2 . + RespDoneDHKeyCheck(idR, capR, idI, capI, pkR, pkI, dh, nr, ni, rr, ri, er, ei) @k2 + ) + ) +" + +lemma secPEo_secOOBio_auth_resp: +" + All #i1 #i2 . + InitWillDoSecPEo()[+] @i1 & RespWillDoSecOOBio()[+] @i2 ==> + (All idI idR capI capR pkI pkR dh ltk #k1 . + ResponderFinishedSecPairing(idR, capR, idI, capI, pkR, pkI, dh, ltk) @k1 ==> + (Ex #k2 . + InitiatorFinishedSecPairing(idI, capI, idR, capR, pkI, pkR, dh, ltk) @k2 + ) + ) +" + +lemma secPEo_secOOBio_weaksecret_init: +" + All #i1 #i2 . + InitWillDoSecPEo()[+] @i1 & RespWillDoSecOOBio()[+] @i2 ==> + (All idI idR capI capR pkI pkR dh ltk #k1 . + InitiatorFinishedSecPairing(idI, capI, idR, capR, pkI, pkR, dh, ltk) @k1 ==> + not (Ex #k2 . K(ltk) @k2) + ) +" + +lemma secPEo_secOOBio_weaksecret_resp: +" + All #i1 #i2 . + InitWillDoSecPEo()[+] @i1 & RespWillDoSecOOBio()[+] @i2 ==> + (All idI idR capI capR pkI pkR dh ltk #k1 . + ResponderFinishedSecPairing(idR, capR, idI, capI, pkR, pkI, dh, ltk) @k1 ==> + not (Ex #k2 . K(ltk) @k2) + ) +" + +lemma secPEo_secOOBio_double_impersonation: +" + All #i1 #i2 . + InitWillDoSecPEo()[+] @i1 & RespWillDoSecOOBio()[+] @i2 ==> + (All idI1 idR1 capI1 capR1 pkI1 pkR1 dh1 ltk1 idI2 idR2 capI2 capR2 pkI2 pkR2 dh2 ltk2 #j1 #j2 . + InitiatorFinishedSecPairing(idI1, capI1, idR1, capR1, pkI1, pkR1, dh1, ltk1) @j1 & + ResponderFinishedSecPairing(idR2, capR2, idI2, capI2, pkR2, pkI2, dh2, ltk2) @j2 ==> + not (Ex #k1 #k2 . + K(ltk1) @k1 & K(ltk2) @k2 + ) + ) +" + +#endif + +/*********************************************/ +/* End lemmas about SecPEo-SecOOBio exchange */ +/*********************************************/ + +/***************************************/ +/* Lemmas about SecPEio-SecJW exchange */ +/***************************************/ + +#ifdef SecPEioSecJW +lemma secPEio_secJW_functional: exists-trace +" + Ex #i1 #i2 . + InitWillDoSecPEio()[+] @i1 & RespWillDoSecJW()[+] @i2 & + (Ex idI1 idR1 capI1 capR1 pkI1 pkR1 dh1 ltk1 idI2 idR2 capI2 capR2 pkI2 pkR2 dh2 ltk2 #j1 #j2 . + InitiatorFinishedSecPairing(idI1, capI1, idR1, capR1, pkI1, pkR1, dh1, ltk1) @j1 & + ResponderFinishedSecPairing(idR2, capR2, idI2, capI2, pkR2, pkI2, dh2, ltk2) @j2 + ) +" + +lemma secPEio_secJW_auth_init: +" + All #i1 #i2 . + InitWillDoSecPEio()[+] @i1 & RespWillDoSecJW()[+] @i2 ==> + (All idI idR capI capR pkI pkR dh ltk #k1 . + InitiatorFinishedSecPairing(idI, capI, idR, capR, pkI, pkR, dh, ltk) @k1 ==> + (Ex ni nr ri rr ei er #k2 . + RespDoneDHKeyCheck(idR, capR, idI, capI, pkR, pkI, dh, nr, ni, rr, ri, er, ei) @k2 + ) + ) +" + +lemma secPEio_secJW_auth_resp: +" + All #i1 #i2 . + InitWillDoSecPEio()[+] @i1 & RespWillDoSecJW()[+] @i2 ==> + (All idI idR capI capR pkI pkR dh ltk #k1 . + ResponderFinishedSecPairing(idR, capR, idI, capI, pkR, pkI, dh, ltk) @k1 ==> + (Ex #k2 . + InitiatorFinishedSecPairing(idI, capI, idR, capR, pkI, pkR, dh, ltk) @k2 + ) + ) +" + +lemma secPEio_secJW_weaksecret_init: +" + All #i1 #i2 . + InitWillDoSecPEio()[+] @i1 & RespWillDoSecJW()[+] @i2 ==> + (All idI idR capI capR pkI pkR dh ltk #k1 . + InitiatorFinishedSecPairing(idI, capI, idR, capR, pkI, pkR, dh, ltk) @k1 ==> + not (Ex #k2 . K(ltk) @k2) + ) +" + +lemma secPEio_secJW_weaksecret_resp: +" + All #i1 #i2 . + InitWillDoSecPEio()[+] @i1 & RespWillDoSecJW()[+] @i2 ==> + (All idI idR capI capR pkI pkR dh ltk #k1 . + ResponderFinishedSecPairing(idR, capR, idI, capI, pkR, pkI, dh, ltk) @k1 ==> + not (Ex #k2 . K(ltk) @k2) + ) +" + +lemma secPEio_secJW_double_impersonation: +" + All #i1 #i2 . + InitWillDoSecPEio()[+] @i1 & RespWillDoSecJW()[+] @i2 ==> + (All idI1 idR1 capI1 capR1 pkI1 pkR1 dh1 ltk1 idI2 idR2 capI2 capR2 pkI2 pkR2 dh2 ltk2 #j1 #j2 . + InitiatorFinishedSecPairing(idI1, capI1, idR1, capR1, pkI1, pkR1, dh1, ltk1) @j1 & + ResponderFinishedSecPairing(idR2, capR2, idI2, capI2, pkR2, pkI2, dh2, ltk2) @j2 ==> + not (Ex #k1 #k2 . + K(ltk1) @k1 & K(ltk2) @k2 + ) + ) +" + +#endif + +/*******************************************/ +/* End lemmas about SecPEio-SecJW exchange */ +/*******************************************/ + +/****************************************/ +/* Lemmas about SecPEio-SecPEi exchange */ +/****************************************/ + +#ifdef SecPEioSecPEi +lemma secPEio_secPEi_functional: exists-trace +" + Ex #i1 #i2 . + InitWillDoSecPEio()[+] @i1 & RespWillDoSecPEi()[+] @i2 & + (Ex idI1 idR1 capI1 capR1 pkI1 pkR1 dh1 ltk1 idI2 idR2 capI2 capR2 pkI2 pkR2 dh2 ltk2 #j1 #j2 . + InitiatorFinishedSecPairing(idI1, capI1, idR1, capR1, pkI1, pkR1, dh1, ltk1) @j1 & + ResponderFinishedSecPairing(idR2, capR2, idI2, capI2, pkR2, pkI2, dh2, ltk2) @j2 + ) +" + +lemma secPEio_secPEi_auth_init: +" + All #i1 #i2 . + InitWillDoSecPEio()[+] @i1 & RespWillDoSecPEi()[+] @i2 ==> + (All idI idR capI capR pkI pkR dh ltk #k1 . + InitiatorFinishedSecPairing(idI, capI, idR, capR, pkI, pkR, dh, ltk) @k1 ==> + (Ex ni nr ri rr ei er #k2 . + RespDoneDHKeyCheck(idR, capR, idI, capI, pkR, pkI, dh, nr, ni, rr, ri, er, ei) @k2 + ) + ) +" + +lemma secPEio_secPEi_auth_resp: +" + All #i1 #i2 . + InitWillDoSecPEio()[+] @i1 & RespWillDoSecPEi()[+] @i2 ==> + (All idI idR capI capR pkI pkR dh ltk #k1 . + ResponderFinishedSecPairing(idR, capR, idI, capI, pkR, pkI, dh, ltk) @k1 ==> + (Ex #k2 . + InitiatorFinishedSecPairing(idI, capI, idR, capR, pkI, pkR, dh, ltk) @k2 + ) + ) +" + +lemma secPEio_secPEi_weaksecret_init: +" + All #i1 #i2 . + InitWillDoSecPEio()[+] @i1 & RespWillDoSecPEi()[+] @i2 ==> + (All idI idR capI capR pkI pkR dh ltk #k1 . + InitiatorFinishedSecPairing(idI, capI, idR, capR, pkI, pkR, dh, ltk) @k1 ==> + not (Ex #k2 . K(ltk) @k2) + ) +" + +lemma secPEio_secPEi_weaksecret_resp: +" + All #i1 #i2 . + InitWillDoSecPEio()[+] @i1 & RespWillDoSecPEi()[+] @i2 ==> + (All idI idR capI capR pkI pkR dh ltk #k1 . + ResponderFinishedSecPairing(idR, capR, idI, capI, pkR, pkI, dh, ltk) @k1 ==> + not (Ex #k2 . K(ltk) @k2) + ) +" + +lemma secPEio_secPEi_double_impersonation: +" + All #i1 #i2 . + InitWillDoSecPEio()[+] @i1 & RespWillDoSecPEi()[+] @i2 ==> + (All idI1 idR1 capI1 capR1 pkI1 pkR1 dh1 ltk1 idI2 idR2 capI2 capR2 pkI2 pkR2 dh2 ltk2 #j1 #j2 . + InitiatorFinishedSecPairing(idI1, capI1, idR1, capR1, pkI1, pkR1, dh1, ltk1) @j1 & + ResponderFinishedSecPairing(idR2, capR2, idI2, capI2, pkR2, pkI2, dh2, ltk2) @j2 ==> + not (Ex #k1 #k2 . + K(ltk1) @k1 & K(ltk2) @k2 + ) + ) +" + +#endif + +/********************************************/ +/* End lemmas about SecPEio-SecPEi exchange */ +/********************************************/ + +/****************************************/ +/* Lemmas about SecPEio-SecPEo exchange */ +/****************************************/ + +#ifdef SecPEioSecPEo +lemma secPEio_secPEo_functional: exists-trace +" + Ex #i1 #i2 . + InitWillDoSecPEio()[+] @i1 & RespWillDoSecPEo()[+] @i2 & + (Ex idI1 idR1 capI1 capR1 pkI1 pkR1 dh1 ltk1 idI2 idR2 capI2 capR2 pkI2 pkR2 dh2 ltk2 #j1 #j2 . + InitiatorFinishedSecPairing(idI1, capI1, idR1, capR1, pkI1, pkR1, dh1, ltk1) @j1 & + ResponderFinishedSecPairing(idR2, capR2, idI2, capI2, pkR2, pkI2, dh2, ltk2) @j2 + ) +" + +lemma secPEio_secPEo_auth_init: +" + All #i1 #i2 . + InitWillDoSecPEio()[+] @i1 & RespWillDoSecPEo()[+] @i2 ==> + (All idI idR capI capR pkI pkR dh ltk #k1 . + InitiatorFinishedSecPairing(idI, capI, idR, capR, pkI, pkR, dh, ltk) @k1 ==> + (Ex ni nr ri rr ei er #k2 . + RespDoneDHKeyCheck(idR, capR, idI, capI, pkR, pkI, dh, nr, ni, rr, ri, er, ei) @k2 + ) + ) +" + +lemma secPEio_secPEo_auth_resp: +" + All #i1 #i2 . + InitWillDoSecPEio()[+] @i1 & RespWillDoSecPEo()[+] @i2 ==> + (All idI idR capI capR pkI pkR dh ltk #k1 . + ResponderFinishedSecPairing(idR, capR, idI, capI, pkR, pkI, dh, ltk) @k1 ==> + (Ex #k2 . + InitiatorFinishedSecPairing(idI, capI, idR, capR, pkI, pkR, dh, ltk) @k2 + ) + ) +" + +lemma secPEio_secPEo_weaksecret_init: +" + All #i1 #i2 . + InitWillDoSecPEio()[+] @i1 & RespWillDoSecPEo()[+] @i2 ==> + (All idI idR capI capR pkI pkR dh ltk #k1 . + InitiatorFinishedSecPairing(idI, capI, idR, capR, pkI, pkR, dh, ltk) @k1 ==> + not (Ex #k2 . K(ltk) @k2) + ) +" + +lemma secPEio_secPEo_weaksecret_resp: +" + All #i1 #i2 . + InitWillDoSecPEio()[+] @i1 & RespWillDoSecPEo()[+] @i2 ==> + (All idI idR capI capR pkI pkR dh ltk #k1 . + ResponderFinishedSecPairing(idR, capR, idI, capI, pkR, pkI, dh, ltk) @k1 ==> + not (Ex #k2 . K(ltk) @k2) + ) +" + +lemma secPEio_secPEo_double_impersonation: +" + All #i1 #i2 . + InitWillDoSecPEio()[+] @i1 & RespWillDoSecPEo()[+] @i2 ==> + (All idI1 idR1 capI1 capR1 pkI1 pkR1 dh1 ltk1 idI2 idR2 capI2 capR2 pkI2 pkR2 dh2 ltk2 #j1 #j2 . + InitiatorFinishedSecPairing(idI1, capI1, idR1, capR1, pkI1, pkR1, dh1, ltk1) @j1 & + ResponderFinishedSecPairing(idR2, capR2, idI2, capI2, pkR2, pkI2, dh2, ltk2) @j2 ==> + not (Ex #k1 #k2 . + K(ltk1) @k1 & K(ltk2) @k2 + ) + ) +" + +#endif + +/********************************************/ +/* End lemmas about SecPEio-SecPEo exchange */ +/********************************************/ + +/*****************************************/ +/* Lemmas about SecPEio-SecPEio exchange */ +/*****************************************/ + +#ifdef SecPEioSecPEio +lemma secPEio_secPEio_functional: exists-trace +" + Ex #i1 #i2 . + InitWillDoSecPEio()[+] @i1 & RespWillDoSecPEio()[+] @i2 & + (Ex idI1 idR1 capI1 capR1 pkI1 pkR1 dh1 ltk1 idI2 idR2 capI2 capR2 pkI2 pkR2 dh2 ltk2 #j1 #j2 . + InitiatorFinishedSecPairing(idI1, capI1, idR1, capR1, pkI1, pkR1, dh1, ltk1) @j1 & + ResponderFinishedSecPairing(idR2, capR2, idI2, capI2, pkR2, pkI2, dh2, ltk2) @j2 + ) +" + +lemma secPEio_secPEio_auth_init: +" + All #i1 #i2 . + InitWillDoSecPEio()[+] @i1 & RespWillDoSecPEio()[+] @i2 ==> + (All idI idR capI capR pkI pkR dh ltk #k1 . + InitiatorFinishedSecPairing(idI, capI, idR, capR, pkI, pkR, dh, ltk) @k1 ==> + (Ex ni nr ri rr ei er #k2 . + RespDoneDHKeyCheck(idR, capR, idI, capI, pkR, pkI, dh, nr, ni, rr, ri, er, ei) @k2 + ) + ) +" + +lemma secPEio_secPEio_auth_resp: +" + All #i1 #i2 . + InitWillDoSecPEio()[+] @i1 & RespWillDoSecPEio()[+] @i2 ==> + (All idI idR capI capR pkI pkR dh ltk #k1 . + ResponderFinishedSecPairing(idR, capR, idI, capI, pkR, pkI, dh, ltk) @k1 ==> + (Ex #k2 . + InitiatorFinishedSecPairing(idI, capI, idR, capR, pkI, pkR, dh, ltk) @k2 + ) + ) +" + +lemma secPEio_secPEio_weaksecret_init: +" + All #i1 #i2 . + InitWillDoSecPEio()[+] @i1 & RespWillDoSecPEio()[+] @i2 ==> + (All idI idR capI capR pkI pkR dh ltk #k1 . + InitiatorFinishedSecPairing(idI, capI, idR, capR, pkI, pkR, dh, ltk) @k1 ==> + not (Ex #k2 . K(ltk) @k2) + ) +" + +lemma secPEio_secPEio_weaksecret_resp: +" + All #i1 #i2 . + InitWillDoSecPEio()[+] @i1 & RespWillDoSecPEio()[+] @i2 ==> + (All idI idR capI capR pkI pkR dh ltk #k1 . + ResponderFinishedSecPairing(idR, capR, idI, capI, pkR, pkI, dh, ltk) @k1 ==> + not (Ex #k2 . K(ltk) @k2) + ) +" + +lemma secPEio_secPEio_double_impersonation: +" + All #i1 #i2 . + InitWillDoSecPEio()[+] @i1 & RespWillDoSecPEio()[+] @i2 ==> + (All idI1 idR1 capI1 capR1 pkI1 pkR1 dh1 ltk1 idI2 idR2 capI2 capR2 pkI2 pkR2 dh2 ltk2 #j1 #j2 . + InitiatorFinishedSecPairing(idI1, capI1, idR1, capR1, pkI1, pkR1, dh1, ltk1) @j1 & + ResponderFinishedSecPairing(idR2, capR2, idI2, capI2, pkR2, pkI2, dh2, ltk2) @j2 ==> + not (Ex #k1 #k2 . + K(ltk1) @k1 & K(ltk2) @k2 + ) + ) +" + +#endif + +/*********************************************/ +/* End lemmas about SecPEio-SecPEio exchange */ +/*********************************************/ + +/***************************************/ +/* Lemmas about SecPEio-SecNC exchange */ +/***************************************/ + +#ifdef SecPEioSecNC +lemma secPEio_secNC_functional: exists-trace +" + Ex #i1 #i2 . + InitWillDoSecPEio()[+] @i1 & RespWillDoSecNC()[+] @i2 & + (Ex idI1 idR1 capI1 capR1 pkI1 pkR1 dh1 ltk1 idI2 idR2 capI2 capR2 pkI2 pkR2 dh2 ltk2 #j1 #j2 . + InitiatorFinishedSecPairing(idI1, capI1, idR1, capR1, pkI1, pkR1, dh1, ltk1) @j1 & + ResponderFinishedSecPairing(idR2, capR2, idI2, capI2, pkR2, pkI2, dh2, ltk2) @j2 + ) +" + +lemma secPEio_secNC_auth_init: +" + All #i1 #i2 . + InitWillDoSecPEio()[+] @i1 & RespWillDoSecNC()[+] @i2 ==> + (All idI idR capI capR pkI pkR dh ltk #k1 . + InitiatorFinishedSecPairing(idI, capI, idR, capR, pkI, pkR, dh, ltk) @k1 ==> + (Ex ni nr ri rr ei er #k2 . + RespDoneDHKeyCheck(idR, capR, idI, capI, pkR, pkI, dh, nr, ni, rr, ri, er, ei) @k2 + ) + ) +" + +lemma secPEio_secNC_auth_resp: +" + All #i1 #i2 . + InitWillDoSecPEio()[+] @i1 & RespWillDoSecNC()[+] @i2 ==> + (All idI idR capI capR pkI pkR dh ltk #k1 . + ResponderFinishedSecPairing(idR, capR, idI, capI, pkR, pkI, dh, ltk) @k1 ==> + (Ex #k2 . + InitiatorFinishedSecPairing(idI, capI, idR, capR, pkI, pkR, dh, ltk) @k2 + ) + ) +" + +lemma secPEio_secNC_weaksecret_init: +" + All #i1 #i2 . + InitWillDoSecPEio()[+] @i1 & RespWillDoSecNC()[+] @i2 ==> + (All idI idR capI capR pkI pkR dh ltk #k1 . + InitiatorFinishedSecPairing(idI, capI, idR, capR, pkI, pkR, dh, ltk) @k1 ==> + not (Ex #k2 . K(ltk) @k2) + ) +" + +lemma secPEio_secNC_weaksecret_resp: +" + All #i1 #i2 . + InitWillDoSecPEio()[+] @i1 & RespWillDoSecNC()[+] @i2 ==> + (All idI idR capI capR pkI pkR dh ltk #k1 . + ResponderFinishedSecPairing(idR, capR, idI, capI, pkR, pkI, dh, ltk) @k1 ==> + not (Ex #k2 . K(ltk) @k2) + ) +" + +lemma secPEio_secNC_double_impersonation: +" + All #i1 #i2 . + InitWillDoSecPEio()[+] @i1 & RespWillDoSecNC()[+] @i2 ==> + (All idI1 idR1 capI1 capR1 pkI1 pkR1 dh1 ltk1 idI2 idR2 capI2 capR2 pkI2 pkR2 dh2 ltk2 #j1 #j2 . + InitiatorFinishedSecPairing(idI1, capI1, idR1, capR1, pkI1, pkR1, dh1, ltk1) @j1 & + ResponderFinishedSecPairing(idR2, capR2, idI2, capI2, pkR2, pkI2, dh2, ltk2) @j2 ==> + not (Ex #k1 #k2 . + K(ltk1) @k1 & K(ltk2) @k2 + ) + ) +" + +#endif + +/*******************************************/ +/* End lemmas about SecPEio-SecNC exchange */ +/*******************************************/ + +/*****************************************/ +/* Lemmas about SecPEio-SecOOBi exchange */ +/*****************************************/ + +#ifdef SecPEioSecOOBi +lemma secPEio_secOOBi_functional: exists-trace +" + Ex #i1 #i2 . + InitWillDoSecPEio()[+] @i1 & RespWillDoSecOOBi()[+] @i2 & + (Ex idI1 idR1 capI1 capR1 pkI1 pkR1 dh1 ltk1 idI2 idR2 capI2 capR2 pkI2 pkR2 dh2 ltk2 #j1 #j2 . + InitiatorFinishedSecPairing(idI1, capI1, idR1, capR1, pkI1, pkR1, dh1, ltk1) @j1 & + ResponderFinishedSecPairing(idR2, capR2, idI2, capI2, pkR2, pkI2, dh2, ltk2) @j2 + ) +" + +lemma secPEio_secOOBi_auth_init: +" + All #i1 #i2 . + InitWillDoSecPEio()[+] @i1 & RespWillDoSecOOBi()[+] @i2 ==> + (All idI idR capI capR pkI pkR dh ltk #k1 . + InitiatorFinishedSecPairing(idI, capI, idR, capR, pkI, pkR, dh, ltk) @k1 ==> + (Ex ni nr ri rr ei er #k2 . + RespDoneDHKeyCheck(idR, capR, idI, capI, pkR, pkI, dh, nr, ni, rr, ri, er, ei) @k2 + ) + ) +" + +lemma secPEio_secOOBi_auth_resp: +" + All #i1 #i2 . + InitWillDoSecPEio()[+] @i1 & RespWillDoSecOOBi()[+] @i2 ==> + (All idI idR capI capR pkI pkR dh ltk #k1 . + ResponderFinishedSecPairing(idR, capR, idI, capI, pkR, pkI, dh, ltk) @k1 ==> + (Ex #k2 . + InitiatorFinishedSecPairing(idI, capI, idR, capR, pkI, pkR, dh, ltk) @k2 + ) + ) +" + +lemma secPEio_secOOBi_weaksecret_init: +" + All #i1 #i2 . + InitWillDoSecPEio()[+] @i1 & RespWillDoSecOOBi()[+] @i2 ==> + (All idI idR capI capR pkI pkR dh ltk #k1 . + InitiatorFinishedSecPairing(idI, capI, idR, capR, pkI, pkR, dh, ltk) @k1 ==> + not (Ex #k2 . K(ltk) @k2) + ) +" + +lemma secPEio_secOOBi_weaksecret_resp: +" + All #i1 #i2 . + InitWillDoSecPEio()[+] @i1 & RespWillDoSecOOBi()[+] @i2 ==> + (All idI idR capI capR pkI pkR dh ltk #k1 . + ResponderFinishedSecPairing(idR, capR, idI, capI, pkR, pkI, dh, ltk) @k1 ==> + not (Ex #k2 . K(ltk) @k2) + ) +" + +lemma secPEio_secOOBi_double_impersonation: +" + All #i1 #i2 . + InitWillDoSecPEio()[+] @i1 & RespWillDoSecOOBi()[+] @i2 ==> + (All idI1 idR1 capI1 capR1 pkI1 pkR1 dh1 ltk1 idI2 idR2 capI2 capR2 pkI2 pkR2 dh2 ltk2 #j1 #j2 . + InitiatorFinishedSecPairing(idI1, capI1, idR1, capR1, pkI1, pkR1, dh1, ltk1) @j1 & + ResponderFinishedSecPairing(idR2, capR2, idI2, capI2, pkR2, pkI2, dh2, ltk2) @j2 ==> + not (Ex #k1 #k2 . + K(ltk1) @k1 & K(ltk2) @k2 + ) + ) +" + +#endif + +/*********************************************/ +/* End lemmas about SecPEio-SecOOBi exchange */ +/*********************************************/ + +/*****************************************/ +/* Lemmas about SecPEio-SecOOBo exchange */ +/*****************************************/ + +#ifdef SecPEioSecOOBo +lemma secPEio_secOOBo_functional: exists-trace +" + Ex #i1 #i2 . + InitWillDoSecPEio()[+] @i1 & RespWillDoSecOOBo()[+] @i2 & + (Ex idI1 idR1 capI1 capR1 pkI1 pkR1 dh1 ltk1 idI2 idR2 capI2 capR2 pkI2 pkR2 dh2 ltk2 #j1 #j2 . + InitiatorFinishedSecPairing(idI1, capI1, idR1, capR1, pkI1, pkR1, dh1, ltk1) @j1 & + ResponderFinishedSecPairing(idR2, capR2, idI2, capI2, pkR2, pkI2, dh2, ltk2) @j2 + ) +" + +lemma secPEio_secOOBo_auth_init: +" + All #i1 #i2 . + InitWillDoSecPEio()[+] @i1 & RespWillDoSecOOBo()[+] @i2 ==> + (All idI idR capI capR pkI pkR dh ltk #k1 . + InitiatorFinishedSecPairing(idI, capI, idR, capR, pkI, pkR, dh, ltk) @k1 ==> + (Ex ni nr ri rr ei er #k2 . + RespDoneDHKeyCheck(idR, capR, idI, capI, pkR, pkI, dh, nr, ni, rr, ri, er, ei) @k2 + ) + ) +" + +lemma secPEio_secOOBo_auth_resp: +" + All #i1 #i2 . + InitWillDoSecPEio()[+] @i1 & RespWillDoSecOOBo()[+] @i2 ==> + (All idI idR capI capR pkI pkR dh ltk #k1 . + ResponderFinishedSecPairing(idR, capR, idI, capI, pkR, pkI, dh, ltk) @k1 ==> + (Ex #k2 . + InitiatorFinishedSecPairing(idI, capI, idR, capR, pkI, pkR, dh, ltk) @k2 + ) + ) +" + +lemma secPEio_secOOBo_weaksecret_init: +" + All #i1 #i2 . + InitWillDoSecPEio()[+] @i1 & RespWillDoSecOOBo()[+] @i2 ==> + (All idI idR capI capR pkI pkR dh ltk #k1 . + InitiatorFinishedSecPairing(idI, capI, idR, capR, pkI, pkR, dh, ltk) @k1 ==> + not (Ex #k2 . K(ltk) @k2) + ) +" + +lemma secPEio_secOOBo_weaksecret_resp: +" + All #i1 #i2 . + InitWillDoSecPEio()[+] @i1 & RespWillDoSecOOBo()[+] @i2 ==> + (All idI idR capI capR pkI pkR dh ltk #k1 . + ResponderFinishedSecPairing(idR, capR, idI, capI, pkR, pkI, dh, ltk) @k1 ==> + not (Ex #k2 . K(ltk) @k2) + ) +" + +lemma secPEio_secOOBo_double_impersonation: +" + All #i1 #i2 . + InitWillDoSecPEio()[+] @i1 & RespWillDoSecOOBo()[+] @i2 ==> + (All idI1 idR1 capI1 capR1 pkI1 pkR1 dh1 ltk1 idI2 idR2 capI2 capR2 pkI2 pkR2 dh2 ltk2 #j1 #j2 . + InitiatorFinishedSecPairing(idI1, capI1, idR1, capR1, pkI1, pkR1, dh1, ltk1) @j1 & + ResponderFinishedSecPairing(idR2, capR2, idI2, capI2, pkR2, pkI2, dh2, ltk2) @j2 ==> + not (Ex #k1 #k2 . + K(ltk1) @k1 & K(ltk2) @k2 + ) + ) +" + +#endif + +/*********************************************/ +/* End lemmas about SecPEio-SecOOBo exchange */ +/*********************************************/ + +/******************************************/ +/* Lemmas about SecPEio-SecOOBio exchange */ +/******************************************/ + +#ifdef SecPEioSecOOBio +lemma secPEio_secOOBio_functional: exists-trace +" + Ex #i1 #i2 . + InitWillDoSecPEio()[+] @i1 & RespWillDoSecOOBio()[+] @i2 & + (Ex idI1 idR1 capI1 capR1 pkI1 pkR1 dh1 ltk1 idI2 idR2 capI2 capR2 pkI2 pkR2 dh2 ltk2 #j1 #j2 . + InitiatorFinishedSecPairing(idI1, capI1, idR1, capR1, pkI1, pkR1, dh1, ltk1) @j1 & + ResponderFinishedSecPairing(idR2, capR2, idI2, capI2, pkR2, pkI2, dh2, ltk2) @j2 + ) +" + +lemma secPEio_secOOBio_auth_init: +" + All #i1 #i2 . + InitWillDoSecPEio()[+] @i1 & RespWillDoSecOOBio()[+] @i2 ==> + (All idI idR capI capR pkI pkR dh ltk #k1 . + InitiatorFinishedSecPairing(idI, capI, idR, capR, pkI, pkR, dh, ltk) @k1 ==> + (Ex ni nr ri rr ei er #k2 . + RespDoneDHKeyCheck(idR, capR, idI, capI, pkR, pkI, dh, nr, ni, rr, ri, er, ei) @k2 + ) + ) +" + +lemma secPEio_secOOBio_auth_resp: +" + All #i1 #i2 . + InitWillDoSecPEio()[+] @i1 & RespWillDoSecOOBio()[+] @i2 ==> + (All idI idR capI capR pkI pkR dh ltk #k1 . + ResponderFinishedSecPairing(idR, capR, idI, capI, pkR, pkI, dh, ltk) @k1 ==> + (Ex #k2 . + InitiatorFinishedSecPairing(idI, capI, idR, capR, pkI, pkR, dh, ltk) @k2 + ) + ) +" + +lemma secPEio_secOOBio_weaksecret_init: +" + All #i1 #i2 . + InitWillDoSecPEio()[+] @i1 & RespWillDoSecOOBio()[+] @i2 ==> + (All idI idR capI capR pkI pkR dh ltk #k1 . + InitiatorFinishedSecPairing(idI, capI, idR, capR, pkI, pkR, dh, ltk) @k1 ==> + not (Ex #k2 . K(ltk) @k2) + ) +" + +lemma secPEio_secOOBio_weaksecret_resp: +" + All #i1 #i2 . + InitWillDoSecPEio()[+] @i1 & RespWillDoSecOOBio()[+] @i2 ==> + (All idI idR capI capR pkI pkR dh ltk #k1 . + ResponderFinishedSecPairing(idR, capR, idI, capI, pkR, pkI, dh, ltk) @k1 ==> + not (Ex #k2 . K(ltk) @k2) + ) +" + +lemma secPEio_secOOBio_double_impersonation: +" + All #i1 #i2 . + InitWillDoSecPEio()[+] @i1 & RespWillDoSecOOBio()[+] @i2 ==> + (All idI1 idR1 capI1 capR1 pkI1 pkR1 dh1 ltk1 idI2 idR2 capI2 capR2 pkI2 pkR2 dh2 ltk2 #j1 #j2 . + InitiatorFinishedSecPairing(idI1, capI1, idR1, capR1, pkI1, pkR1, dh1, ltk1) @j1 & + ResponderFinishedSecPairing(idR2, capR2, idI2, capI2, pkR2, pkI2, dh2, ltk2) @j2 ==> + not (Ex #k1 #k2 . + K(ltk1) @k1 & K(ltk2) @k2 + ) + ) +" + +#endif + +/**********************************************/ +/* End lemmas about SecPEio-SecOOBio exchange */ +/**********************************************/ + +/*************************************/ +/* Lemmas about SecNC-SecJW exchange */ +/*************************************/ + +#ifdef SecNCSecJW +lemma secNC_secJW_functional: exists-trace +" + Ex #i1 #i2 . + InitWillDoSecNC()[+] @i1 & RespWillDoSecJW()[+] @i2 & + (Ex idI1 idR1 capI1 capR1 pkI1 pkR1 dh1 ltk1 idI2 idR2 capI2 capR2 pkI2 pkR2 dh2 ltk2 #j1 #j2 . + InitiatorFinishedSecPairing(idI1, capI1, idR1, capR1, pkI1, pkR1, dh1, ltk1) @j1 & + ResponderFinishedSecPairing(idR2, capR2, idI2, capI2, pkR2, pkI2, dh2, ltk2) @j2 + ) +" + +lemma secNC_secJW_auth_init: +" + All #i1 #i2 . + InitWillDoSecNC()[+] @i1 & RespWillDoSecJW()[+] @i2 ==> + (All idI idR capI capR pkI pkR dh ltk #k1 . + InitiatorFinishedSecPairing(idI, capI, idR, capR, pkI, pkR, dh, ltk) @k1 ==> + (Ex ni nr ri rr ei er #k2 . + RespDoneDHKeyCheck(idR, capR, idI, capI, pkR, pkI, dh, nr, ni, rr, ri, er, ei) @k2 + ) + ) +" + +lemma secNC_secJW_auth_resp: +" + All #i1 #i2 . + InitWillDoSecNC()[+] @i1 & RespWillDoSecJW()[+] @i2 ==> + (All idI idR capI capR pkI pkR dh ltk #k1 . + ResponderFinishedSecPairing(idR, capR, idI, capI, pkR, pkI, dh, ltk) @k1 ==> + (Ex #k2 . + InitiatorFinishedSecPairing(idI, capI, idR, capR, pkI, pkR, dh, ltk) @k2 + ) + ) +" + +lemma secNC_secJW_weaksecret_init: +" + All #i1 #i2 . + InitWillDoSecNC()[+] @i1 & RespWillDoSecJW()[+] @i2 ==> + (All idI idR capI capR pkI pkR dh ltk #k1 . + InitiatorFinishedSecPairing(idI, capI, idR, capR, pkI, pkR, dh, ltk) @k1 ==> + not (Ex #k2 . K(ltk) @k2) + ) +" + +lemma secNC_secJW_weaksecret_resp: +" + All #i1 #i2 . + InitWillDoSecNC()[+] @i1 & RespWillDoSecJW()[+] @i2 ==> + (All idI idR capI capR pkI pkR dh ltk #k1 . + ResponderFinishedSecPairing(idR, capR, idI, capI, pkR, pkI, dh, ltk) @k1 ==> + not (Ex #k2 . K(ltk) @k2) + ) +" + +lemma secNC_secJW_double_impersonation: +" + All #i1 #i2 . + InitWillDoSecNC()[+] @i1 & RespWillDoSecJW()[+] @i2 ==> + (All idI1 idR1 capI1 capR1 pkI1 pkR1 dh1 ltk1 idI2 idR2 capI2 capR2 pkI2 pkR2 dh2 ltk2 #j1 #j2 . + InitiatorFinishedSecPairing(idI1, capI1, idR1, capR1, pkI1, pkR1, dh1, ltk1) @j1 & + ResponderFinishedSecPairing(idR2, capR2, idI2, capI2, pkR2, pkI2, dh2, ltk2) @j2 ==> + not (Ex #k1 #k2 . + K(ltk1) @k1 & K(ltk2) @k2 + ) + ) +" + +#endif + +/*****************************************/ +/* End lemmas about SecNC-SecJW exchange */ +/*****************************************/ + +/**************************************/ +/* Lemmas about SecNC-SecPEi exchange */ +/**************************************/ + +#ifdef SecNCSecPEi +lemma secNC_secPEi_functional: exists-trace +" + Ex #i1 #i2 . + InitWillDoSecNC()[+] @i1 & RespWillDoSecPEi()[+] @i2 & + (Ex idI1 idR1 capI1 capR1 pkI1 pkR1 dh1 ltk1 idI2 idR2 capI2 capR2 pkI2 pkR2 dh2 ltk2 #j1 #j2 . + InitiatorFinishedSecPairing(idI1, capI1, idR1, capR1, pkI1, pkR1, dh1, ltk1) @j1 & + ResponderFinishedSecPairing(idR2, capR2, idI2, capI2, pkR2, pkI2, dh2, ltk2) @j2 + ) +" + +lemma secNC_secPEi_auth_init: +" + All #i1 #i2 . + InitWillDoSecNC()[+] @i1 & RespWillDoSecPEi()[+] @i2 ==> + (All idI idR capI capR pkI pkR dh ltk #k1 . + InitiatorFinishedSecPairing(idI, capI, idR, capR, pkI, pkR, dh, ltk) @k1 ==> + (Ex ni nr ri rr ei er #k2 . + RespDoneDHKeyCheck(idR, capR, idI, capI, pkR, pkI, dh, nr, ni, rr, ri, er, ei) @k2 + ) + ) +" + +lemma secNC_secPEi_auth_resp: +" + All #i1 #i2 . + InitWillDoSecNC()[+] @i1 & RespWillDoSecPEi()[+] @i2 ==> + (All idI idR capI capR pkI pkR dh ltk #k1 . + ResponderFinishedSecPairing(idR, capR, idI, capI, pkR, pkI, dh, ltk) @k1 ==> + (Ex #k2 . + InitiatorFinishedSecPairing(idI, capI, idR, capR, pkI, pkR, dh, ltk) @k2 + ) + ) +" + +lemma secNC_secPEi_weaksecret_init: +" + All #i1 #i2 . + InitWillDoSecNC()[+] @i1 & RespWillDoSecPEi()[+] @i2 ==> + (All idI idR capI capR pkI pkR dh ltk #k1 . + InitiatorFinishedSecPairing(idI, capI, idR, capR, pkI, pkR, dh, ltk) @k1 ==> + not (Ex #k2 . K(ltk) @k2) + ) +" + +lemma secNC_secPEi_weaksecret_resp: +" + All #i1 #i2 . + InitWillDoSecNC()[+] @i1 & RespWillDoSecPEi()[+] @i2 ==> + (All idI idR capI capR pkI pkR dh ltk #k1 . + ResponderFinishedSecPairing(idR, capR, idI, capI, pkR, pkI, dh, ltk) @k1 ==> + not (Ex #k2 . K(ltk) @k2) + ) +" + +lemma secNC_secPEi_double_impersonation: +" + All #i1 #i2 . + InitWillDoSecNC()[+] @i1 & RespWillDoSecPEi()[+] @i2 ==> + (All idI1 idR1 capI1 capR1 pkI1 pkR1 dh1 ltk1 idI2 idR2 capI2 capR2 pkI2 pkR2 dh2 ltk2 #j1 #j2 . + InitiatorFinishedSecPairing(idI1, capI1, idR1, capR1, pkI1, pkR1, dh1, ltk1) @j1 & + ResponderFinishedSecPairing(idR2, capR2, idI2, capI2, pkR2, pkI2, dh2, ltk2) @j2 ==> + not (Ex #k1 #k2 . + K(ltk1) @k1 & K(ltk2) @k2 + ) + ) +" + +#endif + +/******************************************/ +/* End lemmas about SecNC-SecPEi exchange */ +/******************************************/ + +/**************************************/ +/* Lemmas about SecNC-SecPEo exchange */ +/**************************************/ + +#ifdef SecNCSecPEo +lemma secNC_secPEo_functional: exists-trace +" + Ex #i1 #i2 . + InitWillDoSecNC()[+] @i1 & RespWillDoSecPEo()[+] @i2 & + (Ex idI1 idR1 capI1 capR1 pkI1 pkR1 dh1 ltk1 idI2 idR2 capI2 capR2 pkI2 pkR2 dh2 ltk2 #j1 #j2 . + InitiatorFinishedSecPairing(idI1, capI1, idR1, capR1, pkI1, pkR1, dh1, ltk1) @j1 & + ResponderFinishedSecPairing(idR2, capR2, idI2, capI2, pkR2, pkI2, dh2, ltk2) @j2 + ) +" + +lemma secNC_secPEo_auth_init: +" + All #i1 #i2 . + InitWillDoSecNC()[+] @i1 & RespWillDoSecPEo()[+] @i2 ==> + (All idI idR capI capR pkI pkR dh ltk #k1 . + InitiatorFinishedSecPairing(idI, capI, idR, capR, pkI, pkR, dh, ltk) @k1 ==> + (Ex ni nr ri rr ei er #k2 . + RespDoneDHKeyCheck(idR, capR, idI, capI, pkR, pkI, dh, nr, ni, rr, ri, er, ei) @k2 + ) + ) +" + +lemma secNC_secPEo_auth_resp: +" + All #i1 #i2 . + InitWillDoSecNC()[+] @i1 & RespWillDoSecPEo()[+] @i2 ==> + (All idI idR capI capR pkI pkR dh ltk #k1 . + ResponderFinishedSecPairing(idR, capR, idI, capI, pkR, pkI, dh, ltk) @k1 ==> + (Ex #k2 . + InitiatorFinishedSecPairing(idI, capI, idR, capR, pkI, pkR, dh, ltk) @k2 + ) + ) +" + +lemma secNC_secPEo_weaksecret_init: +" + All #i1 #i2 . + InitWillDoSecNC()[+] @i1 & RespWillDoSecPEo()[+] @i2 ==> + (All idI idR capI capR pkI pkR dh ltk #k1 . + InitiatorFinishedSecPairing(idI, capI, idR, capR, pkI, pkR, dh, ltk) @k1 ==> + not (Ex #k2 . K(ltk) @k2) + ) +" + +lemma secNC_secPEo_weaksecret_resp: +" + All #i1 #i2 . + InitWillDoSecNC()[+] @i1 & RespWillDoSecPEo()[+] @i2 ==> + (All idI idR capI capR pkI pkR dh ltk #k1 . + ResponderFinishedSecPairing(idR, capR, idI, capI, pkR, pkI, dh, ltk) @k1 ==> + not (Ex #k2 . K(ltk) @k2) + ) +" + +lemma secNC_secPEo_double_impersonation: +" + All #i1 #i2 . + InitWillDoSecNC()[+] @i1 & RespWillDoSecPEo()[+] @i2 ==> + (All idI1 idR1 capI1 capR1 pkI1 pkR1 dh1 ltk1 idI2 idR2 capI2 capR2 pkI2 pkR2 dh2 ltk2 #j1 #j2 . + InitiatorFinishedSecPairing(idI1, capI1, idR1, capR1, pkI1, pkR1, dh1, ltk1) @j1 & + ResponderFinishedSecPairing(idR2, capR2, idI2, capI2, pkR2, pkI2, dh2, ltk2) @j2 ==> + not (Ex #k1 #k2 . + K(ltk1) @k1 & K(ltk2) @k2 + ) + ) +" + +#endif + +/******************************************/ +/* End lemmas about SecNC-SecPEo exchange */ +/******************************************/ + +/***************************************/ +/* Lemmas about SecNC-SecPEio exchange */ +/***************************************/ + +#ifdef SecNCSecPEio +lemma secNC_secPEio_functional: exists-trace +" + Ex #i1 #i2 . + InitWillDoSecNC()[+] @i1 & RespWillDoSecPEio()[+] @i2 & + (Ex idI1 idR1 capI1 capR1 pkI1 pkR1 dh1 ltk1 idI2 idR2 capI2 capR2 pkI2 pkR2 dh2 ltk2 #j1 #j2 . + InitiatorFinishedSecPairing(idI1, capI1, idR1, capR1, pkI1, pkR1, dh1, ltk1) @j1 & + ResponderFinishedSecPairing(idR2, capR2, idI2, capI2, pkR2, pkI2, dh2, ltk2) @j2 + ) +" + +lemma secNC_secPEio_auth_init: +" + All #i1 #i2 . + InitWillDoSecNC()[+] @i1 & RespWillDoSecPEio()[+] @i2 ==> + (All idI idR capI capR pkI pkR dh ltk #k1 . + InitiatorFinishedSecPairing(idI, capI, idR, capR, pkI, pkR, dh, ltk) @k1 ==> + (Ex ni nr ri rr ei er #k2 . + RespDoneDHKeyCheck(idR, capR, idI, capI, pkR, pkI, dh, nr, ni, rr, ri, er, ei) @k2 + ) + ) +" + +lemma secNC_secPEio_auth_resp: +" + All #i1 #i2 . + InitWillDoSecNC()[+] @i1 & RespWillDoSecPEio()[+] @i2 ==> + (All idI idR capI capR pkI pkR dh ltk #k1 . + ResponderFinishedSecPairing(idR, capR, idI, capI, pkR, pkI, dh, ltk) @k1 ==> + (Ex #k2 . + InitiatorFinishedSecPairing(idI, capI, idR, capR, pkI, pkR, dh, ltk) @k2 + ) + ) +" + +lemma secNC_secPEio_weaksecret_init: +" + All #i1 #i2 . + InitWillDoSecNC()[+] @i1 & RespWillDoSecPEio()[+] @i2 ==> + (All idI idR capI capR pkI pkR dh ltk #k1 . + InitiatorFinishedSecPairing(idI, capI, idR, capR, pkI, pkR, dh, ltk) @k1 ==> + not (Ex #k2 . K(ltk) @k2) + ) +" + +lemma secNC_secPEio_weaksecret_resp: +" + All #i1 #i2 . + InitWillDoSecNC()[+] @i1 & RespWillDoSecPEio()[+] @i2 ==> + (All idI idR capI capR pkI pkR dh ltk #k1 . + ResponderFinishedSecPairing(idR, capR, idI, capI, pkR, pkI, dh, ltk) @k1 ==> + not (Ex #k2 . K(ltk) @k2) + ) +" + +lemma secNC_secPEio_double_impersonation: +" + All #i1 #i2 . + InitWillDoSecNC()[+] @i1 & RespWillDoSecPEio()[+] @i2 ==> + (All idI1 idR1 capI1 capR1 pkI1 pkR1 dh1 ltk1 idI2 idR2 capI2 capR2 pkI2 pkR2 dh2 ltk2 #j1 #j2 . + InitiatorFinishedSecPairing(idI1, capI1, idR1, capR1, pkI1, pkR1, dh1, ltk1) @j1 & + ResponderFinishedSecPairing(idR2, capR2, idI2, capI2, pkR2, pkI2, dh2, ltk2) @j2 ==> + not (Ex #k1 #k2 . + K(ltk1) @k1 & K(ltk2) @k2 + ) + ) +" + +#endif + +/*******************************************/ +/* End lemmas about SecNC-SecPEio exchange */ +/*******************************************/ + +/*************************************/ +/* Lemmas about SecNC-SecNC exchange */ +/*************************************/ + +#ifdef SecNCSecNC +lemma secNC_secNC_functional: exists-trace +" + Ex #i1 #i2 . + InitWillDoSecNC()[+] @i1 & RespWillDoSecNC()[+] @i2 & + (Ex idI1 idR1 capI1 capR1 pkI1 pkR1 dh1 ltk1 idI2 idR2 capI2 capR2 pkI2 pkR2 dh2 ltk2 #j1 #j2 . + InitiatorFinishedSecPairing(idI1, capI1, idR1, capR1, pkI1, pkR1, dh1, ltk1) @j1 & + ResponderFinishedSecPairing(idR2, capR2, idI2, capI2, pkR2, pkI2, dh2, ltk2) @j2 + ) +" + +lemma secNC_secNC_auth_init: +" + All #i1 #i2 . + InitWillDoSecNC()[+] @i1 & RespWillDoSecNC()[+] @i2 ==> + (All idI idR capI capR pkI pkR dh ltk #k1 . + InitiatorFinishedSecPairing(idI, capI, idR, capR, pkI, pkR, dh, ltk) @k1 ==> + (Ex ni nr ri rr ei er #k2 . + RespDoneDHKeyCheck(idR, capR, idI, capI, pkR, pkI, dh, nr, ni, rr, ri, er, ei) @k2 + ) + ) +" + +lemma secNC_secNC_auth_resp: +" + All #i1 #i2 . + InitWillDoSecNC()[+] @i1 & RespWillDoSecNC()[+] @i2 ==> + (All idI idR capI capR pkI pkR dh ltk #k1 . + ResponderFinishedSecPairing(idR, capR, idI, capI, pkR, pkI, dh, ltk) @k1 ==> + (Ex #k2 . + InitiatorFinishedSecPairing(idI, capI, idR, capR, pkI, pkR, dh, ltk) @k2 + ) + ) +" + +lemma secNC_secNC_weaksecret_init: +" + All #i1 #i2 . + InitWillDoSecNC()[+] @i1 & RespWillDoSecNC()[+] @i2 ==> + (All idI idR capI capR pkI pkR dh ltk #k1 . + InitiatorFinishedSecPairing(idI, capI, idR, capR, pkI, pkR, dh, ltk) @k1 ==> + not (Ex #k2 . K(ltk) @k2) + ) +" + +lemma secNC_secNC_weaksecret_resp: +" + All #i1 #i2 . + InitWillDoSecNC()[+] @i1 & RespWillDoSecNC()[+] @i2 ==> + (All idI idR capI capR pkI pkR dh ltk #k1 . + ResponderFinishedSecPairing(idR, capR, idI, capI, pkR, pkI, dh, ltk) @k1 ==> + not (Ex #k2 . K(ltk) @k2) + ) +" + +lemma secNC_secNC_double_impersonation: +" + All #i1 #i2 . + InitWillDoSecNC()[+] @i1 & RespWillDoSecNC()[+] @i2 ==> + (All idI1 idR1 capI1 capR1 pkI1 pkR1 dh1 ltk1 idI2 idR2 capI2 capR2 pkI2 pkR2 dh2 ltk2 #j1 #j2 . + InitiatorFinishedSecPairing(idI1, capI1, idR1, capR1, pkI1, pkR1, dh1, ltk1) @j1 & + ResponderFinishedSecPairing(idR2, capR2, idI2, capI2, pkR2, pkI2, dh2, ltk2) @j2 ==> + not (Ex #k1 #k2 . + K(ltk1) @k1 & K(ltk2) @k2 + ) + ) +" + +#endif + +/*****************************************/ +/* End lemmas about SecNC-SecNC exchange */ +/*****************************************/ + +/***************************************/ +/* Lemmas about SecNC-SecOOBi exchange */ +/***************************************/ + +#ifdef SecNCSecOOBi +lemma secNC_secOOBi_functional: exists-trace +" + Ex #i1 #i2 . + InitWillDoSecNC()[+] @i1 & RespWillDoSecOOBi()[+] @i2 & + (Ex idI1 idR1 capI1 capR1 pkI1 pkR1 dh1 ltk1 idI2 idR2 capI2 capR2 pkI2 pkR2 dh2 ltk2 #j1 #j2 . + InitiatorFinishedSecPairing(idI1, capI1, idR1, capR1, pkI1, pkR1, dh1, ltk1) @j1 & + ResponderFinishedSecPairing(idR2, capR2, idI2, capI2, pkR2, pkI2, dh2, ltk2) @j2 + ) +" + +lemma secNC_secOOBi_auth_init: +" + All #i1 #i2 . + InitWillDoSecNC()[+] @i1 & RespWillDoSecOOBi()[+] @i2 ==> + (All idI idR capI capR pkI pkR dh ltk #k1 . + InitiatorFinishedSecPairing(idI, capI, idR, capR, pkI, pkR, dh, ltk) @k1 ==> + (Ex ni nr ri rr ei er #k2 . + RespDoneDHKeyCheck(idR, capR, idI, capI, pkR, pkI, dh, nr, ni, rr, ri, er, ei) @k2 + ) + ) +" + +lemma secNC_secOOBi_auth_resp: +" + All #i1 #i2 . + InitWillDoSecNC()[+] @i1 & RespWillDoSecOOBi()[+] @i2 ==> + (All idI idR capI capR pkI pkR dh ltk #k1 . + ResponderFinishedSecPairing(idR, capR, idI, capI, pkR, pkI, dh, ltk) @k1 ==> + (Ex #k2 . + InitiatorFinishedSecPairing(idI, capI, idR, capR, pkI, pkR, dh, ltk) @k2 + ) + ) +" + +lemma secNC_secOOBi_weaksecret_init: +" + All #i1 #i2 . + InitWillDoSecNC()[+] @i1 & RespWillDoSecOOBi()[+] @i2 ==> + (All idI idR capI capR pkI pkR dh ltk #k1 . + InitiatorFinishedSecPairing(idI, capI, idR, capR, pkI, pkR, dh, ltk) @k1 ==> + not (Ex #k2 . K(ltk) @k2) + ) +" + +lemma secNC_secOOBi_weaksecret_resp: +" + All #i1 #i2 . + InitWillDoSecNC()[+] @i1 & RespWillDoSecOOBi()[+] @i2 ==> + (All idI idR capI capR pkI pkR dh ltk #k1 . + ResponderFinishedSecPairing(idR, capR, idI, capI, pkR, pkI, dh, ltk) @k1 ==> + not (Ex #k2 . K(ltk) @k2) + ) +" + +lemma secNC_secOOBi_double_impersonation: +" + All #i1 #i2 . + InitWillDoSecNC()[+] @i1 & RespWillDoSecOOBi()[+] @i2 ==> + (All idI1 idR1 capI1 capR1 pkI1 pkR1 dh1 ltk1 idI2 idR2 capI2 capR2 pkI2 pkR2 dh2 ltk2 #j1 #j2 . + InitiatorFinishedSecPairing(idI1, capI1, idR1, capR1, pkI1, pkR1, dh1, ltk1) @j1 & + ResponderFinishedSecPairing(idR2, capR2, idI2, capI2, pkR2, pkI2, dh2, ltk2) @j2 ==> + not (Ex #k1 #k2 . + K(ltk1) @k1 & K(ltk2) @k2 + ) + ) +" + +#endif + +/*******************************************/ +/* End lemmas about SecNC-SecOOBi exchange */ +/*******************************************/ + +/***************************************/ +/* Lemmas about SecNC-SecOOBo exchange */ +/***************************************/ + +#ifdef SecNCSecOOBo +lemma secNC_secOOBo_functional: exists-trace +" + Ex #i1 #i2 . + InitWillDoSecNC()[+] @i1 & RespWillDoSecOOBo()[+] @i2 & + (Ex idI1 idR1 capI1 capR1 pkI1 pkR1 dh1 ltk1 idI2 idR2 capI2 capR2 pkI2 pkR2 dh2 ltk2 #j1 #j2 . + InitiatorFinishedSecPairing(idI1, capI1, idR1, capR1, pkI1, pkR1, dh1, ltk1) @j1 & + ResponderFinishedSecPairing(idR2, capR2, idI2, capI2, pkR2, pkI2, dh2, ltk2) @j2 + ) +" + +lemma secNC_secOOBo_auth_init: +" + All #i1 #i2 . + InitWillDoSecNC()[+] @i1 & RespWillDoSecOOBo()[+] @i2 ==> + (All idI idR capI capR pkI pkR dh ltk #k1 . + InitiatorFinishedSecPairing(idI, capI, idR, capR, pkI, pkR, dh, ltk) @k1 ==> + (Ex ni nr ri rr ei er #k2 . + RespDoneDHKeyCheck(idR, capR, idI, capI, pkR, pkI, dh, nr, ni, rr, ri, er, ei) @k2 + ) + ) +" + +lemma secNC_secOOBo_auth_resp: +" + All #i1 #i2 . + InitWillDoSecNC()[+] @i1 & RespWillDoSecOOBo()[+] @i2 ==> + (All idI idR capI capR pkI pkR dh ltk #k1 . + ResponderFinishedSecPairing(idR, capR, idI, capI, pkR, pkI, dh, ltk) @k1 ==> + (Ex #k2 . + InitiatorFinishedSecPairing(idI, capI, idR, capR, pkI, pkR, dh, ltk) @k2 + ) + ) +" + +lemma secNC_secOOBo_weaksecret_init: +" + All #i1 #i2 . + InitWillDoSecNC()[+] @i1 & RespWillDoSecOOBo()[+] @i2 ==> + (All idI idR capI capR pkI pkR dh ltk #k1 . + InitiatorFinishedSecPairing(idI, capI, idR, capR, pkI, pkR, dh, ltk) @k1 ==> + not (Ex #k2 . K(ltk) @k2) + ) +" + +lemma secNC_secOOBo_weaksecret_resp: +" + All #i1 #i2 . + InitWillDoSecNC()[+] @i1 & RespWillDoSecOOBo()[+] @i2 ==> + (All idI idR capI capR pkI pkR dh ltk #k1 . + ResponderFinishedSecPairing(idR, capR, idI, capI, pkR, pkI, dh, ltk) @k1 ==> + not (Ex #k2 . K(ltk) @k2) + ) +" + +lemma secNC_secOOBo_double_impersonation: +" + All #i1 #i2 . + InitWillDoSecNC()[+] @i1 & RespWillDoSecOOBo()[+] @i2 ==> + (All idI1 idR1 capI1 capR1 pkI1 pkR1 dh1 ltk1 idI2 idR2 capI2 capR2 pkI2 pkR2 dh2 ltk2 #j1 #j2 . + InitiatorFinishedSecPairing(idI1, capI1, idR1, capR1, pkI1, pkR1, dh1, ltk1) @j1 & + ResponderFinishedSecPairing(idR2, capR2, idI2, capI2, pkR2, pkI2, dh2, ltk2) @j2 ==> + not (Ex #k1 #k2 . + K(ltk1) @k1 & K(ltk2) @k2 + ) + ) +" + +#endif + +/*******************************************/ +/* End lemmas about SecNC-SecOOBo exchange */ +/*******************************************/ + +/****************************************/ +/* Lemmas about SecNC-SecOOBio exchange */ +/****************************************/ + +#ifdef SecNCSecOOBio +lemma secNC_secOOBio_functional: exists-trace +" + Ex #i1 #i2 . + InitWillDoSecNC()[+] @i1 & RespWillDoSecOOBio()[+] @i2 & + (Ex idI1 idR1 capI1 capR1 pkI1 pkR1 dh1 ltk1 idI2 idR2 capI2 capR2 pkI2 pkR2 dh2 ltk2 #j1 #j2 . + InitiatorFinishedSecPairing(idI1, capI1, idR1, capR1, pkI1, pkR1, dh1, ltk1) @j1 & + ResponderFinishedSecPairing(idR2, capR2, idI2, capI2, pkR2, pkI2, dh2, ltk2) @j2 + ) +" + +lemma secNC_secOOBio_auth_init: +" + All #i1 #i2 . + InitWillDoSecNC()[+] @i1 & RespWillDoSecOOBio()[+] @i2 ==> + (All idI idR capI capR pkI pkR dh ltk #k1 . + InitiatorFinishedSecPairing(idI, capI, idR, capR, pkI, pkR, dh, ltk) @k1 ==> + (Ex ni nr ri rr ei er #k2 . + RespDoneDHKeyCheck(idR, capR, idI, capI, pkR, pkI, dh, nr, ni, rr, ri, er, ei) @k2 + ) + ) +" + +lemma secNC_secOOBio_auth_resp: +" + All #i1 #i2 . + InitWillDoSecNC()[+] @i1 & RespWillDoSecOOBio()[+] @i2 ==> + (All idI idR capI capR pkI pkR dh ltk #k1 . + ResponderFinishedSecPairing(idR, capR, idI, capI, pkR, pkI, dh, ltk) @k1 ==> + (Ex #k2 . + InitiatorFinishedSecPairing(idI, capI, idR, capR, pkI, pkR, dh, ltk) @k2 + ) + ) +" + +lemma secNC_secOOBio_weaksecret_init: +" + All #i1 #i2 . + InitWillDoSecNC()[+] @i1 & RespWillDoSecOOBio()[+] @i2 ==> + (All idI idR capI capR pkI pkR dh ltk #k1 . + InitiatorFinishedSecPairing(idI, capI, idR, capR, pkI, pkR, dh, ltk) @k1 ==> + not (Ex #k2 . K(ltk) @k2) + ) +" + +lemma secNC_secOOBio_weaksecret_resp: +" + All #i1 #i2 . + InitWillDoSecNC()[+] @i1 & RespWillDoSecOOBio()[+] @i2 ==> + (All idI idR capI capR pkI pkR dh ltk #k1 . + ResponderFinishedSecPairing(idR, capR, idI, capI, pkR, pkI, dh, ltk) @k1 ==> + not (Ex #k2 . K(ltk) @k2) + ) +" + +lemma secNC_secOOBio_double_impersonation: +" + All #i1 #i2 . + InitWillDoSecNC()[+] @i1 & RespWillDoSecOOBio()[+] @i2 ==> + (All idI1 idR1 capI1 capR1 pkI1 pkR1 dh1 ltk1 idI2 idR2 capI2 capR2 pkI2 pkR2 dh2 ltk2 #j1 #j2 . + InitiatorFinishedSecPairing(idI1, capI1, idR1, capR1, pkI1, pkR1, dh1, ltk1) @j1 & + ResponderFinishedSecPairing(idR2, capR2, idI2, capI2, pkR2, pkI2, dh2, ltk2) @j2 ==> + not (Ex #k1 #k2 . + K(ltk1) @k1 & K(ltk2) @k2 + ) + ) +" + +#endif + +/********************************************/ +/* End lemmas about SecNC-SecOOBio exchange */ +/********************************************/ + +/***************************************/ +/* Lemmas about SecOOBi-SecJW exchange */ +/***************************************/ + +#ifdef SecOOBiSecJW +lemma secOOBi_secJW_functional: exists-trace +" + Ex #i1 #i2 . + InitWillDoSecOOBi()[+] @i1 & RespWillDoSecJW()[+] @i2 & + (Ex idI1 idR1 capI1 capR1 pkI1 pkR1 dh1 ltk1 idI2 idR2 capI2 capR2 pkI2 pkR2 dh2 ltk2 #j1 #j2 . + InitiatorFinishedSecPairing(idI1, capI1, idR1, capR1, pkI1, pkR1, dh1, ltk1) @j1 & + ResponderFinishedSecPairing(idR2, capR2, idI2, capI2, pkR2, pkI2, dh2, ltk2) @j2 + ) +" + +lemma secOOBi_secJW_auth_init: +" + All #i1 #i2 . + InitWillDoSecOOBi()[+] @i1 & RespWillDoSecJW()[+] @i2 ==> + (All idI idR capI capR pkI pkR dh ltk #k1 . + InitiatorFinishedSecPairing(idI, capI, idR, capR, pkI, pkR, dh, ltk) @k1 ==> + (Ex ni nr ri rr ei er #k2 . + RespDoneDHKeyCheck(idR, capR, idI, capI, pkR, pkI, dh, nr, ni, rr, ri, er, ei) @k2 + ) + ) +" + +lemma secOOBi_secJW_auth_resp: +" + All #i1 #i2 . + InitWillDoSecOOBi()[+] @i1 & RespWillDoSecJW()[+] @i2 ==> + (All idI idR capI capR pkI pkR dh ltk #k1 . + ResponderFinishedSecPairing(idR, capR, idI, capI, pkR, pkI, dh, ltk) @k1 ==> + (Ex #k2 . + InitiatorFinishedSecPairing(idI, capI, idR, capR, pkI, pkR, dh, ltk) @k2 + ) + ) +" + +lemma secOOBi_secJW_weaksecret_init: +" + All #i1 #i2 . + InitWillDoSecOOBi()[+] @i1 & RespWillDoSecJW()[+] @i2 ==> + (All idI idR capI capR pkI pkR dh ltk #k1 . + InitiatorFinishedSecPairing(idI, capI, idR, capR, pkI, pkR, dh, ltk) @k1 ==> + not (Ex #k2 . K(ltk) @k2) + ) +" + +lemma secOOBi_secJW_weaksecret_resp: +" + All #i1 #i2 . + InitWillDoSecOOBi()[+] @i1 & RespWillDoSecJW()[+] @i2 ==> + (All idI idR capI capR pkI pkR dh ltk #k1 . + ResponderFinishedSecPairing(idR, capR, idI, capI, pkR, pkI, dh, ltk) @k1 ==> + not (Ex #k2 . K(ltk) @k2) + ) +" + +lemma secOOBi_secJW_double_impersonation: +" + All #i1 #i2 . + InitWillDoSecOOBi()[+] @i1 & RespWillDoSecJW()[+] @i2 ==> + (All idI1 idR1 capI1 capR1 pkI1 pkR1 dh1 ltk1 idI2 idR2 capI2 capR2 pkI2 pkR2 dh2 ltk2 #j1 #j2 . + InitiatorFinishedSecPairing(idI1, capI1, idR1, capR1, pkI1, pkR1, dh1, ltk1) @j1 & + ResponderFinishedSecPairing(idR2, capR2, idI2, capI2, pkR2, pkI2, dh2, ltk2) @j2 ==> + not (Ex #k1 #k2 . + K(ltk1) @k1 & K(ltk2) @k2 + ) + ) +" + +#endif + +/*******************************************/ +/* End lemmas about SecOOBi-SecJW exchange */ +/*******************************************/ + +/****************************************/ +/* Lemmas about SecOOBi-SecPEi exchange */ +/****************************************/ + +#ifdef SecOOBiSecPEi +lemma secOOBi_secPEi_functional: exists-trace +" + Ex #i1 #i2 . + InitWillDoSecOOBi()[+] @i1 & RespWillDoSecPEi()[+] @i2 & + (Ex idI1 idR1 capI1 capR1 pkI1 pkR1 dh1 ltk1 idI2 idR2 capI2 capR2 pkI2 pkR2 dh2 ltk2 #j1 #j2 . + InitiatorFinishedSecPairing(idI1, capI1, idR1, capR1, pkI1, pkR1, dh1, ltk1) @j1 & + ResponderFinishedSecPairing(idR2, capR2, idI2, capI2, pkR2, pkI2, dh2, ltk2) @j2 + ) +" + +lemma secOOBi_secPEi_auth_init: +" + All #i1 #i2 . + InitWillDoSecOOBi()[+] @i1 & RespWillDoSecPEi()[+] @i2 ==> + (All idI idR capI capR pkI pkR dh ltk #k1 . + InitiatorFinishedSecPairing(idI, capI, idR, capR, pkI, pkR, dh, ltk) @k1 ==> + (Ex ni nr ri rr ei er #k2 . + RespDoneDHKeyCheck(idR, capR, idI, capI, pkR, pkI, dh, nr, ni, rr, ri, er, ei) @k2 + ) + ) +" + +lemma secOOBi_secPEi_auth_resp: +" + All #i1 #i2 . + InitWillDoSecOOBi()[+] @i1 & RespWillDoSecPEi()[+] @i2 ==> + (All idI idR capI capR pkI pkR dh ltk #k1 . + ResponderFinishedSecPairing(idR, capR, idI, capI, pkR, pkI, dh, ltk) @k1 ==> + (Ex #k2 . + InitiatorFinishedSecPairing(idI, capI, idR, capR, pkI, pkR, dh, ltk) @k2 + ) + ) +" + +lemma secOOBi_secPEi_weaksecret_init: +" + All #i1 #i2 . + InitWillDoSecOOBi()[+] @i1 & RespWillDoSecPEi()[+] @i2 ==> + (All idI idR capI capR pkI pkR dh ltk #k1 . + InitiatorFinishedSecPairing(idI, capI, idR, capR, pkI, pkR, dh, ltk) @k1 ==> + not (Ex #k2 . K(ltk) @k2) + ) +" + +lemma secOOBi_secPEi_weaksecret_resp: +" + All #i1 #i2 . + InitWillDoSecOOBi()[+] @i1 & RespWillDoSecPEi()[+] @i2 ==> + (All idI idR capI capR pkI pkR dh ltk #k1 . + ResponderFinishedSecPairing(idR, capR, idI, capI, pkR, pkI, dh, ltk) @k1 ==> + not (Ex #k2 . K(ltk) @k2) + ) +" + +lemma secOOBi_secPEi_double_impersonation: +" + All #i1 #i2 . + InitWillDoSecOOBi()[+] @i1 & RespWillDoSecPEi()[+] @i2 ==> + (All idI1 idR1 capI1 capR1 pkI1 pkR1 dh1 ltk1 idI2 idR2 capI2 capR2 pkI2 pkR2 dh2 ltk2 #j1 #j2 . + InitiatorFinishedSecPairing(idI1, capI1, idR1, capR1, pkI1, pkR1, dh1, ltk1) @j1 & + ResponderFinishedSecPairing(idR2, capR2, idI2, capI2, pkR2, pkI2, dh2, ltk2) @j2 ==> + not (Ex #k1 #k2 . + K(ltk1) @k1 & K(ltk2) @k2 + ) + ) +" + +#endif + +/********************************************/ +/* End lemmas about SecOOBi-SecPEi exchange */ +/********************************************/ + +/****************************************/ +/* Lemmas about SecOOBi-SecPEo exchange */ +/****************************************/ + +#ifdef SecOOBiSecPEo +lemma secOOBi_secPEo_functional: exists-trace +" + Ex #i1 #i2 . + InitWillDoSecOOBi()[+] @i1 & RespWillDoSecPEo()[+] @i2 & + (Ex idI1 idR1 capI1 capR1 pkI1 pkR1 dh1 ltk1 idI2 idR2 capI2 capR2 pkI2 pkR2 dh2 ltk2 #j1 #j2 . + InitiatorFinishedSecPairing(idI1, capI1, idR1, capR1, pkI1, pkR1, dh1, ltk1) @j1 & + ResponderFinishedSecPairing(idR2, capR2, idI2, capI2, pkR2, pkI2, dh2, ltk2) @j2 + ) +" + +lemma secOOBi_secPEo_auth_init: +" + All #i1 #i2 . + InitWillDoSecOOBi()[+] @i1 & RespWillDoSecPEo()[+] @i2 ==> + (All idI idR capI capR pkI pkR dh ltk #k1 . + InitiatorFinishedSecPairing(idI, capI, idR, capR, pkI, pkR, dh, ltk) @k1 ==> + (Ex ni nr ri rr ei er #k2 . + RespDoneDHKeyCheck(idR, capR, idI, capI, pkR, pkI, dh, nr, ni, rr, ri, er, ei) @k2 + ) + ) +" + +lemma secOOBi_secPEo_auth_resp: +" + All #i1 #i2 . + InitWillDoSecOOBi()[+] @i1 & RespWillDoSecPEo()[+] @i2 ==> + (All idI idR capI capR pkI pkR dh ltk #k1 . + ResponderFinishedSecPairing(idR, capR, idI, capI, pkR, pkI, dh, ltk) @k1 ==> + (Ex #k2 . + InitiatorFinishedSecPairing(idI, capI, idR, capR, pkI, pkR, dh, ltk) @k2 + ) + ) +" + +lemma secOOBi_secPEo_weaksecret_init: +" + All #i1 #i2 . + InitWillDoSecOOBi()[+] @i1 & RespWillDoSecPEo()[+] @i2 ==> + (All idI idR capI capR pkI pkR dh ltk #k1 . + InitiatorFinishedSecPairing(idI, capI, idR, capR, pkI, pkR, dh, ltk) @k1 ==> + not (Ex #k2 . K(ltk) @k2) + ) +" + +lemma secOOBi_secPEo_weaksecret_resp: +" + All #i1 #i2 . + InitWillDoSecOOBi()[+] @i1 & RespWillDoSecPEo()[+] @i2 ==> + (All idI idR capI capR pkI pkR dh ltk #k1 . + ResponderFinishedSecPairing(idR, capR, idI, capI, pkR, pkI, dh, ltk) @k1 ==> + not (Ex #k2 . K(ltk) @k2) + ) +" + +lemma secOOBi_secPEo_double_impersonation: +" + All #i1 #i2 . + InitWillDoSecOOBi()[+] @i1 & RespWillDoSecPEo()[+] @i2 ==> + (All idI1 idR1 capI1 capR1 pkI1 pkR1 dh1 ltk1 idI2 idR2 capI2 capR2 pkI2 pkR2 dh2 ltk2 #j1 #j2 . + InitiatorFinishedSecPairing(idI1, capI1, idR1, capR1, pkI1, pkR1, dh1, ltk1) @j1 & + ResponderFinishedSecPairing(idR2, capR2, idI2, capI2, pkR2, pkI2, dh2, ltk2) @j2 ==> + not (Ex #k1 #k2 . + K(ltk1) @k1 & K(ltk2) @k2 + ) + ) +" + +#endif + +/********************************************/ +/* End lemmas about SecOOBi-SecPEo exchange */ +/********************************************/ + +/*****************************************/ +/* Lemmas about SecOOBi-SecPEio exchange */ +/*****************************************/ + +#ifdef SecOOBiSecPEio +lemma secOOBi_secPEio_functional: exists-trace +" + Ex #i1 #i2 . + InitWillDoSecOOBi()[+] @i1 & RespWillDoSecPEio()[+] @i2 & + (Ex idI1 idR1 capI1 capR1 pkI1 pkR1 dh1 ltk1 idI2 idR2 capI2 capR2 pkI2 pkR2 dh2 ltk2 #j1 #j2 . + InitiatorFinishedSecPairing(idI1, capI1, idR1, capR1, pkI1, pkR1, dh1, ltk1) @j1 & + ResponderFinishedSecPairing(idR2, capR2, idI2, capI2, pkR2, pkI2, dh2, ltk2) @j2 + ) +" + +lemma secOOBi_secPEio_auth_init: +" + All #i1 #i2 . + InitWillDoSecOOBi()[+] @i1 & RespWillDoSecPEio()[+] @i2 ==> + (All idI idR capI capR pkI pkR dh ltk #k1 . + InitiatorFinishedSecPairing(idI, capI, idR, capR, pkI, pkR, dh, ltk) @k1 ==> + (Ex ni nr ri rr ei er #k2 . + RespDoneDHKeyCheck(idR, capR, idI, capI, pkR, pkI, dh, nr, ni, rr, ri, er, ei) @k2 + ) + ) +" + +lemma secOOBi_secPEio_auth_resp: +" + All #i1 #i2 . + InitWillDoSecOOBi()[+] @i1 & RespWillDoSecPEio()[+] @i2 ==> + (All idI idR capI capR pkI pkR dh ltk #k1 . + ResponderFinishedSecPairing(idR, capR, idI, capI, pkR, pkI, dh, ltk) @k1 ==> + (Ex #k2 . + InitiatorFinishedSecPairing(idI, capI, idR, capR, pkI, pkR, dh, ltk) @k2 + ) + ) +" + +lemma secOOBi_secPEio_weaksecret_init: +" + All #i1 #i2 . + InitWillDoSecOOBi()[+] @i1 & RespWillDoSecPEio()[+] @i2 ==> + (All idI idR capI capR pkI pkR dh ltk #k1 . + InitiatorFinishedSecPairing(idI, capI, idR, capR, pkI, pkR, dh, ltk) @k1 ==> + not (Ex #k2 . K(ltk) @k2) + ) +" + +lemma secOOBi_secPEio_weaksecret_resp: +" + All #i1 #i2 . + InitWillDoSecOOBi()[+] @i1 & RespWillDoSecPEio()[+] @i2 ==> + (All idI idR capI capR pkI pkR dh ltk #k1 . + ResponderFinishedSecPairing(idR, capR, idI, capI, pkR, pkI, dh, ltk) @k1 ==> + not (Ex #k2 . K(ltk) @k2) + ) +" + +lemma secOOBi_secPEio_double_impersonation: +" + All #i1 #i2 . + InitWillDoSecOOBi()[+] @i1 & RespWillDoSecPEio()[+] @i2 ==> + (All idI1 idR1 capI1 capR1 pkI1 pkR1 dh1 ltk1 idI2 idR2 capI2 capR2 pkI2 pkR2 dh2 ltk2 #j1 #j2 . + InitiatorFinishedSecPairing(idI1, capI1, idR1, capR1, pkI1, pkR1, dh1, ltk1) @j1 & + ResponderFinishedSecPairing(idR2, capR2, idI2, capI2, pkR2, pkI2, dh2, ltk2) @j2 ==> + not (Ex #k1 #k2 . + K(ltk1) @k1 & K(ltk2) @k2 + ) + ) +" + +#endif + +/*********************************************/ +/* End lemmas about SecOOBi-SecPEio exchange */ +/*********************************************/ + +/***************************************/ +/* Lemmas about SecOOBi-SecNC exchange */ +/***************************************/ + +#ifdef SecOOBiSecNC +lemma secOOBi_secNC_functional: exists-trace +" + Ex #i1 #i2 . + InitWillDoSecOOBi()[+] @i1 & RespWillDoSecNC()[+] @i2 & + (Ex idI1 idR1 capI1 capR1 pkI1 pkR1 dh1 ltk1 idI2 idR2 capI2 capR2 pkI2 pkR2 dh2 ltk2 #j1 #j2 . + InitiatorFinishedSecPairing(idI1, capI1, idR1, capR1, pkI1, pkR1, dh1, ltk1) @j1 & + ResponderFinishedSecPairing(idR2, capR2, idI2, capI2, pkR2, pkI2, dh2, ltk2) @j2 + ) +" + +lemma secOOBi_secNC_auth_init: +" + All #i1 #i2 . + InitWillDoSecOOBi()[+] @i1 & RespWillDoSecNC()[+] @i2 ==> + (All idI idR capI capR pkI pkR dh ltk #k1 . + InitiatorFinishedSecPairing(idI, capI, idR, capR, pkI, pkR, dh, ltk) @k1 ==> + (Ex ni nr ri rr ei er #k2 . + RespDoneDHKeyCheck(idR, capR, idI, capI, pkR, pkI, dh, nr, ni, rr, ri, er, ei) @k2 + ) + ) +" + +lemma secOOBi_secNC_auth_resp: +" + All #i1 #i2 . + InitWillDoSecOOBi()[+] @i1 & RespWillDoSecNC()[+] @i2 ==> + (All idI idR capI capR pkI pkR dh ltk #k1 . + ResponderFinishedSecPairing(idR, capR, idI, capI, pkR, pkI, dh, ltk) @k1 ==> + (Ex #k2 . + InitiatorFinishedSecPairing(idI, capI, idR, capR, pkI, pkR, dh, ltk) @k2 + ) + ) +" + +lemma secOOBi_secNC_weaksecret_init: +" + All #i1 #i2 . + InitWillDoSecOOBi()[+] @i1 & RespWillDoSecNC()[+] @i2 ==> + (All idI idR capI capR pkI pkR dh ltk #k1 . + InitiatorFinishedSecPairing(idI, capI, idR, capR, pkI, pkR, dh, ltk) @k1 ==> + not (Ex #k2 . K(ltk) @k2) + ) +" + +lemma secOOBi_secNC_weaksecret_resp: +" + All #i1 #i2 . + InitWillDoSecOOBi()[+] @i1 & RespWillDoSecNC()[+] @i2 ==> + (All idI idR capI capR pkI pkR dh ltk #k1 . + ResponderFinishedSecPairing(idR, capR, idI, capI, pkR, pkI, dh, ltk) @k1 ==> + not (Ex #k2 . K(ltk) @k2) + ) +" + +lemma secOOBi_secNC_double_impersonation: +" + All #i1 #i2 . + InitWillDoSecOOBi()[+] @i1 & RespWillDoSecNC()[+] @i2 ==> + (All idI1 idR1 capI1 capR1 pkI1 pkR1 dh1 ltk1 idI2 idR2 capI2 capR2 pkI2 pkR2 dh2 ltk2 #j1 #j2 . + InitiatorFinishedSecPairing(idI1, capI1, idR1, capR1, pkI1, pkR1, dh1, ltk1) @j1 & + ResponderFinishedSecPairing(idR2, capR2, idI2, capI2, pkR2, pkI2, dh2, ltk2) @j2 ==> + not (Ex #k1 #k2 . + K(ltk1) @k1 & K(ltk2) @k2 + ) + ) +" + +#endif + +/*******************************************/ +/* End lemmas about SecOOBi-SecNC exchange */ +/*******************************************/ + +/*****************************************/ +/* Lemmas about SecOOBi-SecOOBi exchange */ +/*****************************************/ + +#ifdef SecOOBiSecOOBi +lemma secOOBi_secOOBi_functional: exists-trace +" + Ex #i1 #i2 . + InitWillDoSecOOBi()[+] @i1 & RespWillDoSecOOBi()[+] @i2 & + (Ex idI1 idR1 capI1 capR1 pkI1 pkR1 dh1 ltk1 idI2 idR2 capI2 capR2 pkI2 pkR2 dh2 ltk2 #j1 #j2 . + InitiatorFinishedSecPairing(idI1, capI1, idR1, capR1, pkI1, pkR1, dh1, ltk1) @j1 & + ResponderFinishedSecPairing(idR2, capR2, idI2, capI2, pkR2, pkI2, dh2, ltk2) @j2 + ) +" + +lemma secOOBi_secOOBi_auth_init: +" + All #i1 #i2 . + InitWillDoSecOOBi()[+] @i1 & RespWillDoSecOOBi()[+] @i2 ==> + (All idI idR capI capR pkI pkR dh ltk #k1 . + InitiatorFinishedSecPairing(idI, capI, idR, capR, pkI, pkR, dh, ltk) @k1 ==> + (Ex ni nr ri rr ei er #k2 . + RespDoneDHKeyCheck(idR, capR, idI, capI, pkR, pkI, dh, nr, ni, rr, ri, er, ei) @k2 + ) + ) +" + +lemma secOOBi_secOOBi_auth_resp: +" + All #i1 #i2 . + InitWillDoSecOOBi()[+] @i1 & RespWillDoSecOOBi()[+] @i2 ==> + (All idI idR capI capR pkI pkR dh ltk #k1 . + ResponderFinishedSecPairing(idR, capR, idI, capI, pkR, pkI, dh, ltk) @k1 ==> + (Ex #k2 . + InitiatorFinishedSecPairing(idI, capI, idR, capR, pkI, pkR, dh, ltk) @k2 + ) + ) +" + +lemma secOOBi_secOOBi_weaksecret_init: +" + All #i1 #i2 . + InitWillDoSecOOBi()[+] @i1 & RespWillDoSecOOBi()[+] @i2 ==> + (All idI idR capI capR pkI pkR dh ltk #k1 . + InitiatorFinishedSecPairing(idI, capI, idR, capR, pkI, pkR, dh, ltk) @k1 ==> + not (Ex #k2 . K(ltk) @k2) + ) +" + +lemma secOOBi_secOOBi_weaksecret_resp: +" + All #i1 #i2 . + InitWillDoSecOOBi()[+] @i1 & RespWillDoSecOOBi()[+] @i2 ==> + (All idI idR capI capR pkI pkR dh ltk #k1 . + ResponderFinishedSecPairing(idR, capR, idI, capI, pkR, pkI, dh, ltk) @k1 ==> + not (Ex #k2 . K(ltk) @k2) + ) +" + +lemma secOOBi_secOOBi_double_impersonation: +" + All #i1 #i2 . + InitWillDoSecOOBi()[+] @i1 & RespWillDoSecOOBi()[+] @i2 ==> + (All idI1 idR1 capI1 capR1 pkI1 pkR1 dh1 ltk1 idI2 idR2 capI2 capR2 pkI2 pkR2 dh2 ltk2 #j1 #j2 . + InitiatorFinishedSecPairing(idI1, capI1, idR1, capR1, pkI1, pkR1, dh1, ltk1) @j1 & + ResponderFinishedSecPairing(idR2, capR2, idI2, capI2, pkR2, pkI2, dh2, ltk2) @j2 ==> + not (Ex #k1 #k2 . + K(ltk1) @k1 & K(ltk2) @k2 + ) + ) +" + +#endif + +/*********************************************/ +/* End lemmas about SecOOBi-SecOOBi exchange */ +/*********************************************/ + +/*****************************************/ +/* Lemmas about SecOOBi-SecOOBo exchange */ +/*****************************************/ + +#ifdef SecOOBiSecOOBo +lemma secOOBi_secOOBo_functional: exists-trace +" + Ex #i1 #i2 . + InitWillDoSecOOBi()[+] @i1 & RespWillDoSecOOBo()[+] @i2 & + (Ex idI1 idR1 capI1 capR1 pkI1 pkR1 dh1 ltk1 idI2 idR2 capI2 capR2 pkI2 pkR2 dh2 ltk2 #j1 #j2 . + InitiatorFinishedSecPairing(idI1, capI1, idR1, capR1, pkI1, pkR1, dh1, ltk1) @j1 & + ResponderFinishedSecPairing(idR2, capR2, idI2, capI2, pkR2, pkI2, dh2, ltk2) @j2 + ) +" + +lemma secOOBi_secOOBo_auth_init: +" + All #i1 #i2 . + InitWillDoSecOOBi()[+] @i1 & RespWillDoSecOOBo()[+] @i2 ==> + (All idI idR capI capR pkI pkR dh ltk #k1 . + InitiatorFinishedSecPairing(idI, capI, idR, capR, pkI, pkR, dh, ltk) @k1 ==> + (Ex ni nr ri rr ei er #k2 . + RespDoneDHKeyCheck(idR, capR, idI, capI, pkR, pkI, dh, nr, ni, rr, ri, er, ei) @k2 + ) + ) +" + +lemma secOOBi_secOOBo_auth_resp: +" + All #i1 #i2 . + InitWillDoSecOOBi()[+] @i1 & RespWillDoSecOOBo()[+] @i2 ==> + (All idI idR capI capR pkI pkR dh ltk #k1 . + ResponderFinishedSecPairing(idR, capR, idI, capI, pkR, pkI, dh, ltk) @k1 ==> + (Ex #k2 . + InitiatorFinishedSecPairing(idI, capI, idR, capR, pkI, pkR, dh, ltk) @k2 + ) + ) +" + +lemma secOOBi_secOOBo_weaksecret_init: +" + All #i1 #i2 . + InitWillDoSecOOBi()[+] @i1 & RespWillDoSecOOBo()[+] @i2 ==> + (All idI idR capI capR pkI pkR dh ltk #k1 . + InitiatorFinishedSecPairing(idI, capI, idR, capR, pkI, pkR, dh, ltk) @k1 ==> + not (Ex #k2 . K(ltk) @k2) + ) +" + +lemma secOOBi_secOOBo_weaksecret_resp: +" + All #i1 #i2 . + InitWillDoSecOOBi()[+] @i1 & RespWillDoSecOOBo()[+] @i2 ==> + (All idI idR capI capR pkI pkR dh ltk #k1 . + ResponderFinishedSecPairing(idR, capR, idI, capI, pkR, pkI, dh, ltk) @k1 ==> + not (Ex #k2 . K(ltk) @k2) + ) +" + +lemma secOOBi_secOOBo_double_impersonation: +" + All #i1 #i2 . + InitWillDoSecOOBi()[+] @i1 & RespWillDoSecOOBo()[+] @i2 ==> + (All idI1 idR1 capI1 capR1 pkI1 pkR1 dh1 ltk1 idI2 idR2 capI2 capR2 pkI2 pkR2 dh2 ltk2 #j1 #j2 . + InitiatorFinishedSecPairing(idI1, capI1, idR1, capR1, pkI1, pkR1, dh1, ltk1) @j1 & + ResponderFinishedSecPairing(idR2, capR2, idI2, capI2, pkR2, pkI2, dh2, ltk2) @j2 ==> + not (Ex #k1 #k2 . + K(ltk1) @k1 & K(ltk2) @k2 + ) + ) +" + +#endif + +/*********************************************/ +/* End lemmas about SecOOBi-SecOOBo exchange */ +/*********************************************/ + +/******************************************/ +/* Lemmas about SecOOBi-SecOOBio exchange */ +/******************************************/ + +#ifdef SecOOBiSecOOBio +lemma secOOBi_secOOBio_functional: exists-trace +" + Ex #i1 #i2 . + InitWillDoSecOOBi()[+] @i1 & RespWillDoSecOOBio()[+] @i2 & + (Ex idI1 idR1 capI1 capR1 pkI1 pkR1 dh1 ltk1 idI2 idR2 capI2 capR2 pkI2 pkR2 dh2 ltk2 #j1 #j2 . + InitiatorFinishedSecPairing(idI1, capI1, idR1, capR1, pkI1, pkR1, dh1, ltk1) @j1 & + ResponderFinishedSecPairing(idR2, capR2, idI2, capI2, pkR2, pkI2, dh2, ltk2) @j2 + ) +" + +lemma secOOBi_secOOBio_auth_init: +" + All #i1 #i2 . + InitWillDoSecOOBi()[+] @i1 & RespWillDoSecOOBio()[+] @i2 ==> + (All idI idR capI capR pkI pkR dh ltk #k1 . + InitiatorFinishedSecPairing(idI, capI, idR, capR, pkI, pkR, dh, ltk) @k1 ==> + (Ex ni nr ri rr ei er #k2 . + RespDoneDHKeyCheck(idR, capR, idI, capI, pkR, pkI, dh, nr, ni, rr, ri, er, ei) @k2 + ) + ) +" + +lemma secOOBi_secOOBio_auth_resp: +" + All #i1 #i2 . + InitWillDoSecOOBi()[+] @i1 & RespWillDoSecOOBio()[+] @i2 ==> + (All idI idR capI capR pkI pkR dh ltk #k1 . + ResponderFinishedSecPairing(idR, capR, idI, capI, pkR, pkI, dh, ltk) @k1 ==> + (Ex #k2 . + InitiatorFinishedSecPairing(idI, capI, idR, capR, pkI, pkR, dh, ltk) @k2 + ) + ) +" + +lemma secOOBi_secOOBio_weaksecret_init: +" + All #i1 #i2 . + InitWillDoSecOOBi()[+] @i1 & RespWillDoSecOOBio()[+] @i2 ==> + (All idI idR capI capR pkI pkR dh ltk #k1 . + InitiatorFinishedSecPairing(idI, capI, idR, capR, pkI, pkR, dh, ltk) @k1 ==> + not (Ex #k2 . K(ltk) @k2) + ) +" + +lemma secOOBi_secOOBio_weaksecret_resp: +" + All #i1 #i2 . + InitWillDoSecOOBi()[+] @i1 & RespWillDoSecOOBio()[+] @i2 ==> + (All idI idR capI capR pkI pkR dh ltk #k1 . + ResponderFinishedSecPairing(idR, capR, idI, capI, pkR, pkI, dh, ltk) @k1 ==> + not (Ex #k2 . K(ltk) @k2) + ) +" + +lemma secOOBi_secOOBio_double_impersonation: +" + All #i1 #i2 . + InitWillDoSecOOBi()[+] @i1 & RespWillDoSecOOBio()[+] @i2 ==> + (All idI1 idR1 capI1 capR1 pkI1 pkR1 dh1 ltk1 idI2 idR2 capI2 capR2 pkI2 pkR2 dh2 ltk2 #j1 #j2 . + InitiatorFinishedSecPairing(idI1, capI1, idR1, capR1, pkI1, pkR1, dh1, ltk1) @j1 & + ResponderFinishedSecPairing(idR2, capR2, idI2, capI2, pkR2, pkI2, dh2, ltk2) @j2 ==> + not (Ex #k1 #k2 . + K(ltk1) @k1 & K(ltk2) @k2 + ) + ) +" + +#endif + +/**********************************************/ +/* End lemmas about SecOOBi-SecOOBio exchange */ +/**********************************************/ + +/***************************************/ +/* Lemmas about SecOOBo-SecJW exchange */ +/***************************************/ + +#ifdef SecOOBoSecJW +lemma secOOBo_secJW_functional: exists-trace +" + Ex #i1 #i2 . + InitWillDoSecOOBo()[+] @i1 & RespWillDoSecJW()[+] @i2 & + (Ex idI1 idR1 capI1 capR1 pkI1 pkR1 dh1 ltk1 idI2 idR2 capI2 capR2 pkI2 pkR2 dh2 ltk2 #j1 #j2 . + InitiatorFinishedSecPairing(idI1, capI1, idR1, capR1, pkI1, pkR1, dh1, ltk1) @j1 & + ResponderFinishedSecPairing(idR2, capR2, idI2, capI2, pkR2, pkI2, dh2, ltk2) @j2 + ) +" + +lemma secOOBo_secJW_auth_init: +" + All #i1 #i2 . + InitWillDoSecOOBo()[+] @i1 & RespWillDoSecJW()[+] @i2 ==> + (All idI idR capI capR pkI pkR dh ltk #k1 . + InitiatorFinishedSecPairing(idI, capI, idR, capR, pkI, pkR, dh, ltk) @k1 ==> + (Ex ni nr ri rr ei er #k2 . + RespDoneDHKeyCheck(idR, capR, idI, capI, pkR, pkI, dh, nr, ni, rr, ri, er, ei) @k2 + ) + ) +" + +lemma secOOBo_secJW_auth_resp: +" + All #i1 #i2 . + InitWillDoSecOOBo()[+] @i1 & RespWillDoSecJW()[+] @i2 ==> + (All idI idR capI capR pkI pkR dh ltk #k1 . + ResponderFinishedSecPairing(idR, capR, idI, capI, pkR, pkI, dh, ltk) @k1 ==> + (Ex #k2 . + InitiatorFinishedSecPairing(idI, capI, idR, capR, pkI, pkR, dh, ltk) @k2 + ) + ) +" + +lemma secOOBo_secJW_weaksecret_init: +" + All #i1 #i2 . + InitWillDoSecOOBo()[+] @i1 & RespWillDoSecJW()[+] @i2 ==> + (All idI idR capI capR pkI pkR dh ltk #k1 . + InitiatorFinishedSecPairing(idI, capI, idR, capR, pkI, pkR, dh, ltk) @k1 ==> + not (Ex #k2 . K(ltk) @k2) + ) +" + +lemma secOOBo_secJW_weaksecret_resp: +" + All #i1 #i2 . + InitWillDoSecOOBo()[+] @i1 & RespWillDoSecJW()[+] @i2 ==> + (All idI idR capI capR pkI pkR dh ltk #k1 . + ResponderFinishedSecPairing(idR, capR, idI, capI, pkR, pkI, dh, ltk) @k1 ==> + not (Ex #k2 . K(ltk) @k2) + ) +" + +lemma secOOBo_secJW_double_impersonation: +" + All #i1 #i2 . + InitWillDoSecOOBo()[+] @i1 & RespWillDoSecJW()[+] @i2 ==> + (All idI1 idR1 capI1 capR1 pkI1 pkR1 dh1 ltk1 idI2 idR2 capI2 capR2 pkI2 pkR2 dh2 ltk2 #j1 #j2 . + InitiatorFinishedSecPairing(idI1, capI1, idR1, capR1, pkI1, pkR1, dh1, ltk1) @j1 & + ResponderFinishedSecPairing(idR2, capR2, idI2, capI2, pkR2, pkI2, dh2, ltk2) @j2 ==> + not (Ex #k1 #k2 . + K(ltk1) @k1 & K(ltk2) @k2 + ) + ) +" + +#endif + +/*******************************************/ +/* End lemmas about SecOOBo-SecJW exchange */ +/*******************************************/ + +/****************************************/ +/* Lemmas about SecOOBo-SecPEi exchange */ +/****************************************/ + +#ifdef SecOOBoSecPEi +lemma secOOBo_secPEi_functional: exists-trace +" + Ex #i1 #i2 . + InitWillDoSecOOBo()[+] @i1 & RespWillDoSecPEi()[+] @i2 & + (Ex idI1 idR1 capI1 capR1 pkI1 pkR1 dh1 ltk1 idI2 idR2 capI2 capR2 pkI2 pkR2 dh2 ltk2 #j1 #j2 . + InitiatorFinishedSecPairing(idI1, capI1, idR1, capR1, pkI1, pkR1, dh1, ltk1) @j1 & + ResponderFinishedSecPairing(idR2, capR2, idI2, capI2, pkR2, pkI2, dh2, ltk2) @j2 + ) +" + +lemma secOOBo_secPEi_auth_init: +" + All #i1 #i2 . + InitWillDoSecOOBo()[+] @i1 & RespWillDoSecPEi()[+] @i2 ==> + (All idI idR capI capR pkI pkR dh ltk #k1 . + InitiatorFinishedSecPairing(idI, capI, idR, capR, pkI, pkR, dh, ltk) @k1 ==> + (Ex ni nr ri rr ei er #k2 . + RespDoneDHKeyCheck(idR, capR, idI, capI, pkR, pkI, dh, nr, ni, rr, ri, er, ei) @k2 + ) + ) +" + +lemma secOOBo_secPEi_auth_resp: +" + All #i1 #i2 . + InitWillDoSecOOBo()[+] @i1 & RespWillDoSecPEi()[+] @i2 ==> + (All idI idR capI capR pkI pkR dh ltk #k1 . + ResponderFinishedSecPairing(idR, capR, idI, capI, pkR, pkI, dh, ltk) @k1 ==> + (Ex #k2 . + InitiatorFinishedSecPairing(idI, capI, idR, capR, pkI, pkR, dh, ltk) @k2 + ) + ) +" + +lemma secOOBo_secPEi_weaksecret_init: +" + All #i1 #i2 . + InitWillDoSecOOBo()[+] @i1 & RespWillDoSecPEi()[+] @i2 ==> + (All idI idR capI capR pkI pkR dh ltk #k1 . + InitiatorFinishedSecPairing(idI, capI, idR, capR, pkI, pkR, dh, ltk) @k1 ==> + not (Ex #k2 . K(ltk) @k2) + ) +" + +lemma secOOBo_secPEi_weaksecret_resp: +" + All #i1 #i2 . + InitWillDoSecOOBo()[+] @i1 & RespWillDoSecPEi()[+] @i2 ==> + (All idI idR capI capR pkI pkR dh ltk #k1 . + ResponderFinishedSecPairing(idR, capR, idI, capI, pkR, pkI, dh, ltk) @k1 ==> + not (Ex #k2 . K(ltk) @k2) + ) +" + +lemma secOOBo_secPEi_double_impersonation: +" + All #i1 #i2 . + InitWillDoSecOOBo()[+] @i1 & RespWillDoSecPEi()[+] @i2 ==> + (All idI1 idR1 capI1 capR1 pkI1 pkR1 dh1 ltk1 idI2 idR2 capI2 capR2 pkI2 pkR2 dh2 ltk2 #j1 #j2 . + InitiatorFinishedSecPairing(idI1, capI1, idR1, capR1, pkI1, pkR1, dh1, ltk1) @j1 & + ResponderFinishedSecPairing(idR2, capR2, idI2, capI2, pkR2, pkI2, dh2, ltk2) @j2 ==> + not (Ex #k1 #k2 . + K(ltk1) @k1 & K(ltk2) @k2 + ) + ) +" + +#endif + +/********************************************/ +/* End lemmas about SecOOBo-SecPEi exchange */ +/********************************************/ + +/****************************************/ +/* Lemmas about SecOOBo-SecPEo exchange */ +/****************************************/ + +#ifdef SecOOBoSecPEo +lemma secOOBo_secPEo_functional: exists-trace +" + Ex #i1 #i2 . + InitWillDoSecOOBo()[+] @i1 & RespWillDoSecPEo()[+] @i2 & + (Ex idI1 idR1 capI1 capR1 pkI1 pkR1 dh1 ltk1 idI2 idR2 capI2 capR2 pkI2 pkR2 dh2 ltk2 #j1 #j2 . + InitiatorFinishedSecPairing(idI1, capI1, idR1, capR1, pkI1, pkR1, dh1, ltk1) @j1 & + ResponderFinishedSecPairing(idR2, capR2, idI2, capI2, pkR2, pkI2, dh2, ltk2) @j2 + ) +" + +lemma secOOBo_secPEo_auth_init: +" + All #i1 #i2 . + InitWillDoSecOOBo()[+] @i1 & RespWillDoSecPEo()[+] @i2 ==> + (All idI idR capI capR pkI pkR dh ltk #k1 . + InitiatorFinishedSecPairing(idI, capI, idR, capR, pkI, pkR, dh, ltk) @k1 ==> + (Ex ni nr ri rr ei er #k2 . + RespDoneDHKeyCheck(idR, capR, idI, capI, pkR, pkI, dh, nr, ni, rr, ri, er, ei) @k2 + ) + ) +" + +lemma secOOBo_secPEo_auth_resp: +" + All #i1 #i2 . + InitWillDoSecOOBo()[+] @i1 & RespWillDoSecPEo()[+] @i2 ==> + (All idI idR capI capR pkI pkR dh ltk #k1 . + ResponderFinishedSecPairing(idR, capR, idI, capI, pkR, pkI, dh, ltk) @k1 ==> + (Ex #k2 . + InitiatorFinishedSecPairing(idI, capI, idR, capR, pkI, pkR, dh, ltk) @k2 + ) + ) +" + +lemma secOOBo_secPEo_weaksecret_init: +" + All #i1 #i2 . + InitWillDoSecOOBo()[+] @i1 & RespWillDoSecPEo()[+] @i2 ==> + (All idI idR capI capR pkI pkR dh ltk #k1 . + InitiatorFinishedSecPairing(idI, capI, idR, capR, pkI, pkR, dh, ltk) @k1 ==> + not (Ex #k2 . K(ltk) @k2) + ) +" + +lemma secOOBo_secPEo_weaksecret_resp: +" + All #i1 #i2 . + InitWillDoSecOOBo()[+] @i1 & RespWillDoSecPEo()[+] @i2 ==> + (All idI idR capI capR pkI pkR dh ltk #k1 . + ResponderFinishedSecPairing(idR, capR, idI, capI, pkR, pkI, dh, ltk) @k1 ==> + not (Ex #k2 . K(ltk) @k2) + ) +" + +lemma secOOBo_secPEo_double_impersonation: +" + All #i1 #i2 . + InitWillDoSecOOBo()[+] @i1 & RespWillDoSecPEo()[+] @i2 ==> + (All idI1 idR1 capI1 capR1 pkI1 pkR1 dh1 ltk1 idI2 idR2 capI2 capR2 pkI2 pkR2 dh2 ltk2 #j1 #j2 . + InitiatorFinishedSecPairing(idI1, capI1, idR1, capR1, pkI1, pkR1, dh1, ltk1) @j1 & + ResponderFinishedSecPairing(idR2, capR2, idI2, capI2, pkR2, pkI2, dh2, ltk2) @j2 ==> + not (Ex #k1 #k2 . + K(ltk1) @k1 & K(ltk2) @k2 + ) + ) +" + +#endif + +/********************************************/ +/* End lemmas about SecOOBo-SecPEo exchange */ +/********************************************/ + +/*****************************************/ +/* Lemmas about SecOOBo-SecPEio exchange */ +/*****************************************/ + +#ifdef SecOOBoSecPEio +lemma secOOBo_secPEio_functional: exists-trace +" + Ex #i1 #i2 . + InitWillDoSecOOBo()[+] @i1 & RespWillDoSecPEio()[+] @i2 & + (Ex idI1 idR1 capI1 capR1 pkI1 pkR1 dh1 ltk1 idI2 idR2 capI2 capR2 pkI2 pkR2 dh2 ltk2 #j1 #j2 . + InitiatorFinishedSecPairing(idI1, capI1, idR1, capR1, pkI1, pkR1, dh1, ltk1) @j1 & + ResponderFinishedSecPairing(idR2, capR2, idI2, capI2, pkR2, pkI2, dh2, ltk2) @j2 + ) +" + +lemma secOOBo_secPEio_auth_init: +" + All #i1 #i2 . + InitWillDoSecOOBo()[+] @i1 & RespWillDoSecPEio()[+] @i2 ==> + (All idI idR capI capR pkI pkR dh ltk #k1 . + InitiatorFinishedSecPairing(idI, capI, idR, capR, pkI, pkR, dh, ltk) @k1 ==> + (Ex ni nr ri rr ei er #k2 . + RespDoneDHKeyCheck(idR, capR, idI, capI, pkR, pkI, dh, nr, ni, rr, ri, er, ei) @k2 + ) + ) +" + +lemma secOOBo_secPEio_auth_resp: +" + All #i1 #i2 . + InitWillDoSecOOBo()[+] @i1 & RespWillDoSecPEio()[+] @i2 ==> + (All idI idR capI capR pkI pkR dh ltk #k1 . + ResponderFinishedSecPairing(idR, capR, idI, capI, pkR, pkI, dh, ltk) @k1 ==> + (Ex #k2 . + InitiatorFinishedSecPairing(idI, capI, idR, capR, pkI, pkR, dh, ltk) @k2 + ) + ) +" + +lemma secOOBo_secPEio_weaksecret_init: +" + All #i1 #i2 . + InitWillDoSecOOBo()[+] @i1 & RespWillDoSecPEio()[+] @i2 ==> + (All idI idR capI capR pkI pkR dh ltk #k1 . + InitiatorFinishedSecPairing(idI, capI, idR, capR, pkI, pkR, dh, ltk) @k1 ==> + not (Ex #k2 . K(ltk) @k2) + ) +" + +lemma secOOBo_secPEio_weaksecret_resp: +" + All #i1 #i2 . + InitWillDoSecOOBo()[+] @i1 & RespWillDoSecPEio()[+] @i2 ==> + (All idI idR capI capR pkI pkR dh ltk #k1 . + ResponderFinishedSecPairing(idR, capR, idI, capI, pkR, pkI, dh, ltk) @k1 ==> + not (Ex #k2 . K(ltk) @k2) + ) +" + +lemma secOOBo_secPEio_double_impersonation: +" + All #i1 #i2 . + InitWillDoSecOOBo()[+] @i1 & RespWillDoSecPEio()[+] @i2 ==> + (All idI1 idR1 capI1 capR1 pkI1 pkR1 dh1 ltk1 idI2 idR2 capI2 capR2 pkI2 pkR2 dh2 ltk2 #j1 #j2 . + InitiatorFinishedSecPairing(idI1, capI1, idR1, capR1, pkI1, pkR1, dh1, ltk1) @j1 & + ResponderFinishedSecPairing(idR2, capR2, idI2, capI2, pkR2, pkI2, dh2, ltk2) @j2 ==> + not (Ex #k1 #k2 . + K(ltk1) @k1 & K(ltk2) @k2 + ) + ) +" + +#endif + +/*********************************************/ +/* End lemmas about SecOOBo-SecPEio exchange */ +/*********************************************/ + +/***************************************/ +/* Lemmas about SecOOBo-SecNC exchange */ +/***************************************/ + +#ifdef SecOOBoSecNC +lemma secOOBo_secNC_functional: exists-trace +" + Ex #i1 #i2 . + InitWillDoSecOOBo()[+] @i1 & RespWillDoSecNC()[+] @i2 & + (Ex idI1 idR1 capI1 capR1 pkI1 pkR1 dh1 ltk1 idI2 idR2 capI2 capR2 pkI2 pkR2 dh2 ltk2 #j1 #j2 . + InitiatorFinishedSecPairing(idI1, capI1, idR1, capR1, pkI1, pkR1, dh1, ltk1) @j1 & + ResponderFinishedSecPairing(idR2, capR2, idI2, capI2, pkR2, pkI2, dh2, ltk2) @j2 + ) +" + +lemma secOOBo_secNC_auth_init: +" + All #i1 #i2 . + InitWillDoSecOOBo()[+] @i1 & RespWillDoSecNC()[+] @i2 ==> + (All idI idR capI capR pkI pkR dh ltk #k1 . + InitiatorFinishedSecPairing(idI, capI, idR, capR, pkI, pkR, dh, ltk) @k1 ==> + (Ex ni nr ri rr ei er #k2 . + RespDoneDHKeyCheck(idR, capR, idI, capI, pkR, pkI, dh, nr, ni, rr, ri, er, ei) @k2 + ) + ) +" + +lemma secOOBo_secNC_auth_resp: +" + All #i1 #i2 . + InitWillDoSecOOBo()[+] @i1 & RespWillDoSecNC()[+] @i2 ==> + (All idI idR capI capR pkI pkR dh ltk #k1 . + ResponderFinishedSecPairing(idR, capR, idI, capI, pkR, pkI, dh, ltk) @k1 ==> + (Ex #k2 . + InitiatorFinishedSecPairing(idI, capI, idR, capR, pkI, pkR, dh, ltk) @k2 + ) + ) +" + +lemma secOOBo_secNC_weaksecret_init: +" + All #i1 #i2 . + InitWillDoSecOOBo()[+] @i1 & RespWillDoSecNC()[+] @i2 ==> + (All idI idR capI capR pkI pkR dh ltk #k1 . + InitiatorFinishedSecPairing(idI, capI, idR, capR, pkI, pkR, dh, ltk) @k1 ==> + not (Ex #k2 . K(ltk) @k2) + ) +" + +lemma secOOBo_secNC_weaksecret_resp: +" + All #i1 #i2 . + InitWillDoSecOOBo()[+] @i1 & RespWillDoSecNC()[+] @i2 ==> + (All idI idR capI capR pkI pkR dh ltk #k1 . + ResponderFinishedSecPairing(idR, capR, idI, capI, pkR, pkI, dh, ltk) @k1 ==> + not (Ex #k2 . K(ltk) @k2) + ) +" + +lemma secOOBo_secNC_double_impersonation: +" + All #i1 #i2 . + InitWillDoSecOOBo()[+] @i1 & RespWillDoSecNC()[+] @i2 ==> + (All idI1 idR1 capI1 capR1 pkI1 pkR1 dh1 ltk1 idI2 idR2 capI2 capR2 pkI2 pkR2 dh2 ltk2 #j1 #j2 . + InitiatorFinishedSecPairing(idI1, capI1, idR1, capR1, pkI1, pkR1, dh1, ltk1) @j1 & + ResponderFinishedSecPairing(idR2, capR2, idI2, capI2, pkR2, pkI2, dh2, ltk2) @j2 ==> + not (Ex #k1 #k2 . + K(ltk1) @k1 & K(ltk2) @k2 + ) + ) +" + +#endif + +/*******************************************/ +/* End lemmas about SecOOBo-SecNC exchange */ +/*******************************************/ + +/*****************************************/ +/* Lemmas about SecOOBo-SecOOBi exchange */ +/*****************************************/ + +#ifdef SecOOBoSecOOBi +lemma secOOBo_secOOBi_functional: exists-trace +" + Ex #i1 #i2 . + InitWillDoSecOOBo()[+] @i1 & RespWillDoSecOOBi()[+] @i2 & + (Ex idI1 idR1 capI1 capR1 pkI1 pkR1 dh1 ltk1 idI2 idR2 capI2 capR2 pkI2 pkR2 dh2 ltk2 #j1 #j2 . + InitiatorFinishedSecPairing(idI1, capI1, idR1, capR1, pkI1, pkR1, dh1, ltk1) @j1 & + ResponderFinishedSecPairing(idR2, capR2, idI2, capI2, pkR2, pkI2, dh2, ltk2) @j2 + ) +" + +lemma secOOBo_secOOBi_auth_init: +" + All #i1 #i2 . + InitWillDoSecOOBo()[+] @i1 & RespWillDoSecOOBi()[+] @i2 ==> + (All idI idR capI capR pkI pkR dh ltk #k1 . + InitiatorFinishedSecPairing(idI, capI, idR, capR, pkI, pkR, dh, ltk) @k1 ==> + (Ex ni nr ri rr ei er #k2 . + RespDoneDHKeyCheck(idR, capR, idI, capI, pkR, pkI, dh, nr, ni, rr, ri, er, ei) @k2 + ) + ) +" + +lemma secOOBo_secOOBi_auth_resp: +" + All #i1 #i2 . + InitWillDoSecOOBo()[+] @i1 & RespWillDoSecOOBi()[+] @i2 ==> + (All idI idR capI capR pkI pkR dh ltk #k1 . + ResponderFinishedSecPairing(idR, capR, idI, capI, pkR, pkI, dh, ltk) @k1 ==> + (Ex #k2 . + InitiatorFinishedSecPairing(idI, capI, idR, capR, pkI, pkR, dh, ltk) @k2 + ) + ) +" + +lemma secOOBo_secOOBi_weaksecret_init: +" + All #i1 #i2 . + InitWillDoSecOOBo()[+] @i1 & RespWillDoSecOOBi()[+] @i2 ==> + (All idI idR capI capR pkI pkR dh ltk #k1 . + InitiatorFinishedSecPairing(idI, capI, idR, capR, pkI, pkR, dh, ltk) @k1 ==> + not (Ex #k2 . K(ltk) @k2) + ) +" + +lemma secOOBo_secOOBi_weaksecret_resp: +" + All #i1 #i2 . + InitWillDoSecOOBo()[+] @i1 & RespWillDoSecOOBi()[+] @i2 ==> + (All idI idR capI capR pkI pkR dh ltk #k1 . + ResponderFinishedSecPairing(idR, capR, idI, capI, pkR, pkI, dh, ltk) @k1 ==> + not (Ex #k2 . K(ltk) @k2) + ) +" + +lemma secOOBo_secOOBi_double_impersonation: +" + All #i1 #i2 . + InitWillDoSecOOBo()[+] @i1 & RespWillDoSecOOBi()[+] @i2 ==> + (All idI1 idR1 capI1 capR1 pkI1 pkR1 dh1 ltk1 idI2 idR2 capI2 capR2 pkI2 pkR2 dh2 ltk2 #j1 #j2 . + InitiatorFinishedSecPairing(idI1, capI1, idR1, capR1, pkI1, pkR1, dh1, ltk1) @j1 & + ResponderFinishedSecPairing(idR2, capR2, idI2, capI2, pkR2, pkI2, dh2, ltk2) @j2 ==> + not (Ex #k1 #k2 . + K(ltk1) @k1 & K(ltk2) @k2 + ) + ) +" + +#endif + +/*********************************************/ +/* End lemmas about SecOOBo-SecOOBi exchange */ +/*********************************************/ + +/*****************************************/ +/* Lemmas about SecOOBo-SecOOBo exchange */ +/*****************************************/ + +#ifdef SecOOBoSecOOBo +lemma secOOBo_secOOBo_functional: exists-trace +" + Ex #i1 #i2 . + InitWillDoSecOOBo()[+] @i1 & RespWillDoSecOOBo()[+] @i2 & + (Ex idI1 idR1 capI1 capR1 pkI1 pkR1 dh1 ltk1 idI2 idR2 capI2 capR2 pkI2 pkR2 dh2 ltk2 #j1 #j2 . + InitiatorFinishedSecPairing(idI1, capI1, idR1, capR1, pkI1, pkR1, dh1, ltk1) @j1 & + ResponderFinishedSecPairing(idR2, capR2, idI2, capI2, pkR2, pkI2, dh2, ltk2) @j2 + ) +" + +lemma secOOBo_secOOBo_auth_init: +" + All #i1 #i2 . + InitWillDoSecOOBo()[+] @i1 & RespWillDoSecOOBo()[+] @i2 ==> + (All idI idR capI capR pkI pkR dh ltk #k1 . + InitiatorFinishedSecPairing(idI, capI, idR, capR, pkI, pkR, dh, ltk) @k1 ==> + (Ex ni nr ri rr ei er #k2 . + RespDoneDHKeyCheck(idR, capR, idI, capI, pkR, pkI, dh, nr, ni, rr, ri, er, ei) @k2 + ) + ) +" + +lemma secOOBo_secOOBo_auth_resp: +" + All #i1 #i2 . + InitWillDoSecOOBo()[+] @i1 & RespWillDoSecOOBo()[+] @i2 ==> + (All idI idR capI capR pkI pkR dh ltk #k1 . + ResponderFinishedSecPairing(idR, capR, idI, capI, pkR, pkI, dh, ltk) @k1 ==> + (Ex #k2 . + InitiatorFinishedSecPairing(idI, capI, idR, capR, pkI, pkR, dh, ltk) @k2 + ) + ) +" + +lemma secOOBo_secOOBo_weaksecret_init: +" + All #i1 #i2 . + InitWillDoSecOOBo()[+] @i1 & RespWillDoSecOOBo()[+] @i2 ==> + (All idI idR capI capR pkI pkR dh ltk #k1 . + InitiatorFinishedSecPairing(idI, capI, idR, capR, pkI, pkR, dh, ltk) @k1 ==> + not (Ex #k2 . K(ltk) @k2) + ) +" + +lemma secOOBo_secOOBo_weaksecret_resp: +" + All #i1 #i2 . + InitWillDoSecOOBo()[+] @i1 & RespWillDoSecOOBo()[+] @i2 ==> + (All idI idR capI capR pkI pkR dh ltk #k1 . + ResponderFinishedSecPairing(idR, capR, idI, capI, pkR, pkI, dh, ltk) @k1 ==> + not (Ex #k2 . K(ltk) @k2) + ) +" + +lemma secOOBo_secOOBo_double_impersonation: +" + All #i1 #i2 . + InitWillDoSecOOBo()[+] @i1 & RespWillDoSecOOBo()[+] @i2 ==> + (All idI1 idR1 capI1 capR1 pkI1 pkR1 dh1 ltk1 idI2 idR2 capI2 capR2 pkI2 pkR2 dh2 ltk2 #j1 #j2 . + InitiatorFinishedSecPairing(idI1, capI1, idR1, capR1, pkI1, pkR1, dh1, ltk1) @j1 & + ResponderFinishedSecPairing(idR2, capR2, idI2, capI2, pkR2, pkI2, dh2, ltk2) @j2 ==> + not (Ex #k1 #k2 . + K(ltk1) @k1 & K(ltk2) @k2 + ) + ) +" + +#endif + +/*********************************************/ +/* End lemmas about SecOOBo-SecOOBo exchange */ +/*********************************************/ + +/******************************************/ +/* Lemmas about SecOOBo-SecOOBio exchange */ +/******************************************/ + +#ifdef SecOOBoSecOOBio +lemma secOOBo_secOOBio_functional: exists-trace +" + Ex #i1 #i2 . + InitWillDoSecOOBo()[+] @i1 & RespWillDoSecOOBio()[+] @i2 & + (Ex idI1 idR1 capI1 capR1 pkI1 pkR1 dh1 ltk1 idI2 idR2 capI2 capR2 pkI2 pkR2 dh2 ltk2 #j1 #j2 . + InitiatorFinishedSecPairing(idI1, capI1, idR1, capR1, pkI1, pkR1, dh1, ltk1) @j1 & + ResponderFinishedSecPairing(idR2, capR2, idI2, capI2, pkR2, pkI2, dh2, ltk2) @j2 + ) +" + +lemma secOOBo_secOOBio_auth_init: +" + All #i1 #i2 . + InitWillDoSecOOBo()[+] @i1 & RespWillDoSecOOBio()[+] @i2 ==> + (All idI idR capI capR pkI pkR dh ltk #k1 . + InitiatorFinishedSecPairing(idI, capI, idR, capR, pkI, pkR, dh, ltk) @k1 ==> + (Ex ni nr ri rr ei er #k2 . + RespDoneDHKeyCheck(idR, capR, idI, capI, pkR, pkI, dh, nr, ni, rr, ri, er, ei) @k2 + ) + ) +" + +lemma secOOBo_secOOBio_auth_resp: +" + All #i1 #i2 . + InitWillDoSecOOBo()[+] @i1 & RespWillDoSecOOBio()[+] @i2 ==> + (All idI idR capI capR pkI pkR dh ltk #k1 . + ResponderFinishedSecPairing(idR, capR, idI, capI, pkR, pkI, dh, ltk) @k1 ==> + (Ex #k2 . + InitiatorFinishedSecPairing(idI, capI, idR, capR, pkI, pkR, dh, ltk) @k2 + ) + ) +" + +lemma secOOBo_secOOBio_weaksecret_init: +" + All #i1 #i2 . + InitWillDoSecOOBo()[+] @i1 & RespWillDoSecOOBio()[+] @i2 ==> + (All idI idR capI capR pkI pkR dh ltk #k1 . + InitiatorFinishedSecPairing(idI, capI, idR, capR, pkI, pkR, dh, ltk) @k1 ==> + not (Ex #k2 . K(ltk) @k2) + ) +" + +lemma secOOBo_secOOBio_weaksecret_resp: +" + All #i1 #i2 . + InitWillDoSecOOBo()[+] @i1 & RespWillDoSecOOBio()[+] @i2 ==> + (All idI idR capI capR pkI pkR dh ltk #k1 . + ResponderFinishedSecPairing(idR, capR, idI, capI, pkR, pkI, dh, ltk) @k1 ==> + not (Ex #k2 . K(ltk) @k2) + ) +" + +lemma secOOBo_secOOBio_double_impersonation: +" + All #i1 #i2 . + InitWillDoSecOOBo()[+] @i1 & RespWillDoSecOOBio()[+] @i2 ==> + (All idI1 idR1 capI1 capR1 pkI1 pkR1 dh1 ltk1 idI2 idR2 capI2 capR2 pkI2 pkR2 dh2 ltk2 #j1 #j2 . + InitiatorFinishedSecPairing(idI1, capI1, idR1, capR1, pkI1, pkR1, dh1, ltk1) @j1 & + ResponderFinishedSecPairing(idR2, capR2, idI2, capI2, pkR2, pkI2, dh2, ltk2) @j2 ==> + not (Ex #k1 #k2 . + K(ltk1) @k1 & K(ltk2) @k2 + ) + ) +" + +#endif + +/**********************************************/ +/* End lemmas about SecOOBo-SecOOBio exchange */ +/**********************************************/ + +/****************************************/ +/* Lemmas about SecOOBio-SecJW exchange */ +/****************************************/ + +#ifdef SecOOBioSecJW +lemma secOOBio_secJW_functional: exists-trace +" + Ex #i1 #i2 . + InitWillDoSecOOBio()[+] @i1 & RespWillDoSecJW()[+] @i2 & + (Ex idI1 idR1 capI1 capR1 pkI1 pkR1 dh1 ltk1 idI2 idR2 capI2 capR2 pkI2 pkR2 dh2 ltk2 #j1 #j2 . + InitiatorFinishedSecPairing(idI1, capI1, idR1, capR1, pkI1, pkR1, dh1, ltk1) @j1 & + ResponderFinishedSecPairing(idR2, capR2, idI2, capI2, pkR2, pkI2, dh2, ltk2) @j2 + ) +" + +lemma secOOBio_secJW_auth_init: +" + All #i1 #i2 . + InitWillDoSecOOBio()[+] @i1 & RespWillDoSecJW()[+] @i2 ==> + (All idI idR capI capR pkI pkR dh ltk #k1 . + InitiatorFinishedSecPairing(idI, capI, idR, capR, pkI, pkR, dh, ltk) @k1 ==> + (Ex ni nr ri rr ei er #k2 . + RespDoneDHKeyCheck(idR, capR, idI, capI, pkR, pkI, dh, nr, ni, rr, ri, er, ei) @k2 + ) + ) +" + +lemma secOOBio_secJW_auth_resp: +" + All #i1 #i2 . + InitWillDoSecOOBio()[+] @i1 & RespWillDoSecJW()[+] @i2 ==> + (All idI idR capI capR pkI pkR dh ltk #k1 . + ResponderFinishedSecPairing(idR, capR, idI, capI, pkR, pkI, dh, ltk) @k1 ==> + (Ex #k2 . + InitiatorFinishedSecPairing(idI, capI, idR, capR, pkI, pkR, dh, ltk) @k2 + ) + ) +" + +lemma secOOBio_secJW_weaksecret_init: +" + All #i1 #i2 . + InitWillDoSecOOBio()[+] @i1 & RespWillDoSecJW()[+] @i2 ==> + (All idI idR capI capR pkI pkR dh ltk #k1 . + InitiatorFinishedSecPairing(idI, capI, idR, capR, pkI, pkR, dh, ltk) @k1 ==> + not (Ex #k2 . K(ltk) @k2) + ) +" + +lemma secOOBio_secJW_weaksecret_resp: +" + All #i1 #i2 . + InitWillDoSecOOBio()[+] @i1 & RespWillDoSecJW()[+] @i2 ==> + (All idI idR capI capR pkI pkR dh ltk #k1 . + ResponderFinishedSecPairing(idR, capR, idI, capI, pkR, pkI, dh, ltk) @k1 ==> + not (Ex #k2 . K(ltk) @k2) + ) +" + +lemma secOOBio_secJW_double_impersonation: +" + All #i1 #i2 . + InitWillDoSecOOBio()[+] @i1 & RespWillDoSecJW()[+] @i2 ==> + (All idI1 idR1 capI1 capR1 pkI1 pkR1 dh1 ltk1 idI2 idR2 capI2 capR2 pkI2 pkR2 dh2 ltk2 #j1 #j2 . + InitiatorFinishedSecPairing(idI1, capI1, idR1, capR1, pkI1, pkR1, dh1, ltk1) @j1 & + ResponderFinishedSecPairing(idR2, capR2, idI2, capI2, pkR2, pkI2, dh2, ltk2) @j2 ==> + not (Ex #k1 #k2 . + K(ltk1) @k1 & K(ltk2) @k2 + ) + ) +" + +#endif + +/********************************************/ +/* End lemmas about SecOOBio-SecJW exchange */ +/********************************************/ + +/*****************************************/ +/* Lemmas about SecOOBio-SecPEi exchange */ +/*****************************************/ + +#ifdef SecOOBioSecPEi +lemma secOOBio_secPEi_functional: exists-trace +" + Ex #i1 #i2 . + InitWillDoSecOOBio()[+] @i1 & RespWillDoSecPEi()[+] @i2 & + (Ex idI1 idR1 capI1 capR1 pkI1 pkR1 dh1 ltk1 idI2 idR2 capI2 capR2 pkI2 pkR2 dh2 ltk2 #j1 #j2 . + InitiatorFinishedSecPairing(idI1, capI1, idR1, capR1, pkI1, pkR1, dh1, ltk1) @j1 & + ResponderFinishedSecPairing(idR2, capR2, idI2, capI2, pkR2, pkI2, dh2, ltk2) @j2 + ) +" + +lemma secOOBio_secPEi_auth_init: +" + All #i1 #i2 . + InitWillDoSecOOBio()[+] @i1 & RespWillDoSecPEi()[+] @i2 ==> + (All idI idR capI capR pkI pkR dh ltk #k1 . + InitiatorFinishedSecPairing(idI, capI, idR, capR, pkI, pkR, dh, ltk) @k1 ==> + (Ex ni nr ri rr ei er #k2 . + RespDoneDHKeyCheck(idR, capR, idI, capI, pkR, pkI, dh, nr, ni, rr, ri, er, ei) @k2 + ) + ) +" + +lemma secOOBio_secPEi_auth_resp: +" + All #i1 #i2 . + InitWillDoSecOOBio()[+] @i1 & RespWillDoSecPEi()[+] @i2 ==> + (All idI idR capI capR pkI pkR dh ltk #k1 . + ResponderFinishedSecPairing(idR, capR, idI, capI, pkR, pkI, dh, ltk) @k1 ==> + (Ex #k2 . + InitiatorFinishedSecPairing(idI, capI, idR, capR, pkI, pkR, dh, ltk) @k2 + ) + ) +" + +lemma secOOBio_secPEi_weaksecret_init: +" + All #i1 #i2 . + InitWillDoSecOOBio()[+] @i1 & RespWillDoSecPEi()[+] @i2 ==> + (All idI idR capI capR pkI pkR dh ltk #k1 . + InitiatorFinishedSecPairing(idI, capI, idR, capR, pkI, pkR, dh, ltk) @k1 ==> + not (Ex #k2 . K(ltk) @k2) + ) +" + +lemma secOOBio_secPEi_weaksecret_resp: +" + All #i1 #i2 . + InitWillDoSecOOBio()[+] @i1 & RespWillDoSecPEi()[+] @i2 ==> + (All idI idR capI capR pkI pkR dh ltk #k1 . + ResponderFinishedSecPairing(idR, capR, idI, capI, pkR, pkI, dh, ltk) @k1 ==> + not (Ex #k2 . K(ltk) @k2) + ) +" + +lemma secOOBio_secPEi_double_impersonation: +" + All #i1 #i2 . + InitWillDoSecOOBio()[+] @i1 & RespWillDoSecPEi()[+] @i2 ==> + (All idI1 idR1 capI1 capR1 pkI1 pkR1 dh1 ltk1 idI2 idR2 capI2 capR2 pkI2 pkR2 dh2 ltk2 #j1 #j2 . + InitiatorFinishedSecPairing(idI1, capI1, idR1, capR1, pkI1, pkR1, dh1, ltk1) @j1 & + ResponderFinishedSecPairing(idR2, capR2, idI2, capI2, pkR2, pkI2, dh2, ltk2) @j2 ==> + not (Ex #k1 #k2 . + K(ltk1) @k1 & K(ltk2) @k2 + ) + ) +" + +#endif + +/*********************************************/ +/* End lemmas about SecOOBio-SecPEi exchange */ +/*********************************************/ + +/*****************************************/ +/* Lemmas about SecOOBio-SecPEo exchange */ +/*****************************************/ + +#ifdef SecOOBioSecPEo +lemma secOOBio_secPEo_functional: exists-trace +" + Ex #i1 #i2 . + InitWillDoSecOOBio()[+] @i1 & RespWillDoSecPEo()[+] @i2 & + (Ex idI1 idR1 capI1 capR1 pkI1 pkR1 dh1 ltk1 idI2 idR2 capI2 capR2 pkI2 pkR2 dh2 ltk2 #j1 #j2 . + InitiatorFinishedSecPairing(idI1, capI1, idR1, capR1, pkI1, pkR1, dh1, ltk1) @j1 & + ResponderFinishedSecPairing(idR2, capR2, idI2, capI2, pkR2, pkI2, dh2, ltk2) @j2 + ) +" + +lemma secOOBio_secPEo_auth_init: +" + All #i1 #i2 . + InitWillDoSecOOBio()[+] @i1 & RespWillDoSecPEo()[+] @i2 ==> + (All idI idR capI capR pkI pkR dh ltk #k1 . + InitiatorFinishedSecPairing(idI, capI, idR, capR, pkI, pkR, dh, ltk) @k1 ==> + (Ex ni nr ri rr ei er #k2 . + RespDoneDHKeyCheck(idR, capR, idI, capI, pkR, pkI, dh, nr, ni, rr, ri, er, ei) @k2 + ) + ) +" + +lemma secOOBio_secPEo_auth_resp: +" + All #i1 #i2 . + InitWillDoSecOOBio()[+] @i1 & RespWillDoSecPEo()[+] @i2 ==> + (All idI idR capI capR pkI pkR dh ltk #k1 . + ResponderFinishedSecPairing(idR, capR, idI, capI, pkR, pkI, dh, ltk) @k1 ==> + (Ex #k2 . + InitiatorFinishedSecPairing(idI, capI, idR, capR, pkI, pkR, dh, ltk) @k2 + ) + ) +" + +lemma secOOBio_secPEo_weaksecret_init: +" + All #i1 #i2 . + InitWillDoSecOOBio()[+] @i1 & RespWillDoSecPEo()[+] @i2 ==> + (All idI idR capI capR pkI pkR dh ltk #k1 . + InitiatorFinishedSecPairing(idI, capI, idR, capR, pkI, pkR, dh, ltk) @k1 ==> + not (Ex #k2 . K(ltk) @k2) + ) +" + +lemma secOOBio_secPEo_weaksecret_resp: +" + All #i1 #i2 . + InitWillDoSecOOBio()[+] @i1 & RespWillDoSecPEo()[+] @i2 ==> + (All idI idR capI capR pkI pkR dh ltk #k1 . + ResponderFinishedSecPairing(idR, capR, idI, capI, pkR, pkI, dh, ltk) @k1 ==> + not (Ex #k2 . K(ltk) @k2) + ) +" + +lemma secOOBio_secPEo_double_impersonation: +" + All #i1 #i2 . + InitWillDoSecOOBio()[+] @i1 & RespWillDoSecPEo()[+] @i2 ==> + (All idI1 idR1 capI1 capR1 pkI1 pkR1 dh1 ltk1 idI2 idR2 capI2 capR2 pkI2 pkR2 dh2 ltk2 #j1 #j2 . + InitiatorFinishedSecPairing(idI1, capI1, idR1, capR1, pkI1, pkR1, dh1, ltk1) @j1 & + ResponderFinishedSecPairing(idR2, capR2, idI2, capI2, pkR2, pkI2, dh2, ltk2) @j2 ==> + not (Ex #k1 #k2 . + K(ltk1) @k1 & K(ltk2) @k2 + ) + ) +" + +#endif + +/*********************************************/ +/* End lemmas about SecOOBio-SecPEo exchange */ +/*********************************************/ + +/******************************************/ +/* Lemmas about SecOOBio-SecPEio exchange */ +/******************************************/ + +#ifdef SecOOBioSecPEio +lemma secOOBio_secPEio_functional: exists-trace +" + Ex #i1 #i2 . + InitWillDoSecOOBio()[+] @i1 & RespWillDoSecPEio()[+] @i2 & + (Ex idI1 idR1 capI1 capR1 pkI1 pkR1 dh1 ltk1 idI2 idR2 capI2 capR2 pkI2 pkR2 dh2 ltk2 #j1 #j2 . + InitiatorFinishedSecPairing(idI1, capI1, idR1, capR1, pkI1, pkR1, dh1, ltk1) @j1 & + ResponderFinishedSecPairing(idR2, capR2, idI2, capI2, pkR2, pkI2, dh2, ltk2) @j2 + ) +" + +lemma secOOBio_secPEio_auth_init: +" + All #i1 #i2 . + InitWillDoSecOOBio()[+] @i1 & RespWillDoSecPEio()[+] @i2 ==> + (All idI idR capI capR pkI pkR dh ltk #k1 . + InitiatorFinishedSecPairing(idI, capI, idR, capR, pkI, pkR, dh, ltk) @k1 ==> + (Ex ni nr ri rr ei er #k2 . + RespDoneDHKeyCheck(idR, capR, idI, capI, pkR, pkI, dh, nr, ni, rr, ri, er, ei) @k2 + ) + ) +" + +lemma secOOBio_secPEio_auth_resp: +" + All #i1 #i2 . + InitWillDoSecOOBio()[+] @i1 & RespWillDoSecPEio()[+] @i2 ==> + (All idI idR capI capR pkI pkR dh ltk #k1 . + ResponderFinishedSecPairing(idR, capR, idI, capI, pkR, pkI, dh, ltk) @k1 ==> + (Ex #k2 . + InitiatorFinishedSecPairing(idI, capI, idR, capR, pkI, pkR, dh, ltk) @k2 + ) + ) +" + +lemma secOOBio_secPEio_weaksecret_init: +" + All #i1 #i2 . + InitWillDoSecOOBio()[+] @i1 & RespWillDoSecPEio()[+] @i2 ==> + (All idI idR capI capR pkI pkR dh ltk #k1 . + InitiatorFinishedSecPairing(idI, capI, idR, capR, pkI, pkR, dh, ltk) @k1 ==> + not (Ex #k2 . K(ltk) @k2) + ) +" + +lemma secOOBio_secPEio_weaksecret_resp: +" + All #i1 #i2 . + InitWillDoSecOOBio()[+] @i1 & RespWillDoSecPEio()[+] @i2 ==> + (All idI idR capI capR pkI pkR dh ltk #k1 . + ResponderFinishedSecPairing(idR, capR, idI, capI, pkR, pkI, dh, ltk) @k1 ==> + not (Ex #k2 . K(ltk) @k2) + ) +" + +lemma secOOBio_secPEio_double_impersonation: +" + All #i1 #i2 . + InitWillDoSecOOBio()[+] @i1 & RespWillDoSecPEio()[+] @i2 ==> + (All idI1 idR1 capI1 capR1 pkI1 pkR1 dh1 ltk1 idI2 idR2 capI2 capR2 pkI2 pkR2 dh2 ltk2 #j1 #j2 . + InitiatorFinishedSecPairing(idI1, capI1, idR1, capR1, pkI1, pkR1, dh1, ltk1) @j1 & + ResponderFinishedSecPairing(idR2, capR2, idI2, capI2, pkR2, pkI2, dh2, ltk2) @j2 ==> + not (Ex #k1 #k2 . + K(ltk1) @k1 & K(ltk2) @k2 + ) + ) +" + +#endif + +/**********************************************/ +/* End lemmas about SecOOBio-SecPEio exchange */ +/**********************************************/ + +/****************************************/ +/* Lemmas about SecOOBio-SecNC exchange */ +/****************************************/ + +#ifdef SecOOBioSecNC +lemma secOOBio_secNC_functional: exists-trace +" + Ex #i1 #i2 . + InitWillDoSecOOBio()[+] @i1 & RespWillDoSecNC()[+] @i2 & + (Ex idI1 idR1 capI1 capR1 pkI1 pkR1 dh1 ltk1 idI2 idR2 capI2 capR2 pkI2 pkR2 dh2 ltk2 #j1 #j2 . + InitiatorFinishedSecPairing(idI1, capI1, idR1, capR1, pkI1, pkR1, dh1, ltk1) @j1 & + ResponderFinishedSecPairing(idR2, capR2, idI2, capI2, pkR2, pkI2, dh2, ltk2) @j2 + ) +" + +lemma secOOBio_secNC_auth_init: +" + All #i1 #i2 . + InitWillDoSecOOBio()[+] @i1 & RespWillDoSecNC()[+] @i2 ==> + (All idI idR capI capR pkI pkR dh ltk #k1 . + InitiatorFinishedSecPairing(idI, capI, idR, capR, pkI, pkR, dh, ltk) @k1 ==> + (Ex ni nr ri rr ei er #k2 . + RespDoneDHKeyCheck(idR, capR, idI, capI, pkR, pkI, dh, nr, ni, rr, ri, er, ei) @k2 + ) + ) +" + +lemma secOOBio_secNC_auth_resp: +" + All #i1 #i2 . + InitWillDoSecOOBio()[+] @i1 & RespWillDoSecNC()[+] @i2 ==> + (All idI idR capI capR pkI pkR dh ltk #k1 . + ResponderFinishedSecPairing(idR, capR, idI, capI, pkR, pkI, dh, ltk) @k1 ==> + (Ex #k2 . + InitiatorFinishedSecPairing(idI, capI, idR, capR, pkI, pkR, dh, ltk) @k2 + ) + ) +" + +lemma secOOBio_secNC_weaksecret_init: +" + All #i1 #i2 . + InitWillDoSecOOBio()[+] @i1 & RespWillDoSecNC()[+] @i2 ==> + (All idI idR capI capR pkI pkR dh ltk #k1 . + InitiatorFinishedSecPairing(idI, capI, idR, capR, pkI, pkR, dh, ltk) @k1 ==> + not (Ex #k2 . K(ltk) @k2) + ) +" + +lemma secOOBio_secNC_weaksecret_resp: +" + All #i1 #i2 . + InitWillDoSecOOBio()[+] @i1 & RespWillDoSecNC()[+] @i2 ==> + (All idI idR capI capR pkI pkR dh ltk #k1 . + ResponderFinishedSecPairing(idR, capR, idI, capI, pkR, pkI, dh, ltk) @k1 ==> + not (Ex #k2 . K(ltk) @k2) + ) +" + +lemma secOOBio_secNC_double_impersonation: +" + All #i1 #i2 . + InitWillDoSecOOBio()[+] @i1 & RespWillDoSecNC()[+] @i2 ==> + (All idI1 idR1 capI1 capR1 pkI1 pkR1 dh1 ltk1 idI2 idR2 capI2 capR2 pkI2 pkR2 dh2 ltk2 #j1 #j2 . + InitiatorFinishedSecPairing(idI1, capI1, idR1, capR1, pkI1, pkR1, dh1, ltk1) @j1 & + ResponderFinishedSecPairing(idR2, capR2, idI2, capI2, pkR2, pkI2, dh2, ltk2) @j2 ==> + not (Ex #k1 #k2 . + K(ltk1) @k1 & K(ltk2) @k2 + ) + ) +" + +#endif + +/********************************************/ +/* End lemmas about SecOOBio-SecNC exchange */ +/********************************************/ + +/******************************************/ +/* Lemmas about SecOOBio-SecOOBi exchange */ +/******************************************/ + +#ifdef SecOOBioSecOOBi +lemma secOOBio_secOOBi_functional: exists-trace +" + Ex #i1 #i2 . + InitWillDoSecOOBio()[+] @i1 & RespWillDoSecOOBi()[+] @i2 & + (Ex idI1 idR1 capI1 capR1 pkI1 pkR1 dh1 ltk1 idI2 idR2 capI2 capR2 pkI2 pkR2 dh2 ltk2 #j1 #j2 . + InitiatorFinishedSecPairing(idI1, capI1, idR1, capR1, pkI1, pkR1, dh1, ltk1) @j1 & + ResponderFinishedSecPairing(idR2, capR2, idI2, capI2, pkR2, pkI2, dh2, ltk2) @j2 + ) +" + +lemma secOOBio_secOOBi_auth_init: +" + All #i1 #i2 . + InitWillDoSecOOBio()[+] @i1 & RespWillDoSecOOBi()[+] @i2 ==> + (All idI idR capI capR pkI pkR dh ltk #k1 . + InitiatorFinishedSecPairing(idI, capI, idR, capR, pkI, pkR, dh, ltk) @k1 ==> + (Ex ni nr ri rr ei er #k2 . + RespDoneDHKeyCheck(idR, capR, idI, capI, pkR, pkI, dh, nr, ni, rr, ri, er, ei) @k2 + ) + ) +" + +lemma secOOBio_secOOBi_auth_resp: +" + All #i1 #i2 . + InitWillDoSecOOBio()[+] @i1 & RespWillDoSecOOBi()[+] @i2 ==> + (All idI idR capI capR pkI pkR dh ltk #k1 . + ResponderFinishedSecPairing(idR, capR, idI, capI, pkR, pkI, dh, ltk) @k1 ==> + (Ex #k2 . + InitiatorFinishedSecPairing(idI, capI, idR, capR, pkI, pkR, dh, ltk) @k2 + ) + ) +" + +lemma secOOBio_secOOBi_weaksecret_init: +" + All #i1 #i2 . + InitWillDoSecOOBio()[+] @i1 & RespWillDoSecOOBi()[+] @i2 ==> + (All idI idR capI capR pkI pkR dh ltk #k1 . + InitiatorFinishedSecPairing(idI, capI, idR, capR, pkI, pkR, dh, ltk) @k1 ==> + not (Ex #k2 . K(ltk) @k2) + ) +" + +lemma secOOBio_secOOBi_weaksecret_resp: +" + All #i1 #i2 . + InitWillDoSecOOBio()[+] @i1 & RespWillDoSecOOBi()[+] @i2 ==> + (All idI idR capI capR pkI pkR dh ltk #k1 . + ResponderFinishedSecPairing(idR, capR, idI, capI, pkR, pkI, dh, ltk) @k1 ==> + not (Ex #k2 . K(ltk) @k2) + ) +" + +lemma secOOBio_secOOBi_double_impersonation: +" + All #i1 #i2 . + InitWillDoSecOOBio()[+] @i1 & RespWillDoSecOOBi()[+] @i2 ==> + (All idI1 idR1 capI1 capR1 pkI1 pkR1 dh1 ltk1 idI2 idR2 capI2 capR2 pkI2 pkR2 dh2 ltk2 #j1 #j2 . + InitiatorFinishedSecPairing(idI1, capI1, idR1, capR1, pkI1, pkR1, dh1, ltk1) @j1 & + ResponderFinishedSecPairing(idR2, capR2, idI2, capI2, pkR2, pkI2, dh2, ltk2) @j2 ==> + not (Ex #k1 #k2 . + K(ltk1) @k1 & K(ltk2) @k2 + ) + ) +" + +#endif + +/**********************************************/ +/* End lemmas about SecOOBio-SecOOBi exchange */ +/**********************************************/ + +/******************************************/ +/* Lemmas about SecOOBio-SecOOBo exchange */ +/******************************************/ + +#ifdef SecOOBioSecOOBo +lemma secOOBio_secOOBo_functional: exists-trace +" + Ex #i1 #i2 . + InitWillDoSecOOBio()[+] @i1 & RespWillDoSecOOBo()[+] @i2 & + (Ex idI1 idR1 capI1 capR1 pkI1 pkR1 dh1 ltk1 idI2 idR2 capI2 capR2 pkI2 pkR2 dh2 ltk2 #j1 #j2 . + InitiatorFinishedSecPairing(idI1, capI1, idR1, capR1, pkI1, pkR1, dh1, ltk1) @j1 & + ResponderFinishedSecPairing(idR2, capR2, idI2, capI2, pkR2, pkI2, dh2, ltk2) @j2 + ) +" + +lemma secOOBio_secOOBo_auth_init: +" + All #i1 #i2 . + InitWillDoSecOOBio()[+] @i1 & RespWillDoSecOOBo()[+] @i2 ==> + (All idI idR capI capR pkI pkR dh ltk #k1 . + InitiatorFinishedSecPairing(idI, capI, idR, capR, pkI, pkR, dh, ltk) @k1 ==> + (Ex ni nr ri rr ei er #k2 . + RespDoneDHKeyCheck(idR, capR, idI, capI, pkR, pkI, dh, nr, ni, rr, ri, er, ei) @k2 + ) + ) +" + +lemma secOOBio_secOOBo_auth_resp: +" + All #i1 #i2 . + InitWillDoSecOOBio()[+] @i1 & RespWillDoSecOOBo()[+] @i2 ==> + (All idI idR capI capR pkI pkR dh ltk #k1 . + ResponderFinishedSecPairing(idR, capR, idI, capI, pkR, pkI, dh, ltk) @k1 ==> + (Ex #k2 . + InitiatorFinishedSecPairing(idI, capI, idR, capR, pkI, pkR, dh, ltk) @k2 + ) + ) +" + +lemma secOOBio_secOOBo_weaksecret_init: +" + All #i1 #i2 . + InitWillDoSecOOBio()[+] @i1 & RespWillDoSecOOBo()[+] @i2 ==> + (All idI idR capI capR pkI pkR dh ltk #k1 . + InitiatorFinishedSecPairing(idI, capI, idR, capR, pkI, pkR, dh, ltk) @k1 ==> + not (Ex #k2 . K(ltk) @k2) + ) +" + +lemma secOOBio_secOOBo_weaksecret_resp: +" + All #i1 #i2 . + InitWillDoSecOOBio()[+] @i1 & RespWillDoSecOOBo()[+] @i2 ==> + (All idI idR capI capR pkI pkR dh ltk #k1 . + ResponderFinishedSecPairing(idR, capR, idI, capI, pkR, pkI, dh, ltk) @k1 ==> + not (Ex #k2 . K(ltk) @k2) + ) +" + +lemma secOOBio_secOOBo_double_impersonation: +" + All #i1 #i2 . + InitWillDoSecOOBio()[+] @i1 & RespWillDoSecOOBo()[+] @i2 ==> + (All idI1 idR1 capI1 capR1 pkI1 pkR1 dh1 ltk1 idI2 idR2 capI2 capR2 pkI2 pkR2 dh2 ltk2 #j1 #j2 . + InitiatorFinishedSecPairing(idI1, capI1, idR1, capR1, pkI1, pkR1, dh1, ltk1) @j1 & + ResponderFinishedSecPairing(idR2, capR2, idI2, capI2, pkR2, pkI2, dh2, ltk2) @j2 ==> + not (Ex #k1 #k2 . + K(ltk1) @k1 & K(ltk2) @k2 + ) + ) +" + +#endif + +/**********************************************/ +/* End lemmas about SecOOBio-SecOOBo exchange */ +/**********************************************/ + +/*******************************************/ +/* Lemmas about SecOOBio-SecOOBio exchange */ +/*******************************************/ + +#ifdef SecOOBioSecOOBio +lemma secOOBio_secOOBio_functional: exists-trace +" + Ex #i1 #i2 . + InitWillDoSecOOBio()[+] @i1 & RespWillDoSecOOBio()[+] @i2 & + (Ex idI1 idR1 capI1 capR1 pkI1 pkR1 dh1 ltk1 idI2 idR2 capI2 capR2 pkI2 pkR2 dh2 ltk2 #j1 #j2 . + InitiatorFinishedSecPairing(idI1, capI1, idR1, capR1, pkI1, pkR1, dh1, ltk1) @j1 & + ResponderFinishedSecPairing(idR2, capR2, idI2, capI2, pkR2, pkI2, dh2, ltk2) @j2 + ) +" + +lemma secOOBio_secOOBio_auth_init: +" + All #i1 #i2 . + InitWillDoSecOOBio()[+] @i1 & RespWillDoSecOOBio()[+] @i2 ==> + (All idI idR capI capR pkI pkR dh ltk #k1 . + InitiatorFinishedSecPairing(idI, capI, idR, capR, pkI, pkR, dh, ltk) @k1 ==> + (Ex ni nr ri rr ei er #k2 . + RespDoneDHKeyCheck(idR, capR, idI, capI, pkR, pkI, dh, nr, ni, rr, ri, er, ei) @k2 + ) + ) +" + +lemma secOOBio_secOOBio_auth_resp: +" + All #i1 #i2 . + InitWillDoSecOOBio()[+] @i1 & RespWillDoSecOOBio()[+] @i2 ==> + (All idI idR capI capR pkI pkR dh ltk #k1 . + ResponderFinishedSecPairing(idR, capR, idI, capI, pkR, pkI, dh, ltk) @k1 ==> + (Ex #k2 . + InitiatorFinishedSecPairing(idI, capI, idR, capR, pkI, pkR, dh, ltk) @k2 + ) + ) +" + +lemma secOOBio_secOOBio_weaksecret_init: +" + All #i1 #i2 . + InitWillDoSecOOBio()[+] @i1 & RespWillDoSecOOBio()[+] @i2 ==> + (All idI idR capI capR pkI pkR dh ltk #k1 . + InitiatorFinishedSecPairing(idI, capI, idR, capR, pkI, pkR, dh, ltk) @k1 ==> + not (Ex #k2 . K(ltk) @k2) + ) +" + +lemma secOOBio_secOOBio_weaksecret_resp: +" + All #i1 #i2 . + InitWillDoSecOOBio()[+] @i1 & RespWillDoSecOOBio()[+] @i2 ==> + (All idI idR capI capR pkI pkR dh ltk #k1 . + ResponderFinishedSecPairing(idR, capR, idI, capI, pkR, pkI, dh, ltk) @k1 ==> + not (Ex #k2 . K(ltk) @k2) + ) +" + +lemma secOOBio_secOOBio_double_impersonation: +" + All #i1 #i2 . + InitWillDoSecOOBio()[+] @i1 & RespWillDoSecOOBio()[+] @i2 ==> + (All idI1 idR1 capI1 capR1 pkI1 pkR1 dh1 ltk1 idI2 idR2 capI2 capR2 pkI2 pkR2 dh2 ltk2 #j1 #j2 . + InitiatorFinishedSecPairing(idI1, capI1, idR1, capR1, pkI1, pkR1, dh1, ltk1) @j1 & + ResponderFinishedSecPairing(idR2, capR2, idI2, capI2, pkR2, pkI2, dh2, ltk2) @j2 ==> + not (Ex #k1 #k2 . + K(ltk1) @k1 & K(ltk2) @k2 + ) + ) +" + +#endif + +/***********************************************/ +/* End lemmas about SecOOBio-SecOOBio exchange */ +/***********************************************/ + +/***************************************/ +/* Lemmas about LegPINi-SecJW exchange */ +/***************************************/ + +#ifdef LegPINiSecJW +lemma legPINi_secJW_functional: exists-trace +" + Ex #i1 #i2 . + InitWillDoLegPINi()[+] @i1 & RespWillDoSecJW()[+] @i2 & + (Ex idI1 idR1 capI1 capR1 idI2 idR2 capI2 capR2 lk aco pkI pkR dh ltk #j1 #j2 . + InitiatorFinishedLegPairing(idI1, capI1, idR1, capR1, lk, aco) @j1 & + ResponderFinishedSecPairing(idR2, capR2, idI2, capI2, pkR, pkI, dh, ltk) @j2 + ) +" + +lemma legPINi_secJW_auth_init: +" + All idI idR capI capR lk aco #i1 #i2 #j . + InitWillDoLegPINi()[+] @i1 & RespWillDoSecJW()[+] @i2 & + InitiatorFinishedLegPairing(idI, capI, idR, capR, lk, aco) @j ==> + (Ex pkI pkR dh nsi nsr ri rr ei er #k . + RespDoneDHKeyCheck(idR, capR, idI, capI, pkR, pkI, dh, nsr, nsi, rr, ri, er, ei) @k + ) +" + +lemma legPINi_secJW_auth_resp: +" + All idI idR capI capR pkI pkR dh ltk #i1 #i2 #j . + InitWillDoLegPINi()[+] @i1 & RespWillDoSecJW()[+] @i2 & + ResponderFinishedSecPairing(idR, capR, idI, capI, pkI, pkR, dh, ltk) @j ==> + (Ex lk aco #k . + InitiatorFinishedLegPairing(idI, capI, idR, capR, lk, aco) @k + ) +" + +lemma legPINi_secJW_weaksecret_init: +" + All idI idR capI capR lk aco #i1 #i2 #j. + InitWillDoLegPINi()[+] @i1 & RespWillDoSecJW()[+] @i2 & + InitiatorFinishedLegPairing(idI, capI, idR, capR, lk, aco) @j ==> + not (Ex #k . K(lk) @k ) +" + +lemma legPINi_secJW_weaksecret_resp: +" + All idI idR capI capR pkI pkR dh ltk #i1 #i2 #j. + InitWillDoLegPINi()[+] @i1 & RespWillDoSecJW()[+] @i2 & + ResponderFinishedSecPairing(idR, capR, idI, capI, pkI, pkR, dh, ltk) @j ==> + not (Ex #k . K(ltk) @k ) +" + +lemma legPINi_secJW_double_impersonation: +" + All #i1 #i2 . + InitWillDoLegPINi()[+] @i1 & RespWillDoSecJW()[+] @i2 ==> + (All idI1 idR1 capI1 capR1 idI2 idR2 capI2 capR2 lk aco pkI pkR dh ltk #j1 #j2 . + InitiatorFinishedLegPairing(idI1, capI1, idR1, capR1, lk, aco) @j1 & + ResponderFinishedSecPairing(idR2, capR2, idI2, capI2, pkR, pkI, dh, ltk) @j2 ==> + not (Ex #k1 #k2 . + K(lk) @k1 & K(ltk) @k2 + ) + ) +" + +#endif + +/*******************************************/ +/* End lemmas about LegPINi-SecJW exchange */ +/*******************************************/ + +/****************************************/ +/* Lemmas about LegPINi-SecPEi exchange */ +/****************************************/ + +#ifdef LegPINiSecPEi +lemma legPINi_secPEi_functional: exists-trace +" + Ex #i1 #i2 . + InitWillDoLegPINi()[+] @i1 & RespWillDoSecPEi()[+] @i2 & + (Ex idI1 idR1 capI1 capR1 idI2 idR2 capI2 capR2 lk aco pkI pkR dh ltk #j1 #j2 . + InitiatorFinishedLegPairing(idI1, capI1, idR1, capR1, lk, aco) @j1 & + ResponderFinishedSecPairing(idR2, capR2, idI2, capI2, pkR, pkI, dh, ltk) @j2 + ) +" + +lemma legPINi_secPEi_auth_init: +" + All idI idR capI capR lk aco #i1 #i2 #j . + InitWillDoLegPINi()[+] @i1 & RespWillDoSecPEi()[+] @i2 & + InitiatorFinishedLegPairing(idI, capI, idR, capR, lk, aco) @j ==> + (Ex pkI pkR dh nsi nsr ri rr ei er #k . + RespDoneDHKeyCheck(idR, capR, idI, capI, pkR, pkI, dh, nsr, nsi, rr, ri, er, ei) @k + ) +" + +lemma legPINi_secPEi_auth_resp: +" + All idI idR capI capR pkI pkR dh ltk #i1 #i2 #j . + InitWillDoLegPINi()[+] @i1 & RespWillDoSecPEi()[+] @i2 & + ResponderFinishedSecPairing(idR, capR, idI, capI, pkI, pkR, dh, ltk) @j ==> + (Ex lk aco #k . + InitiatorFinishedLegPairing(idI, capI, idR, capR, lk, aco) @k + ) +" + +lemma legPINi_secPEi_weaksecret_init: +" + All idI idR capI capR lk aco #i1 #i2 #j. + InitWillDoLegPINi()[+] @i1 & RespWillDoSecPEi()[+] @i2 & + InitiatorFinishedLegPairing(idI, capI, idR, capR, lk, aco) @j ==> + not (Ex #k . K(lk) @k ) +" + +lemma legPINi_secPEi_weaksecret_resp: +" + All idI idR capI capR pkI pkR dh ltk #i1 #i2 #j. + InitWillDoLegPINi()[+] @i1 & RespWillDoSecPEi()[+] @i2 & + ResponderFinishedSecPairing(idR, capR, idI, capI, pkI, pkR, dh, ltk) @j ==> + not (Ex #k . K(ltk) @k ) +" + +lemma legPINi_secPEi_double_impersonation: +" + All #i1 #i2 . + InitWillDoLegPINi()[+] @i1 & RespWillDoSecPEi()[+] @i2 ==> + (All idI1 idR1 capI1 capR1 idI2 idR2 capI2 capR2 lk aco pkI pkR dh ltk #j1 #j2 . + InitiatorFinishedLegPairing(idI1, capI1, idR1, capR1, lk, aco) @j1 & + ResponderFinishedSecPairing(idR2, capR2, idI2, capI2, pkR, pkI, dh, ltk) @j2 ==> + not (Ex #k1 #k2 . + K(lk) @k1 & K(ltk) @k2 + ) + ) +" + +#endif + +/********************************************/ +/* End lemmas about LegPINi-SecPEi exchange */ +/********************************************/ + +/****************************************/ +/* Lemmas about LegPINi-SecPEo exchange */ +/****************************************/ + +#ifdef LegPINiSecPEo +lemma legPINi_secPEo_functional: exists-trace +" + Ex #i1 #i2 . + InitWillDoLegPINi()[+] @i1 & RespWillDoSecPEo()[+] @i2 & + (Ex idI1 idR1 capI1 capR1 idI2 idR2 capI2 capR2 lk aco pkI pkR dh ltk #j1 #j2 . + InitiatorFinishedLegPairing(idI1, capI1, idR1, capR1, lk, aco) @j1 & + ResponderFinishedSecPairing(idR2, capR2, idI2, capI2, pkR, pkI, dh, ltk) @j2 + ) +" + +lemma legPINi_secPEo_auth_init: +" + All idI idR capI capR lk aco #i1 #i2 #j . + InitWillDoLegPINi()[+] @i1 & RespWillDoSecPEo()[+] @i2 & + InitiatorFinishedLegPairing(idI, capI, idR, capR, lk, aco) @j ==> + (Ex pkI pkR dh nsi nsr ri rr ei er #k . + RespDoneDHKeyCheck(idR, capR, idI, capI, pkR, pkI, dh, nsr, nsi, rr, ri, er, ei) @k + ) +" + +lemma legPINi_secPEo_auth_resp: +" + All idI idR capI capR pkI pkR dh ltk #i1 #i2 #j . + InitWillDoLegPINi()[+] @i1 & RespWillDoSecPEo()[+] @i2 & + ResponderFinishedSecPairing(idR, capR, idI, capI, pkI, pkR, dh, ltk) @j ==> + (Ex lk aco #k . + InitiatorFinishedLegPairing(idI, capI, idR, capR, lk, aco) @k + ) +" + +lemma legPINi_secPEo_weaksecret_init: +" + All idI idR capI capR lk aco #i1 #i2 #j. + InitWillDoLegPINi()[+] @i1 & RespWillDoSecPEo()[+] @i2 & + InitiatorFinishedLegPairing(idI, capI, idR, capR, lk, aco) @j ==> + not (Ex #k . K(lk) @k ) +" + +lemma legPINi_secPEo_weaksecret_resp: +" + All idI idR capI capR pkI pkR dh ltk #i1 #i2 #j. + InitWillDoLegPINi()[+] @i1 & RespWillDoSecPEo()[+] @i2 & + ResponderFinishedSecPairing(idR, capR, idI, capI, pkI, pkR, dh, ltk) @j ==> + not (Ex #k . K(ltk) @k ) +" + +lemma legPINi_secPEo_double_impersonation: +" + All #i1 #i2 . + InitWillDoLegPINi()[+] @i1 & RespWillDoSecPEo()[+] @i2 ==> + (All idI1 idR1 capI1 capR1 idI2 idR2 capI2 capR2 lk aco pkI pkR dh ltk #j1 #j2 . + InitiatorFinishedLegPairing(idI1, capI1, idR1, capR1, lk, aco) @j1 & + ResponderFinishedSecPairing(idR2, capR2, idI2, capI2, pkR, pkI, dh, ltk) @j2 ==> + not (Ex #k1 #k2 . + K(lk) @k1 & K(ltk) @k2 + ) + ) +" + +#endif + +/********************************************/ +/* End lemmas about LegPINi-SecPEo exchange */ +/********************************************/ + +/*****************************************/ +/* Lemmas about LegPINi-SecPEio exchange */ +/*****************************************/ + +#ifdef LegPINiSecPEio +lemma legPINi_secPEio_functional: exists-trace +" + Ex #i1 #i2 . + InitWillDoLegPINi()[+] @i1 & RespWillDoSecPEio()[+] @i2 & + (Ex idI1 idR1 capI1 capR1 idI2 idR2 capI2 capR2 lk aco pkI pkR dh ltk #j1 #j2 . + InitiatorFinishedLegPairing(idI1, capI1, idR1, capR1, lk, aco) @j1 & + ResponderFinishedSecPairing(idR2, capR2, idI2, capI2, pkR, pkI, dh, ltk) @j2 + ) +" + +lemma legPINi_secPEio_auth_init: +" + All idI idR capI capR lk aco #i1 #i2 #j . + InitWillDoLegPINi()[+] @i1 & RespWillDoSecPEio()[+] @i2 & + InitiatorFinishedLegPairing(idI, capI, idR, capR, lk, aco) @j ==> + (Ex pkI pkR dh nsi nsr ri rr ei er #k . + RespDoneDHKeyCheck(idR, capR, idI, capI, pkR, pkI, dh, nsr, nsi, rr, ri, er, ei) @k + ) +" + +lemma legPINi_secPEio_auth_resp: +" + All idI idR capI capR pkI pkR dh ltk #i1 #i2 #j . + InitWillDoLegPINi()[+] @i1 & RespWillDoSecPEio()[+] @i2 & + ResponderFinishedSecPairing(idR, capR, idI, capI, pkI, pkR, dh, ltk) @j ==> + (Ex lk aco #k . + InitiatorFinishedLegPairing(idI, capI, idR, capR, lk, aco) @k + ) +" + +lemma legPINi_secPEio_weaksecret_init: +" + All idI idR capI capR lk aco #i1 #i2 #j. + InitWillDoLegPINi()[+] @i1 & RespWillDoSecPEio()[+] @i2 & + InitiatorFinishedLegPairing(idI, capI, idR, capR, lk, aco) @j ==> + not (Ex #k . K(lk) @k ) +" + +lemma legPINi_secPEio_weaksecret_resp: +" + All idI idR capI capR pkI pkR dh ltk #i1 #i2 #j. + InitWillDoLegPINi()[+] @i1 & RespWillDoSecPEio()[+] @i2 & + ResponderFinishedSecPairing(idR, capR, idI, capI, pkI, pkR, dh, ltk) @j ==> + not (Ex #k . K(ltk) @k ) +" + +lemma legPINi_secPEio_double_impersonation: +" + All #i1 #i2 . + InitWillDoLegPINi()[+] @i1 & RespWillDoSecPEio()[+] @i2 ==> + (All idI1 idR1 capI1 capR1 idI2 idR2 capI2 capR2 lk aco pkI pkR dh ltk #j1 #j2 . + InitiatorFinishedLegPairing(idI1, capI1, idR1, capR1, lk, aco) @j1 & + ResponderFinishedSecPairing(idR2, capR2, idI2, capI2, pkR, pkI, dh, ltk) @j2 ==> + not (Ex #k1 #k2 . + K(lk) @k1 & K(ltk) @k2 + ) + ) +" + +#endif + +/*********************************************/ +/* End lemmas about LegPINi-SecPEio exchange */ +/*********************************************/ + +/***************************************/ +/* Lemmas about LegPINi-SecNC exchange */ +/***************************************/ + +#ifdef LegPINiSecNC +lemma legPINi_secNC_functional: exists-trace +" + Ex #i1 #i2 . + InitWillDoLegPINi()[+] @i1 & RespWillDoSecNC()[+] @i2 & + (Ex idI1 idR1 capI1 capR1 idI2 idR2 capI2 capR2 lk aco pkI pkR dh ltk #j1 #j2 . + InitiatorFinishedLegPairing(idI1, capI1, idR1, capR1, lk, aco) @j1 & + ResponderFinishedSecPairing(idR2, capR2, idI2, capI2, pkR, pkI, dh, ltk) @j2 + ) +" + +lemma legPINi_secNC_auth_init: +" + All idI idR capI capR lk aco #i1 #i2 #j . + InitWillDoLegPINi()[+] @i1 & RespWillDoSecNC()[+] @i2 & + InitiatorFinishedLegPairing(idI, capI, idR, capR, lk, aco) @j ==> + (Ex pkI pkR dh nsi nsr ri rr ei er #k . + RespDoneDHKeyCheck(idR, capR, idI, capI, pkR, pkI, dh, nsr, nsi, rr, ri, er, ei) @k + ) +" + +lemma legPINi_secNC_auth_resp: +" + All idI idR capI capR pkI pkR dh ltk #i1 #i2 #j . + InitWillDoLegPINi()[+] @i1 & RespWillDoSecNC()[+] @i2 & + ResponderFinishedSecPairing(idR, capR, idI, capI, pkI, pkR, dh, ltk) @j ==> + (Ex lk aco #k . + InitiatorFinishedLegPairing(idI, capI, idR, capR, lk, aco) @k + ) +" + +lemma legPINi_secNC_weaksecret_init: +" + All idI idR capI capR lk aco #i1 #i2 #j. + InitWillDoLegPINi()[+] @i1 & RespWillDoSecNC()[+] @i2 & + InitiatorFinishedLegPairing(idI, capI, idR, capR, lk, aco) @j ==> + not (Ex #k . K(lk) @k ) +" + +lemma legPINi_secNC_weaksecret_resp: +" + All idI idR capI capR pkI pkR dh ltk #i1 #i2 #j. + InitWillDoLegPINi()[+] @i1 & RespWillDoSecNC()[+] @i2 & + ResponderFinishedSecPairing(idR, capR, idI, capI, pkI, pkR, dh, ltk) @j ==> + not (Ex #k . K(ltk) @k ) +" + +lemma legPINi_secNC_double_impersonation: +" + All #i1 #i2 . + InitWillDoLegPINi()[+] @i1 & RespWillDoSecNC()[+] @i2 ==> + (All idI1 idR1 capI1 capR1 idI2 idR2 capI2 capR2 lk aco pkI pkR dh ltk #j1 #j2 . + InitiatorFinishedLegPairing(idI1, capI1, idR1, capR1, lk, aco) @j1 & + ResponderFinishedSecPairing(idR2, capR2, idI2, capI2, pkR, pkI, dh, ltk) @j2 ==> + not (Ex #k1 #k2 . + K(lk) @k1 & K(ltk) @k2 + ) + ) +" + +#endif + +/*******************************************/ +/* End lemmas about LegPINi-SecNC exchange */ +/*******************************************/ + +/*****************************************/ +/* Lemmas about LegPINi-SecOOBi exchange */ +/*****************************************/ + +#ifdef LegPINiSecOOBi +lemma legPINi_secOOBi_functional: exists-trace +" + Ex #i1 #i2 . + InitWillDoLegPINi()[+] @i1 & RespWillDoSecOOBi()[+] @i2 & + (Ex idI1 idR1 capI1 capR1 idI2 idR2 capI2 capR2 lk aco pkI pkR dh ltk #j1 #j2 . + InitiatorFinishedLegPairing(idI1, capI1, idR1, capR1, lk, aco) @j1 & + ResponderFinishedSecPairing(idR2, capR2, idI2, capI2, pkR, pkI, dh, ltk) @j2 + ) +" + +lemma legPINi_secOOBi_auth_init: +" + All idI idR capI capR lk aco #i1 #i2 #j . + InitWillDoLegPINi()[+] @i1 & RespWillDoSecOOBi()[+] @i2 & + InitiatorFinishedLegPairing(idI, capI, idR, capR, lk, aco) @j ==> + (Ex pkI pkR dh nsi nsr ri rr ei er #k . + RespDoneDHKeyCheck(idR, capR, idI, capI, pkR, pkI, dh, nsr, nsi, rr, ri, er, ei) @k + ) +" + +lemma legPINi_secOOBi_auth_resp: +" + All idI idR capI capR pkI pkR dh ltk #i1 #i2 #j . + InitWillDoLegPINi()[+] @i1 & RespWillDoSecOOBi()[+] @i2 & + ResponderFinishedSecPairing(idR, capR, idI, capI, pkI, pkR, dh, ltk) @j ==> + (Ex lk aco #k . + InitiatorFinishedLegPairing(idI, capI, idR, capR, lk, aco) @k + ) +" + +lemma legPINi_secOOBi_weaksecret_init: +" + All idI idR capI capR lk aco #i1 #i2 #j. + InitWillDoLegPINi()[+] @i1 & RespWillDoSecOOBi()[+] @i2 & + InitiatorFinishedLegPairing(idI, capI, idR, capR, lk, aco) @j ==> + not (Ex #k . K(lk) @k ) +" + +lemma legPINi_secOOBi_weaksecret_resp: +" + All idI idR capI capR pkI pkR dh ltk #i1 #i2 #j. + InitWillDoLegPINi()[+] @i1 & RespWillDoSecOOBi()[+] @i2 & + ResponderFinishedSecPairing(idR, capR, idI, capI, pkI, pkR, dh, ltk) @j ==> + not (Ex #k . K(ltk) @k ) +" + +lemma legPINi_secOOBi_double_impersonation: +" + All #i1 #i2 . + InitWillDoLegPINi()[+] @i1 & RespWillDoSecOOBi()[+] @i2 ==> + (All idI1 idR1 capI1 capR1 idI2 idR2 capI2 capR2 lk aco pkI pkR dh ltk #j1 #j2 . + InitiatorFinishedLegPairing(idI1, capI1, idR1, capR1, lk, aco) @j1 & + ResponderFinishedSecPairing(idR2, capR2, idI2, capI2, pkR, pkI, dh, ltk) @j2 ==> + not (Ex #k1 #k2 . + K(lk) @k1 & K(ltk) @k2 + ) + ) +" + +#endif + +/*********************************************/ +/* End lemmas about LegPINi-SecOOBi exchange */ +/*********************************************/ + +/*****************************************/ +/* Lemmas about LegPINi-SecOOBo exchange */ +/*****************************************/ + +#ifdef LegPINiSecOOBo +lemma legPINi_secOOBo_functional: exists-trace +" + Ex #i1 #i2 . + InitWillDoLegPINi()[+] @i1 & RespWillDoSecOOBo()[+] @i2 & + (Ex idI1 idR1 capI1 capR1 idI2 idR2 capI2 capR2 lk aco pkI pkR dh ltk #j1 #j2 . + InitiatorFinishedLegPairing(idI1, capI1, idR1, capR1, lk, aco) @j1 & + ResponderFinishedSecPairing(idR2, capR2, idI2, capI2, pkR, pkI, dh, ltk) @j2 + ) +" + +lemma legPINi_secOOBo_auth_init: +" + All idI idR capI capR lk aco #i1 #i2 #j . + InitWillDoLegPINi()[+] @i1 & RespWillDoSecOOBo()[+] @i2 & + InitiatorFinishedLegPairing(idI, capI, idR, capR, lk, aco) @j ==> + (Ex pkI pkR dh nsi nsr ri rr ei er #k . + RespDoneDHKeyCheck(idR, capR, idI, capI, pkR, pkI, dh, nsr, nsi, rr, ri, er, ei) @k + ) +" + +lemma legPINi_secOOBo_auth_resp: +" + All idI idR capI capR pkI pkR dh ltk #i1 #i2 #j . + InitWillDoLegPINi()[+] @i1 & RespWillDoSecOOBo()[+] @i2 & + ResponderFinishedSecPairing(idR, capR, idI, capI, pkI, pkR, dh, ltk) @j ==> + (Ex lk aco #k . + InitiatorFinishedLegPairing(idI, capI, idR, capR, lk, aco) @k + ) +" + +lemma legPINi_secOOBo_weaksecret_init: +" + All idI idR capI capR lk aco #i1 #i2 #j. + InitWillDoLegPINi()[+] @i1 & RespWillDoSecOOBo()[+] @i2 & + InitiatorFinishedLegPairing(idI, capI, idR, capR, lk, aco) @j ==> + not (Ex #k . K(lk) @k ) +" + +lemma legPINi_secOOBo_weaksecret_resp: +" + All idI idR capI capR pkI pkR dh ltk #i1 #i2 #j. + InitWillDoLegPINi()[+] @i1 & RespWillDoSecOOBo()[+] @i2 & + ResponderFinishedSecPairing(idR, capR, idI, capI, pkI, pkR, dh, ltk) @j ==> + not (Ex #k . K(ltk) @k ) +" + +lemma legPINi_secOOBo_double_impersonation: +" + All #i1 #i2 . + InitWillDoLegPINi()[+] @i1 & RespWillDoSecOOBo()[+] @i2 ==> + (All idI1 idR1 capI1 capR1 idI2 idR2 capI2 capR2 lk aco pkI pkR dh ltk #j1 #j2 . + InitiatorFinishedLegPairing(idI1, capI1, idR1, capR1, lk, aco) @j1 & + ResponderFinishedSecPairing(idR2, capR2, idI2, capI2, pkR, pkI, dh, ltk) @j2 ==> + not (Ex #k1 #k2 . + K(lk) @k1 & K(ltk) @k2 + ) + ) +" + +#endif + +/*********************************************/ +/* End lemmas about LegPINi-SecOOBo exchange */ +/*********************************************/ + +/******************************************/ +/* Lemmas about LegPINi-SecOOBio exchange */ +/******************************************/ + +#ifdef LegPINiSecOOBio +lemma legPINi_secOOBio_functional: exists-trace +" + Ex #i1 #i2 . + InitWillDoLegPINi()[+] @i1 & RespWillDoSecOOBio()[+] @i2 & + (Ex idI1 idR1 capI1 capR1 idI2 idR2 capI2 capR2 lk aco pkI pkR dh ltk #j1 #j2 . + InitiatorFinishedLegPairing(idI1, capI1, idR1, capR1, lk, aco) @j1 & + ResponderFinishedSecPairing(idR2, capR2, idI2, capI2, pkR, pkI, dh, ltk) @j2 + ) +" + +lemma legPINi_secOOBio_auth_init: +" + All idI idR capI capR lk aco #i1 #i2 #j . + InitWillDoLegPINi()[+] @i1 & RespWillDoSecOOBio()[+] @i2 & + InitiatorFinishedLegPairing(idI, capI, idR, capR, lk, aco) @j ==> + (Ex pkI pkR dh nsi nsr ri rr ei er #k . + RespDoneDHKeyCheck(idR, capR, idI, capI, pkR, pkI, dh, nsr, nsi, rr, ri, er, ei) @k + ) +" + +lemma legPINi_secOOBio_auth_resp: +" + All idI idR capI capR pkI pkR dh ltk #i1 #i2 #j . + InitWillDoLegPINi()[+] @i1 & RespWillDoSecOOBio()[+] @i2 & + ResponderFinishedSecPairing(idR, capR, idI, capI, pkI, pkR, dh, ltk) @j ==> + (Ex lk aco #k . + InitiatorFinishedLegPairing(idI, capI, idR, capR, lk, aco) @k + ) +" + +lemma legPINi_secOOBio_weaksecret_init: +" + All idI idR capI capR lk aco #i1 #i2 #j. + InitWillDoLegPINi()[+] @i1 & RespWillDoSecOOBio()[+] @i2 & + InitiatorFinishedLegPairing(idI, capI, idR, capR, lk, aco) @j ==> + not (Ex #k . K(lk) @k ) +" + +lemma legPINi_secOOBio_weaksecret_resp: +" + All idI idR capI capR pkI pkR dh ltk #i1 #i2 #j. + InitWillDoLegPINi()[+] @i1 & RespWillDoSecOOBio()[+] @i2 & + ResponderFinishedSecPairing(idR, capR, idI, capI, pkI, pkR, dh, ltk) @j ==> + not (Ex #k . K(ltk) @k ) +" + +lemma legPINi_secOOBio_double_impersonation: +" + All #i1 #i2 . + InitWillDoLegPINi()[+] @i1 & RespWillDoSecOOBio()[+] @i2 ==> + (All idI1 idR1 capI1 capR1 idI2 idR2 capI2 capR2 lk aco pkI pkR dh ltk #j1 #j2 . + InitiatorFinishedLegPairing(idI1, capI1, idR1, capR1, lk, aco) @j1 & + ResponderFinishedSecPairing(idR2, capR2, idI2, capI2, pkR, pkI, dh, ltk) @j2 ==> + not (Ex #k1 #k2 . + K(lk) @k1 & K(ltk) @k2 + ) + ) +" + +#endif + +/**********************************************/ +/* End lemmas about LegPINi-SecOOBio exchange */ +/**********************************************/ + +/***************************************/ +/* Lemmas about LegPINo-SecJW exchange */ +/***************************************/ + +#ifdef LegPINoSecJW +lemma legPINo_secJW_functional: exists-trace +" + Ex #i1 #i2 . + InitWillDoLegPINo()[+] @i1 & RespWillDoSecJW()[+] @i2 & + (Ex idI1 idR1 capI1 capR1 idI2 idR2 capI2 capR2 lk aco pkI pkR dh ltk #j1 #j2 . + InitiatorFinishedLegPairing(idI1, capI1, idR1, capR1, lk, aco) @j1 & + ResponderFinishedSecPairing(idR2, capR2, idI2, capI2, pkR, pkI, dh, ltk) @j2 + ) +" + +lemma legPINo_secJW_auth_init: +" + All idI idR capI capR lk aco #i1 #i2 #j . + InitWillDoLegPINo()[+] @i1 & RespWillDoSecJW()[+] @i2 & + InitiatorFinishedLegPairing(idI, capI, idR, capR, lk, aco) @j ==> + (Ex pkI pkR dh nsi nsr ri rr ei er #k . + RespDoneDHKeyCheck(idR, capR, idI, capI, pkR, pkI, dh, nsr, nsi, rr, ri, er, ei) @k + ) +" + +lemma legPINo_secJW_auth_resp: +" + All idI idR capI capR pkI pkR dh ltk #i1 #i2 #j . + InitWillDoLegPINo()[+] @i1 & RespWillDoSecJW()[+] @i2 & + ResponderFinishedSecPairing(idR, capR, idI, capI, pkI, pkR, dh, ltk) @j ==> + (Ex lk aco #k . + InitiatorFinishedLegPairing(idI, capI, idR, capR, lk, aco) @k + ) +" + +lemma legPINo_secJW_weaksecret_init: +" + All idI idR capI capR lk aco #i1 #i2 #j. + InitWillDoLegPINo()[+] @i1 & RespWillDoSecJW()[+] @i2 & + InitiatorFinishedLegPairing(idI, capI, idR, capR, lk, aco) @j ==> + not (Ex #k . K(lk) @k ) +" + +lemma legPINo_secJW_weaksecret_resp: +" + All idI idR capI capR pkI pkR dh ltk #i1 #i2 #j. + InitWillDoLegPINo()[+] @i1 & RespWillDoSecJW()[+] @i2 & + ResponderFinishedSecPairing(idR, capR, idI, capI, pkI, pkR, dh, ltk) @j ==> + not (Ex #k . K(ltk) @k ) +" + +lemma legPINo_secJW_double_impersonation: +" + All #i1 #i2 . + InitWillDoLegPINo()[+] @i1 & RespWillDoSecJW()[+] @i2 ==> + (All idI1 idR1 capI1 capR1 idI2 idR2 capI2 capR2 lk aco pkI pkR dh ltk #j1 #j2 . + InitiatorFinishedLegPairing(idI1, capI1, idR1, capR1, lk, aco) @j1 & + ResponderFinishedSecPairing(idR2, capR2, idI2, capI2, pkR, pkI, dh, ltk) @j2 ==> + not (Ex #k1 #k2 . + K(lk) @k1 & K(ltk) @k2 + ) + ) +" + +#endif + +/*******************************************/ +/* End lemmas about LegPINo-SecJW exchange */ +/*******************************************/ + +/****************************************/ +/* Lemmas about LegPINo-SecPEi exchange */ +/****************************************/ + +#ifdef LegPINoSecPEi +lemma legPINo_secPEi_functional: exists-trace +" + Ex #i1 #i2 . + InitWillDoLegPINo()[+] @i1 & RespWillDoSecPEi()[+] @i2 & + (Ex idI1 idR1 capI1 capR1 idI2 idR2 capI2 capR2 lk aco pkI pkR dh ltk #j1 #j2 . + InitiatorFinishedLegPairing(idI1, capI1, idR1, capR1, lk, aco) @j1 & + ResponderFinishedSecPairing(idR2, capR2, idI2, capI2, pkR, pkI, dh, ltk) @j2 + ) +" + +lemma legPINo_secPEi_auth_init: +" + All idI idR capI capR lk aco #i1 #i2 #j . + InitWillDoLegPINo()[+] @i1 & RespWillDoSecPEi()[+] @i2 & + InitiatorFinishedLegPairing(idI, capI, idR, capR, lk, aco) @j ==> + (Ex pkI pkR dh nsi nsr ri rr ei er #k . + RespDoneDHKeyCheck(idR, capR, idI, capI, pkR, pkI, dh, nsr, nsi, rr, ri, er, ei) @k + ) +" + +lemma legPINo_secPEi_auth_resp: +" + All idI idR capI capR pkI pkR dh ltk #i1 #i2 #j . + InitWillDoLegPINo()[+] @i1 & RespWillDoSecPEi()[+] @i2 & + ResponderFinishedSecPairing(idR, capR, idI, capI, pkI, pkR, dh, ltk) @j ==> + (Ex lk aco #k . + InitiatorFinishedLegPairing(idI, capI, idR, capR, lk, aco) @k + ) +" + +lemma legPINo_secPEi_weaksecret_init: +" + All idI idR capI capR lk aco #i1 #i2 #j. + InitWillDoLegPINo()[+] @i1 & RespWillDoSecPEi()[+] @i2 & + InitiatorFinishedLegPairing(idI, capI, idR, capR, lk, aco) @j ==> + not (Ex #k . K(lk) @k ) +" + +lemma legPINo_secPEi_weaksecret_resp: +" + All idI idR capI capR pkI pkR dh ltk #i1 #i2 #j. + InitWillDoLegPINo()[+] @i1 & RespWillDoSecPEi()[+] @i2 & + ResponderFinishedSecPairing(idR, capR, idI, capI, pkI, pkR, dh, ltk) @j ==> + not (Ex #k . K(ltk) @k ) +" + +lemma legPINo_secPEi_double_impersonation: +" + All #i1 #i2 . + InitWillDoLegPINo()[+] @i1 & RespWillDoSecPEi()[+] @i2 ==> + (All idI1 idR1 capI1 capR1 idI2 idR2 capI2 capR2 lk aco pkI pkR dh ltk #j1 #j2 . + InitiatorFinishedLegPairing(idI1, capI1, idR1, capR1, lk, aco) @j1 & + ResponderFinishedSecPairing(idR2, capR2, idI2, capI2, pkR, pkI, dh, ltk) @j2 ==> + not (Ex #k1 #k2 . + K(lk) @k1 & K(ltk) @k2 + ) + ) +" + +#endif + +/********************************************/ +/* End lemmas about LegPINo-SecPEi exchange */ +/********************************************/ + +/****************************************/ +/* Lemmas about LegPINo-SecPEo exchange */ +/****************************************/ + +#ifdef LegPINoSecPEo +lemma legPINo_secPEo_functional: exists-trace +" + Ex #i1 #i2 . + InitWillDoLegPINo()[+] @i1 & RespWillDoSecPEo()[+] @i2 & + (Ex idI1 idR1 capI1 capR1 idI2 idR2 capI2 capR2 lk aco pkI pkR dh ltk #j1 #j2 . + InitiatorFinishedLegPairing(idI1, capI1, idR1, capR1, lk, aco) @j1 & + ResponderFinishedSecPairing(idR2, capR2, idI2, capI2, pkR, pkI, dh, ltk) @j2 + ) +" + +lemma legPINo_secPEo_auth_init: +" + All idI idR capI capR lk aco #i1 #i2 #j . + InitWillDoLegPINo()[+] @i1 & RespWillDoSecPEo()[+] @i2 & + InitiatorFinishedLegPairing(idI, capI, idR, capR, lk, aco) @j ==> + (Ex pkI pkR dh nsi nsr ri rr ei er #k . + RespDoneDHKeyCheck(idR, capR, idI, capI, pkR, pkI, dh, nsr, nsi, rr, ri, er, ei) @k + ) +" + +lemma legPINo_secPEo_auth_resp: +" + All idI idR capI capR pkI pkR dh ltk #i1 #i2 #j . + InitWillDoLegPINo()[+] @i1 & RespWillDoSecPEo()[+] @i2 & + ResponderFinishedSecPairing(idR, capR, idI, capI, pkI, pkR, dh, ltk) @j ==> + (Ex lk aco #k . + InitiatorFinishedLegPairing(idI, capI, idR, capR, lk, aco) @k + ) +" + +lemma legPINo_secPEo_weaksecret_init: +" + All idI idR capI capR lk aco #i1 #i2 #j. + InitWillDoLegPINo()[+] @i1 & RespWillDoSecPEo()[+] @i2 & + InitiatorFinishedLegPairing(idI, capI, idR, capR, lk, aco) @j ==> + not (Ex #k . K(lk) @k ) +" + +lemma legPINo_secPEo_weaksecret_resp: +" + All idI idR capI capR pkI pkR dh ltk #i1 #i2 #j. + InitWillDoLegPINo()[+] @i1 & RespWillDoSecPEo()[+] @i2 & + ResponderFinishedSecPairing(idR, capR, idI, capI, pkI, pkR, dh, ltk) @j ==> + not (Ex #k . K(ltk) @k ) +" + +lemma legPINo_secPEo_double_impersonation: +" + All #i1 #i2 . + InitWillDoLegPINo()[+] @i1 & RespWillDoSecPEo()[+] @i2 ==> + (All idI1 idR1 capI1 capR1 idI2 idR2 capI2 capR2 lk aco pkI pkR dh ltk #j1 #j2 . + InitiatorFinishedLegPairing(idI1, capI1, idR1, capR1, lk, aco) @j1 & + ResponderFinishedSecPairing(idR2, capR2, idI2, capI2, pkR, pkI, dh, ltk) @j2 ==> + not (Ex #k1 #k2 . + K(lk) @k1 & K(ltk) @k2 + ) + ) +" + +#endif + +/********************************************/ +/* End lemmas about LegPINo-SecPEo exchange */ +/********************************************/ + +/*****************************************/ +/* Lemmas about LegPINo-SecPEio exchange */ +/*****************************************/ + +#ifdef LegPINoSecPEio +lemma legPINo_secPEio_functional: exists-trace +" + Ex #i1 #i2 . + InitWillDoLegPINo()[+] @i1 & RespWillDoSecPEio()[+] @i2 & + (Ex idI1 idR1 capI1 capR1 idI2 idR2 capI2 capR2 lk aco pkI pkR dh ltk #j1 #j2 . + InitiatorFinishedLegPairing(idI1, capI1, idR1, capR1, lk, aco) @j1 & + ResponderFinishedSecPairing(idR2, capR2, idI2, capI2, pkR, pkI, dh, ltk) @j2 + ) +" + +lemma legPINo_secPEio_auth_init: +" + All idI idR capI capR lk aco #i1 #i2 #j . + InitWillDoLegPINo()[+] @i1 & RespWillDoSecPEio()[+] @i2 & + InitiatorFinishedLegPairing(idI, capI, idR, capR, lk, aco) @j ==> + (Ex pkI pkR dh nsi nsr ri rr ei er #k . + RespDoneDHKeyCheck(idR, capR, idI, capI, pkR, pkI, dh, nsr, nsi, rr, ri, er, ei) @k + ) +" + +lemma legPINo_secPEio_auth_resp: +" + All idI idR capI capR pkI pkR dh ltk #i1 #i2 #j . + InitWillDoLegPINo()[+] @i1 & RespWillDoSecPEio()[+] @i2 & + ResponderFinishedSecPairing(idR, capR, idI, capI, pkI, pkR, dh, ltk) @j ==> + (Ex lk aco #k . + InitiatorFinishedLegPairing(idI, capI, idR, capR, lk, aco) @k + ) +" + +lemma legPINo_secPEio_weaksecret_init: +" + All idI idR capI capR lk aco #i1 #i2 #j. + InitWillDoLegPINo()[+] @i1 & RespWillDoSecPEio()[+] @i2 & + InitiatorFinishedLegPairing(idI, capI, idR, capR, lk, aco) @j ==> + not (Ex #k . K(lk) @k ) +" + +lemma legPINo_secPEio_weaksecret_resp: +" + All idI idR capI capR pkI pkR dh ltk #i1 #i2 #j. + InitWillDoLegPINo()[+] @i1 & RespWillDoSecPEio()[+] @i2 & + ResponderFinishedSecPairing(idR, capR, idI, capI, pkI, pkR, dh, ltk) @j ==> + not (Ex #k . K(ltk) @k ) +" + +lemma legPINo_secPEio_double_impersonation: +" + All #i1 #i2 . + InitWillDoLegPINo()[+] @i1 & RespWillDoSecPEio()[+] @i2 ==> + (All idI1 idR1 capI1 capR1 idI2 idR2 capI2 capR2 lk aco pkI pkR dh ltk #j1 #j2 . + InitiatorFinishedLegPairing(idI1, capI1, idR1, capR1, lk, aco) @j1 & + ResponderFinishedSecPairing(idR2, capR2, idI2, capI2, pkR, pkI, dh, ltk) @j2 ==> + not (Ex #k1 #k2 . + K(lk) @k1 & K(ltk) @k2 + ) + ) +" + +#endif + +/*********************************************/ +/* End lemmas about LegPINo-SecPEio exchange */ +/*********************************************/ + +/***************************************/ +/* Lemmas about LegPINo-SecNC exchange */ +/***************************************/ + +#ifdef LegPINoSecNC +lemma legPINo_secNC_functional: exists-trace +" + Ex #i1 #i2 . + InitWillDoLegPINo()[+] @i1 & RespWillDoSecNC()[+] @i2 & + (Ex idI1 idR1 capI1 capR1 idI2 idR2 capI2 capR2 lk aco pkI pkR dh ltk #j1 #j2 . + InitiatorFinishedLegPairing(idI1, capI1, idR1, capR1, lk, aco) @j1 & + ResponderFinishedSecPairing(idR2, capR2, idI2, capI2, pkR, pkI, dh, ltk) @j2 + ) +" + +lemma legPINo_secNC_auth_init: +" + All idI idR capI capR lk aco #i1 #i2 #j . + InitWillDoLegPINo()[+] @i1 & RespWillDoSecNC()[+] @i2 & + InitiatorFinishedLegPairing(idI, capI, idR, capR, lk, aco) @j ==> + (Ex pkI pkR dh nsi nsr ri rr ei er #k . + RespDoneDHKeyCheck(idR, capR, idI, capI, pkR, pkI, dh, nsr, nsi, rr, ri, er, ei) @k + ) +" + +lemma legPINo_secNC_auth_resp: +" + All idI idR capI capR pkI pkR dh ltk #i1 #i2 #j . + InitWillDoLegPINo()[+] @i1 & RespWillDoSecNC()[+] @i2 & + ResponderFinishedSecPairing(idR, capR, idI, capI, pkI, pkR, dh, ltk) @j ==> + (Ex lk aco #k . + InitiatorFinishedLegPairing(idI, capI, idR, capR, lk, aco) @k + ) +" + +lemma legPINo_secNC_weaksecret_init: +" + All idI idR capI capR lk aco #i1 #i2 #j. + InitWillDoLegPINo()[+] @i1 & RespWillDoSecNC()[+] @i2 & + InitiatorFinishedLegPairing(idI, capI, idR, capR, lk, aco) @j ==> + not (Ex #k . K(lk) @k ) +" + +lemma legPINo_secNC_weaksecret_resp: +" + All idI idR capI capR pkI pkR dh ltk #i1 #i2 #j. + InitWillDoLegPINo()[+] @i1 & RespWillDoSecNC()[+] @i2 & + ResponderFinishedSecPairing(idR, capR, idI, capI, pkI, pkR, dh, ltk) @j ==> + not (Ex #k . K(ltk) @k ) +" + +lemma legPINo_secNC_double_impersonation: +" + All #i1 #i2 . + InitWillDoLegPINo()[+] @i1 & RespWillDoSecNC()[+] @i2 ==> + (All idI1 idR1 capI1 capR1 idI2 idR2 capI2 capR2 lk aco pkI pkR dh ltk #j1 #j2 . + InitiatorFinishedLegPairing(idI1, capI1, idR1, capR1, lk, aco) @j1 & + ResponderFinishedSecPairing(idR2, capR2, idI2, capI2, pkR, pkI, dh, ltk) @j2 ==> + not (Ex #k1 #k2 . + K(lk) @k1 & K(ltk) @k2 + ) + ) +" + +#endif + +/*******************************************/ +/* End lemmas about LegPINo-SecNC exchange */ +/*******************************************/ + +/*****************************************/ +/* Lemmas about LegPINo-SecOOBi exchange */ +/*****************************************/ + +#ifdef LegPINoSecOOBi +lemma legPINo_secOOBi_functional: exists-trace +" + Ex #i1 #i2 . + InitWillDoLegPINo()[+] @i1 & RespWillDoSecOOBi()[+] @i2 & + (Ex idI1 idR1 capI1 capR1 idI2 idR2 capI2 capR2 lk aco pkI pkR dh ltk #j1 #j2 . + InitiatorFinishedLegPairing(idI1, capI1, idR1, capR1, lk, aco) @j1 & + ResponderFinishedSecPairing(idR2, capR2, idI2, capI2, pkR, pkI, dh, ltk) @j2 + ) +" + +lemma legPINo_secOOBi_auth_init: +" + All idI idR capI capR lk aco #i1 #i2 #j . + InitWillDoLegPINo()[+] @i1 & RespWillDoSecOOBi()[+] @i2 & + InitiatorFinishedLegPairing(idI, capI, idR, capR, lk, aco) @j ==> + (Ex pkI pkR dh nsi nsr ri rr ei er #k . + RespDoneDHKeyCheck(idR, capR, idI, capI, pkR, pkI, dh, nsr, nsi, rr, ri, er, ei) @k + ) +" + +lemma legPINo_secOOBi_auth_resp: +" + All idI idR capI capR pkI pkR dh ltk #i1 #i2 #j . + InitWillDoLegPINo()[+] @i1 & RespWillDoSecOOBi()[+] @i2 & + ResponderFinishedSecPairing(idR, capR, idI, capI, pkI, pkR, dh, ltk) @j ==> + (Ex lk aco #k . + InitiatorFinishedLegPairing(idI, capI, idR, capR, lk, aco) @k + ) +" + +lemma legPINo_secOOBi_weaksecret_init: +" + All idI idR capI capR lk aco #i1 #i2 #j. + InitWillDoLegPINo()[+] @i1 & RespWillDoSecOOBi()[+] @i2 & + InitiatorFinishedLegPairing(idI, capI, idR, capR, lk, aco) @j ==> + not (Ex #k . K(lk) @k ) +" + +lemma legPINo_secOOBi_weaksecret_resp: +" + All idI idR capI capR pkI pkR dh ltk #i1 #i2 #j. + InitWillDoLegPINo()[+] @i1 & RespWillDoSecOOBi()[+] @i2 & + ResponderFinishedSecPairing(idR, capR, idI, capI, pkI, pkR, dh, ltk) @j ==> + not (Ex #k . K(ltk) @k ) +" + +lemma legPINo_secOOBi_double_impersonation: +" + All #i1 #i2 . + InitWillDoLegPINo()[+] @i1 & RespWillDoSecOOBi()[+] @i2 ==> + (All idI1 idR1 capI1 capR1 idI2 idR2 capI2 capR2 lk aco pkI pkR dh ltk #j1 #j2 . + InitiatorFinishedLegPairing(idI1, capI1, idR1, capR1, lk, aco) @j1 & + ResponderFinishedSecPairing(idR2, capR2, idI2, capI2, pkR, pkI, dh, ltk) @j2 ==> + not (Ex #k1 #k2 . + K(lk) @k1 & K(ltk) @k2 + ) + ) +" + +#endif + +/*********************************************/ +/* End lemmas about LegPINo-SecOOBi exchange */ +/*********************************************/ + +/*****************************************/ +/* Lemmas about LegPINo-SecOOBo exchange */ +/*****************************************/ + +#ifdef LegPINoSecOOBo +lemma legPINo_secOOBo_functional: exists-trace +" + Ex #i1 #i2 . + InitWillDoLegPINo()[+] @i1 & RespWillDoSecOOBo()[+] @i2 & + (Ex idI1 idR1 capI1 capR1 idI2 idR2 capI2 capR2 lk aco pkI pkR dh ltk #j1 #j2 . + InitiatorFinishedLegPairing(idI1, capI1, idR1, capR1, lk, aco) @j1 & + ResponderFinishedSecPairing(idR2, capR2, idI2, capI2, pkR, pkI, dh, ltk) @j2 + ) +" + +lemma legPINo_secOOBo_auth_init: +" + All idI idR capI capR lk aco #i1 #i2 #j . + InitWillDoLegPINo()[+] @i1 & RespWillDoSecOOBo()[+] @i2 & + InitiatorFinishedLegPairing(idI, capI, idR, capR, lk, aco) @j ==> + (Ex pkI pkR dh nsi nsr ri rr ei er #k . + RespDoneDHKeyCheck(idR, capR, idI, capI, pkR, pkI, dh, nsr, nsi, rr, ri, er, ei) @k + ) +" + +lemma legPINo_secOOBo_auth_resp: +" + All idI idR capI capR pkI pkR dh ltk #i1 #i2 #j . + InitWillDoLegPINo()[+] @i1 & RespWillDoSecOOBo()[+] @i2 & + ResponderFinishedSecPairing(idR, capR, idI, capI, pkI, pkR, dh, ltk) @j ==> + (Ex lk aco #k . + InitiatorFinishedLegPairing(idI, capI, idR, capR, lk, aco) @k + ) +" + +lemma legPINo_secOOBo_weaksecret_init: +" + All idI idR capI capR lk aco #i1 #i2 #j. + InitWillDoLegPINo()[+] @i1 & RespWillDoSecOOBo()[+] @i2 & + InitiatorFinishedLegPairing(idI, capI, idR, capR, lk, aco) @j ==> + not (Ex #k . K(lk) @k ) +" + +lemma legPINo_secOOBo_weaksecret_resp: +" + All idI idR capI capR pkI pkR dh ltk #i1 #i2 #j. + InitWillDoLegPINo()[+] @i1 & RespWillDoSecOOBo()[+] @i2 & + ResponderFinishedSecPairing(idR, capR, idI, capI, pkI, pkR, dh, ltk) @j ==> + not (Ex #k . K(ltk) @k ) +" + +lemma legPINo_secOOBo_double_impersonation: +" + All #i1 #i2 . + InitWillDoLegPINo()[+] @i1 & RespWillDoSecOOBo()[+] @i2 ==> + (All idI1 idR1 capI1 capR1 idI2 idR2 capI2 capR2 lk aco pkI pkR dh ltk #j1 #j2 . + InitiatorFinishedLegPairing(idI1, capI1, idR1, capR1, lk, aco) @j1 & + ResponderFinishedSecPairing(idR2, capR2, idI2, capI2, pkR, pkI, dh, ltk) @j2 ==> + not (Ex #k1 #k2 . + K(lk) @k1 & K(ltk) @k2 + ) + ) +" + +#endif + +/*********************************************/ +/* End lemmas about LegPINo-SecOOBo exchange */ +/*********************************************/ + +/******************************************/ +/* Lemmas about LegPINo-SecOOBio exchange */ +/******************************************/ + +#ifdef LegPINoSecOOBio +lemma legPINo_secOOBio_functional: exists-trace +" + Ex #i1 #i2 . + InitWillDoLegPINo()[+] @i1 & RespWillDoSecOOBio()[+] @i2 & + (Ex idI1 idR1 capI1 capR1 idI2 idR2 capI2 capR2 lk aco pkI pkR dh ltk #j1 #j2 . + InitiatorFinishedLegPairing(idI1, capI1, idR1, capR1, lk, aco) @j1 & + ResponderFinishedSecPairing(idR2, capR2, idI2, capI2, pkR, pkI, dh, ltk) @j2 + ) +" + +lemma legPINo_secOOBio_auth_init: +" + All idI idR capI capR lk aco #i1 #i2 #j . + InitWillDoLegPINo()[+] @i1 & RespWillDoSecOOBio()[+] @i2 & + InitiatorFinishedLegPairing(idI, capI, idR, capR, lk, aco) @j ==> + (Ex pkI pkR dh nsi nsr ri rr ei er #k . + RespDoneDHKeyCheck(idR, capR, idI, capI, pkR, pkI, dh, nsr, nsi, rr, ri, er, ei) @k + ) +" + +lemma legPINo_secOOBio_auth_resp: +" + All idI idR capI capR pkI pkR dh ltk #i1 #i2 #j . + InitWillDoLegPINo()[+] @i1 & RespWillDoSecOOBio()[+] @i2 & + ResponderFinishedSecPairing(idR, capR, idI, capI, pkI, pkR, dh, ltk) @j ==> + (Ex lk aco #k . + InitiatorFinishedLegPairing(idI, capI, idR, capR, lk, aco) @k + ) +" + +lemma legPINo_secOOBio_weaksecret_init: +" + All idI idR capI capR lk aco #i1 #i2 #j. + InitWillDoLegPINo()[+] @i1 & RespWillDoSecOOBio()[+] @i2 & + InitiatorFinishedLegPairing(idI, capI, idR, capR, lk, aco) @j ==> + not (Ex #k . K(lk) @k ) +" + +lemma legPINo_secOOBio_weaksecret_resp: +" + All idI idR capI capR pkI pkR dh ltk #i1 #i2 #j. + InitWillDoLegPINo()[+] @i1 & RespWillDoSecOOBio()[+] @i2 & + ResponderFinishedSecPairing(idR, capR, idI, capI, pkI, pkR, dh, ltk) @j ==> + not (Ex #k . K(ltk) @k ) +" + +lemma legPINo_secOOBio_double_impersonation: +" + All #i1 #i2 . + InitWillDoLegPINo()[+] @i1 & RespWillDoSecOOBio()[+] @i2 ==> + (All idI1 idR1 capI1 capR1 idI2 idR2 capI2 capR2 lk aco pkI pkR dh ltk #j1 #j2 . + InitiatorFinishedLegPairing(idI1, capI1, idR1, capR1, lk, aco) @j1 & + ResponderFinishedSecPairing(idR2, capR2, idI2, capI2, pkR, pkI, dh, ltk) @j2 ==> + not (Ex #k1 #k2 . + K(lk) @k1 & K(ltk) @k2 + ) + ) +" + +#endif + +/**********************************************/ +/* End lemmas about LegPINo-SecOOBio exchange */ +/**********************************************/ + +/****************************************/ +/* Lemmas about LegPINio-SecJW exchange */ +/****************************************/ + +#ifdef LegPINioSecJW +lemma legPINio_secJW_functional: exists-trace +" + Ex #i1 #i2 . + InitWillDoLegPINio()[+] @i1 & RespWillDoSecJW()[+] @i2 & + (Ex idI1 idR1 capI1 capR1 idI2 idR2 capI2 capR2 lk aco pkI pkR dh ltk #j1 #j2 . + InitiatorFinishedLegPairing(idI1, capI1, idR1, capR1, lk, aco) @j1 & + ResponderFinishedSecPairing(idR2, capR2, idI2, capI2, pkR, pkI, dh, ltk) @j2 + ) +" + +lemma legPINio_secJW_auth_init: +" + All idI idR capI capR lk aco #i1 #i2 #j . + InitWillDoLegPINio()[+] @i1 & RespWillDoSecJW()[+] @i2 & + InitiatorFinishedLegPairing(idI, capI, idR, capR, lk, aco) @j ==> + (Ex pkI pkR dh nsi nsr ri rr ei er #k . + RespDoneDHKeyCheck(idR, capR, idI, capI, pkR, pkI, dh, nsr, nsi, rr, ri, er, ei) @k + ) +" + +lemma legPINio_secJW_auth_resp: +" + All idI idR capI capR pkI pkR dh ltk #i1 #i2 #j . + InitWillDoLegPINio()[+] @i1 & RespWillDoSecJW()[+] @i2 & + ResponderFinishedSecPairing(idR, capR, idI, capI, pkI, pkR, dh, ltk) @j ==> + (Ex lk aco #k . + InitiatorFinishedLegPairing(idI, capI, idR, capR, lk, aco) @k + ) +" + +lemma legPINio_secJW_weaksecret_init: +" + All idI idR capI capR lk aco #i1 #i2 #j. + InitWillDoLegPINio()[+] @i1 & RespWillDoSecJW()[+] @i2 & + InitiatorFinishedLegPairing(idI, capI, idR, capR, lk, aco) @j ==> + not (Ex #k . K(lk) @k ) +" + +lemma legPINio_secJW_weaksecret_resp: +" + All idI idR capI capR pkI pkR dh ltk #i1 #i2 #j. + InitWillDoLegPINio()[+] @i1 & RespWillDoSecJW()[+] @i2 & + ResponderFinishedSecPairing(idR, capR, idI, capI, pkI, pkR, dh, ltk) @j ==> + not (Ex #k . K(ltk) @k ) +" + +lemma legPINio_secJW_double_impersonation: +" + All #i1 #i2 . + InitWillDoLegPINio()[+] @i1 & RespWillDoSecJW()[+] @i2 ==> + (All idI1 idR1 capI1 capR1 idI2 idR2 capI2 capR2 lk aco pkI pkR dh ltk #j1 #j2 . + InitiatorFinishedLegPairing(idI1, capI1, idR1, capR1, lk, aco) @j1 & + ResponderFinishedSecPairing(idR2, capR2, idI2, capI2, pkR, pkI, dh, ltk) @j2 ==> + not (Ex #k1 #k2 . + K(lk) @k1 & K(ltk) @k2 + ) + ) +" + +#endif + +/********************************************/ +/* End lemmas about LegPINio-SecJW exchange */ +/********************************************/ + +/*****************************************/ +/* Lemmas about LegPINio-SecPEi exchange */ +/*****************************************/ + +#ifdef LegPINioSecPEi +lemma legPINio_secPEi_functional: exists-trace +" + Ex #i1 #i2 . + InitWillDoLegPINio()[+] @i1 & RespWillDoSecPEi()[+] @i2 & + (Ex idI1 idR1 capI1 capR1 idI2 idR2 capI2 capR2 lk aco pkI pkR dh ltk #j1 #j2 . + InitiatorFinishedLegPairing(idI1, capI1, idR1, capR1, lk, aco) @j1 & + ResponderFinishedSecPairing(idR2, capR2, idI2, capI2, pkR, pkI, dh, ltk) @j2 + ) +" + +lemma legPINio_secPEi_auth_init: +" + All idI idR capI capR lk aco #i1 #i2 #j . + InitWillDoLegPINio()[+] @i1 & RespWillDoSecPEi()[+] @i2 & + InitiatorFinishedLegPairing(idI, capI, idR, capR, lk, aco) @j ==> + (Ex pkI pkR dh nsi nsr ri rr ei er #k . + RespDoneDHKeyCheck(idR, capR, idI, capI, pkR, pkI, dh, nsr, nsi, rr, ri, er, ei) @k + ) +" + +lemma legPINio_secPEi_auth_resp: +" + All idI idR capI capR pkI pkR dh ltk #i1 #i2 #j . + InitWillDoLegPINio()[+] @i1 & RespWillDoSecPEi()[+] @i2 & + ResponderFinishedSecPairing(idR, capR, idI, capI, pkI, pkR, dh, ltk) @j ==> + (Ex lk aco #k . + InitiatorFinishedLegPairing(idI, capI, idR, capR, lk, aco) @k + ) +" + +lemma legPINio_secPEi_weaksecret_init: +" + All idI idR capI capR lk aco #i1 #i2 #j. + InitWillDoLegPINio()[+] @i1 & RespWillDoSecPEi()[+] @i2 & + InitiatorFinishedLegPairing(idI, capI, idR, capR, lk, aco) @j ==> + not (Ex #k . K(lk) @k ) +" + +lemma legPINio_secPEi_weaksecret_resp: +" + All idI idR capI capR pkI pkR dh ltk #i1 #i2 #j. + InitWillDoLegPINio()[+] @i1 & RespWillDoSecPEi()[+] @i2 & + ResponderFinishedSecPairing(idR, capR, idI, capI, pkI, pkR, dh, ltk) @j ==> + not (Ex #k . K(ltk) @k ) +" + +lemma legPINio_secPEi_double_impersonation: +" + All #i1 #i2 . + InitWillDoLegPINio()[+] @i1 & RespWillDoSecPEi()[+] @i2 ==> + (All idI1 idR1 capI1 capR1 idI2 idR2 capI2 capR2 lk aco pkI pkR dh ltk #j1 #j2 . + InitiatorFinishedLegPairing(idI1, capI1, idR1, capR1, lk, aco) @j1 & + ResponderFinishedSecPairing(idR2, capR2, idI2, capI2, pkR, pkI, dh, ltk) @j2 ==> + not (Ex #k1 #k2 . + K(lk) @k1 & K(ltk) @k2 + ) + ) +" + +#endif + +/*********************************************/ +/* End lemmas about LegPINio-SecPEi exchange */ +/*********************************************/ + +/*****************************************/ +/* Lemmas about LegPINio-SecPEo exchange */ +/*****************************************/ + +#ifdef LegPINioSecPEo +lemma legPINio_secPEo_functional: exists-trace +" + Ex #i1 #i2 . + InitWillDoLegPINio()[+] @i1 & RespWillDoSecPEo()[+] @i2 & + (Ex idI1 idR1 capI1 capR1 idI2 idR2 capI2 capR2 lk aco pkI pkR dh ltk #j1 #j2 . + InitiatorFinishedLegPairing(idI1, capI1, idR1, capR1, lk, aco) @j1 & + ResponderFinishedSecPairing(idR2, capR2, idI2, capI2, pkR, pkI, dh, ltk) @j2 + ) +" + +lemma legPINio_secPEo_auth_init: +" + All idI idR capI capR lk aco #i1 #i2 #j . + InitWillDoLegPINio()[+] @i1 & RespWillDoSecPEo()[+] @i2 & + InitiatorFinishedLegPairing(idI, capI, idR, capR, lk, aco) @j ==> + (Ex pkI pkR dh nsi nsr ri rr ei er #k . + RespDoneDHKeyCheck(idR, capR, idI, capI, pkR, pkI, dh, nsr, nsi, rr, ri, er, ei) @k + ) +" + +lemma legPINio_secPEo_auth_resp: +" + All idI idR capI capR pkI pkR dh ltk #i1 #i2 #j . + InitWillDoLegPINio()[+] @i1 & RespWillDoSecPEo()[+] @i2 & + ResponderFinishedSecPairing(idR, capR, idI, capI, pkI, pkR, dh, ltk) @j ==> + (Ex lk aco #k . + InitiatorFinishedLegPairing(idI, capI, idR, capR, lk, aco) @k + ) +" + +lemma legPINio_secPEo_weaksecret_init: +" + All idI idR capI capR lk aco #i1 #i2 #j. + InitWillDoLegPINio()[+] @i1 & RespWillDoSecPEo()[+] @i2 & + InitiatorFinishedLegPairing(idI, capI, idR, capR, lk, aco) @j ==> + not (Ex #k . K(lk) @k ) +" + +lemma legPINio_secPEo_weaksecret_resp: +" + All idI idR capI capR pkI pkR dh ltk #i1 #i2 #j. + InitWillDoLegPINio()[+] @i1 & RespWillDoSecPEo()[+] @i2 & + ResponderFinishedSecPairing(idR, capR, idI, capI, pkI, pkR, dh, ltk) @j ==> + not (Ex #k . K(ltk) @k ) +" + +lemma legPINio_secPEo_double_impersonation: +" + All #i1 #i2 . + InitWillDoLegPINio()[+] @i1 & RespWillDoSecPEo()[+] @i2 ==> + (All idI1 idR1 capI1 capR1 idI2 idR2 capI2 capR2 lk aco pkI pkR dh ltk #j1 #j2 . + InitiatorFinishedLegPairing(idI1, capI1, idR1, capR1, lk, aco) @j1 & + ResponderFinishedSecPairing(idR2, capR2, idI2, capI2, pkR, pkI, dh, ltk) @j2 ==> + not (Ex #k1 #k2 . + K(lk) @k1 & K(ltk) @k2 + ) + ) +" + +#endif + +/*********************************************/ +/* End lemmas about LegPINio-SecPEo exchange */ +/*********************************************/ + +/******************************************/ +/* Lemmas about LegPINio-SecPEio exchange */ +/******************************************/ + +#ifdef LegPINioSecPEio +lemma legPINio_secPEio_functional: exists-trace +" + Ex #i1 #i2 . + InitWillDoLegPINio()[+] @i1 & RespWillDoSecPEio()[+] @i2 & + (Ex idI1 idR1 capI1 capR1 idI2 idR2 capI2 capR2 lk aco pkI pkR dh ltk #j1 #j2 . + InitiatorFinishedLegPairing(idI1, capI1, idR1, capR1, lk, aco) @j1 & + ResponderFinishedSecPairing(idR2, capR2, idI2, capI2, pkR, pkI, dh, ltk) @j2 + ) +" + +lemma legPINio_secPEio_auth_init: +" + All idI idR capI capR lk aco #i1 #i2 #j . + InitWillDoLegPINio()[+] @i1 & RespWillDoSecPEio()[+] @i2 & + InitiatorFinishedLegPairing(idI, capI, idR, capR, lk, aco) @j ==> + (Ex pkI pkR dh nsi nsr ri rr ei er #k . + RespDoneDHKeyCheck(idR, capR, idI, capI, pkR, pkI, dh, nsr, nsi, rr, ri, er, ei) @k + ) +" + +lemma legPINio_secPEio_auth_resp: +" + All idI idR capI capR pkI pkR dh ltk #i1 #i2 #j . + InitWillDoLegPINio()[+] @i1 & RespWillDoSecPEio()[+] @i2 & + ResponderFinishedSecPairing(idR, capR, idI, capI, pkI, pkR, dh, ltk) @j ==> + (Ex lk aco #k . + InitiatorFinishedLegPairing(idI, capI, idR, capR, lk, aco) @k + ) +" + +lemma legPINio_secPEio_weaksecret_init: +" + All idI idR capI capR lk aco #i1 #i2 #j. + InitWillDoLegPINio()[+] @i1 & RespWillDoSecPEio()[+] @i2 & + InitiatorFinishedLegPairing(idI, capI, idR, capR, lk, aco) @j ==> + not (Ex #k . K(lk) @k ) +" + +lemma legPINio_secPEio_weaksecret_resp: +" + All idI idR capI capR pkI pkR dh ltk #i1 #i2 #j. + InitWillDoLegPINio()[+] @i1 & RespWillDoSecPEio()[+] @i2 & + ResponderFinishedSecPairing(idR, capR, idI, capI, pkI, pkR, dh, ltk) @j ==> + not (Ex #k . K(ltk) @k ) +" + +lemma legPINio_secPEio_double_impersonation: +" + All #i1 #i2 . + InitWillDoLegPINio()[+] @i1 & RespWillDoSecPEio()[+] @i2 ==> + (All idI1 idR1 capI1 capR1 idI2 idR2 capI2 capR2 lk aco pkI pkR dh ltk #j1 #j2 . + InitiatorFinishedLegPairing(idI1, capI1, idR1, capR1, lk, aco) @j1 & + ResponderFinishedSecPairing(idR2, capR2, idI2, capI2, pkR, pkI, dh, ltk) @j2 ==> + not (Ex #k1 #k2 . + K(lk) @k1 & K(ltk) @k2 + ) + ) +" + +#endif + +/**********************************************/ +/* End lemmas about LegPINio-SecPEio exchange */ +/**********************************************/ + +/****************************************/ +/* Lemmas about LegPINio-SecNC exchange */ +/****************************************/ + +#ifdef LegPINioSecNC +lemma legPINio_secNC_functional: exists-trace +" + Ex #i1 #i2 . + InitWillDoLegPINio()[+] @i1 & RespWillDoSecNC()[+] @i2 & + (Ex idI1 idR1 capI1 capR1 idI2 idR2 capI2 capR2 lk aco pkI pkR dh ltk #j1 #j2 . + InitiatorFinishedLegPairing(idI1, capI1, idR1, capR1, lk, aco) @j1 & + ResponderFinishedSecPairing(idR2, capR2, idI2, capI2, pkR, pkI, dh, ltk) @j2 + ) +" + +lemma legPINio_secNC_auth_init: +" + All idI idR capI capR lk aco #i1 #i2 #j . + InitWillDoLegPINio()[+] @i1 & RespWillDoSecNC()[+] @i2 & + InitiatorFinishedLegPairing(idI, capI, idR, capR, lk, aco) @j ==> + (Ex pkI pkR dh nsi nsr ri rr ei er #k . + RespDoneDHKeyCheck(idR, capR, idI, capI, pkR, pkI, dh, nsr, nsi, rr, ri, er, ei) @k + ) +" + +lemma legPINio_secNC_auth_resp: +" + All idI idR capI capR pkI pkR dh ltk #i1 #i2 #j . + InitWillDoLegPINio()[+] @i1 & RespWillDoSecNC()[+] @i2 & + ResponderFinishedSecPairing(idR, capR, idI, capI, pkI, pkR, dh, ltk) @j ==> + (Ex lk aco #k . + InitiatorFinishedLegPairing(idI, capI, idR, capR, lk, aco) @k + ) +" + +lemma legPINio_secNC_weaksecret_init: +" + All idI idR capI capR lk aco #i1 #i2 #j. + InitWillDoLegPINio()[+] @i1 & RespWillDoSecNC()[+] @i2 & + InitiatorFinishedLegPairing(idI, capI, idR, capR, lk, aco) @j ==> + not (Ex #k . K(lk) @k ) +" + +lemma legPINio_secNC_weaksecret_resp: +" + All idI idR capI capR pkI pkR dh ltk #i1 #i2 #j. + InitWillDoLegPINio()[+] @i1 & RespWillDoSecNC()[+] @i2 & + ResponderFinishedSecPairing(idR, capR, idI, capI, pkI, pkR, dh, ltk) @j ==> + not (Ex #k . K(ltk) @k ) +" + +lemma legPINio_secNC_double_impersonation: +" + All #i1 #i2 . + InitWillDoLegPINio()[+] @i1 & RespWillDoSecNC()[+] @i2 ==> + (All idI1 idR1 capI1 capR1 idI2 idR2 capI2 capR2 lk aco pkI pkR dh ltk #j1 #j2 . + InitiatorFinishedLegPairing(idI1, capI1, idR1, capR1, lk, aco) @j1 & + ResponderFinishedSecPairing(idR2, capR2, idI2, capI2, pkR, pkI, dh, ltk) @j2 ==> + not (Ex #k1 #k2 . + K(lk) @k1 & K(ltk) @k2 + ) + ) +" + +#endif + +/********************************************/ +/* End lemmas about LegPINio-SecNC exchange */ +/********************************************/ + +/******************************************/ +/* Lemmas about LegPINio-SecOOBi exchange */ +/******************************************/ + +#ifdef LegPINioSecOOBi +lemma legPINio_secOOBi_functional: exists-trace +" + Ex #i1 #i2 . + InitWillDoLegPINio()[+] @i1 & RespWillDoSecOOBi()[+] @i2 & + (Ex idI1 idR1 capI1 capR1 idI2 idR2 capI2 capR2 lk aco pkI pkR dh ltk #j1 #j2 . + InitiatorFinishedLegPairing(idI1, capI1, idR1, capR1, lk, aco) @j1 & + ResponderFinishedSecPairing(idR2, capR2, idI2, capI2, pkR, pkI, dh, ltk) @j2 + ) +" + +lemma legPINio_secOOBi_auth_init: +" + All idI idR capI capR lk aco #i1 #i2 #j . + InitWillDoLegPINio()[+] @i1 & RespWillDoSecOOBi()[+] @i2 & + InitiatorFinishedLegPairing(idI, capI, idR, capR, lk, aco) @j ==> + (Ex pkI pkR dh nsi nsr ri rr ei er #k . + RespDoneDHKeyCheck(idR, capR, idI, capI, pkR, pkI, dh, nsr, nsi, rr, ri, er, ei) @k + ) +" + +lemma legPINio_secOOBi_auth_resp: +" + All idI idR capI capR pkI pkR dh ltk #i1 #i2 #j . + InitWillDoLegPINio()[+] @i1 & RespWillDoSecOOBi()[+] @i2 & + ResponderFinishedSecPairing(idR, capR, idI, capI, pkI, pkR, dh, ltk) @j ==> + (Ex lk aco #k . + InitiatorFinishedLegPairing(idI, capI, idR, capR, lk, aco) @k + ) +" + +lemma legPINio_secOOBi_weaksecret_init: +" + All idI idR capI capR lk aco #i1 #i2 #j. + InitWillDoLegPINio()[+] @i1 & RespWillDoSecOOBi()[+] @i2 & + InitiatorFinishedLegPairing(idI, capI, idR, capR, lk, aco) @j ==> + not (Ex #k . K(lk) @k ) +" + +lemma legPINio_secOOBi_weaksecret_resp: +" + All idI idR capI capR pkI pkR dh ltk #i1 #i2 #j. + InitWillDoLegPINio()[+] @i1 & RespWillDoSecOOBi()[+] @i2 & + ResponderFinishedSecPairing(idR, capR, idI, capI, pkI, pkR, dh, ltk) @j ==> + not (Ex #k . K(ltk) @k ) +" + +lemma legPINio_secOOBi_double_impersonation: +" + All #i1 #i2 . + InitWillDoLegPINio()[+] @i1 & RespWillDoSecOOBi()[+] @i2 ==> + (All idI1 idR1 capI1 capR1 idI2 idR2 capI2 capR2 lk aco pkI pkR dh ltk #j1 #j2 . + InitiatorFinishedLegPairing(idI1, capI1, idR1, capR1, lk, aco) @j1 & + ResponderFinishedSecPairing(idR2, capR2, idI2, capI2, pkR, pkI, dh, ltk) @j2 ==> + not (Ex #k1 #k2 . + K(lk) @k1 & K(ltk) @k2 + ) + ) +" + +#endif + +/**********************************************/ +/* End lemmas about LegPINio-SecOOBi exchange */ +/**********************************************/ + +/******************************************/ +/* Lemmas about LegPINio-SecOOBo exchange */ +/******************************************/ + +#ifdef LegPINioSecOOBo +lemma legPINio_secOOBo_functional: exists-trace +" + Ex #i1 #i2 . + InitWillDoLegPINio()[+] @i1 & RespWillDoSecOOBo()[+] @i2 & + (Ex idI1 idR1 capI1 capR1 idI2 idR2 capI2 capR2 lk aco pkI pkR dh ltk #j1 #j2 . + InitiatorFinishedLegPairing(idI1, capI1, idR1, capR1, lk, aco) @j1 & + ResponderFinishedSecPairing(idR2, capR2, idI2, capI2, pkR, pkI, dh, ltk) @j2 + ) +" + +lemma legPINio_secOOBo_auth_init: +" + All idI idR capI capR lk aco #i1 #i2 #j . + InitWillDoLegPINio()[+] @i1 & RespWillDoSecOOBo()[+] @i2 & + InitiatorFinishedLegPairing(idI, capI, idR, capR, lk, aco) @j ==> + (Ex pkI pkR dh nsi nsr ri rr ei er #k . + RespDoneDHKeyCheck(idR, capR, idI, capI, pkR, pkI, dh, nsr, nsi, rr, ri, er, ei) @k + ) +" + +lemma legPINio_secOOBo_auth_resp: +" + All idI idR capI capR pkI pkR dh ltk #i1 #i2 #j . + InitWillDoLegPINio()[+] @i1 & RespWillDoSecOOBo()[+] @i2 & + ResponderFinishedSecPairing(idR, capR, idI, capI, pkI, pkR, dh, ltk) @j ==> + (Ex lk aco #k . + InitiatorFinishedLegPairing(idI, capI, idR, capR, lk, aco) @k + ) +" + +lemma legPINio_secOOBo_weaksecret_init: +" + All idI idR capI capR lk aco #i1 #i2 #j. + InitWillDoLegPINio()[+] @i1 & RespWillDoSecOOBo()[+] @i2 & + InitiatorFinishedLegPairing(idI, capI, idR, capR, lk, aco) @j ==> + not (Ex #k . K(lk) @k ) +" + +lemma legPINio_secOOBo_weaksecret_resp: +" + All idI idR capI capR pkI pkR dh ltk #i1 #i2 #j. + InitWillDoLegPINio()[+] @i1 & RespWillDoSecOOBo()[+] @i2 & + ResponderFinishedSecPairing(idR, capR, idI, capI, pkI, pkR, dh, ltk) @j ==> + not (Ex #k . K(ltk) @k ) +" + +lemma legPINio_secOOBo_double_impersonation: +" + All #i1 #i2 . + InitWillDoLegPINio()[+] @i1 & RespWillDoSecOOBo()[+] @i2 ==> + (All idI1 idR1 capI1 capR1 idI2 idR2 capI2 capR2 lk aco pkI pkR dh ltk #j1 #j2 . + InitiatorFinishedLegPairing(idI1, capI1, idR1, capR1, lk, aco) @j1 & + ResponderFinishedSecPairing(idR2, capR2, idI2, capI2, pkR, pkI, dh, ltk) @j2 ==> + not (Ex #k1 #k2 . + K(lk) @k1 & K(ltk) @k2 + ) + ) +" + +#endif + +/**********************************************/ +/* End lemmas about LegPINio-SecOOBo exchange */ +/**********************************************/ + +/*******************************************/ +/* Lemmas about LegPINio-SecOOBio exchange */ +/*******************************************/ + +#ifdef LegPINioSecOOBio +lemma legPINio_secOOBio_functional: exists-trace +" + Ex #i1 #i2 . + InitWillDoLegPINio()[+] @i1 & RespWillDoSecOOBio()[+] @i2 & + (Ex idI1 idR1 capI1 capR1 idI2 idR2 capI2 capR2 lk aco pkI pkR dh ltk #j1 #j2 . + InitiatorFinishedLegPairing(idI1, capI1, idR1, capR1, lk, aco) @j1 & + ResponderFinishedSecPairing(idR2, capR2, idI2, capI2, pkR, pkI, dh, ltk) @j2 + ) +" + +lemma legPINio_secOOBio_auth_init: +" + All idI idR capI capR lk aco #i1 #i2 #j . + InitWillDoLegPINio()[+] @i1 & RespWillDoSecOOBio()[+] @i2 & + InitiatorFinishedLegPairing(idI, capI, idR, capR, lk, aco) @j ==> + (Ex pkI pkR dh nsi nsr ri rr ei er #k . + RespDoneDHKeyCheck(idR, capR, idI, capI, pkR, pkI, dh, nsr, nsi, rr, ri, er, ei) @k + ) +" + +lemma legPINio_secOOBio_auth_resp: +" + All idI idR capI capR pkI pkR dh ltk #i1 #i2 #j . + InitWillDoLegPINio()[+] @i1 & RespWillDoSecOOBio()[+] @i2 & + ResponderFinishedSecPairing(idR, capR, idI, capI, pkI, pkR, dh, ltk) @j ==> + (Ex lk aco #k . + InitiatorFinishedLegPairing(idI, capI, idR, capR, lk, aco) @k + ) +" + +lemma legPINio_secOOBio_weaksecret_init: +" + All idI idR capI capR lk aco #i1 #i2 #j. + InitWillDoLegPINio()[+] @i1 & RespWillDoSecOOBio()[+] @i2 & + InitiatorFinishedLegPairing(idI, capI, idR, capR, lk, aco) @j ==> + not (Ex #k . K(lk) @k ) +" + +lemma legPINio_secOOBio_weaksecret_resp: +" + All idI idR capI capR pkI pkR dh ltk #i1 #i2 #j. + InitWillDoLegPINio()[+] @i1 & RespWillDoSecOOBio()[+] @i2 & + ResponderFinishedSecPairing(idR, capR, idI, capI, pkI, pkR, dh, ltk) @j ==> + not (Ex #k . K(ltk) @k ) +" + +lemma legPINio_secOOBio_double_impersonation: +" + All #i1 #i2 . + InitWillDoLegPINio()[+] @i1 & RespWillDoSecOOBio()[+] @i2 ==> + (All idI1 idR1 capI1 capR1 idI2 idR2 capI2 capR2 lk aco pkI pkR dh ltk #j1 #j2 . + InitiatorFinishedLegPairing(idI1, capI1, idR1, capR1, lk, aco) @j1 & + ResponderFinishedSecPairing(idR2, capR2, idI2, capI2, pkR, pkI, dh, ltk) @j2 ==> + not (Ex #k1 #k2 . + K(lk) @k1 & K(ltk) @k2 + ) + ) +" + +#endif + +/***********************************************/ +/* End lemmas about LegPINio-SecOOBio exchange */ +/***********************************************/ + +/***************************************/ +/* Lemmas about SecJW-LegPINi exchange */ +/***************************************/ + +#ifdef SecJWLegPINi +lemma secJW_legPINi_functional: exists-trace +" + Ex #i1 #i2 . + InitWillDoSecJW()[+] @i1 & RespWillDoLegPINi()[+] @i2 & + (Ex idI1 idR1 capI1 capR1 idI2 idR2 capI2 capR2 lk aco pkI pkR dh ltk #j1 #j2 . + InitiatorFinishedSecPairing(idI1, capI1, idR1, capR1, pkI, pkR, dh, ltk) @j1 & + ResponderFinishedLegPairing(idR2, capR2, idI2, capI2, lk, aco) @j2 + ) +" + +lemma secJW_legPINi_auth_init: +" + All idI idR capI capR pkI pkR dh ltk #i1 #i2 #j . + InitWillDoSecJW()[+] @i1 & RespWillDoLegPINi()[+] @i2 & + InitiatorFinishedSecPairing(idI, capI, idR, capR, pkI, pkR, dh, ltk) @j ==> + (Ex capI2 capR2 lk aco #k. + ResponderFinishedLegPairing(idR, capR2, idI, capI2, lk, aco) @k + ) +" + +lemma secJW_legPINi_auth_resp: +" + All idI idR capI1 capR1 lk aco #i1 #i2 #j. + InitWillDoSecJW()[+] @i1 & RespWillDoLegPINi()[+] @i2 & + ResponderFinishedLegPairing(idR, capR1, idI, capI1, lk, aco) @j ==> + (Ex capI2 capR2 pkI pkR dh nsi nsr ri rr ei #k . + InitDHKeyCheck(idI, capI2, idR, capR2, pkI, pkR, dh, nsi, nsr, ri, rr, ei) @k + ) +" + +lemma secJW_legPINi_weaksecret_init: +" + All idI idR capI capR pkI pkR dh ltk #i1 #i2 #j . + InitWillDoSecJW()[+] @i1 & RespWillDoLegPINi()[+] @i2 & + InitiatorFinishedSecPairing(idI, capI, idR, capR, pkI, pkR, dh, ltk) @j ==> + not (Ex #k. K(ltk) @k ) +" + +lemma secJW_legPINi_weaksecret_resp: +" + All idI idR capI capR lk aco #i1 #i2 #j . + InitWillDoSecJW()[+] @i1 & RespWillDoLegPINi()[+] @i2 & + ResponderFinishedLegPairing(idR, capR, idI, capI, lk, aco) @j ==> + not (Ex #k. K(lk) @k ) +" + +lemma secJW_legPINi_double_impersonation: +" + All #i1 #i2 . + InitWillDoSecJW()[+] @i1 & RespWillDoLegPINi()[+] @i2 ==> + (All idI1 idR1 capI1 capR1 idI2 idR2 capI2 capR2 lk aco pkI pkR dh ltk #j1 #j2 . + InitiatorFinishedSecPairing(idI1, capI1, idR1, capR1, pkI, pkR, dh, ltk) @j1 & + ResponderFinishedLegPairing(idR2, capR2, idI2, capI2, lk, aco) @j2 ==> + not (Ex #k1 #k2 . + K(ltk) @k1 & K(lk) @k2 + ) + ) +" + +#endif + +/*******************************************/ +/* End lemmas about SecJW-LegPINi exchange */ +/*******************************************/ + +/***************************************/ +/* Lemmas about SecJW-LegPINo exchange */ +/***************************************/ + +#ifdef SecJWLegPINo +lemma secJW_legPINo_functional: exists-trace +" + Ex #i1 #i2 . + InitWillDoSecJW()[+] @i1 & RespWillDoLegPINo()[+] @i2 & + (Ex idI1 idR1 capI1 capR1 idI2 idR2 capI2 capR2 lk aco pkI pkR dh ltk #j1 #j2 . + InitiatorFinishedSecPairing(idI1, capI1, idR1, capR1, pkI, pkR, dh, ltk) @j1 & + ResponderFinishedLegPairing(idR2, capR2, idI2, capI2, lk, aco) @j2 + ) +" + +lemma secJW_legPINo_auth_init: +" + All idI idR capI capR pkI pkR dh ltk #i1 #i2 #j . + InitWillDoSecJW()[+] @i1 & RespWillDoLegPINo()[+] @i2 & + InitiatorFinishedSecPairing(idI, capI, idR, capR, pkI, pkR, dh, ltk) @j ==> + (Ex capI2 capR2 lk aco #k. + ResponderFinishedLegPairing(idR, capR2, idI, capI2, lk, aco) @k + ) +" + +lemma secJW_legPINo_auth_resp: +" + All idI idR capI1 capR1 lk aco #i1 #i2 #j. + InitWillDoSecJW()[+] @i1 & RespWillDoLegPINo()[+] @i2 & + ResponderFinishedLegPairing(idR, capR1, idI, capI1, lk, aco) @j ==> + (Ex capI2 capR2 pkI pkR dh nsi nsr ri rr ei #k . + InitDHKeyCheck(idI, capI2, idR, capR2, pkI, pkR, dh, nsi, nsr, ri, rr, ei) @k + ) +" + +lemma secJW_legPINo_weaksecret_init: +" + All idI idR capI capR pkI pkR dh ltk #i1 #i2 #j . + InitWillDoSecJW()[+] @i1 & RespWillDoLegPINo()[+] @i2 & + InitiatorFinishedSecPairing(idI, capI, idR, capR, pkI, pkR, dh, ltk) @j ==> + not (Ex #k. K(ltk) @k ) +" + +lemma secJW_legPINo_weaksecret_resp: +" + All idI idR capI capR lk aco #i1 #i2 #j . + InitWillDoSecJW()[+] @i1 & RespWillDoLegPINo()[+] @i2 & + ResponderFinishedLegPairing(idR, capR, idI, capI, lk, aco) @j ==> + not (Ex #k. K(lk) @k ) +" + +lemma secJW_legPINo_double_impersonation: +" + All #i1 #i2 . + InitWillDoSecJW()[+] @i1 & RespWillDoLegPINo()[+] @i2 ==> + (All idI1 idR1 capI1 capR1 idI2 idR2 capI2 capR2 lk aco pkI pkR dh ltk #j1 #j2 . + InitiatorFinishedSecPairing(idI1, capI1, idR1, capR1, pkI, pkR, dh, ltk) @j1 & + ResponderFinishedLegPairing(idR2, capR2, idI2, capI2, lk, aco) @j2 ==> + not (Ex #k1 #k2 . + K(ltk) @k1 & K(lk) @k2 + ) + ) +" + +#endif + +/*******************************************/ +/* End lemmas about SecJW-LegPINo exchange */ +/*******************************************/ + +/****************************************/ +/* Lemmas about SecJW-LegPINio exchange */ +/****************************************/ + +#ifdef SecJWLegPINio +lemma secJW_legPINio_functional: exists-trace +" + Ex #i1 #i2 . + InitWillDoSecJW()[+] @i1 & RespWillDoLegPINio()[+] @i2 & + (Ex idI1 idR1 capI1 capR1 idI2 idR2 capI2 capR2 lk aco pkI pkR dh ltk #j1 #j2 . + InitiatorFinishedSecPairing(idI1, capI1, idR1, capR1, pkI, pkR, dh, ltk) @j1 & + ResponderFinishedLegPairing(idR2, capR2, idI2, capI2, lk, aco) @j2 + ) +" + +lemma secJW_legPINio_auth_init: +" + All idI idR capI capR pkI pkR dh ltk #i1 #i2 #j . + InitWillDoSecJW()[+] @i1 & RespWillDoLegPINio()[+] @i2 & + InitiatorFinishedSecPairing(idI, capI, idR, capR, pkI, pkR, dh, ltk) @j ==> + (Ex capI2 capR2 lk aco #k. + ResponderFinishedLegPairing(idR, capR2, idI, capI2, lk, aco) @k + ) +" + +lemma secJW_legPINio_auth_resp: +" + All idI idR capI1 capR1 lk aco #i1 #i2 #j. + InitWillDoSecJW()[+] @i1 & RespWillDoLegPINio()[+] @i2 & + ResponderFinishedLegPairing(idR, capR1, idI, capI1, lk, aco) @j ==> + (Ex capI2 capR2 pkI pkR dh nsi nsr ri rr ei #k . + InitDHKeyCheck(idI, capI2, idR, capR2, pkI, pkR, dh, nsi, nsr, ri, rr, ei) @k + ) +" + +lemma secJW_legPINio_weaksecret_init: +" + All idI idR capI capR pkI pkR dh ltk #i1 #i2 #j . + InitWillDoSecJW()[+] @i1 & RespWillDoLegPINio()[+] @i2 & + InitiatorFinishedSecPairing(idI, capI, idR, capR, pkI, pkR, dh, ltk) @j ==> + not (Ex #k. K(ltk) @k ) +" + +lemma secJW_legPINio_weaksecret_resp: +" + All idI idR capI capR lk aco #i1 #i2 #j . + InitWillDoSecJW()[+] @i1 & RespWillDoLegPINio()[+] @i2 & + ResponderFinishedLegPairing(idR, capR, idI, capI, lk, aco) @j ==> + not (Ex #k. K(lk) @k ) +" + +lemma secJW_legPINio_double_impersonation: +" + All #i1 #i2 . + InitWillDoSecJW()[+] @i1 & RespWillDoLegPINio()[+] @i2 ==> + (All idI1 idR1 capI1 capR1 idI2 idR2 capI2 capR2 lk aco pkI pkR dh ltk #j1 #j2 . + InitiatorFinishedSecPairing(idI1, capI1, idR1, capR1, pkI, pkR, dh, ltk) @j1 & + ResponderFinishedLegPairing(idR2, capR2, idI2, capI2, lk, aco) @j2 ==> + not (Ex #k1 #k2 . + K(ltk) @k1 & K(lk) @k2 + ) + ) +" + +#endif + +/********************************************/ +/* End lemmas about SecJW-LegPINio exchange */ +/********************************************/ + +/****************************************/ +/* Lemmas about SecPEi-LegPINi exchange */ +/****************************************/ + +#ifdef SecPEiLegPINi +lemma secPEi_legPINi_functional: exists-trace +" + Ex #i1 #i2 . + InitWillDoSecPEi()[+] @i1 & RespWillDoLegPINi()[+] @i2 & + (Ex idI1 idR1 capI1 capR1 idI2 idR2 capI2 capR2 lk aco pkI pkR dh ltk #j1 #j2 . + InitiatorFinishedSecPairing(idI1, capI1, idR1, capR1, pkI, pkR, dh, ltk) @j1 & + ResponderFinishedLegPairing(idR2, capR2, idI2, capI2, lk, aco) @j2 + ) +" + +lemma secPEi_legPINi_auth_init: +" + All idI idR capI capR pkI pkR dh ltk #i1 #i2 #j . + InitWillDoSecPEi()[+] @i1 & RespWillDoLegPINi()[+] @i2 & + InitiatorFinishedSecPairing(idI, capI, idR, capR, pkI, pkR, dh, ltk) @j ==> + (Ex capI2 capR2 lk aco #k. + ResponderFinishedLegPairing(idR, capR2, idI, capI2, lk, aco) @k + ) +" + +lemma secPEi_legPINi_auth_resp: +" + All idI idR capI1 capR1 lk aco #i1 #i2 #j. + InitWillDoSecPEi()[+] @i1 & RespWillDoLegPINi()[+] @i2 & + ResponderFinishedLegPairing(idR, capR1, idI, capI1, lk, aco) @j ==> + (Ex capI2 capR2 pkI pkR dh nsi nsr ri rr ei #k . + InitDHKeyCheck(idI, capI2, idR, capR2, pkI, pkR, dh, nsi, nsr, ri, rr, ei) @k + ) +" + +lemma secPEi_legPINi_weaksecret_init: +" + All idI idR capI capR pkI pkR dh ltk #i1 #i2 #j . + InitWillDoSecPEi()[+] @i1 & RespWillDoLegPINi()[+] @i2 & + InitiatorFinishedSecPairing(idI, capI, idR, capR, pkI, pkR, dh, ltk) @j ==> + not (Ex #k. K(ltk) @k ) +" + +lemma secPEi_legPINi_weaksecret_resp: +" + All idI idR capI capR lk aco #i1 #i2 #j . + InitWillDoSecPEi()[+] @i1 & RespWillDoLegPINi()[+] @i2 & + ResponderFinishedLegPairing(idR, capR, idI, capI, lk, aco) @j ==> + not (Ex #k. K(lk) @k ) +" + +lemma secPEi_legPINi_double_impersonation: +" + All #i1 #i2 . + InitWillDoSecPEi()[+] @i1 & RespWillDoLegPINi()[+] @i2 ==> + (All idI1 idR1 capI1 capR1 idI2 idR2 capI2 capR2 lk aco pkI pkR dh ltk #j1 #j2 . + InitiatorFinishedSecPairing(idI1, capI1, idR1, capR1, pkI, pkR, dh, ltk) @j1 & + ResponderFinishedLegPairing(idR2, capR2, idI2, capI2, lk, aco) @j2 ==> + not (Ex #k1 #k2 . + K(ltk) @k1 & K(lk) @k2 + ) + ) +" + +#endif + +/********************************************/ +/* End lemmas about SecPEi-LegPINi exchange */ +/********************************************/ + +/****************************************/ +/* Lemmas about SecPEi-LegPINo exchange */ +/****************************************/ + +#ifdef SecPEiLegPINo +lemma secPEi_legPINo_functional: exists-trace +" + Ex #i1 #i2 . + InitWillDoSecPEi()[+] @i1 & RespWillDoLegPINo()[+] @i2 & + (Ex idI1 idR1 capI1 capR1 idI2 idR2 capI2 capR2 lk aco pkI pkR dh ltk #j1 #j2 . + InitiatorFinishedSecPairing(idI1, capI1, idR1, capR1, pkI, pkR, dh, ltk) @j1 & + ResponderFinishedLegPairing(idR2, capR2, idI2, capI2, lk, aco) @j2 + ) +" + +lemma secPEi_legPINo_auth_init: +" + All idI idR capI capR pkI pkR dh ltk #i1 #i2 #j . + InitWillDoSecPEi()[+] @i1 & RespWillDoLegPINo()[+] @i2 & + InitiatorFinishedSecPairing(idI, capI, idR, capR, pkI, pkR, dh, ltk) @j ==> + (Ex capI2 capR2 lk aco #k. + ResponderFinishedLegPairing(idR, capR2, idI, capI2, lk, aco) @k + ) +" + +lemma secPEi_legPINo_auth_resp: +" + All idI idR capI1 capR1 lk aco #i1 #i2 #j. + InitWillDoSecPEi()[+] @i1 & RespWillDoLegPINo()[+] @i2 & + ResponderFinishedLegPairing(idR, capR1, idI, capI1, lk, aco) @j ==> + (Ex capI2 capR2 pkI pkR dh nsi nsr ri rr ei #k . + InitDHKeyCheck(idI, capI2, idR, capR2, pkI, pkR, dh, nsi, nsr, ri, rr, ei) @k + ) +" + +lemma secPEi_legPINo_weaksecret_init: +" + All idI idR capI capR pkI pkR dh ltk #i1 #i2 #j . + InitWillDoSecPEi()[+] @i1 & RespWillDoLegPINo()[+] @i2 & + InitiatorFinishedSecPairing(idI, capI, idR, capR, pkI, pkR, dh, ltk) @j ==> + not (Ex #k. K(ltk) @k ) +" + +lemma secPEi_legPINo_weaksecret_resp: +" + All idI idR capI capR lk aco #i1 #i2 #j . + InitWillDoSecPEi()[+] @i1 & RespWillDoLegPINo()[+] @i2 & + ResponderFinishedLegPairing(idR, capR, idI, capI, lk, aco) @j ==> + not (Ex #k. K(lk) @k ) +" + +lemma secPEi_legPINo_double_impersonation: +" + All #i1 #i2 . + InitWillDoSecPEi()[+] @i1 & RespWillDoLegPINo()[+] @i2 ==> + (All idI1 idR1 capI1 capR1 idI2 idR2 capI2 capR2 lk aco pkI pkR dh ltk #j1 #j2 . + InitiatorFinishedSecPairing(idI1, capI1, idR1, capR1, pkI, pkR, dh, ltk) @j1 & + ResponderFinishedLegPairing(idR2, capR2, idI2, capI2, lk, aco) @j2 ==> + not (Ex #k1 #k2 . + K(ltk) @k1 & K(lk) @k2 + ) + ) +" + +#endif + +/********************************************/ +/* End lemmas about SecPEi-LegPINo exchange */ +/********************************************/ + +/*****************************************/ +/* Lemmas about SecPEi-LegPINio exchange */ +/*****************************************/ + +#ifdef SecPEiLegPINio +lemma secPEi_legPINio_functional: exists-trace +" + Ex #i1 #i2 . + InitWillDoSecPEi()[+] @i1 & RespWillDoLegPINio()[+] @i2 & + (Ex idI1 idR1 capI1 capR1 idI2 idR2 capI2 capR2 lk aco pkI pkR dh ltk #j1 #j2 . + InitiatorFinishedSecPairing(idI1, capI1, idR1, capR1, pkI, pkR, dh, ltk) @j1 & + ResponderFinishedLegPairing(idR2, capR2, idI2, capI2, lk, aco) @j2 + ) +" + +lemma secPEi_legPINio_auth_init: +" + All idI idR capI capR pkI pkR dh ltk #i1 #i2 #j . + InitWillDoSecPEi()[+] @i1 & RespWillDoLegPINio()[+] @i2 & + InitiatorFinishedSecPairing(idI, capI, idR, capR, pkI, pkR, dh, ltk) @j ==> + (Ex capI2 capR2 lk aco #k. + ResponderFinishedLegPairing(idR, capR2, idI, capI2, lk, aco) @k + ) +" + +lemma secPEi_legPINio_auth_resp: +" + All idI idR capI1 capR1 lk aco #i1 #i2 #j. + InitWillDoSecPEi()[+] @i1 & RespWillDoLegPINio()[+] @i2 & + ResponderFinishedLegPairing(idR, capR1, idI, capI1, lk, aco) @j ==> + (Ex capI2 capR2 pkI pkR dh nsi nsr ri rr ei #k . + InitDHKeyCheck(idI, capI2, idR, capR2, pkI, pkR, dh, nsi, nsr, ri, rr, ei) @k + ) +" + +lemma secPEi_legPINio_weaksecret_init: +" + All idI idR capI capR pkI pkR dh ltk #i1 #i2 #j . + InitWillDoSecPEi()[+] @i1 & RespWillDoLegPINio()[+] @i2 & + InitiatorFinishedSecPairing(idI, capI, idR, capR, pkI, pkR, dh, ltk) @j ==> + not (Ex #k. K(ltk) @k ) +" + +lemma secPEi_legPINio_weaksecret_resp: +" + All idI idR capI capR lk aco #i1 #i2 #j . + InitWillDoSecPEi()[+] @i1 & RespWillDoLegPINio()[+] @i2 & + ResponderFinishedLegPairing(idR, capR, idI, capI, lk, aco) @j ==> + not (Ex #k. K(lk) @k ) +" + +lemma secPEi_legPINio_double_impersonation: +" + All #i1 #i2 . + InitWillDoSecPEi()[+] @i1 & RespWillDoLegPINio()[+] @i2 ==> + (All idI1 idR1 capI1 capR1 idI2 idR2 capI2 capR2 lk aco pkI pkR dh ltk #j1 #j2 . + InitiatorFinishedSecPairing(idI1, capI1, idR1, capR1, pkI, pkR, dh, ltk) @j1 & + ResponderFinishedLegPairing(idR2, capR2, idI2, capI2, lk, aco) @j2 ==> + not (Ex #k1 #k2 . + K(ltk) @k1 & K(lk) @k2 + ) + ) +" + +#endif + +/*********************************************/ +/* End lemmas about SecPEi-LegPINio exchange */ +/*********************************************/ + +/****************************************/ +/* Lemmas about SecPEo-LegPINi exchange */ +/****************************************/ + +#ifdef SecPEoLegPINi +lemma secPEo_legPINi_functional: exists-trace +" + Ex #i1 #i2 . + InitWillDoSecPEo()[+] @i1 & RespWillDoLegPINi()[+] @i2 & + (Ex idI1 idR1 capI1 capR1 idI2 idR2 capI2 capR2 lk aco pkI pkR dh ltk #j1 #j2 . + InitiatorFinishedSecPairing(idI1, capI1, idR1, capR1, pkI, pkR, dh, ltk) @j1 & + ResponderFinishedLegPairing(idR2, capR2, idI2, capI2, lk, aco) @j2 + ) +" + +lemma secPEo_legPINi_auth_init: +" + All idI idR capI capR pkI pkR dh ltk #i1 #i2 #j . + InitWillDoSecPEo()[+] @i1 & RespWillDoLegPINi()[+] @i2 & + InitiatorFinishedSecPairing(idI, capI, idR, capR, pkI, pkR, dh, ltk) @j ==> + (Ex capI2 capR2 lk aco #k. + ResponderFinishedLegPairing(idR, capR2, idI, capI2, lk, aco) @k + ) +" + +lemma secPEo_legPINi_auth_resp: +" + All idI idR capI1 capR1 lk aco #i1 #i2 #j. + InitWillDoSecPEo()[+] @i1 & RespWillDoLegPINi()[+] @i2 & + ResponderFinishedLegPairing(idR, capR1, idI, capI1, lk, aco) @j ==> + (Ex capI2 capR2 pkI pkR dh nsi nsr ri rr ei #k . + InitDHKeyCheck(idI, capI2, idR, capR2, pkI, pkR, dh, nsi, nsr, ri, rr, ei) @k + ) +" + +lemma secPEo_legPINi_weaksecret_init: +" + All idI idR capI capR pkI pkR dh ltk #i1 #i2 #j . + InitWillDoSecPEo()[+] @i1 & RespWillDoLegPINi()[+] @i2 & + InitiatorFinishedSecPairing(idI, capI, idR, capR, pkI, pkR, dh, ltk) @j ==> + not (Ex #k. K(ltk) @k ) +" + +lemma secPEo_legPINi_weaksecret_resp: +" + All idI idR capI capR lk aco #i1 #i2 #j . + InitWillDoSecPEo()[+] @i1 & RespWillDoLegPINi()[+] @i2 & + ResponderFinishedLegPairing(idR, capR, idI, capI, lk, aco) @j ==> + not (Ex #k. K(lk) @k ) +" + +lemma secPEo_legPINi_double_impersonation: +" + All #i1 #i2 . + InitWillDoSecPEo()[+] @i1 & RespWillDoLegPINi()[+] @i2 ==> + (All idI1 idR1 capI1 capR1 idI2 idR2 capI2 capR2 lk aco pkI pkR dh ltk #j1 #j2 . + InitiatorFinishedSecPairing(idI1, capI1, idR1, capR1, pkI, pkR, dh, ltk) @j1 & + ResponderFinishedLegPairing(idR2, capR2, idI2, capI2, lk, aco) @j2 ==> + not (Ex #k1 #k2 . + K(ltk) @k1 & K(lk) @k2 + ) + ) +" + +#endif + +/********************************************/ +/* End lemmas about SecPEo-LegPINi exchange */ +/********************************************/ + +/****************************************/ +/* Lemmas about SecPEo-LegPINo exchange */ +/****************************************/ + +#ifdef SecPEoLegPINo +lemma secPEo_legPINo_functional: exists-trace +" + Ex #i1 #i2 . + InitWillDoSecPEo()[+] @i1 & RespWillDoLegPINo()[+] @i2 & + (Ex idI1 idR1 capI1 capR1 idI2 idR2 capI2 capR2 lk aco pkI pkR dh ltk #j1 #j2 . + InitiatorFinishedSecPairing(idI1, capI1, idR1, capR1, pkI, pkR, dh, ltk) @j1 & + ResponderFinishedLegPairing(idR2, capR2, idI2, capI2, lk, aco) @j2 + ) +" + +lemma secPEo_legPINo_auth_init: +" + All idI idR capI capR pkI pkR dh ltk #i1 #i2 #j . + InitWillDoSecPEo()[+] @i1 & RespWillDoLegPINo()[+] @i2 & + InitiatorFinishedSecPairing(idI, capI, idR, capR, pkI, pkR, dh, ltk) @j ==> + (Ex capI2 capR2 lk aco #k. + ResponderFinishedLegPairing(idR, capR2, idI, capI2, lk, aco) @k + ) +" + +lemma secPEo_legPINo_auth_resp: +" + All idI idR capI1 capR1 lk aco #i1 #i2 #j. + InitWillDoSecPEo()[+] @i1 & RespWillDoLegPINo()[+] @i2 & + ResponderFinishedLegPairing(idR, capR1, idI, capI1, lk, aco) @j ==> + (Ex capI2 capR2 pkI pkR dh nsi nsr ri rr ei #k . + InitDHKeyCheck(idI, capI2, idR, capR2, pkI, pkR, dh, nsi, nsr, ri, rr, ei) @k + ) +" + +lemma secPEo_legPINo_weaksecret_init: +" + All idI idR capI capR pkI pkR dh ltk #i1 #i2 #j . + InitWillDoSecPEo()[+] @i1 & RespWillDoLegPINo()[+] @i2 & + InitiatorFinishedSecPairing(idI, capI, idR, capR, pkI, pkR, dh, ltk) @j ==> + not (Ex #k. K(ltk) @k ) +" + +lemma secPEo_legPINo_weaksecret_resp: +" + All idI idR capI capR lk aco #i1 #i2 #j . + InitWillDoSecPEo()[+] @i1 & RespWillDoLegPINo()[+] @i2 & + ResponderFinishedLegPairing(idR, capR, idI, capI, lk, aco) @j ==> + not (Ex #k. K(lk) @k ) +" + +lemma secPEo_legPINo_double_impersonation: +" + All #i1 #i2 . + InitWillDoSecPEo()[+] @i1 & RespWillDoLegPINo()[+] @i2 ==> + (All idI1 idR1 capI1 capR1 idI2 idR2 capI2 capR2 lk aco pkI pkR dh ltk #j1 #j2 . + InitiatorFinishedSecPairing(idI1, capI1, idR1, capR1, pkI, pkR, dh, ltk) @j1 & + ResponderFinishedLegPairing(idR2, capR2, idI2, capI2, lk, aco) @j2 ==> + not (Ex #k1 #k2 . + K(ltk) @k1 & K(lk) @k2 + ) + ) +" + +#endif + +/********************************************/ +/* End lemmas about SecPEo-LegPINo exchange */ +/********************************************/ + +/*****************************************/ +/* Lemmas about SecPEo-LegPINio exchange */ +/*****************************************/ + +#ifdef SecPEoLegPINio +lemma secPEo_legPINio_functional: exists-trace +" + Ex #i1 #i2 . + InitWillDoSecPEo()[+] @i1 & RespWillDoLegPINio()[+] @i2 & + (Ex idI1 idR1 capI1 capR1 idI2 idR2 capI2 capR2 lk aco pkI pkR dh ltk #j1 #j2 . + InitiatorFinishedSecPairing(idI1, capI1, idR1, capR1, pkI, pkR, dh, ltk) @j1 & + ResponderFinishedLegPairing(idR2, capR2, idI2, capI2, lk, aco) @j2 + ) +" + +lemma secPEo_legPINio_auth_init: +" + All idI idR capI capR pkI pkR dh ltk #i1 #i2 #j . + InitWillDoSecPEo()[+] @i1 & RespWillDoLegPINio()[+] @i2 & + InitiatorFinishedSecPairing(idI, capI, idR, capR, pkI, pkR, dh, ltk) @j ==> + (Ex capI2 capR2 lk aco #k. + ResponderFinishedLegPairing(idR, capR2, idI, capI2, lk, aco) @k + ) +" + +lemma secPEo_legPINio_auth_resp: +" + All idI idR capI1 capR1 lk aco #i1 #i2 #j. + InitWillDoSecPEo()[+] @i1 & RespWillDoLegPINio()[+] @i2 & + ResponderFinishedLegPairing(idR, capR1, idI, capI1, lk, aco) @j ==> + (Ex capI2 capR2 pkI pkR dh nsi nsr ri rr ei #k . + InitDHKeyCheck(idI, capI2, idR, capR2, pkI, pkR, dh, nsi, nsr, ri, rr, ei) @k + ) +" + +lemma secPEo_legPINio_weaksecret_init: +" + All idI idR capI capR pkI pkR dh ltk #i1 #i2 #j . + InitWillDoSecPEo()[+] @i1 & RespWillDoLegPINio()[+] @i2 & + InitiatorFinishedSecPairing(idI, capI, idR, capR, pkI, pkR, dh, ltk) @j ==> + not (Ex #k. K(ltk) @k ) +" + +lemma secPEo_legPINio_weaksecret_resp: +" + All idI idR capI capR lk aco #i1 #i2 #j . + InitWillDoSecPEo()[+] @i1 & RespWillDoLegPINio()[+] @i2 & + ResponderFinishedLegPairing(idR, capR, idI, capI, lk, aco) @j ==> + not (Ex #k. K(lk) @k ) +" + +lemma secPEo_legPINio_double_impersonation: +" + All #i1 #i2 . + InitWillDoSecPEo()[+] @i1 & RespWillDoLegPINio()[+] @i2 ==> + (All idI1 idR1 capI1 capR1 idI2 idR2 capI2 capR2 lk aco pkI pkR dh ltk #j1 #j2 . + InitiatorFinishedSecPairing(idI1, capI1, idR1, capR1, pkI, pkR, dh, ltk) @j1 & + ResponderFinishedLegPairing(idR2, capR2, idI2, capI2, lk, aco) @j2 ==> + not (Ex #k1 #k2 . + K(ltk) @k1 & K(lk) @k2 + ) + ) +" + +#endif + +/*********************************************/ +/* End lemmas about SecPEo-LegPINio exchange */ +/*********************************************/ + +/*****************************************/ +/* Lemmas about SecPEio-LegPINi exchange */ +/*****************************************/ + +#ifdef SecPEioLegPINi +lemma secPEio_legPINi_functional: exists-trace +" + Ex #i1 #i2 . + InitWillDoSecPEio()[+] @i1 & RespWillDoLegPINi()[+] @i2 & + (Ex idI1 idR1 capI1 capR1 idI2 idR2 capI2 capR2 lk aco pkI pkR dh ltk #j1 #j2 . + InitiatorFinishedSecPairing(idI1, capI1, idR1, capR1, pkI, pkR, dh, ltk) @j1 & + ResponderFinishedLegPairing(idR2, capR2, idI2, capI2, lk, aco) @j2 + ) +" + +lemma secPEio_legPINi_auth_init: +" + All idI idR capI capR pkI pkR dh ltk #i1 #i2 #j . + InitWillDoSecPEio()[+] @i1 & RespWillDoLegPINi()[+] @i2 & + InitiatorFinishedSecPairing(idI, capI, idR, capR, pkI, pkR, dh, ltk) @j ==> + (Ex capI2 capR2 lk aco #k. + ResponderFinishedLegPairing(idR, capR2, idI, capI2, lk, aco) @k + ) +" + +lemma secPEio_legPINi_auth_resp: +" + All idI idR capI1 capR1 lk aco #i1 #i2 #j. + InitWillDoSecPEio()[+] @i1 & RespWillDoLegPINi()[+] @i2 & + ResponderFinishedLegPairing(idR, capR1, idI, capI1, lk, aco) @j ==> + (Ex capI2 capR2 pkI pkR dh nsi nsr ri rr ei #k . + InitDHKeyCheck(idI, capI2, idR, capR2, pkI, pkR, dh, nsi, nsr, ri, rr, ei) @k + ) +" + +lemma secPEio_legPINi_weaksecret_init: +" + All idI idR capI capR pkI pkR dh ltk #i1 #i2 #j . + InitWillDoSecPEio()[+] @i1 & RespWillDoLegPINi()[+] @i2 & + InitiatorFinishedSecPairing(idI, capI, idR, capR, pkI, pkR, dh, ltk) @j ==> + not (Ex #k. K(ltk) @k ) +" + +lemma secPEio_legPINi_weaksecret_resp: +" + All idI idR capI capR lk aco #i1 #i2 #j . + InitWillDoSecPEio()[+] @i1 & RespWillDoLegPINi()[+] @i2 & + ResponderFinishedLegPairing(idR, capR, idI, capI, lk, aco) @j ==> + not (Ex #k. K(lk) @k ) +" + +lemma secPEio_legPINi_double_impersonation: +" + All #i1 #i2 . + InitWillDoSecPEio()[+] @i1 & RespWillDoLegPINi()[+] @i2 ==> + (All idI1 idR1 capI1 capR1 idI2 idR2 capI2 capR2 lk aco pkI pkR dh ltk #j1 #j2 . + InitiatorFinishedSecPairing(idI1, capI1, idR1, capR1, pkI, pkR, dh, ltk) @j1 & + ResponderFinishedLegPairing(idR2, capR2, idI2, capI2, lk, aco) @j2 ==> + not (Ex #k1 #k2 . + K(ltk) @k1 & K(lk) @k2 + ) + ) +" + +#endif + +/*********************************************/ +/* End lemmas about SecPEio-LegPINi exchange */ +/*********************************************/ + +/*****************************************/ +/* Lemmas about SecPEio-LegPINo exchange */ +/*****************************************/ + +#ifdef SecPEioLegPINo +lemma secPEio_legPINo_functional: exists-trace +" + Ex #i1 #i2 . + InitWillDoSecPEio()[+] @i1 & RespWillDoLegPINo()[+] @i2 & + (Ex idI1 idR1 capI1 capR1 idI2 idR2 capI2 capR2 lk aco pkI pkR dh ltk #j1 #j2 . + InitiatorFinishedSecPairing(idI1, capI1, idR1, capR1, pkI, pkR, dh, ltk) @j1 & + ResponderFinishedLegPairing(idR2, capR2, idI2, capI2, lk, aco) @j2 + ) +" + +lemma secPEio_legPINo_auth_init: +" + All idI idR capI capR pkI pkR dh ltk #i1 #i2 #j . + InitWillDoSecPEio()[+] @i1 & RespWillDoLegPINo()[+] @i2 & + InitiatorFinishedSecPairing(idI, capI, idR, capR, pkI, pkR, dh, ltk) @j ==> + (Ex capI2 capR2 lk aco #k. + ResponderFinishedLegPairing(idR, capR2, idI, capI2, lk, aco) @k + ) +" + +lemma secPEio_legPINo_auth_resp: +" + All idI idR capI1 capR1 lk aco #i1 #i2 #j. + InitWillDoSecPEio()[+] @i1 & RespWillDoLegPINo()[+] @i2 & + ResponderFinishedLegPairing(idR, capR1, idI, capI1, lk, aco) @j ==> + (Ex capI2 capR2 pkI pkR dh nsi nsr ri rr ei #k . + InitDHKeyCheck(idI, capI2, idR, capR2, pkI, pkR, dh, nsi, nsr, ri, rr, ei) @k + ) +" + +lemma secPEio_legPINo_weaksecret_init: +" + All idI idR capI capR pkI pkR dh ltk #i1 #i2 #j . + InitWillDoSecPEio()[+] @i1 & RespWillDoLegPINo()[+] @i2 & + InitiatorFinishedSecPairing(idI, capI, idR, capR, pkI, pkR, dh, ltk) @j ==> + not (Ex #k. K(ltk) @k ) +" + +lemma secPEio_legPINo_weaksecret_resp: +" + All idI idR capI capR lk aco #i1 #i2 #j . + InitWillDoSecPEio()[+] @i1 & RespWillDoLegPINo()[+] @i2 & + ResponderFinishedLegPairing(idR, capR, idI, capI, lk, aco) @j ==> + not (Ex #k. K(lk) @k ) +" + +lemma secPEio_legPINo_double_impersonation: +" + All #i1 #i2 . + InitWillDoSecPEio()[+] @i1 & RespWillDoLegPINo()[+] @i2 ==> + (All idI1 idR1 capI1 capR1 idI2 idR2 capI2 capR2 lk aco pkI pkR dh ltk #j1 #j2 . + InitiatorFinishedSecPairing(idI1, capI1, idR1, capR1, pkI, pkR, dh, ltk) @j1 & + ResponderFinishedLegPairing(idR2, capR2, idI2, capI2, lk, aco) @j2 ==> + not (Ex #k1 #k2 . + K(ltk) @k1 & K(lk) @k2 + ) + ) +" + +#endif + +/*********************************************/ +/* End lemmas about SecPEio-LegPINo exchange */ +/*********************************************/ + +/******************************************/ +/* Lemmas about SecPEio-LegPINio exchange */ +/******************************************/ + +#ifdef SecPEioLegPINio +lemma secPEio_legPINio_functional: exists-trace +" + Ex #i1 #i2 . + InitWillDoSecPEio()[+] @i1 & RespWillDoLegPINio()[+] @i2 & + (Ex idI1 idR1 capI1 capR1 idI2 idR2 capI2 capR2 lk aco pkI pkR dh ltk #j1 #j2 . + InitiatorFinishedSecPairing(idI1, capI1, idR1, capR1, pkI, pkR, dh, ltk) @j1 & + ResponderFinishedLegPairing(idR2, capR2, idI2, capI2, lk, aco) @j2 + ) +" + +lemma secPEio_legPINio_auth_init: +" + All idI idR capI capR pkI pkR dh ltk #i1 #i2 #j . + InitWillDoSecPEio()[+] @i1 & RespWillDoLegPINio()[+] @i2 & + InitiatorFinishedSecPairing(idI, capI, idR, capR, pkI, pkR, dh, ltk) @j ==> + (Ex capI2 capR2 lk aco #k. + ResponderFinishedLegPairing(idR, capR2, idI, capI2, lk, aco) @k + ) +" + +lemma secPEio_legPINio_auth_resp: +" + All idI idR capI1 capR1 lk aco #i1 #i2 #j. + InitWillDoSecPEio()[+] @i1 & RespWillDoLegPINio()[+] @i2 & + ResponderFinishedLegPairing(idR, capR1, idI, capI1, lk, aco) @j ==> + (Ex capI2 capR2 pkI pkR dh nsi nsr ri rr ei #k . + InitDHKeyCheck(idI, capI2, idR, capR2, pkI, pkR, dh, nsi, nsr, ri, rr, ei) @k + ) +" + +lemma secPEio_legPINio_weaksecret_init: +" + All idI idR capI capR pkI pkR dh ltk #i1 #i2 #j . + InitWillDoSecPEio()[+] @i1 & RespWillDoLegPINio()[+] @i2 & + InitiatorFinishedSecPairing(idI, capI, idR, capR, pkI, pkR, dh, ltk) @j ==> + not (Ex #k. K(ltk) @k ) +" + +lemma secPEio_legPINio_weaksecret_resp: +" + All idI idR capI capR lk aco #i1 #i2 #j . + InitWillDoSecPEio()[+] @i1 & RespWillDoLegPINio()[+] @i2 & + ResponderFinishedLegPairing(idR, capR, idI, capI, lk, aco) @j ==> + not (Ex #k. K(lk) @k ) +" + +lemma secPEio_legPINio_double_impersonation: +" + All #i1 #i2 . + InitWillDoSecPEio()[+] @i1 & RespWillDoLegPINio()[+] @i2 ==> + (All idI1 idR1 capI1 capR1 idI2 idR2 capI2 capR2 lk aco pkI pkR dh ltk #j1 #j2 . + InitiatorFinishedSecPairing(idI1, capI1, idR1, capR1, pkI, pkR, dh, ltk) @j1 & + ResponderFinishedLegPairing(idR2, capR2, idI2, capI2, lk, aco) @j2 ==> + not (Ex #k1 #k2 . + K(ltk) @k1 & K(lk) @k2 + ) + ) +" + +#endif + +/**********************************************/ +/* End lemmas about SecPEio-LegPINio exchange */ +/**********************************************/ + +/***************************************/ +/* Lemmas about SecNC-LegPINi exchange */ +/***************************************/ + +#ifdef SecNCLegPINi +lemma secNC_legPINi_functional: exists-trace +" + Ex #i1 #i2 . + InitWillDoSecNC()[+] @i1 & RespWillDoLegPINi()[+] @i2 & + (Ex idI1 idR1 capI1 capR1 idI2 idR2 capI2 capR2 lk aco pkI pkR dh ltk #j1 #j2 . + InitiatorFinishedSecPairing(idI1, capI1, idR1, capR1, pkI, pkR, dh, ltk) @j1 & + ResponderFinishedLegPairing(idR2, capR2, idI2, capI2, lk, aco) @j2 + ) +" + +lemma secNC_legPINi_auth_init: +" + All idI idR capI capR pkI pkR dh ltk #i1 #i2 #j . + InitWillDoSecNC()[+] @i1 & RespWillDoLegPINi()[+] @i2 & + InitiatorFinishedSecPairing(idI, capI, idR, capR, pkI, pkR, dh, ltk) @j ==> + (Ex capI2 capR2 lk aco #k. + ResponderFinishedLegPairing(idR, capR2, idI, capI2, lk, aco) @k + ) +" + +lemma secNC_legPINi_auth_resp: +" + All idI idR capI1 capR1 lk aco #i1 #i2 #j. + InitWillDoSecNC()[+] @i1 & RespWillDoLegPINi()[+] @i2 & + ResponderFinishedLegPairing(idR, capR1, idI, capI1, lk, aco) @j ==> + (Ex capI2 capR2 pkI pkR dh nsi nsr ri rr ei #k . + InitDHKeyCheck(idI, capI2, idR, capR2, pkI, pkR, dh, nsi, nsr, ri, rr, ei) @k + ) +" + +lemma secNC_legPINi_weaksecret_init: +" + All idI idR capI capR pkI pkR dh ltk #i1 #i2 #j . + InitWillDoSecNC()[+] @i1 & RespWillDoLegPINi()[+] @i2 & + InitiatorFinishedSecPairing(idI, capI, idR, capR, pkI, pkR, dh, ltk) @j ==> + not (Ex #k. K(ltk) @k ) +" + +lemma secNC_legPINi_weaksecret_resp: +" + All idI idR capI capR lk aco #i1 #i2 #j . + InitWillDoSecNC()[+] @i1 & RespWillDoLegPINi()[+] @i2 & + ResponderFinishedLegPairing(idR, capR, idI, capI, lk, aco) @j ==> + not (Ex #k. K(lk) @k ) +" + +lemma secNC_legPINi_double_impersonation: +" + All #i1 #i2 . + InitWillDoSecNC()[+] @i1 & RespWillDoLegPINi()[+] @i2 ==> + (All idI1 idR1 capI1 capR1 idI2 idR2 capI2 capR2 lk aco pkI pkR dh ltk #j1 #j2 . + InitiatorFinishedSecPairing(idI1, capI1, idR1, capR1, pkI, pkR, dh, ltk) @j1 & + ResponderFinishedLegPairing(idR2, capR2, idI2, capI2, lk, aco) @j2 ==> + not (Ex #k1 #k2 . + K(ltk) @k1 & K(lk) @k2 + ) + ) +" + +#endif + +/*******************************************/ +/* End lemmas about SecNC-LegPINi exchange */ +/*******************************************/ + +/***************************************/ +/* Lemmas about SecNC-LegPINo exchange */ +/***************************************/ + +#ifdef SecNCLegPINo +lemma secNC_legPINo_functional: exists-trace +" + Ex #i1 #i2 . + InitWillDoSecNC()[+] @i1 & RespWillDoLegPINo()[+] @i2 & + (Ex idI1 idR1 capI1 capR1 idI2 idR2 capI2 capR2 lk aco pkI pkR dh ltk #j1 #j2 . + InitiatorFinishedSecPairing(idI1, capI1, idR1, capR1, pkI, pkR, dh, ltk) @j1 & + ResponderFinishedLegPairing(idR2, capR2, idI2, capI2, lk, aco) @j2 + ) +" + +lemma secNC_legPINo_auth_init: +" + All idI idR capI capR pkI pkR dh ltk #i1 #i2 #j . + InitWillDoSecNC()[+] @i1 & RespWillDoLegPINo()[+] @i2 & + InitiatorFinishedSecPairing(idI, capI, idR, capR, pkI, pkR, dh, ltk) @j ==> + (Ex capI2 capR2 lk aco #k. + ResponderFinishedLegPairing(idR, capR2, idI, capI2, lk, aco) @k + ) +" + +lemma secNC_legPINo_auth_resp: +" + All idI idR capI1 capR1 lk aco #i1 #i2 #j. + InitWillDoSecNC()[+] @i1 & RespWillDoLegPINo()[+] @i2 & + ResponderFinishedLegPairing(idR, capR1, idI, capI1, lk, aco) @j ==> + (Ex capI2 capR2 pkI pkR dh nsi nsr ri rr ei #k . + InitDHKeyCheck(idI, capI2, idR, capR2, pkI, pkR, dh, nsi, nsr, ri, rr, ei) @k + ) +" + +lemma secNC_legPINo_weaksecret_init: +" + All idI idR capI capR pkI pkR dh ltk #i1 #i2 #j . + InitWillDoSecNC()[+] @i1 & RespWillDoLegPINo()[+] @i2 & + InitiatorFinishedSecPairing(idI, capI, idR, capR, pkI, pkR, dh, ltk) @j ==> + not (Ex #k. K(ltk) @k ) +" + +lemma secNC_legPINo_weaksecret_resp: +" + All idI idR capI capR lk aco #i1 #i2 #j . + InitWillDoSecNC()[+] @i1 & RespWillDoLegPINo()[+] @i2 & + ResponderFinishedLegPairing(idR, capR, idI, capI, lk, aco) @j ==> + not (Ex #k. K(lk) @k ) +" + +lemma secNC_legPINo_double_impersonation: +" + All #i1 #i2 . + InitWillDoSecNC()[+] @i1 & RespWillDoLegPINo()[+] @i2 ==> + (All idI1 idR1 capI1 capR1 idI2 idR2 capI2 capR2 lk aco pkI pkR dh ltk #j1 #j2 . + InitiatorFinishedSecPairing(idI1, capI1, idR1, capR1, pkI, pkR, dh, ltk) @j1 & + ResponderFinishedLegPairing(idR2, capR2, idI2, capI2, lk, aco) @j2 ==> + not (Ex #k1 #k2 . + K(ltk) @k1 & K(lk) @k2 + ) + ) +" + +#endif + +/*******************************************/ +/* End lemmas about SecNC-LegPINo exchange */ +/*******************************************/ + +/****************************************/ +/* Lemmas about SecNC-LegPINio exchange */ +/****************************************/ + +#ifdef SecNCLegPINio +lemma secNC_legPINio_functional: exists-trace +" + Ex #i1 #i2 . + InitWillDoSecNC()[+] @i1 & RespWillDoLegPINio()[+] @i2 & + (Ex idI1 idR1 capI1 capR1 idI2 idR2 capI2 capR2 lk aco pkI pkR dh ltk #j1 #j2 . + InitiatorFinishedSecPairing(idI1, capI1, idR1, capR1, pkI, pkR, dh, ltk) @j1 & + ResponderFinishedLegPairing(idR2, capR2, idI2, capI2, lk, aco) @j2 + ) +" + +lemma secNC_legPINio_auth_init: +" + All idI idR capI capR pkI pkR dh ltk #i1 #i2 #j . + InitWillDoSecNC()[+] @i1 & RespWillDoLegPINio()[+] @i2 & + InitiatorFinishedSecPairing(idI, capI, idR, capR, pkI, pkR, dh, ltk) @j ==> + (Ex capI2 capR2 lk aco #k. + ResponderFinishedLegPairing(idR, capR2, idI, capI2, lk, aco) @k + ) +" + +lemma secNC_legPINio_auth_resp: +" + All idI idR capI1 capR1 lk aco #i1 #i2 #j. + InitWillDoSecNC()[+] @i1 & RespWillDoLegPINio()[+] @i2 & + ResponderFinishedLegPairing(idR, capR1, idI, capI1, lk, aco) @j ==> + (Ex capI2 capR2 pkI pkR dh nsi nsr ri rr ei #k . + InitDHKeyCheck(idI, capI2, idR, capR2, pkI, pkR, dh, nsi, nsr, ri, rr, ei) @k + ) +" + +lemma secNC_legPINio_weaksecret_init: +" + All idI idR capI capR pkI pkR dh ltk #i1 #i2 #j . + InitWillDoSecNC()[+] @i1 & RespWillDoLegPINio()[+] @i2 & + InitiatorFinishedSecPairing(idI, capI, idR, capR, pkI, pkR, dh, ltk) @j ==> + not (Ex #k. K(ltk) @k ) +" + +lemma secNC_legPINio_weaksecret_resp: +" + All idI idR capI capR lk aco #i1 #i2 #j . + InitWillDoSecNC()[+] @i1 & RespWillDoLegPINio()[+] @i2 & + ResponderFinishedLegPairing(idR, capR, idI, capI, lk, aco) @j ==> + not (Ex #k. K(lk) @k ) +" + +lemma secNC_legPINio_double_impersonation: +" + All #i1 #i2 . + InitWillDoSecNC()[+] @i1 & RespWillDoLegPINio()[+] @i2 ==> + (All idI1 idR1 capI1 capR1 idI2 idR2 capI2 capR2 lk aco pkI pkR dh ltk #j1 #j2 . + InitiatorFinishedSecPairing(idI1, capI1, idR1, capR1, pkI, pkR, dh, ltk) @j1 & + ResponderFinishedLegPairing(idR2, capR2, idI2, capI2, lk, aco) @j2 ==> + not (Ex #k1 #k2 . + K(ltk) @k1 & K(lk) @k2 + ) + ) +" + +#endif + +/********************************************/ +/* End lemmas about SecNC-LegPINio exchange */ +/********************************************/ + +/*****************************************/ +/* Lemmas about SecOOBi-LegPINi exchange */ +/*****************************************/ + +#ifdef SecOOBiLegPINi +lemma secOOBi_legPINi_functional: exists-trace +" + Ex #i1 #i2 . + InitWillDoSecOOBi()[+] @i1 & RespWillDoLegPINi()[+] @i2 & + (Ex idI1 idR1 capI1 capR1 idI2 idR2 capI2 capR2 lk aco pkI pkR dh ltk #j1 #j2 . + InitiatorFinishedSecPairing(idI1, capI1, idR1, capR1, pkI, pkR, dh, ltk) @j1 & + ResponderFinishedLegPairing(idR2, capR2, idI2, capI2, lk, aco) @j2 + ) +" + +lemma secOOBi_legPINi_auth_init: +" + All idI idR capI capR pkI pkR dh ltk #i1 #i2 #j . + InitWillDoSecOOBi()[+] @i1 & RespWillDoLegPINi()[+] @i2 & + InitiatorFinishedSecPairing(idI, capI, idR, capR, pkI, pkR, dh, ltk) @j ==> + (Ex capI2 capR2 lk aco #k. + ResponderFinishedLegPairing(idR, capR2, idI, capI2, lk, aco) @k + ) +" + +lemma secOOBi_legPINi_auth_resp: +" + All idI idR capI1 capR1 lk aco #i1 #i2 #j. + InitWillDoSecOOBi()[+] @i1 & RespWillDoLegPINi()[+] @i2 & + ResponderFinishedLegPairing(idR, capR1, idI, capI1, lk, aco) @j ==> + (Ex capI2 capR2 pkI pkR dh nsi nsr ri rr ei #k . + InitDHKeyCheck(idI, capI2, idR, capR2, pkI, pkR, dh, nsi, nsr, ri, rr, ei) @k + ) +" + +lemma secOOBi_legPINi_weaksecret_init: +" + All idI idR capI capR pkI pkR dh ltk #i1 #i2 #j . + InitWillDoSecOOBi()[+] @i1 & RespWillDoLegPINi()[+] @i2 & + InitiatorFinishedSecPairing(idI, capI, idR, capR, pkI, pkR, dh, ltk) @j ==> + not (Ex #k. K(ltk) @k ) +" + +lemma secOOBi_legPINi_weaksecret_resp: +" + All idI idR capI capR lk aco #i1 #i2 #j . + InitWillDoSecOOBi()[+] @i1 & RespWillDoLegPINi()[+] @i2 & + ResponderFinishedLegPairing(idR, capR, idI, capI, lk, aco) @j ==> + not (Ex #k. K(lk) @k ) +" + +lemma secOOBi_legPINi_double_impersonation: +" + All #i1 #i2 . + InitWillDoSecOOBi()[+] @i1 & RespWillDoLegPINi()[+] @i2 ==> + (All idI1 idR1 capI1 capR1 idI2 idR2 capI2 capR2 lk aco pkI pkR dh ltk #j1 #j2 . + InitiatorFinishedSecPairing(idI1, capI1, idR1, capR1, pkI, pkR, dh, ltk) @j1 & + ResponderFinishedLegPairing(idR2, capR2, idI2, capI2, lk, aco) @j2 ==> + not (Ex #k1 #k2 . + K(ltk) @k1 & K(lk) @k2 + ) + ) +" + +#endif + +/*********************************************/ +/* End lemmas about SecOOBi-LegPINi exchange */ +/*********************************************/ + +/*****************************************/ +/* Lemmas about SecOOBi-LegPINo exchange */ +/*****************************************/ + +#ifdef SecOOBiLegPINo +lemma secOOBi_legPINo_functional: exists-trace +" + Ex #i1 #i2 . + InitWillDoSecOOBi()[+] @i1 & RespWillDoLegPINo()[+] @i2 & + (Ex idI1 idR1 capI1 capR1 idI2 idR2 capI2 capR2 lk aco pkI pkR dh ltk #j1 #j2 . + InitiatorFinishedSecPairing(idI1, capI1, idR1, capR1, pkI, pkR, dh, ltk) @j1 & + ResponderFinishedLegPairing(idR2, capR2, idI2, capI2, lk, aco) @j2 + ) +" + +lemma secOOBi_legPINo_auth_init: +" + All idI idR capI capR pkI pkR dh ltk #i1 #i2 #j . + InitWillDoSecOOBi()[+] @i1 & RespWillDoLegPINo()[+] @i2 & + InitiatorFinishedSecPairing(idI, capI, idR, capR, pkI, pkR, dh, ltk) @j ==> + (Ex capI2 capR2 lk aco #k. + ResponderFinishedLegPairing(idR, capR2, idI, capI2, lk, aco) @k + ) +" + +lemma secOOBi_legPINo_auth_resp: +" + All idI idR capI1 capR1 lk aco #i1 #i2 #j. + InitWillDoSecOOBi()[+] @i1 & RespWillDoLegPINo()[+] @i2 & + ResponderFinishedLegPairing(idR, capR1, idI, capI1, lk, aco) @j ==> + (Ex capI2 capR2 pkI pkR dh nsi nsr ri rr ei #k . + InitDHKeyCheck(idI, capI2, idR, capR2, pkI, pkR, dh, nsi, nsr, ri, rr, ei) @k + ) +" + +lemma secOOBi_legPINo_weaksecret_init: +" + All idI idR capI capR pkI pkR dh ltk #i1 #i2 #j . + InitWillDoSecOOBi()[+] @i1 & RespWillDoLegPINo()[+] @i2 & + InitiatorFinishedSecPairing(idI, capI, idR, capR, pkI, pkR, dh, ltk) @j ==> + not (Ex #k. K(ltk) @k ) +" + +lemma secOOBi_legPINo_weaksecret_resp: +" + All idI idR capI capR lk aco #i1 #i2 #j . + InitWillDoSecOOBi()[+] @i1 & RespWillDoLegPINo()[+] @i2 & + ResponderFinishedLegPairing(idR, capR, idI, capI, lk, aco) @j ==> + not (Ex #k. K(lk) @k ) +" + +lemma secOOBi_legPINo_double_impersonation: +" + All #i1 #i2 . + InitWillDoSecOOBi()[+] @i1 & RespWillDoLegPINo()[+] @i2 ==> + (All idI1 idR1 capI1 capR1 idI2 idR2 capI2 capR2 lk aco pkI pkR dh ltk #j1 #j2 . + InitiatorFinishedSecPairing(idI1, capI1, idR1, capR1, pkI, pkR, dh, ltk) @j1 & + ResponderFinishedLegPairing(idR2, capR2, idI2, capI2, lk, aco) @j2 ==> + not (Ex #k1 #k2 . + K(ltk) @k1 & K(lk) @k2 + ) + ) +" + +#endif + +/*********************************************/ +/* End lemmas about SecOOBi-LegPINo exchange */ +/*********************************************/ + +/******************************************/ +/* Lemmas about SecOOBi-LegPINio exchange */ +/******************************************/ + +#ifdef SecOOBiLegPINio +lemma secOOBi_legPINio_functional: exists-trace +" + Ex #i1 #i2 . + InitWillDoSecOOBi()[+] @i1 & RespWillDoLegPINio()[+] @i2 & + (Ex idI1 idR1 capI1 capR1 idI2 idR2 capI2 capR2 lk aco pkI pkR dh ltk #j1 #j2 . + InitiatorFinishedSecPairing(idI1, capI1, idR1, capR1, pkI, pkR, dh, ltk) @j1 & + ResponderFinishedLegPairing(idR2, capR2, idI2, capI2, lk, aco) @j2 + ) +" + +lemma secOOBi_legPINio_auth_init: +" + All idI idR capI capR pkI pkR dh ltk #i1 #i2 #j . + InitWillDoSecOOBi()[+] @i1 & RespWillDoLegPINio()[+] @i2 & + InitiatorFinishedSecPairing(idI, capI, idR, capR, pkI, pkR, dh, ltk) @j ==> + (Ex capI2 capR2 lk aco #k. + ResponderFinishedLegPairing(idR, capR2, idI, capI2, lk, aco) @k + ) +" + +lemma secOOBi_legPINio_auth_resp: +" + All idI idR capI1 capR1 lk aco #i1 #i2 #j. + InitWillDoSecOOBi()[+] @i1 & RespWillDoLegPINio()[+] @i2 & + ResponderFinishedLegPairing(idR, capR1, idI, capI1, lk, aco) @j ==> + (Ex capI2 capR2 pkI pkR dh nsi nsr ri rr ei #k . + InitDHKeyCheck(idI, capI2, idR, capR2, pkI, pkR, dh, nsi, nsr, ri, rr, ei) @k + ) +" + +lemma secOOBi_legPINio_weaksecret_init: +" + All idI idR capI capR pkI pkR dh ltk #i1 #i2 #j . + InitWillDoSecOOBi()[+] @i1 & RespWillDoLegPINio()[+] @i2 & + InitiatorFinishedSecPairing(idI, capI, idR, capR, pkI, pkR, dh, ltk) @j ==> + not (Ex #k. K(ltk) @k ) +" + +lemma secOOBi_legPINio_weaksecret_resp: +" + All idI idR capI capR lk aco #i1 #i2 #j . + InitWillDoSecOOBi()[+] @i1 & RespWillDoLegPINio()[+] @i2 & + ResponderFinishedLegPairing(idR, capR, idI, capI, lk, aco) @j ==> + not (Ex #k. K(lk) @k ) +" + +lemma secOOBi_legPINio_double_impersonation: +" + All #i1 #i2 . + InitWillDoSecOOBi()[+] @i1 & RespWillDoLegPINio()[+] @i2 ==> + (All idI1 idR1 capI1 capR1 idI2 idR2 capI2 capR2 lk aco pkI pkR dh ltk #j1 #j2 . + InitiatorFinishedSecPairing(idI1, capI1, idR1, capR1, pkI, pkR, dh, ltk) @j1 & + ResponderFinishedLegPairing(idR2, capR2, idI2, capI2, lk, aco) @j2 ==> + not (Ex #k1 #k2 . + K(ltk) @k1 & K(lk) @k2 + ) + ) +" + +#endif + +/**********************************************/ +/* End lemmas about SecOOBi-LegPINio exchange */ +/**********************************************/ + +/*****************************************/ +/* Lemmas about SecOOBo-LegPINi exchange */ +/*****************************************/ + +#ifdef SecOOBoLegPINi +lemma secOOBo_legPINi_functional: exists-trace +" + Ex #i1 #i2 . + InitWillDoSecOOBo()[+] @i1 & RespWillDoLegPINi()[+] @i2 & + (Ex idI1 idR1 capI1 capR1 idI2 idR2 capI2 capR2 lk aco pkI pkR dh ltk #j1 #j2 . + InitiatorFinishedSecPairing(idI1, capI1, idR1, capR1, pkI, pkR, dh, ltk) @j1 & + ResponderFinishedLegPairing(idR2, capR2, idI2, capI2, lk, aco) @j2 + ) +" + +lemma secOOBo_legPINi_auth_init: +" + All idI idR capI capR pkI pkR dh ltk #i1 #i2 #j . + InitWillDoSecOOBo()[+] @i1 & RespWillDoLegPINi()[+] @i2 & + InitiatorFinishedSecPairing(idI, capI, idR, capR, pkI, pkR, dh, ltk) @j ==> + (Ex capI2 capR2 lk aco #k. + ResponderFinishedLegPairing(idR, capR2, idI, capI2, lk, aco) @k + ) +" + +lemma secOOBo_legPINi_auth_resp: +" + All idI idR capI1 capR1 lk aco #i1 #i2 #j. + InitWillDoSecOOBo()[+] @i1 & RespWillDoLegPINi()[+] @i2 & + ResponderFinishedLegPairing(idR, capR1, idI, capI1, lk, aco) @j ==> + (Ex capI2 capR2 pkI pkR dh nsi nsr ri rr ei #k . + InitDHKeyCheck(idI, capI2, idR, capR2, pkI, pkR, dh, nsi, nsr, ri, rr, ei) @k + ) +" + +lemma secOOBo_legPINi_weaksecret_init: +" + All idI idR capI capR pkI pkR dh ltk #i1 #i2 #j . + InitWillDoSecOOBo()[+] @i1 & RespWillDoLegPINi()[+] @i2 & + InitiatorFinishedSecPairing(idI, capI, idR, capR, pkI, pkR, dh, ltk) @j ==> + not (Ex #k. K(ltk) @k ) +" + +lemma secOOBo_legPINi_weaksecret_resp: +" + All idI idR capI capR lk aco #i1 #i2 #j . + InitWillDoSecOOBo()[+] @i1 & RespWillDoLegPINi()[+] @i2 & + ResponderFinishedLegPairing(idR, capR, idI, capI, lk, aco) @j ==> + not (Ex #k. K(lk) @k ) +" + +lemma secOOBo_legPINi_double_impersonation: +" + All #i1 #i2 . + InitWillDoSecOOBo()[+] @i1 & RespWillDoLegPINi()[+] @i2 ==> + (All idI1 idR1 capI1 capR1 idI2 idR2 capI2 capR2 lk aco pkI pkR dh ltk #j1 #j2 . + InitiatorFinishedSecPairing(idI1, capI1, idR1, capR1, pkI, pkR, dh, ltk) @j1 & + ResponderFinishedLegPairing(idR2, capR2, idI2, capI2, lk, aco) @j2 ==> + not (Ex #k1 #k2 . + K(ltk) @k1 & K(lk) @k2 + ) + ) +" + +#endif + +/*********************************************/ +/* End lemmas about SecOOBo-LegPINi exchange */ +/*********************************************/ + +/*****************************************/ +/* Lemmas about SecOOBo-LegPINo exchange */ +/*****************************************/ + +#ifdef SecOOBoLegPINo +lemma secOOBo_legPINo_functional: exists-trace +" + Ex #i1 #i2 . + InitWillDoSecOOBo()[+] @i1 & RespWillDoLegPINo()[+] @i2 & + (Ex idI1 idR1 capI1 capR1 idI2 idR2 capI2 capR2 lk aco pkI pkR dh ltk #j1 #j2 . + InitiatorFinishedSecPairing(idI1, capI1, idR1, capR1, pkI, pkR, dh, ltk) @j1 & + ResponderFinishedLegPairing(idR2, capR2, idI2, capI2, lk, aco) @j2 + ) +" + +lemma secOOBo_legPINo_auth_init: +" + All idI idR capI capR pkI pkR dh ltk #i1 #i2 #j . + InitWillDoSecOOBo()[+] @i1 & RespWillDoLegPINo()[+] @i2 & + InitiatorFinishedSecPairing(idI, capI, idR, capR, pkI, pkR, dh, ltk) @j ==> + (Ex capI2 capR2 lk aco #k. + ResponderFinishedLegPairing(idR, capR2, idI, capI2, lk, aco) @k + ) +" + +lemma secOOBo_legPINo_auth_resp: +" + All idI idR capI1 capR1 lk aco #i1 #i2 #j. + InitWillDoSecOOBo()[+] @i1 & RespWillDoLegPINo()[+] @i2 & + ResponderFinishedLegPairing(idR, capR1, idI, capI1, lk, aco) @j ==> + (Ex capI2 capR2 pkI pkR dh nsi nsr ri rr ei #k . + InitDHKeyCheck(idI, capI2, idR, capR2, pkI, pkR, dh, nsi, nsr, ri, rr, ei) @k + ) +" + +lemma secOOBo_legPINo_weaksecret_init: +" + All idI idR capI capR pkI pkR dh ltk #i1 #i2 #j . + InitWillDoSecOOBo()[+] @i1 & RespWillDoLegPINo()[+] @i2 & + InitiatorFinishedSecPairing(idI, capI, idR, capR, pkI, pkR, dh, ltk) @j ==> + not (Ex #k. K(ltk) @k ) +" + +lemma secOOBo_legPINo_weaksecret_resp: +" + All idI idR capI capR lk aco #i1 #i2 #j . + InitWillDoSecOOBo()[+] @i1 & RespWillDoLegPINo()[+] @i2 & + ResponderFinishedLegPairing(idR, capR, idI, capI, lk, aco) @j ==> + not (Ex #k. K(lk) @k ) +" + +lemma secOOBo_legPINo_double_impersonation: +" + All #i1 #i2 . + InitWillDoSecOOBo()[+] @i1 & RespWillDoLegPINo()[+] @i2 ==> + (All idI1 idR1 capI1 capR1 idI2 idR2 capI2 capR2 lk aco pkI pkR dh ltk #j1 #j2 . + InitiatorFinishedSecPairing(idI1, capI1, idR1, capR1, pkI, pkR, dh, ltk) @j1 & + ResponderFinishedLegPairing(idR2, capR2, idI2, capI2, lk, aco) @j2 ==> + not (Ex #k1 #k2 . + K(ltk) @k1 & K(lk) @k2 + ) + ) +" + +#endif + +/*********************************************/ +/* End lemmas about SecOOBo-LegPINo exchange */ +/*********************************************/ + +/******************************************/ +/* Lemmas about SecOOBo-LegPINio exchange */ +/******************************************/ + +#ifdef SecOOBoLegPINio +lemma secOOBo_legPINio_functional: exists-trace +" + Ex #i1 #i2 . + InitWillDoSecOOBo()[+] @i1 & RespWillDoLegPINio()[+] @i2 & + (Ex idI1 idR1 capI1 capR1 idI2 idR2 capI2 capR2 lk aco pkI pkR dh ltk #j1 #j2 . + InitiatorFinishedSecPairing(idI1, capI1, idR1, capR1, pkI, pkR, dh, ltk) @j1 & + ResponderFinishedLegPairing(idR2, capR2, idI2, capI2, lk, aco) @j2 + ) +" + +lemma secOOBo_legPINio_auth_init: +" + All idI idR capI capR pkI pkR dh ltk #i1 #i2 #j . + InitWillDoSecOOBo()[+] @i1 & RespWillDoLegPINio()[+] @i2 & + InitiatorFinishedSecPairing(idI, capI, idR, capR, pkI, pkR, dh, ltk) @j ==> + (Ex capI2 capR2 lk aco #k. + ResponderFinishedLegPairing(idR, capR2, idI, capI2, lk, aco) @k + ) +" + +lemma secOOBo_legPINio_auth_resp: +" + All idI idR capI1 capR1 lk aco #i1 #i2 #j. + InitWillDoSecOOBo()[+] @i1 & RespWillDoLegPINio()[+] @i2 & + ResponderFinishedLegPairing(idR, capR1, idI, capI1, lk, aco) @j ==> + (Ex capI2 capR2 pkI pkR dh nsi nsr ri rr ei #k . + InitDHKeyCheck(idI, capI2, idR, capR2, pkI, pkR, dh, nsi, nsr, ri, rr, ei) @k + ) +" + +lemma secOOBo_legPINio_weaksecret_init: +" + All idI idR capI capR pkI pkR dh ltk #i1 #i2 #j . + InitWillDoSecOOBo()[+] @i1 & RespWillDoLegPINio()[+] @i2 & + InitiatorFinishedSecPairing(idI, capI, idR, capR, pkI, pkR, dh, ltk) @j ==> + not (Ex #k. K(ltk) @k ) +" + +lemma secOOBo_legPINio_weaksecret_resp: +" + All idI idR capI capR lk aco #i1 #i2 #j . + InitWillDoSecOOBo()[+] @i1 & RespWillDoLegPINio()[+] @i2 & + ResponderFinishedLegPairing(idR, capR, idI, capI, lk, aco) @j ==> + not (Ex #k. K(lk) @k ) +" + +lemma secOOBo_legPINio_double_impersonation: +" + All #i1 #i2 . + InitWillDoSecOOBo()[+] @i1 & RespWillDoLegPINio()[+] @i2 ==> + (All idI1 idR1 capI1 capR1 idI2 idR2 capI2 capR2 lk aco pkI pkR dh ltk #j1 #j2 . + InitiatorFinishedSecPairing(idI1, capI1, idR1, capR1, pkI, pkR, dh, ltk) @j1 & + ResponderFinishedLegPairing(idR2, capR2, idI2, capI2, lk, aco) @j2 ==> + not (Ex #k1 #k2 . + K(ltk) @k1 & K(lk) @k2 + ) + ) +" + +#endif + +/**********************************************/ +/* End lemmas about SecOOBo-LegPINio exchange */ +/**********************************************/ + +/******************************************/ +/* Lemmas about SecOOBio-LegPINi exchange */ +/******************************************/ + +#ifdef SecOOBioLegPINi +lemma secOOBio_legPINi_functional: exists-trace +" + Ex #i1 #i2 . + InitWillDoSecOOBio()[+] @i1 & RespWillDoLegPINi()[+] @i2 & + (Ex idI1 idR1 capI1 capR1 idI2 idR2 capI2 capR2 lk aco pkI pkR dh ltk #j1 #j2 . + InitiatorFinishedSecPairing(idI1, capI1, idR1, capR1, pkI, pkR, dh, ltk) @j1 & + ResponderFinishedLegPairing(idR2, capR2, idI2, capI2, lk, aco) @j2 + ) +" + +lemma secOOBio_legPINi_auth_init: +" + All idI idR capI capR pkI pkR dh ltk #i1 #i2 #j . + InitWillDoSecOOBio()[+] @i1 & RespWillDoLegPINi()[+] @i2 & + InitiatorFinishedSecPairing(idI, capI, idR, capR, pkI, pkR, dh, ltk) @j ==> + (Ex capI2 capR2 lk aco #k. + ResponderFinishedLegPairing(idR, capR2, idI, capI2, lk, aco) @k + ) +" + +lemma secOOBio_legPINi_auth_resp: +" + All idI idR capI1 capR1 lk aco #i1 #i2 #j. + InitWillDoSecOOBio()[+] @i1 & RespWillDoLegPINi()[+] @i2 & + ResponderFinishedLegPairing(idR, capR1, idI, capI1, lk, aco) @j ==> + (Ex capI2 capR2 pkI pkR dh nsi nsr ri rr ei #k . + InitDHKeyCheck(idI, capI2, idR, capR2, pkI, pkR, dh, nsi, nsr, ri, rr, ei) @k + ) +" + +lemma secOOBio_legPINi_weaksecret_init: +" + All idI idR capI capR pkI pkR dh ltk #i1 #i2 #j . + InitWillDoSecOOBio()[+] @i1 & RespWillDoLegPINi()[+] @i2 & + InitiatorFinishedSecPairing(idI, capI, idR, capR, pkI, pkR, dh, ltk) @j ==> + not (Ex #k. K(ltk) @k ) +" + +lemma secOOBio_legPINi_weaksecret_resp: +" + All idI idR capI capR lk aco #i1 #i2 #j . + InitWillDoSecOOBio()[+] @i1 & RespWillDoLegPINi()[+] @i2 & + ResponderFinishedLegPairing(idR, capR, idI, capI, lk, aco) @j ==> + not (Ex #k. K(lk) @k ) +" + +lemma secOOBio_legPINi_double_impersonation: +" + All #i1 #i2 . + InitWillDoSecOOBio()[+] @i1 & RespWillDoLegPINi()[+] @i2 ==> + (All idI1 idR1 capI1 capR1 idI2 idR2 capI2 capR2 lk aco pkI pkR dh ltk #j1 #j2 . + InitiatorFinishedSecPairing(idI1, capI1, idR1, capR1, pkI, pkR, dh, ltk) @j1 & + ResponderFinishedLegPairing(idR2, capR2, idI2, capI2, lk, aco) @j2 ==> + not (Ex #k1 #k2 . + K(ltk) @k1 & K(lk) @k2 + ) + ) +" + +#endif + +/**********************************************/ +/* End lemmas about SecOOBio-LegPINi exchange */ +/**********************************************/ + +/******************************************/ +/* Lemmas about SecOOBio-LegPINo exchange */ +/******************************************/ + +#ifdef SecOOBioLegPINo +lemma secOOBio_legPINo_functional: exists-trace +" + Ex #i1 #i2 . + InitWillDoSecOOBio()[+] @i1 & RespWillDoLegPINo()[+] @i2 & + (Ex idI1 idR1 capI1 capR1 idI2 idR2 capI2 capR2 lk aco pkI pkR dh ltk #j1 #j2 . + InitiatorFinishedSecPairing(idI1, capI1, idR1, capR1, pkI, pkR, dh, ltk) @j1 & + ResponderFinishedLegPairing(idR2, capR2, idI2, capI2, lk, aco) @j2 + ) +" + +lemma secOOBio_legPINo_auth_init: +" + All idI idR capI capR pkI pkR dh ltk #i1 #i2 #j . + InitWillDoSecOOBio()[+] @i1 & RespWillDoLegPINo()[+] @i2 & + InitiatorFinishedSecPairing(idI, capI, idR, capR, pkI, pkR, dh, ltk) @j ==> + (Ex capI2 capR2 lk aco #k. + ResponderFinishedLegPairing(idR, capR2, idI, capI2, lk, aco) @k + ) +" + +lemma secOOBio_legPINo_auth_resp: +" + All idI idR capI1 capR1 lk aco #i1 #i2 #j. + InitWillDoSecOOBio()[+] @i1 & RespWillDoLegPINo()[+] @i2 & + ResponderFinishedLegPairing(idR, capR1, idI, capI1, lk, aco) @j ==> + (Ex capI2 capR2 pkI pkR dh nsi nsr ri rr ei #k . + InitDHKeyCheck(idI, capI2, idR, capR2, pkI, pkR, dh, nsi, nsr, ri, rr, ei) @k + ) +" + +lemma secOOBio_legPINo_weaksecret_init: +" + All idI idR capI capR pkI pkR dh ltk #i1 #i2 #j . + InitWillDoSecOOBio()[+] @i1 & RespWillDoLegPINo()[+] @i2 & + InitiatorFinishedSecPairing(idI, capI, idR, capR, pkI, pkR, dh, ltk) @j ==> + not (Ex #k. K(ltk) @k ) +" + +lemma secOOBio_legPINo_weaksecret_resp: +" + All idI idR capI capR lk aco #i1 #i2 #j . + InitWillDoSecOOBio()[+] @i1 & RespWillDoLegPINo()[+] @i2 & + ResponderFinishedLegPairing(idR, capR, idI, capI, lk, aco) @j ==> + not (Ex #k. K(lk) @k ) +" + +lemma secOOBio_legPINo_double_impersonation: +" + All #i1 #i2 . + InitWillDoSecOOBio()[+] @i1 & RespWillDoLegPINo()[+] @i2 ==> + (All idI1 idR1 capI1 capR1 idI2 idR2 capI2 capR2 lk aco pkI pkR dh ltk #j1 #j2 . + InitiatorFinishedSecPairing(idI1, capI1, idR1, capR1, pkI, pkR, dh, ltk) @j1 & + ResponderFinishedLegPairing(idR2, capR2, idI2, capI2, lk, aco) @j2 ==> + not (Ex #k1 #k2 . + K(ltk) @k1 & K(lk) @k2 + ) + ) +" + +#endif + +/**********************************************/ +/* End lemmas about SecOOBio-LegPINo exchange */ +/**********************************************/ + +/*******************************************/ +/* Lemmas about SecOOBio-LegPINio exchange */ +/*******************************************/ + +#ifdef SecOOBioLegPINio +lemma secOOBio_legPINio_functional: exists-trace +" + Ex #i1 #i2 . + InitWillDoSecOOBio()[+] @i1 & RespWillDoLegPINio()[+] @i2 & + (Ex idI1 idR1 capI1 capR1 idI2 idR2 capI2 capR2 lk aco pkI pkR dh ltk #j1 #j2 . + InitiatorFinishedSecPairing(idI1, capI1, idR1, capR1, pkI, pkR, dh, ltk) @j1 & + ResponderFinishedLegPairing(idR2, capR2, idI2, capI2, lk, aco) @j2 + ) +" + +lemma secOOBio_legPINio_auth_init: +" + All idI idR capI capR pkI pkR dh ltk #i1 #i2 #j . + InitWillDoSecOOBio()[+] @i1 & RespWillDoLegPINio()[+] @i2 & + InitiatorFinishedSecPairing(idI, capI, idR, capR, pkI, pkR, dh, ltk) @j ==> + (Ex capI2 capR2 lk aco #k. + ResponderFinishedLegPairing(idR, capR2, idI, capI2, lk, aco) @k + ) +" + +lemma secOOBio_legPINio_auth_resp: +" + All idI idR capI1 capR1 lk aco #i1 #i2 #j. + InitWillDoSecOOBio()[+] @i1 & RespWillDoLegPINio()[+] @i2 & + ResponderFinishedLegPairing(idR, capR1, idI, capI1, lk, aco) @j ==> + (Ex capI2 capR2 pkI pkR dh nsi nsr ri rr ei #k . + InitDHKeyCheck(idI, capI2, idR, capR2, pkI, pkR, dh, nsi, nsr, ri, rr, ei) @k + ) +" + +lemma secOOBio_legPINio_weaksecret_init: +" + All idI idR capI capR pkI pkR dh ltk #i1 #i2 #j . + InitWillDoSecOOBio()[+] @i1 & RespWillDoLegPINio()[+] @i2 & + InitiatorFinishedSecPairing(idI, capI, idR, capR, pkI, pkR, dh, ltk) @j ==> + not (Ex #k. K(ltk) @k ) +" + +lemma secOOBio_legPINio_weaksecret_resp: +" + All idI idR capI capR lk aco #i1 #i2 #j . + InitWillDoSecOOBio()[+] @i1 & RespWillDoLegPINio()[+] @i2 & + ResponderFinishedLegPairing(idR, capR, idI, capI, lk, aco) @j ==> + not (Ex #k. K(lk) @k ) +" + +lemma secOOBio_legPINio_double_impersonation: +" + All #i1 #i2 . + InitWillDoSecOOBio()[+] @i1 & RespWillDoLegPINio()[+] @i2 ==> + (All idI1 idR1 capI1 capR1 idI2 idR2 capI2 capR2 lk aco pkI pkR dh ltk #j1 #j2 . + InitiatorFinishedSecPairing(idI1, capI1, idR1, capR1, pkI, pkR, dh, ltk) @j1 & + ResponderFinishedLegPairing(idR2, capR2, idI2, capI2, lk, aco) @j2 ==> + not (Ex #k1 #k2 . + K(ltk) @k1 & K(lk) @k2 + ) + ) +" + +#endif + + +/***********************************************/ +/* End lemmas about SecOOBio-LegPINio exchange */ +/***********************************************/ + +/* +* Command-line to generate a Tamarin file with the entire model without all preprocessor macros: +* tamarin-prover ble.spthy -DInitSec -DLegPINiSecJW -DSecJWLegPINio -DSecOOBiSecPEio -DLegPINoSecJW -DSecPEioSecNC -DSecPEoSecJW -DSecNCLegPINi -DSecOOBoSecPEo -DSecOOBiLegPINo -DInitSecOOBio -DSecOOBoSecOOBo -DLegPINiSecNC -DSecPEiSecOOBi -DSecOOBioLegPINi -DSecPEioLegPINio -DRespLegPINo -DSecOOBiLegPINi -DSecJWSecOOBio -DRespSecPEi -DSecOOBiSecPEi -DSecOOBioSecOOBo -DSecPEoSecPEo -DInitLeg -DSecJWSecPEo -DSecOOBiLegPINio -DSecOOBoLegPINi -DSecOOBoSecOOBio -DLegPINoSecOOBi -DSecPEoSecPEi -DSecNCLegPINo -DRespSecPEo -DRespSecOOBo -DSecNCSecPEi -DSecPEioLegPINi -DInputInput -DInitSecPE -DRespSecOOBi -DSecPEioSecOOBi -DRespLegPINio -DRespSecOOB -DLegPINiSecPEo -DLegPINoSecPEo -DSecPEoLegPINio -DSecOOBoSecNC -DSecJWLegPINo -DSecPEioSecOOBio -DSecPEoSecOOBi -DLegPINiSecOOBo -DLegPINioSecPEo -DInitSecNC -DSecJWSecOOBi -DSecJWLegPINi -DSecJWSecNC -DInitSecOOBi -DLegPINiLegPINo -DLegPINiSecOOBio -DSecOOBioLegPINio -DSecPEioSecPEo -DLegPINioSecJW -DInitSecPEo -DSecNCSecJW -DLegPINioLegPINi -DSecOOBoLegPINo -DSecPEiSecPEi -DSecOOBioSecJW -DLegPINoSecPEio -DRespSecOOBio -DInitSecPEi -DRespSecPE -DSecPEoSecOOBo -DSecNCSecOOBio -DLegPINioSecOOBo -DOutputOutput -DSecNCSecOOBi -DInoutInput -DSecPEiSecJW -DSecPEoSecPEio -DLegPINioLegPINo -DLegPINiSecOOBi -DSecPEiSecOOBo -DSecOOBiSecOOBio -DLegPINoSecOOBo -DSecPEoSecNC -DInputInout -DLegPINoLegPINo -DInitLegPINo -DSecPEioSecPEio -DRespSecPEio -DSecOOBioSecOOBio -DSecNCSecPEo -DLegPINiLegPINio -DLegPINioSecOOBio -DSecOOBoSecPEi -DSecNCSecPEio -DSecNCSecOOBo -DInoutInout -DRespSecJW -DSecOOBioSecOOBi -DLegPINoSecNC -DSecPEiLegPINi -DSecPEioSecJW -DOutputInput -DInitLegPINio -DSecOOBiSecOOBo -DSecOOBioLegPINo -DSecOOBoLegPINio -DSecOOBioSecPEo -DSecOOBiSecOOBi -DSecJWSecPEio -DSecPEoSecOOBio -DSecOOBiSecNC -DSecPEoLegPINi -DSecOOBoSecOOBi -DLegPINiSecPEi -DSecPEioLegPINo -DSecNCLegPINio -DOutputInout -DSecOOBiSecPEo -DSecOOBioSecPEio -DRespLeg -DSecOOBoSecPEio -DSecPEiSecPEio -DSecPEiLegPINio -DLegPINioLegPINio -DLegPINioSecPEi -DSecPEiSecPEo -DLegPINiSecPEio -DSecPEoLegPINo -DLegPINoLegPINio -DLegPINoSecOOBio -DRespSec -DSecJWSecJW -DSecOOBioSecPEi -DSecPEiSecNC -DSecPEiSecOOBio -DLegPINoSecPEi -DRespSecNC -DInitLegPINi -DSecJWSecPEi -DSecPEioSecOOBo -DSecOOBoSecJW -DInitSecOOBo -DSecJWSecOOBo -DRespLegPINi -DLegPINioSecNC -DLegPINioSecOOBi -DInputOutput -DInitSecPEio -DLegPINioSecPEio -DInoutOutput -DSecOOBiSecJW -DInitSecOOB -DInitSecJW -DSecOOBioSecNC -DSecPEioSecPEi -DLegPINiLegPINi -DSecNCSecNC -DLegPINoLegPINi -DSecPEiLegPINo +*/ + +/* Command lines to prove individual cases: +tamarin-prover bredr.spthy -DInitLeg -DInitLegPINi -DRespLeg -DRespLegPINi -DLegPINiLegPINi -DInputInput --prove +tamarin-prover bredr.spthy -DInitLeg -DInitLegPINi -DRespLeg -DRespLegPINo -DLegPINiLegPINo -DInputOutput --prove +tamarin-prover bredr.spthy -DInitLeg -DInitLegPINi -DRespLeg -DRespLegPINio -DLegPINiLegPINio -DInputInout --prove +tamarin-prover bredr.spthy -DInitLeg -DInitLegPINo -DRespLeg -DRespLegPINi -DLegPINoLegPINi -DOutputInput --prove +tamarin-prover bredr.spthy -DInitLeg -DInitLegPINo -DRespLeg -DRespLegPINo -DLegPINoLegPINo -DOutputOutput --prove +tamarin-prover bredr.spthy -DInitLeg -DInitLegPINo -DRespLeg -DRespLegPINio -DLegPINoLegPINio -DOutputInout --prove +tamarin-prover bredr.spthy -DInitLeg -DInitLegPINio -DRespLeg -DRespLegPINi -DLegPINioLegPINi -DInoutInput --prove +tamarin-prover bredr.spthy -DInitLeg -DInitLegPINio -DRespLeg -DRespLegPINo -DLegPINioLegPINo -DInoutOutput --prove +tamarin-prover bredr.spthy -DInitLeg -DInitLegPINio -DRespLeg -DRespLegPINio -DLegPINioLegPINio -DInoutInout --prove +tamarin-prover bredr.spthy -DInitSec -DInitSecJW -DRespSec -DRespSecJW -DSecJWSecJW --prove +tamarin-prover bredr.spthy -DInitSec -DInitSecJW -DRespSec -DRespSecPE -DRespSecPEi -DSecJWSecPEi --prove +tamarin-prover bredr.spthy -DInitSec -DInitSecJW -DRespSec -DRespSecPE -DRespSecPEo -DSecJWSecPEo --prove +tamarin-prover bredr.spthy -DInitSec -DInitSecJW -DRespSec -DRespSecPE -DRespSecPEio -DSecJWSecPEio --prove +tamarin-prover bredr.spthy -DInitSec -DInitSecJW -DRespSec -DRespSecNC -DSecJWSecNC --prove +tamarin-prover bredr.spthy -DInitSec -DInitSecJW -DRespSec -DRespSecOOB -DRespSecOOBi -DSecJWSecOOBi --prove +tamarin-prover bredr.spthy -DInitSec -DInitSecJW -DRespSec -DRespSecOOB -DRespSecOOBo -DSecJWSecOOBo --prove +tamarin-prover bredr.spthy -DInitSec -DInitSecJW -DRespSec -DRespSecOOB -DRespSecOOBio -DSecJWSecOOBio --prove +tamarin-prover bredr.spthy -DInitSec -DInitSecPE -DInitSecPEi -DRespSec -DRespSecJW -DSecPEiSecJW -DInputInput -DInputOutput -DInputInout --prove +tamarin-prover bredr.spthy -DInitSec -DInitSecPE -DInitSecPEi -DRespSec -DRespSecPE -DRespSecPEi -DSecPEiSecPEi -DInputInput --prove +tamarin-prover bredr.spthy -DInitSec -DInitSecPE -DInitSecPEi -DRespSec -DRespSecPE -DRespSecPEo -DSecPEiSecPEo -DInputOutput --prove +tamarin-prover bredr.spthy -DInitSec -DInitSecPE -DInitSecPEi -DRespSec -DRespSecPE -DRespSecPEio -DSecPEiSecPEio -DInputInout --prove +tamarin-prover bredr.spthy -DInitSec -DInitSecPE -DInitSecPEi -DRespSec -DRespSecNC -DSecPEiSecNC -DInputOutput --prove +tamarin-prover bredr.spthy -DInitSec -DInitSecPE -DInitSecPEi -DRespSec -DRespSecOOB -DRespSecOOBi -DSecPEiSecOOBi -DInputInput -DInputOutput -DInputInout --prove +tamarin-prover bredr.spthy -DInitSec -DInitSecPE -DInitSecPEi -DRespSec -DRespSecOOB -DRespSecOOBo -DSecPEiSecOOBo -DInputInput -DInputOutput -DInputInout --prove +tamarin-prover bredr.spthy -DInitSec -DInitSecPE -DInitSecPEi -DRespSec -DRespSecOOB -DRespSecOOBio -DSecPEiSecOOBio -DInputInput -DInputOutput -DInputInout --prove +tamarin-prover bredr.spthy -DInitSec -DInitSecPE -DInitSecPEo -DRespSec -DRespSecJW -DSecPEoSecJW -DOutputInput -DOutputOutput -DOutputInout --prove +tamarin-prover bredr.spthy -DInitSec -DInitSecPE -DInitSecPEo -DRespSec -DRespSecPE -DRespSecPEi -DSecPEoSecPEi -DOutputInput --prove +tamarin-prover bredr.spthy -DInitSec -DInitSecPE -DInitSecPEo -DRespSec -DRespSecPE -DRespSecPEo -DSecPEoSecPEo -DOutputOutput --prove +tamarin-prover bredr.spthy -DInitSec -DInitSecPE -DInitSecPEo -DRespSec -DRespSecPE -DRespSecPEio -DSecPEoSecPEio -DOutputInout --prove +tamarin-prover bredr.spthy -DInitSec -DInitSecPE -DInitSecPEo -DRespSec -DRespSecNC -DSecPEoSecNC -DOutputOutput --prove +tamarin-prover bredr.spthy -DInitSec -DInitSecPE -DInitSecPEo -DRespSec -DRespSecOOB -DRespSecOOBi -DSecPEoSecOOBi -DOutputInput -DOutputOutput -DOutputInout --prove +tamarin-prover bredr.spthy -DInitSec -DInitSecPE -DInitSecPEo -DRespSec -DRespSecOOB -DRespSecOOBo -DSecPEoSecOOBo -DOutputInput -DOutputOutput -DOutputInout --prove +tamarin-prover bredr.spthy -DInitSec -DInitSecPE -DInitSecPEo -DRespSec -DRespSecOOB -DRespSecOOBio -DSecPEoSecOOBio -DOutputInput -DOutputOutput -DOutputInout --prove +tamarin-prover bredr.spthy -DInitSec -DInitSecPE -DInitSecPEio -DRespSec -DRespSecJW -DSecPEioSecJW -DInoutInput -DInoutOutput -DInoutInout --prove +tamarin-prover bredr.spthy -DInitSec -DInitSecPE -DInitSecPEio -DRespSec -DRespSecPE -DRespSecPEi -DSecPEioSecPEi -DInoutInput --prove +tamarin-prover bredr.spthy -DInitSec -DInitSecPE -DInitSecPEio -DRespSec -DRespSecPE -DRespSecPEo -DSecPEioSecPEo -DInoutOutput --prove +tamarin-prover bredr.spthy -DInitSec -DInitSecPE -DInitSecPEio -DRespSec -DRespSecPE -DRespSecPEio -DSecPEioSecPEio -DInoutInout --prove +tamarin-prover bredr.spthy -DInitSec -DInitSecPE -DInitSecPEio -DRespSec -DRespSecNC -DSecPEioSecNC -DInoutOutput --prove +tamarin-prover bredr.spthy -DInitSec -DInitSecPE -DInitSecPEio -DRespSec -DRespSecOOB -DRespSecOOBi -DSecPEioSecOOBi -DInoutInput -DInoutOutput -DInoutInout --prove +tamarin-prover bredr.spthy -DInitSec -DInitSecPE -DInitSecPEio -DRespSec -DRespSecOOB -DRespSecOOBo -DSecPEioSecOOBo -DInoutInput -DInoutOutput -DInoutInout --prove +tamarin-prover bredr.spthy -DInitSec -DInitSecPE -DInitSecPEio -DRespSec -DRespSecOOB -DRespSecOOBio -DSecPEioSecOOBio -DInoutInput -DInoutOutput -DInoutInout --prove +tamarin-prover bredr.spthy -DInitSec -DInitSecNC -DRespSec -DRespSecJW -DSecNCSecJW -DOutputInput -DOutputOutput -DOutputInout --prove +tamarin-prover bredr.spthy -DInitSec -DInitSecNC -DRespSec -DRespSecPE -DRespSecPEi -DSecNCSecPEi -DOutputInput --prove +tamarin-prover bredr.spthy -DInitSec -DInitSecNC -DRespSec -DRespSecPE -DRespSecPEo -DSecNCSecPEo -DOutputOutput --prove +tamarin-prover bredr.spthy -DInitSec -DInitSecNC -DRespSec -DRespSecPE -DRespSecPEio -DSecNCSecPEio -DOutputInout --prove +tamarin-prover bredr.spthy -DInitSec -DInitSecNC -DRespSec -DRespSecNC -DSecNCSecNC -DOutputOutput --prove +tamarin-prover bredr.spthy -DInitSec -DInitSecNC -DRespSec -DRespSecOOB -DRespSecOOBi -DSecNCSecOOBi -DOutputInput -DOutputOutput -DOutputInout --prove +tamarin-prover bredr.spthy -DInitSec -DInitSecNC -DRespSec -DRespSecOOB -DRespSecOOBo -DSecNCSecOOBo -DOutputInput -DOutputOutput -DOutputInout --prove +tamarin-prover bredr.spthy -DInitSec -DInitSecNC -DRespSec -DRespSecOOB -DRespSecOOBio -DSecNCSecOOBio -DOutputInput -DOutputOutput -DOutputInout --prove +tamarin-prover bredr.spthy -DInitSec -DInitSecOOB -DInitSecOOBi -DRespSec -DRespSecJW -DSecOOBiSecJW --prove +tamarin-prover bredr.spthy -DInitSec -DInitSecOOB -DInitSecOOBi -DRespSec -DRespSecPE -DRespSecPEi -DSecOOBiSecPEi --prove +tamarin-prover bredr.spthy -DInitSec -DInitSecOOB -DInitSecOOBi -DRespSec -DRespSecPE -DRespSecPEo -DSecOOBiSecPEo --prove +tamarin-prover bredr.spthy -DInitSec -DInitSecOOB -DInitSecOOBi -DRespSec -DRespSecPE -DRespSecPEio -DSecOOBiSecPEio --prove +tamarin-prover bredr.spthy -DInitSec -DInitSecOOB -DInitSecOOBi -DRespSec -DRespSecNC -DSecOOBiSecNC --prove +tamarin-prover bredr.spthy -DInitSec -DInitSecOOB -DInitSecOOBi -DRespSec -DRespSecOOB -DRespSecOOBi -DSecOOBiSecOOBi --prove +tamarin-prover bredr.spthy -DInitSec -DInitSecOOB -DInitSecOOBi -DRespSec -DRespSecOOB -DRespSecOOBo -DSecOOBiSecOOBo --prove +tamarin-prover bredr.spthy -DInitSec -DInitSecOOB -DInitSecOOBi -DRespSec -DRespSecOOB -DRespSecOOBio -DSecOOBiSecOOBio --prove +tamarin-prover bredr.spthy -DInitSec -DInitSecOOB -DInitSecOOBo -DRespSec -DRespSecJW -DSecOOBoSecJW --prove +tamarin-prover bredr.spthy -DInitSec -DInitSecOOB -DInitSecOOBo -DRespSec -DRespSecPE -DRespSecPEi -DSecOOBoSecPEi --prove +tamarin-prover bredr.spthy -DInitSec -DInitSecOOB -DInitSecOOBo -DRespSec -DRespSecPE -DRespSecPEo -DSecOOBoSecPEo --prove +tamarin-prover bredr.spthy -DInitSec -DInitSecOOB -DInitSecOOBo -DRespSec -DRespSecPE -DRespSecPEio -DSecOOBoSecPEio --prove +tamarin-prover bredr.spthy -DInitSec -DInitSecOOB -DInitSecOOBo -DRespSec -DRespSecNC -DSecOOBoSecNC --prove +tamarin-prover bredr.spthy -DInitSec -DInitSecOOB -DInitSecOOBo -DRespSec -DRespSecOOB -DRespSecOOBi -DSecOOBoSecOOBi --prove +tamarin-prover bredr.spthy -DInitSec -DInitSecOOB -DInitSecOOBo -DRespSec -DRespSecOOB -DRespSecOOBo -DSecOOBoSecOOBo --prove +tamarin-prover bredr.spthy -DInitSec -DInitSecOOB -DInitSecOOBo -DRespSec -DRespSecOOB -DRespSecOOBio -DSecOOBoSecOOBio --prove +tamarin-prover bredr.spthy -DInitSec -DInitSecOOB -DInitSecOOBio -DRespSec -DRespSecJW -DSecOOBioSecJW --prove +tamarin-prover bredr.spthy -DInitSec -DInitSecOOB -DInitSecOOBio -DRespSec -DRespSecPE -DRespSecPEi -DSecOOBioSecPEi --prove +tamarin-prover bredr.spthy -DInitSec -DInitSecOOB -DInitSecOOBio -DRespSec -DRespSecPE -DRespSecPEo -DSecOOBioSecPEo --prove +tamarin-prover bredr.spthy -DInitSec -DInitSecOOB -DInitSecOOBio -DRespSec -DRespSecPE -DRespSecPEio -DSecOOBioSecPEio --prove +tamarin-prover bredr.spthy -DInitSec -DInitSecOOB -DInitSecOOBio -DRespSec -DRespSecNC -DSecOOBioSecNC --prove +tamarin-prover bredr.spthy -DInitSec -DInitSecOOB -DInitSecOOBio -DRespSec -DRespSecOOB -DRespSecOOBi -DSecOOBioSecOOBi --prove +tamarin-prover bredr.spthy -DInitSec -DInitSecOOB -DInitSecOOBio -DRespSec -DRespSecOOB -DRespSecOOBo -DSecOOBioSecOOBo --prove +tamarin-prover bredr.spthy -DInitSec -DInitSecOOB -DInitSecOOBio -DRespSec -DRespSecOOB -DRespSecOOBio -DSecOOBioSecOOBio --prove +tamarin-prover bredr.spthy -DInitLeg -DInitLegPINi -DRespSec -DRespSecJW -DLegPINiSecJW -DInputInput -DInputOutput -DInputInout --prove +tamarin-prover bredr.spthy -DInitLeg -DInitLegPINi -DRespSec -DRespSecPE -DRespSecPEi -DLegPINiSecPEi -DInputInput --prove +tamarin-prover bredr.spthy -DInitLeg -DInitLegPINi -DRespSec -DRespSecPE -DRespSecPEo -DLegPINiSecPEo -DInputOutput --prove +tamarin-prover bredr.spthy -DInitLeg -DInitLegPINi -DRespSec -DRespSecPE -DRespSecPEio -DLegPINiSecPEio -DInputInout --prove +tamarin-prover bredr.spthy -DInitLeg -DInitLegPINi -DRespSec -DRespSecNC -DLegPINiSecNC -DInputOutput --prove +tamarin-prover bredr.spthy -DInitLeg -DInitLegPINi -DRespSec -DRespSecOOB -DRespSecOOBi -DLegPINiSecOOBi -DInputInput -DInputOutput -DInputInout --prove +tamarin-prover bredr.spthy -DInitLeg -DInitLegPINi -DRespSec -DRespSecOOB -DRespSecOOBo -DLegPINiSecOOBo -DInputInput -DInputOutput -DInputInout --prove +tamarin-prover bredr.spthy -DInitLeg -DInitLegPINi -DRespSec -DRespSecOOB -DRespSecOOBio -DLegPINiSecOOBio -DInputInput -DInputOutput -DInputInout --prove +tamarin-prover bredr.spthy -DInitLeg -DInitLegPINo -DRespSec -DRespSecJW -DLegPINoSecJW -DOutputInput -DOutputOutput -DOutputInout --prove +tamarin-prover bredr.spthy -DInitLeg -DInitLegPINo -DRespSec -DRespSecPE -DRespSecPEi -DLegPINoSecPEi -DOutputInput --prove +tamarin-prover bredr.spthy -DInitLeg -DInitLegPINo -DRespSec -DRespSecPE -DRespSecPEo -DLegPINoSecPEo -DOutputOutput --prove +tamarin-prover bredr.spthy -DInitLeg -DInitLegPINo -DRespSec -DRespSecPE -DRespSecPEio -DLegPINoSecPEio -DOutputInout --prove +tamarin-prover bredr.spthy -DInitLeg -DInitLegPINo -DRespSec -DRespSecNC -DLegPINoSecNC -DOutputOutput --prove +tamarin-prover bredr.spthy -DInitLeg -DInitLegPINo -DRespSec -DRespSecOOB -DRespSecOOBi -DLegPINoSecOOBi -DOutputInput -DOutputOutput -DOutputInout --prove +tamarin-prover bredr.spthy -DInitLeg -DInitLegPINo -DRespSec -DRespSecOOB -DRespSecOOBo -DLegPINoSecOOBo -DOutputInput -DOutputOutput -DOutputInout --prove +tamarin-prover bredr.spthy -DInitLeg -DInitLegPINo -DRespSec -DRespSecOOB -DRespSecOOBio -DLegPINoSecOOBio -DOutputInput -DOutputOutput -DOutputInout --prove +tamarin-prover bredr.spthy -DInitLeg -DInitLegPINio -DRespSec -DRespSecJW -DLegPINioSecJW -DInoutInput -DInoutOutput -DInoutInout --prove +tamarin-prover bredr.spthy -DInitLeg -DInitLegPINio -DRespSec -DRespSecPE -DRespSecPEi -DLegPINioSecPEi -DInoutInput --prove +tamarin-prover bredr.spthy -DInitLeg -DInitLegPINio -DRespSec -DRespSecPE -DRespSecPEo -DLegPINioSecPEo -DInoutOutput --prove +tamarin-prover bredr.spthy -DInitLeg -DInitLegPINio -DRespSec -DRespSecPE -DRespSecPEio -DLegPINioSecPEio -DInoutInout --prove +tamarin-prover bredr.spthy -DInitLeg -DInitLegPINio -DRespSec -DRespSecNC -DLegPINioSecNC -DInoutOutput --prove +tamarin-prover bredr.spthy -DInitLeg -DInitLegPINio -DRespSec -DRespSecOOB -DRespSecOOBi -DLegPINioSecOOBi -DInoutInput -DInoutOutput -DInoutInout --prove +tamarin-prover bredr.spthy -DInitLeg -DInitLegPINio -DRespSec -DRespSecOOB -DRespSecOOBo -DLegPINioSecOOBo -DInoutInput -DInoutOutput -DInoutInout --prove +tamarin-prover bredr.spthy -DInitLeg -DInitLegPINio -DRespSec -DRespSecOOB -DRespSecOOBio -DLegPINioSecOOBio -DInoutInput -DInoutOutput -DInoutInout --prove +tamarin-prover bredr.spthy -DInitSec -DInitSecJW -DRespLeg -DRespLegPINi -DSecJWLegPINi --prove +tamarin-prover bredr.spthy -DInitSec -DInitSecJW -DRespLeg -DRespLegPINo -DSecJWLegPINo --prove +tamarin-prover bredr.spthy -DInitSec -DInitSecJW -DRespLeg -DRespLegPINio -DSecJWLegPINio --prove +tamarin-prover bredr.spthy -DInitSec -DInitSecPE -DInitSecPEi -DRespLeg -DRespLegPINi -DSecPEiLegPINi -DInputInput --prove +tamarin-prover bredr.spthy -DInitSec -DInitSecPE -DInitSecPEi -DRespLeg -DRespLegPINo -DSecPEiLegPINo -DInputOutput --prove +tamarin-prover bredr.spthy -DInitSec -DInitSecPE -DInitSecPEi -DRespLeg -DRespLegPINio -DSecPEiLegPINio -DInputInout --prove +tamarin-prover bredr.spthy -DInitSec -DInitSecPE -DInitSecPEo -DRespLeg -DRespLegPINi -DSecPEoLegPINi -DOutputInput --prove +tamarin-prover bredr.spthy -DInitSec -DInitSecPE -DInitSecPEo -DRespLeg -DRespLegPINo -DSecPEoLegPINo -DOutputOutput --prove +tamarin-prover bredr.spthy -DInitSec -DInitSecPE -DInitSecPEo -DRespLeg -DRespLegPINio -DSecPEoLegPINio -DOutputInout --prove +tamarin-prover bredr.spthy -DInitSec -DInitSecPE -DInitSecPEio -DRespLeg -DRespLegPINi -DSecPEioLegPINi -DInoutInput --prove +tamarin-prover bredr.spthy -DInitSec -DInitSecPE -DInitSecPEio -DRespLeg -DRespLegPINo -DSecPEioLegPINo -DInoutOutput --prove +tamarin-prover bredr.spthy -DInitSec -DInitSecPE -DInitSecPEio -DRespLeg -DRespLegPINio -DSecPEioLegPINio -DInoutInout --prove +tamarin-prover bredr.spthy -DInitSec -DInitSecNC -DRespLeg -DRespLegPINi -DSecNCLegPINi -DOutputInput --prove +tamarin-prover bredr.spthy -DInitSec -DInitSecNC -DRespLeg -DRespLegPINo -DSecNCLegPINo -DOutputOutput --prove +tamarin-prover bredr.spthy -DInitSec -DInitSecNC -DRespLeg -DRespLegPINio -DSecNCLegPINio -DOutputInout --prove +tamarin-prover bredr.spthy -DInitSec -DInitSecOOB -DInitSecOOBi -DRespLeg -DRespLegPINi -DSecOOBiLegPINi --prove +tamarin-prover bredr.spthy -DInitSec -DInitSecOOB -DInitSecOOBi -DRespLeg -DRespLegPINo -DSecOOBiLegPINo --prove +tamarin-prover bredr.spthy -DInitSec -DInitSecOOB -DInitSecOOBi -DRespLeg -DRespLegPINio -DSecOOBiLegPINio --prove +tamarin-prover bredr.spthy -DInitSec -DInitSecOOB -DInitSecOOBo -DRespLeg -DRespLegPINi -DSecOOBoLegPINi --prove +tamarin-prover bredr.spthy -DInitSec -DInitSecOOB -DInitSecOOBo -DRespLeg -DRespLegPINo -DSecOOBoLegPINo --prove +tamarin-prover bredr.spthy -DInitSec -DInitSecOOB -DInitSecOOBo -DRespLeg -DRespLegPINio -DSecOOBoLegPINio --prove +tamarin-prover bredr.spthy -DInitSec -DInitSecOOB -DInitSecOOBio -DRespLeg -DRespLegPINi -DSecOOBioLegPINi --prove +tamarin-prover bredr.spthy -DInitSec -DInitSecOOB -DInitSecOOBio -DRespLeg -DRespLegPINo -DSecOOBioLegPINo --prove +tamarin-prover bredr.spthy -DInitSec -DInitSecOOB -DInitSecOOBio -DRespLeg -DRespLegPINio -DSecOOBioLegPINio --prove + + +JSON configuration file: +{ +"LegPINiLegPINi": ["InitLeg","InitLegPINi","RespLeg","RespLegPINi","LegPINiLegPINi","InputInput"], +"LegPINiLegPINo": ["InitLeg","InitLegPINi","RespLeg","RespLegPINo","LegPINiLegPINo","InputOutput"], +"LegPINiLegPINio": ["InitLeg","InitLegPINi","RespLeg","RespLegPINio","LegPINiLegPINio","InputInout"], +"LegPINoLegPINi": ["InitLeg","InitLegPINo","RespLeg","RespLegPINi","LegPINoLegPINi","OutputInput"], +"LegPINoLegPINo": ["InitLeg","InitLegPINo","RespLeg","RespLegPINo","LegPINoLegPINo","OutputOutput"], +"LegPINoLegPINio": ["InitLeg","InitLegPINo","RespLeg","RespLegPINio","LegPINoLegPINio","OutputInout"], +"LegPINioLegPINi": ["InitLeg","InitLegPINio","RespLeg","RespLegPINi","LegPINioLegPINi","InoutInput"], +"LegPINioLegPINo": ["InitLeg","InitLegPINio","RespLeg","RespLegPINo","LegPINioLegPINo","InoutOutput"], +"LegPINioLegPINio": ["InitLeg","InitLegPINio","RespLeg","RespLegPINio","LegPINioLegPINio","InoutInout"], +"SecJWSecJW": ["InitSec","InitSecJW","RespSec","RespSecJW","SecJWSecJW"], +"SecJWSecPEi": ["InitSec","InitSecJW","RespSec","RespSecPE","RespSecPEi","SecJWSecPEi"], +"SecJWSecPEo": ["InitSec","InitSecJW","RespSec","RespSecPE","RespSecPEo","SecJWSecPEo"], +"SecJWSecPEio": ["InitSec","InitSecJW","RespSec","RespSecPE","RespSecPEio","SecJWSecPEio"], +"SecJWSecNC": ["InitSec","InitSecJW","RespSec","RespSecNC","SecJWSecNC"], +"SecJWSecOOBi": ["InitSec","InitSecJW","RespSec","RespSecOOB","RespSecOOBi","SecJWSecOOBi"], +"SecJWSecOOBo": ["InitSec","InitSecJW","RespSec","RespSecOOB","RespSecOOBo","SecJWSecOOBo"], +"SecJWSecOOBio": ["InitSec","InitSecJW","RespSec","RespSecOOB","RespSecOOBio","SecJWSecOOBio"], +"SecPEiSecJW": ["InitSec","InitSecPE","InitSecPEi","RespSec","RespSecJW","SecPEiSecJW","InputInput","InputOutput","InputInout"], +"SecPEiSecPEi": ["InitSec","InitSecPE","InitSecPEi","RespSec","RespSecPE","RespSecPEi","SecPEiSecPEi","InputInput"], +"SecPEiSecPEo": ["InitSec","InitSecPE","InitSecPEi","RespSec","RespSecPE","RespSecPEo","SecPEiSecPEo","InputOutput"], +"SecPEiSecPEio": ["InitSec","InitSecPE","InitSecPEi","RespSec","RespSecPE","RespSecPEio","SecPEiSecPEio","InputInout"], +"SecPEiSecNC": ["InitSec","InitSecPE","InitSecPEi","RespSec","RespSecNC","SecPEiSecNC","InputOutput"], +"SecPEiSecOOBi": ["InitSec","InitSecPE","InitSecPEi","RespSec","RespSecOOB","RespSecOOBi","SecPEiSecOOBi","InputInput","InputOutput","InputInout"], +"SecPEiSecOOBo": ["InitSec","InitSecPE","InitSecPEi","RespSec","RespSecOOB","RespSecOOBo","SecPEiSecOOBo","InputInput","InputOutput","InputInout"], +"SecPEiSecOOBio": ["InitSec","InitSecPE","InitSecPEi","RespSec","RespSecOOB","RespSecOOBio","SecPEiSecOOBio","InputInput","InputOutput","InputInout"], +"SecPEoSecJW": ["InitSec","InitSecPE","InitSecPEo","RespSec","RespSecJW","SecPEoSecJW","OutputInput","OutputOutput","OutputInout"], +"SecPEoSecPEi": ["InitSec","InitSecPE","InitSecPEo","RespSec","RespSecPE","RespSecPEi","SecPEoSecPEi","OutputInput"], +"SecPEoSecPEo": ["InitSec","InitSecPE","InitSecPEo","RespSec","RespSecPE","RespSecPEo","SecPEoSecPEo","OutputOutput"], +"SecPEoSecPEio": ["InitSec","InitSecPE","InitSecPEo","RespSec","RespSecPE","RespSecPEio","SecPEoSecPEio","OutputInout"], +"SecPEoSecNC": ["InitSec","InitSecPE","InitSecPEo","RespSec","RespSecNC","SecPEoSecNC","OutputOutput"], +"SecPEoSecOOBi": ["InitSec","InitSecPE","InitSecPEo","RespSec","RespSecOOB","RespSecOOBi","SecPEoSecOOBi","OutputInput","OutputOutput","OutputInout"], +"SecPEoSecOOBo": ["InitSec","InitSecPE","InitSecPEo","RespSec","RespSecOOB","RespSecOOBo","SecPEoSecOOBo","OutputInput","OutputOutput","OutputInout"], +"SecPEoSecOOBio": ["InitSec","InitSecPE","InitSecPEo","RespSec","RespSecOOB","RespSecOOBio","SecPEoSecOOBio","OutputInput","OutputOutput","OutputInout"], +"SecPEioSecJW": ["InitSec","InitSecPE","InitSecPEio","RespSec","RespSecJW","SecPEioSecJW","InoutInput","InoutOutput","InoutInout"], +"SecPEioSecPEi": ["InitSec","InitSecPE","InitSecPEio","RespSec","RespSecPE","RespSecPEi","SecPEioSecPEi","InoutInput"], +"SecPEioSecPEo": ["InitSec","InitSecPE","InitSecPEio","RespSec","RespSecPE","RespSecPEo","SecPEioSecPEo","InoutOutput"], +"SecPEioSecPEio": ["InitSec","InitSecPE","InitSecPEio","RespSec","RespSecPE","RespSecPEio","SecPEioSecPEio","InoutInout"], +"SecPEioSecNC": ["InitSec","InitSecPE","InitSecPEio","RespSec","RespSecNC","SecPEioSecNC","InoutOutput"], +"SecPEioSecOOBi": ["InitSec","InitSecPE","InitSecPEio","RespSec","RespSecOOB","RespSecOOBi","SecPEioSecOOBi","InoutInput","InoutOutput","InoutInout"], +"SecPEioSecOOBo": ["InitSec","InitSecPE","InitSecPEio","RespSec","RespSecOOB","RespSecOOBo","SecPEioSecOOBo","InoutInput","InoutOutput","InoutInout"], +"SecPEioSecOOBio": ["InitSec","InitSecPE","InitSecPEio","RespSec","RespSecOOB","RespSecOOBio","SecPEioSecOOBio","InoutInput","InoutOutput","InoutInout"], +"SecNCSecJW": ["InitSec","InitSecNC","RespSec","RespSecJW","SecNCSecJW","OutputInput","OutputOutput","OutputInout"], +"SecNCSecPEi": ["InitSec","InitSecNC","RespSec","RespSecPE","RespSecPEi","SecNCSecPEi","OutputInput"], +"SecNCSecPEo": ["InitSec","InitSecNC","RespSec","RespSecPE","RespSecPEo","SecNCSecPEo","OutputOutput"], +"SecNCSecPEio": ["InitSec","InitSecNC","RespSec","RespSecPE","RespSecPEio","SecNCSecPEio","OutputInout"], +"SecNCSecNC": ["InitSec","InitSecNC","RespSec","RespSecNC","SecNCSecNC","OutputOutput"], +"SecNCSecOOBi": ["InitSec","InitSecNC","RespSec","RespSecOOB","RespSecOOBi","SecNCSecOOBi","OutputInput","OutputOutput","OutputInout"], +"SecNCSecOOBo": ["InitSec","InitSecNC","RespSec","RespSecOOB","RespSecOOBo","SecNCSecOOBo","OutputInput","OutputOutput","OutputInout"], +"SecNCSecOOBio": ["InitSec","InitSecNC","RespSec","RespSecOOB","RespSecOOBio","SecNCSecOOBio","OutputInput","OutputOutput","OutputInout"], +"SecOOBiSecJW": ["InitSec","InitSecOOB","InitSecOOBi","RespSec","RespSecJW","SecOOBiSecJW"], +"SecOOBiSecPEi": ["InitSec","InitSecOOB","InitSecOOBi","RespSec","RespSecPE","RespSecPEi","SecOOBiSecPEi"], +"SecOOBiSecPEo": ["InitSec","InitSecOOB","InitSecOOBi","RespSec","RespSecPE","RespSecPEo","SecOOBiSecPEo"], +"SecOOBiSecPEio": ["InitSec","InitSecOOB","InitSecOOBi","RespSec","RespSecPE","RespSecPEio","SecOOBiSecPEio"], +"SecOOBiSecNC": ["InitSec","InitSecOOB","InitSecOOBi","RespSec","RespSecNC","SecOOBiSecNC"], +"SecOOBiSecOOBi": ["InitSec","InitSecOOB","InitSecOOBi","RespSec","RespSecOOB","RespSecOOBi","SecOOBiSecOOBi"], +"SecOOBiSecOOBo": ["InitSec","InitSecOOB","InitSecOOBi","RespSec","RespSecOOB","RespSecOOBo","SecOOBiSecOOBo"], +"SecOOBiSecOOBio": ["InitSec","InitSecOOB","InitSecOOBi","RespSec","RespSecOOB","RespSecOOBio","SecOOBiSecOOBio"], +"SecOOBoSecJW": ["InitSec","InitSecOOB","InitSecOOBo","RespSec","RespSecJW","SecOOBoSecJW"], +"SecOOBoSecPEi": ["InitSec","InitSecOOB","InitSecOOBo","RespSec","RespSecPE","RespSecPEi","SecOOBoSecPEi"], +"SecOOBoSecPEo": ["InitSec","InitSecOOB","InitSecOOBo","RespSec","RespSecPE","RespSecPEo","SecOOBoSecPEo"], +"SecOOBoSecPEio": ["InitSec","InitSecOOB","InitSecOOBo","RespSec","RespSecPE","RespSecPEio","SecOOBoSecPEio"], +"SecOOBoSecNC": ["InitSec","InitSecOOB","InitSecOOBo","RespSec","RespSecNC","SecOOBoSecNC"], +"SecOOBoSecOOBi": ["InitSec","InitSecOOB","InitSecOOBo","RespSec","RespSecOOB","RespSecOOBi","SecOOBoSecOOBi"], +"SecOOBoSecOOBo": ["InitSec","InitSecOOB","InitSecOOBo","RespSec","RespSecOOB","RespSecOOBo","SecOOBoSecOOBo"], +"SecOOBoSecOOBio": ["InitSec","InitSecOOB","InitSecOOBo","RespSec","RespSecOOB","RespSecOOBio","SecOOBoSecOOBio"], +"SecOOBioSecJW": ["InitSec","InitSecOOB","InitSecOOBio","RespSec","RespSecJW","SecOOBioSecJW"], +"SecOOBioSecPEi": ["InitSec","InitSecOOB","InitSecOOBio","RespSec","RespSecPE","RespSecPEi","SecOOBioSecPEi"], +"SecOOBioSecPEo": ["InitSec","InitSecOOB","InitSecOOBio","RespSec","RespSecPE","RespSecPEo","SecOOBioSecPEo"], +"SecOOBioSecPEio": ["InitSec","InitSecOOB","InitSecOOBio","RespSec","RespSecPE","RespSecPEio","SecOOBioSecPEio"], +"SecOOBioSecNC": ["InitSec","InitSecOOB","InitSecOOBio","RespSec","RespSecNC","SecOOBioSecNC"], +"SecOOBioSecOOBi": ["InitSec","InitSecOOB","InitSecOOBio","RespSec","RespSecOOB","RespSecOOBi","SecOOBioSecOOBi"], +"SecOOBioSecOOBo": ["InitSec","InitSecOOB","InitSecOOBio","RespSec","RespSecOOB","RespSecOOBo","SecOOBioSecOOBo"], +"SecOOBioSecOOBio": ["InitSec","InitSecOOB","InitSecOOBio","RespSec","RespSecOOB","RespSecOOBio","SecOOBioSecOOBio"], +"LegPINiSecJW": ["InitLeg","InitLegPINi","RespSec","RespSecJW","LegPINiSecJW","InputInput","InputOutput","InputInout"], +"LegPINiSecPEi": ["InitLeg","InitLegPINi","RespSec","RespSecPE","RespSecPEi","LegPINiSecPEi","InputInput"], +"LegPINiSecPEo": ["InitLeg","InitLegPINi","RespSec","RespSecPE","RespSecPEo","LegPINiSecPEo","InputOutput"], +"LegPINiSecPEio": ["InitLeg","InitLegPINi","RespSec","RespSecPE","RespSecPEio","LegPINiSecPEio","InputInout"], +"LegPINiSecNC": ["InitLeg","InitLegPINi","RespSec","RespSecNC","LegPINiSecNC","InputOutput"], +"LegPINiSecOOBi": ["InitLeg","InitLegPINi","RespSec","RespSecOOB","RespSecOOBi","LegPINiSecOOBi","InputInput","InputOutput","InputInout"], +"LegPINiSecOOBo": ["InitLeg","InitLegPINi","RespSec","RespSecOOB","RespSecOOBo","LegPINiSecOOBo","InputInput","InputOutput","InputInout"], +"LegPINiSecOOBio": ["InitLeg","InitLegPINi","RespSec","RespSecOOB","RespSecOOBio","LegPINiSecOOBio","InputInput","InputOutput","InputInout"], +"LegPINoSecJW": ["InitLeg","InitLegPINo","RespSec","RespSecJW","LegPINoSecJW","OutputInput","OutputOutput","OutputInout"], +"LegPINoSecPEi": ["InitLeg","InitLegPINo","RespSec","RespSecPE","RespSecPEi","LegPINoSecPEi","OutputInput"], +"LegPINoSecPEo": ["InitLeg","InitLegPINo","RespSec","RespSecPE","RespSecPEo","LegPINoSecPEo","OutputOutput"], +"LegPINoSecPEio": ["InitLeg","InitLegPINo","RespSec","RespSecPE","RespSecPEio","LegPINoSecPEio","OutputInout"], +"LegPINoSecNC": ["InitLeg","InitLegPINo","RespSec","RespSecNC","LegPINoSecNC","OutputOutput"], +"LegPINoSecOOBi": ["InitLeg","InitLegPINo","RespSec","RespSecOOB","RespSecOOBi","LegPINoSecOOBi","OutputInput","OutputOutput","OutputInout"], +"LegPINoSecOOBo": ["InitLeg","InitLegPINo","RespSec","RespSecOOB","RespSecOOBo","LegPINoSecOOBo","OutputInput","OutputOutput","OutputInout"], +"LegPINoSecOOBio": ["InitLeg","InitLegPINo","RespSec","RespSecOOB","RespSecOOBio","LegPINoSecOOBio","OutputInput","OutputOutput","OutputInout"], +"LegPINioSecJW": ["InitLeg","InitLegPINio","RespSec","RespSecJW","LegPINioSecJW","InoutInput","InoutOutput","InoutInout"], +"LegPINioSecPEi": ["InitLeg","InitLegPINio","RespSec","RespSecPE","RespSecPEi","LegPINioSecPEi","InoutInput"], +"LegPINioSecPEo": ["InitLeg","InitLegPINio","RespSec","RespSecPE","RespSecPEo","LegPINioSecPEo","InoutOutput"], +"LegPINioSecPEio": ["InitLeg","InitLegPINio","RespSec","RespSecPE","RespSecPEio","LegPINioSecPEio","InoutInout"], +"LegPINioSecNC": ["InitLeg","InitLegPINio","RespSec","RespSecNC","LegPINioSecNC","InoutOutput"], +"LegPINioSecOOBi": ["InitLeg","InitLegPINio","RespSec","RespSecOOB","RespSecOOBi","LegPINioSecOOBi","InoutInput","InoutOutput","InoutInout"], +"LegPINioSecOOBo": ["InitLeg","InitLegPINio","RespSec","RespSecOOB","RespSecOOBo","LegPINioSecOOBo","InoutInput","InoutOutput","InoutInout"], +"LegPINioSecOOBio": ["InitLeg","InitLegPINio","RespSec","RespSecOOB","RespSecOOBio","LegPINioSecOOBio","InoutInput","InoutOutput","InoutInout"], +"SecJWLegPINi": ["InitSec","InitSecJW","RespLeg","RespLegPINi","SecJWLegPINi"], +"SecJWLegPINo": ["InitSec","InitSecJW","RespLeg","RespLegPINo","SecJWLegPINo"], +"SecJWLegPINio": ["InitSec","InitSecJW","RespLeg","RespLegPINio","SecJWLegPINio"], +"SecPEiLegPINi": ["InitSec","InitSecPE","InitSecPEi","RespLeg","RespLegPINi","SecPEiLegPINi","InputInput"], +"SecPEiLegPINo": ["InitSec","InitSecPE","InitSecPEi","RespLeg","RespLegPINo","SecPEiLegPINo","InputOutput"], +"SecPEiLegPINio": ["InitSec","InitSecPE","InitSecPEi","RespLeg","RespLegPINio","SecPEiLegPINio","InputInout"], +"SecPEoLegPINi": ["InitSec","InitSecPE","InitSecPEo","RespLeg","RespLegPINi","SecPEoLegPINi","OutputInput"], +"SecPEoLegPINo": ["InitSec","InitSecPE","InitSecPEo","RespLeg","RespLegPINo","SecPEoLegPINo","OutputOutput"], +"SecPEoLegPINio": ["InitSec","InitSecPE","InitSecPEo","RespLeg","RespLegPINio","SecPEoLegPINio","OutputInout"], +"SecPEioLegPINi": ["InitSec","InitSecPE","InitSecPEio","RespLeg","RespLegPINi","SecPEioLegPINi","InoutInput"], +"SecPEioLegPINo": ["InitSec","InitSecPE","InitSecPEio","RespLeg","RespLegPINo","SecPEioLegPINo","InoutOutput"], +"SecPEioLegPINio": ["InitSec","InitSecPE","InitSecPEio","RespLeg","RespLegPINio","SecPEioLegPINio","InoutInout"], +"SecNCLegPINi": ["InitSec","InitSecNC","RespLeg","RespLegPINi","SecNCLegPINi","OutputInput"], +"SecNCLegPINo": ["InitSec","InitSecNC","RespLeg","RespLegPINo","SecNCLegPINo","OutputOutput"], +"SecNCLegPINio": ["InitSec","InitSecNC","RespLeg","RespLegPINio","SecNCLegPINio","OutputInout"], +"SecOOBiLegPINi": ["InitSec","InitSecOOB","InitSecOOBi","RespLeg","RespLegPINi","SecOOBiLegPINi"], +"SecOOBiLegPINo": ["InitSec","InitSecOOB","InitSecOOBi","RespLeg","RespLegPINo","SecOOBiLegPINo"], +"SecOOBiLegPINio": ["InitSec","InitSecOOB","InitSecOOBi","RespLeg","RespLegPINio","SecOOBiLegPINio"], +"SecOOBoLegPINi": ["InitSec","InitSecOOB","InitSecOOBo","RespLeg","RespLegPINi","SecOOBoLegPINi"], +"SecOOBoLegPINo": ["InitSec","InitSecOOB","InitSecOOBo","RespLeg","RespLegPINo","SecOOBoLegPINo"], +"SecOOBoLegPINio": ["InitSec","InitSecOOB","InitSecOOBo","RespLeg","RespLegPINio","SecOOBoLegPINio"], +"SecOOBioLegPINi": ["InitSec","InitSecOOB","InitSecOOBio","RespLeg","RespLegPINi","SecOOBioLegPINi"], +"SecOOBioLegPINo": ["InitSec","InitSecOOB","InitSecOOBio","RespLeg","RespLegPINo","SecOOBioLegPINo"], +"SecOOBioLegPINio": ["InitSec","InitSecOOB","InitSecOOBio","RespLeg","RespLegPINio","SecOOBioLegPINio"], +} +*/ + +end diff --git a/examples/esorics23-bluetooth/models/mesh.spthy b/examples/esorics23-bluetooth/models/mesh.spthy new file mode 100644 index 000000000..0471417ea --- /dev/null +++ b/examples/esorics23-bluetooth/models/mesh.spthy @@ -0,0 +1,6848 @@ +theory BluetoothMeshProvisioning +begin + +builtins: diffie-hellman, symmetric-encryption + +functions: + aes_cmac/2, + null/0, // Constant representing the null bytestring + smk2/0, smk3/0, smk4/0, nb_one/0, nb_two/0, nb_three/0, id6/0, + id7/0, // This is called id64 in the specification, but there is a bug in Tamarin with symbols of arity 0 ending with two or more digits. + // Notation x00 is not understood as a function symbol and Tamarin fails to parse the file. However, x00() is properly understood. + // However, when extracting a subfile through macro selections, Tamarin removes the parenthesis and again fails to parse the subfile + s1/1, // Used as a hash function + k1/3, + k2/2, + k3/1, + k4/1, + aes_ccm_enc/3, aes_ccm_dec/3, aes_ccm_verify/4, // Encryption, decryption and verification + net_key/0 [private], // Network Key, unknown of the attacker + app_key/0 [private], // Application Key, unknown of the attacker + true_val/0, + prov_invite/0, prov_capabilities/0, prov_start/0, // Represent setup messages with constants + prov_complete/0, // Encpty message, which indicates completion of the protocol + static_oob/0 [private], + e/3, + extract_e/1 + +equations: + s1(m) = aes_cmac(null, m), + k1(n, salt, p) = aes_cmac(aes_cmac(salt, n), p), + k2(n, p) = ), aes_cmac(aes_cmac(s1(smk2()), n), ), p, nb_two>), aes_cmac(aes_cmac(s1(smk2()), n), ), p, nb_two>), p, nb_three>)>, + k3(n) = aes_cmac(aes_cmac(s1(smk3()), n), id7), + k4(n) = aes_cmac(aes_cmac(s1(smk4()), n), id6), + aes_ccm_dec(k, n, aes_ccm_enc(k, n, m)) = m, + aes_ccm_enc(k, n, aes_ccm_dec(k, n, m)) = m, + aes_ccm_verify(aes_ccm_enc(k, n, m), k, n, m) = true_val, + extract_e(e(t,s,n)) = n // Representation of a public key, allows the extraction of the public component + +#ifdef NoMalleableCMAC +#else +functions: + get_b1/3, // Get the first block of the cmac + get_b2/3 // Get the second block of the cmac + +equations: + get_b1(aes_cmac(k, ), k, b2) = b1, + get_b2(aes_cmac(k, ), k, b1) = b2, + get_b1(cnf, k, get_b2(cnf,dh,b1)) = b1, + get_b2(cnf, k, get_b1(cnf,dh,b2)) = b2, + aes_cmac(k, ) = c, + aes_cmac(k, ) = c +#endif + +#ifdef DevEoOOBno +rule DeviceDoEoOOBno: + [] + --[ + DeviceWillDoEoOOBno(), + DeviceOnlyOnceProv() + ]-> + [ + DeviceOOBKeyExchange(), + DeviceNoOOBAuth(), + DeviceStartProvisioning() + ] +#endif + +#ifdef DevEoOOBi +rule DeviceDoEoOOBi: + [] + --[ + DeviceWillDoEoOOBi(), + DeviceOnlyOnceProv() + ]-> + [ + DeviceOOBKeyExchange(), + DeviceInputOOBAuth(), + DeviceStartProvisioning() + ] +#endif + +#ifdef DevEoOOBo +rule DeviceDoEoOOBo: + [] + --[ + DeviceWillDoEoOOBo(), + DeviceOnlyOnceProv() + ]-> + [ + DeviceOOBKeyExchange(), + DeviceOutputOOBAuth(), + DeviceStartProvisioning() + ] +#endif + +#ifdef DevEoOOBs +rule DeviceDoEoOOBs: + [] + --[ + DeviceWillDoEoOOBo(), + DeviceOnlyOnceProv() + ]-> + [ + DeviceOOBKeyExchange(), + DeviceStaticOOBAuth(), + DeviceStartProvisioning() + ] +#endif + +#ifdef DevEiOOBno +rule DeviceDoEiOOBno: + [] + --[ + DeviceWillDoEiOOBno(), + DeviceOnlyOnceProv() + ]-> + [ + DeviceInbandKeyExchange(), + DeviceNoOOBAuth(), + DeviceStartProvisioning() + ] +#endif + +#ifdef DevEiOOBi +rule DeviceDoEiOOBi: + [] + --[ + DeviceWillDoEiOOBi(), + DeviceOnlyOnceProv() + ]-> + [ + DeviceInbandKeyExchange(), + DeviceInputOOBAuth(), + DeviceStartProvisioning() + ] +#endif + +#ifdef DevEiOOBo +rule DeviceDoEiOOBo: + [] + --[ + DeviceWillDoEiOOBo(), + DeviceOnlyOnceProv() + ]-> + [ + DeviceInbandKeyExchange(), + DeviceOutputOOBAuth(), + DeviceStartProvisioning() + ] +#endif + +#ifdef DevEiOOBs +rule DeviceDoEiOOBs: + [] + --[ + DeviceWillDoEiOOBo(), + DeviceOnlyOnceProv() + ]-> + [ + DeviceInbandKeyExchange(), + DeviceStaticOOBAuth(), + DeviceStartProvisioning() + ] +#endif + +#ifdef ProvEoOOBno +rule ProvisionerDoEoOOBno: + [] + --[ + ProvisionerWillDoEoOOBno(), + ProvisionerOnlyOnceProv() + ]-> + [ + ProvisionerOOBKeyExchange(), + ProvisionerNoOOBAuth(), + ProvisionerStartProvisioning() + ] +#endif + +#ifdef ProvEoOOBi +rule ProvisionerDoEoOOBi: + [] + --[ + ProvisionerWillDoEoOOBi(), + ProvisionerOnlyOnceProv() + ]-> + [ + ProvisionerOOBKeyExchange(), + ProvisionerInputOOBAuth(), + ProvisionerStartProvisioning() + ] +#endif + +#ifdef ProvEoOOBo +rule ProvisionerDoEoOOBo: + [] + --[ + ProvisionerWillDoEoOOBo(), + ProvisionerOnlyOnceProv() + ]-> + [ + ProvisionerOOBKeyExchange(), + ProvisionerOutputOOBAuth(), + ProvisionerStartProvisioning() + ] +#endif + +#ifdef ProvEoOOBs +rule ProvisionerDoEoOOBs: + [] + --[ + ProvisionerWillDoEoOOBo(), + ProvisionerOnlyOnceProv() + ]-> + [ + ProvisionerOOBKeyExchange(), + ProvisionerStaticOOBAuth(), + ProvisionerStartProvisioning() + ] +#endif + +#ifdef ProvEiOOBno +rule ProvisionerDoEiOOBno: + [] + --[ + ProvisionerWillDoEiOOBno(), + ProvisionerOnlyOnceProv() + ]-> + [ + ProvisionerInbandKeyExchange(), + ProvisionerNoOOBAuth(), + ProvisionerStartProvisioning() + ] +#endif + +#ifdef ProvEiOOBi +rule ProvisionerDoEiOOBi: + [] + --[ + ProvisionerWillDoEiOOBi(), + ProvisionerOnlyOnceProv() + ]-> + [ + ProvisionerInbandKeyExchange(), + ProvisionerInputOOBAuth(), + ProvisionerStartProvisioning() + ] +#endif + +#ifdef ProvEiOOBo +rule ProvisionerDoEiOOBo: + [] + --[ + ProvisionerWillDoEiOOBo(), + ProvisionerOnlyOnceProv() + ]-> + [ + ProvisionerInbandKeyExchange(), + ProvisionerOutputOOBAuth(), + ProvisionerStartProvisioning() + ] +#endif + +#ifdef ProvEiOOBs +rule ProvisionerDoEiOOBs: + [] + --[ + ProvisionerWillDoEiOOBo(), + ProvisionerOnlyOnceProv() + ]-> + [ + ProvisionerInbandKeyExchange(), + ProvisionerStaticOOBAuth(), + ProvisionerStartProvisioning() + ] +#endif + +/* Setup of the Provisioning protocol +The exchange of messages is the following: +P -> D: ProvisioningInvite +D -> P: ProvisioningCapabilities +P -> D: ProvisioningStart + +In Mesh implementations, those messages are used to choose which flavor of the Provisioning +protocol is used, based on type of authentication supported and type of key exchange supported. + +Here, those messages are represented as constants. +Because the model is ran on all combinations of key exchanges/authentication, all possible pairs +are already captured. +Hence, the content of those messages cannot lead to a case which is not already studied by +explicitely running the verification of lemmas on all possible pair of interactions, which is +why it's acceptable to represent them as constants. + +One element is not perfectly represented in the model; this is the size of the authentication parameter: +Bluetooth Mesh allows to choose authdata being 1..16 bytes long. + +The model currently models authdata as a fresh nonce of 16 bytes, hence it is not able to capture potential +brute force of this value if it had low entropy. +*/ + +rule ProvisionerSendProvInvite: + [ + ProvisionerStartProvisioning() + ] + --[]-> + [ + ProvisionerReadyToStart(), + Out(prov_invite) + ] + +rule DeviceSendProvCapabilities: + [ + DeviceStartProvisioning(), + In(prov_invite) + ] + --[]-> + [ + DeviceReadyToStart(), + Out(prov_capabilities) + ] + +rule ProvisionerSendStart: + [ + ProvisionerReadyToStart(), + In(prov_capabilities) + ] + --[]-> + [ + ProvisionerReadyECDH(), + Out(prov_start) + ] + +rule DeviceRecvStart: + [ + DeviceReadyToStart(), + In(prov_start) + ] + --[]-> + [ + DeviceReadyECDH() + ] + +#ifdef ProvEi +rule ProvisionerInBandKE: + let pkP = in + [ + ProvisionerReadyECDH(), + ProvisionerInbandKeyExchange(), + Fr(~ps) + ] + --[ + ProvisionerSentPublicKey(~ps, pkP) + ]-> + [ + ProvisionerSentPublicKey(~ps, pkP), + Out(pkP) + ] + +rule ProvisionerRecvPubKeyInBandKE: + [ + ProvisionerSentPublicKey(~ps, pkP), + In(pkD) + ] + --[ + ProvisionerComputeECDH(pkP, pkD, ~ps) + ]-> + [ + ProvisionerComputeECDH(pkP, pkD, ~ps) + ] +#endif + +#ifdef ProvECDH +rule ProvisionerDeriveNormalDHKey: + let + pkDx = e('C', DH_neutral, n) + pkD = + dhkey = e('C', r, n^~ps) // In Bluetooth, only X is taken + in + [ + ProvisionerComputeECDH(pkP, pkD, ~ps), + In(r) + ] + --[ + ValidPt(pkDx, pkDy), Raised('C', DH_neutral, r, ~ps), + ProvisionerFinishedKeyExchange(pkP, pkD, dhkey) + ]-> + [ + ProvisionerFinishedKeyExchange(pkP, pkD, dhkey) + ] +#endif + +#ifdef ProvECDHUnpatched +rule ProvisionerDeriveInvalidDHKey: + let + pkD = + pkDx = e(otx,osx,orx) + pkDy = e(oty,osy,ory) + dhkey = e(tx, rx, nx^~ps) // In Bluetooth, only X is taken + in + [ + ProvisionerComputeECDH(pkP, , ~ps), + In() + ] + --[ + InvalidPt(pkDx, pkDy), Raised(, , , ~ps), + ProvisionerFinishedKeyExchange(pkP, pkD, dhkey) + ]-> + [ + ProvisionerFinishedKeyExchange(pkP, pkD, dhkey) + ] +#endif + +#ifdef DevEi +rule DeviceInBandKE: + let pkD = in + [ + DeviceReadyECDH(), + DeviceInbandKeyExchange(), + Fr(~ds), + In(pkP) + ] + --[ + DeviceComputeECDH(pkD, pkP, ~ds) + ]-> + [ + DeviceComputeECDH(pkD, pkP, ~ds), + Out(pkD) + ] +#endif + +#ifdef DevECDH +rule DeviceDeriveNormalDHKey: + let + pkPx = e('C', DH_neutral, n) + pkP = + dhkey = e('C', r, n^~ds) // In Bluetooth, only X is taken + in + [ + DeviceComputeECDH(pkD, pkP, ~ds), + In(r) + ] + --[ + ValidPt(pkPx, pkPy), Raised('C', DH_neutral, r, ~ds), + DeviceFinishedKeyExchange(pkD, pkP, dhkey) + ]-> + [ + DeviceFinishedKeyExchange(pkD, pkP, dhkey) + ] +#endif + +#ifdef DevECDHUnpatched +rule DeviceDeriveInvalidDHKey: + let + pkP = + pkPx = e(otx,osx,orx) + pkPy = e(oty,osy,ory) + dhkey = e(tx, rx, nx^~ss) // In Bluetooth, only X is taken + in + [ + ProvisionerComputeECDH(pkD, , ~ds), + In() + ] + --[ + InvalidPt(pkPx, pkPy), Raised(, , , ~ss), + ProvisionerFinishedKeyExchange(pkD, pkP, dhkey) + ]-> + [ + ProvisionerFinishedKeyExchange(pkD, pkP, dhkey) + ] +#endif + +#ifdef ProvEo +rule ProvisionerOOBKeyExchange: + let pkP = in + [ + ProvisionerReadyECDH(), + ProvisionerOOBKeyExchange(), + Fr(~ps) + ] + --[ + ProvisionerTransmitOOBPublicKey(~ps, pkP) + ]-> + [ + ProvisionerTransmitOOBPublicKey(~ps, pkP), + KeyExchangeOOBChannel(pkP) + ] + +rule ProvisionerEndOOBKeyExchange: + [ + ProvisionerTransmitOOBPublicKey(~ps, pkP), + In(pkD) + ] + --[ + ProvisionerComputeECDH(pkP, pkD, ~ps) + ]-> + [ + ProvisionerComputeECDH(pkP, pkD, ~ps) + ] +#endif + +#ifdef DevEo +rule DeviceOOBKeyExchange: + let pkD = in + [ + DeviceReadyECDH(), + DeviceOOBKeyExchange(), + KeyExchangeOOBChannel(pkP), + Fr(~ds) + ] + --[ + DeviceComputeECDH(pkD, pkP, ~ds) + ]-> + [ + DeviceComputeECDH(pkD, pkP, ~ds), + Out(pkD) + ] +#endif + +#ifdef ProvOOBno +rule ProvisionerChooseNoAuth: + [ + ProvisionerFinishedKeyExchange(pkP, pkD, dh), + ProvisionerNoOOBAuth() + ] + --[]-> + [ + ProvisionerCanStartAuth(pkP, pkD, dh, '0') + ] +#endif + +#ifdef ProvOOBi +rule ProvisionerChooseInputAuth: + [ + ProvisionerFinishedKeyExchange(pkP, pkD, dh), + ProvisionerInputOOBAuth(), + Fr(~auth) + ] + --[]-> + [ + ProvisionerOutputAuthData(~auth), // If Input OOB is used, the Provisioner outputs a value, the user inputs it in the device + ProvisionerWaitingUserInteraction(pkP, pkD, dh), + LowEntropyAuthValue(~auth) + ] +#endif + +#ifdef ProvOOBo +rule ProvisionerChooseOutputAuth: + [ + ProvisionerFinishedKeyExchange(pkP, pkD, dh), + ProvisionerOutputOOBAuth() + ] + --[]-> + [ + ProvisionerInputAuthData(), // If Output OOB is used, the Device outputs a value, the user inputs it in the provisioner + ProvisionerWaitingUserInteraction(pkP, pkD, dh) + ] +#endif + +#ifdef ProvOOBs +rule ProvisionerChooseStaticAuth: + [ + ProvisionerFinishedKeyExchange(pkP, pkD, dh), + ProvisionerStaticOOBAuth() + ] + --[]-> + [ + ProvisionerStaticAuthData(), // If Static OOB is used, AuthData is exchanged using unspecified means + ProvisionerWaitingUserInteraction(pkP, pkD, dh) + ] +#endif + +#ifdef DevOOBno +rule DeviceChooseNoAuth: + [ + DeviceFinishedKeyExchange(pkD, pkP, dh), + DeviceNoOOBAuth() + ] + --[]-> + [ + DeviceCanStartAuth(pkD, pkP, dh, '0') + ] +#endif + +#ifdef DevOOBi +rule DeviceChooseInputAuth: + [ + DeviceFinishedKeyExchange(pkD, pkP, dh), + DeviceInputOOBAuth() + ] + --[]-> + [ + DeviceInputAuthData(), // If Input OOB is used, the Provisioner outputs a value, the user inputs it in the device + DeviceWaitingUserInteraction(pkD, pkP, dh) + ] +#endif + +#ifdef DevOOBo +rule DeviceChooseOutputAuth: + [ + DeviceFinishedKeyExchange(pkD, pkP, dh), + DeviceOutputOOBAuth(), + Fr(~auth) + ] + --[]-> + [ + DeviceOutputAuthData(~auth), // If Output OOB is used, the Device outputs a value, the user inputs it in the provisioner + DeviceWaitingUserInteraction(pkD, pkP, dh), + LowEntropyAuthValue(~auth) + ] +#endif + +#ifdef DevOOBs +rule DeviceChooseStaticAuth: + [ + DeviceFinishedKeyExchange(pkD, pkP, dh), + DeviceStaticOOBAuth() + ] + --[]-> + [ + DeviceStaticAuthData(), // If Static OOB is used, AuthData is exchanged using unspecified means + DeviceWaitingUserInteraction(pkD, pkP, dh) + ] +#endif + +rule ProvisionerWaitingUser: + [ + ProvisionerWaitingUserInteraction(pkP, pkD, dh), + ProvisionerAuthProceed(auth) + ] + --[ ]-> + [ + ProvisionerCanStartAuth(pkP, pkD, dh, auth) + ] + +rule DeviceWaitingUser: + [ + DeviceWaitingUserInteraction(pkD, pkP, dh), + DeviceAuthProceed(auth) + ] + --[ ]-> + [ + DeviceCanStartAuth(pkD, pkP, dh, auth) + ] + +rule ProvisionerSendConfirm: + let + confirmation_salt = s1() + ck = k1(dh, confirmation_salt, 'prck') + Cp = aes_cmac(ck, <~Np, auth>) + in + [ + ProvisionerCanStartAuth(pkP, pkD, dh, auth), + Fr(~Np) + ] + --[ + ProvisionerSendConfirm(pkP, pkD, dh, ck, ~Np, auth) + ]-> + [ + ProvisionerSendConfirm(pkP, pkD, dh, ck, ~Np, auth), + Out(Cp) + ] + +#ifdef PatchProvisioning2 +rule DeviceSendConfirm: + let + confirmation_salt = s1() + ck = k1(dh, confirmation_salt, 'prck') + Cd = aes_cmac(ck, ) + in + [ + DeviceCanStartAuth(pkD, pkP, dh, auth), + Fr(~Nd), + In(Cp) + ] + --[ + DeviceSendConfirm(pkD, pkP, dh, ck, ~Nd, Cp, auth) + ]-> + [ + DeviceSendConfirm(pkD, pkP, dh, ck, ~Nd, Cp, auth), + Out(Cd) + ] + +#else +rule DeviceSendConfirm: + let + confirmation_salt = s1() + ck = k1(dh, confirmation_salt, 'prck') + Cd = aes_cmac(ck, <~Nd, auth>) + in + [ + DeviceCanStartAuth(pkD, pkP, dh, auth), + Fr(~Nd), + In(Cp) + ] + --[ + DeviceSendConfirm(pkD, pkP, dh, ck, ~Nd, Cp, auth) + ]-> + [ + DeviceSendConfirm(pkD, pkP, dh, ck, ~Nd, Cp, auth), + Out(Cd) + ] +#endif + +#ifdef PatchProvisioning1 +rule ProvisionerSendRandom: + [ + ProvisionerSendConfirm(pkP, pkD, dh, ck, ~Np, auth), + In(Cd) + ] + --[ + NotEq(aes_cmac(ck, <~Np, auth>), Cd), + ProvisionerSendRandom(pkP, pkD, dh, ck, ~Np, Cd, auth) + ]-> + [ + ProvisionerSendRandom(pkP, pkD, dh, ck, ~Np, Cd, auth), + Out(~Np) + ] + +#else + +rule ProvisionerSendRandom: + [ + ProvisionerSendConfirm(pkP, pkD, dh, ck, ~Np, auth), + In(Cd) + ] + --[ + ProvisionerSendRandom(pkP, pkD, dh, ck, ~Np, Cd, auth) + ]-> + [ + ProvisionerSendRandom(pkP, pkD, dh, ck, ~Np, Cd, auth), + Out(~Np) + ] +#endif + +rule DeviceSendRandom: + let computed_Cp = aes_cmac(ck, ) in + [ + DeviceSendConfirm(pkD, pkP, dh, ck, ~Nd, computed_Cp, auth), + In(Np) + ] + --[ + DeviceSendRandom(pkD, pkP, dh, ck, ~Nd, Np, auth) + ]-> + [ + DeviceSendRandom(pkD, pkP, dh, ck, ~Nd, Np, auth), + Out(~Nd) + ] + +#ifdef PatchProvisioning2 +rule ProvisionerRecvRandom: + let + computed_Cd = aes_cmac(ck, ) + in + [ + ProvisionerSendRandom(pkP, pkD, dh, ck, ~Np, computed_Cd, auth), + In(Nd) + ] + --[ + ProvisionerRecvRandom(pkP, pkD, dh, ck, ~Np, Nd, auth) + ]-> + [ + ProvisionerRecvRandom(pkP, pkD, dh, ck, ~Np, Nd, auth) + ] + +#else +rule ProvisionerRecvRandom: + let + computed_Cd = aes_cmac(ck, ) + in + [ + ProvisionerSendRandom(pkP, pkD, dh, ck, ~Np, computed_Cd, auth), + In(Nd) + ] + --[ + ProvisionerRecvRandom(pkP, pkD, dh, ck, ~Np, Nd, auth) + ]-> + [ + ProvisionerRecvRandom(pkP, pkD, dh, ck, ~Np, Nd, auth) + ] +#endif + +rule ProvisionerSendNetKey: + let + confirmation_salt = s1() + provisioning_salt = s1() + sk = k1(dh, provisioning_salt, 'prsk') + sn = k1(dh, provisioning_salt, 'prsn') + dev_key = k1(dh, provisioning_salt, 'prdk') + in + [ + ProvisionerRecvRandom(pkP, pkD, dh, ck, ~Np, Nd, auth) + ] + --[ + ProvisionerSendNetKey(pkP, pkD, dh, ck, ~Np, Nd, sk, net_key, dev_key) + ]-> + [ + ProvisionerSendNetKey(pkP, pkD, dh, ck, ~Np, Nd, sk, net_key, dev_key), + Out(aes_ccm_enc(sk, sn, net_key)) // Represents the ProvisioningData message which contains NetKey + ] + +rule DeviceRecvNetKey: + let + confirmation_salt = s1() + provisioning_salt = s1() + sk = k1(dh, provisioning_salt, 'prsk') + sn = k1(dh, provisioning_salt, 'prsn') + dev_key = k1(dh, provisioning_salt, 'prdk') + dec_net_key = aes_ccm_dec(sk, sn, prov_data) // Explicit decryption, to verify the correctness of the model + in + [ + DeviceSendRandom(pkD, pkP, dh, ck, ~Nd, Np, auth), + In(prov_data) + ] + --[ + IsTrue(aes_ccm_verify(prov_data, sk, sn, dec_net_key)), + DeviceRecvNetKey(pkD, pkP, dh, ck, ~Nd, Np, sk, dec_net_key, dev_key), + DeviceFinishedProvisioning(pkD, pkP, dh, ck, ~Nd, Np, sk, dec_net_key, dev_key) + ]-> + [ + DeviceRecvNetKey(pkD, pkP, dh, ck, ~Nd, Np, sk, dec_net_key, dev_key), + DeviceFinishedProvisioning(pkD, pkP, dh, ck, ~Nd, Np, sk, dec_net_key, dev_key), + Out(prov_complete) + ] + +rule ProvisionerEndProvisioning: + [ + ProvisionerSendNetKey(pkP, pkD, dh, ck, ~Np, Nd, sk, nk, dev_key), + In(prov_complete) + ] + --[ + ProvisionerFinishedProvisioning(pkP, pkD, dh, ck, ~Np, Nd, sk, nk, dev_key, app_key) + ]-> + [ + ProvisionerFinishedProvisioning(pkP, pkD, dh, ck, ~Np, Nd, sk, nk, dev_key, app_key), + Out(aes_ccm_enc(dev_key, '0', app_key)) + //Out(senc(app_key, dev_key)) + ] + +rule DeviceEndKeyDistribution: + let dec_app_key = aes_ccm_dec(dev_key, '0', c) in + //let dec_app_key = sdec(c, dev_key) in + [ + DeviceRecvNetKey(pkD, pkP, dh, ck, ~Nd, Np, sk, nk, dev_key), + In(c) + ] + --[ + IsTrue(aes_ccm_verify(c, dev_key, '0', dec_app_key)), + DeviceFinishedKeyDistribution(pkD, pkP, dh, ck, ~Nd, Np, sk, nk, dev_key, dec_app_key) + ]-> + [ + DeviceFinishedKeyDistribution(pkD, pkP, dh, ck, ~Nd, Np, sk, nk, dev_key, dec_app_key) + ] + +/* User interaction module */ + +rule InputOOBAuth: + [ + ProvisionerOutputAuthData(auth), + DeviceInputAuthData() + ] + --[ ]-> + [ + ProvisionerAuthProceed(auth), + DeviceAuthProceed(auth) + ] + +rule OutputOOBAuth: + [ + ProvisionerInputAuthData(), + DeviceOutputAuthData(auth) + ] + --[ ]-> + [ + ProvisionerAuthProceed(auth), + DeviceAuthProceed(auth) + ] + +rule ProvStaticOOBAuth: + [ + ProvisionerStaticAuthData() + ] + --[ ]-> + [ + ProvisionerAuthProceed(static_oob) + ] + +rule DevStaticOOBAuth: + [ + DeviceStaticAuthData() + ] + --[ ]-> + [ + DeviceAuthProceed(static_oob) + ] + +/* End of user interaction module */ + +/* Oracle for retrieving short AuthValue */ +#ifdef NoLowEntropyAuthValue +#else +rule OracleAuthValue: + [ + LowEntropyAuthValue(auth), + In(aes_cmac(ck, )), + In(N), + In(ck) + ] + --[ AttackerRetrieveAuthValue(ck,N,auth) ]-> + [ + Out(auth) + ] +#endif + +/* End of Oracle */ + +restriction DeviceOnlyOnceProv: +"All #i #j. DeviceOnlyOnceProv() @i & DeviceOnlyOnceProv() @j ==> #i = #j" + + +restriction ProvisionerOnlyOnceProv: +"All #i #j. ProvisionerOnlyOnceProv() @i & ProvisionerOnlyOnceProv() @j ==> #i = #j" + +restriction IsTrue: +"All t #i. IsTrue(t) @i ==> t = true_val" + +restriction NotEq: +"All c #i. (NotEq(c, c) @i) ==> F" + +// For ECDH model +restriction DHConsistency: + "All t s r1 r2 y #i #j . + Raised(t,s,r1,y) @ i & Raised(t,s,r2,y) @j + ==> r1 = r2" + +restriction DHIdentity: + "All t r y #i . + Raised(t,DH_neutral,r,y) @ i ==> r = DH_neutral" + +restriction ValidPt: + "∀ x y #i. + (ValidPt(x,y) @ #i) ⇒ (x = y)" + +restriction InvalidPt: + "∀ x #i. + (InvalidPt(x,x) @ #i) ⇒ F" + +/*****************************************/ +/* Lemmas about EiOOBno-EiOOBno exchange */ +/*****************************************/ + +#ifdef EiOOBnoEiOOBno +lemma EiOOBno_EiOOBno_functional: exists-trace +" +Ex pkP1 pkD1 pkP2 pkD2 dh1 dh2 ck1 ck2 np1 np2 nd1 nd2 sk1 sk2 nk1 nk2 dk1 dk2 ak1 ak2 #i #j. + DeviceFinishedKeyDistribution(pkD1, pkP1, dh1, ck1, nd1, np1, sk1, nk1, dk1, ak1) @i & + ProvisionerFinishedProvisioning(pkP2, pkD2, dh2, ck2, np2, nd2, sk2, nk2, dk2, ak2) @j +" + +lemma EiOOBno_EiOOBno_auth_prov: +" +All pkP pkD dh ck np nd sk nk dk ak #i. + ProvisionerFinishedProvisioning(pkP, pkD, dh, ck, np, nd, sk, nk, dk, ak) @i ==> + ( + Ex #j. + DeviceFinishedProvisioning(pkD, pkP, dh, ck, nd, np, sk, nk, dk) @j + ) +" + +lemma EiOOBno_EiOOBno_auth_dev: +" +All pkP pkD dh ck np nd sk nk dk ak #i. + DeviceFinishedKeyDistribution(pkD, pkP, dh, ck, nd, np, sk, nk, dk, ak) @i ==> + ( + Ex #j. + ProvisionerFinishedProvisioning(pkP, pkD, dh, ck, np, nd, sk, nk, dk, ak) @j + ) +" + +lemma EiOOBno_EiOOBno_weaksecret_nk_prov: +" +All pkP pkD dh ck np nd sk nk dk ak #i. + ProvisionerFinishedProvisioning(pkP, pkD, dh, ck, np, nd, sk, nk, dk, ak) @i ==> + not (Ex #j. K(nk) @j) +" + +lemma EiOOBno_EiOOBno_weaksecret_dk_prov: +" +All pkP pkD dh ck np nd sk nk dk ak #i. + ProvisionerFinishedProvisioning(pkP, pkD, dh, ck, np, nd, sk, nk, dk, ak) @i ==> + not (Ex #j. K(dk) @j) +" + +lemma EiOOBno_EiOOBno_weaksecret_ak_prov: +" +All pkP pkD dh ck np nd sk nk dk ak #i. + ProvisionerFinishedProvisioning(pkP, pkD, dh, ck, np, nd, sk, nk, dk, ak) @i ==> + not (Ex #j. K(ak) @j) +" + +lemma EiOOBno_EiOOBno_weaksecret_nk_dev: +" +All pkP pkD dh ck np nd sk nk dk ak #i. + DeviceFinishedKeyDistribution(pkD, pkP, dh, ck, nd, np, sk, nk, dk, ak) @i ==> + not (Ex #j. K(nk) @j) +" + +lemma EiOOBno_EiOOBno_weaksecret_dk_dev: +" +All pkP pkD dh ck np nd sk nk dk ak #i. + DeviceFinishedKeyDistribution(pkD, pkP, dh, ck, nd, np, sk, nk, dk, ak) @i ==> + not (Ex #j. K(dk) @j) +" + +lemma EiOOBno_EiOOBno_weaksecret_ak_dev: +" +All pkP pkD dh ck np nd sk nk dk ak #i. + DeviceFinishedKeyDistribution(pkD, pkP, dh, ck, nd, np, sk, nk, dk, ak) @i ==> + not (Ex #j. K(ak) @j) +" + +lemma EiOOBno_EiOOBno_double_impersonation: +" +All pkP1 pkD1 pkP2 pkD2 dh1 dh2 ck1 ck2 np1 np2 nd1 nd2 sk1 sk2 nk1 nk2 dk1 dk2 ak1 ak2 #i #j. + DeviceFinishedKeyDistribution(pkD1, pkP1, dh1, ck1, nd1, np1, sk1, nk1, dk1, ak1) @i & + ProvisionerFinishedProvisioning(pkP2, pkD2, dh2, ck2, np2, nd2, sk2, nk2, dk2, ak2) @j ==> + not (Ex #k1 #k2 #k3 #k4 . + K(nk1) @k1 & K(dk1) @k2 & K(nk2) @k3 & K(dk2) @k4 + ) +" + +#endif + +/*********************************************/ +/* End lemmas about EiOOBno-EiOOBno exchange */ +/*********************************************/ + +/****************************************/ +/* Lemmas about EiOOBno-EiOOBi exchange */ +/****************************************/ + +#ifdef EiOOBnoEiOOBi +lemma EiOOBno_EiOOBi_functional: exists-trace +" +Ex pkP1 pkD1 pkP2 pkD2 dh1 dh2 ck1 ck2 np1 np2 nd1 nd2 sk1 sk2 nk1 nk2 dk1 dk2 ak1 ak2 #i #j. + DeviceFinishedKeyDistribution(pkD1, pkP1, dh1, ck1, nd1, np1, sk1, nk1, dk1, ak1) @i & + ProvisionerFinishedProvisioning(pkP2, pkD2, dh2, ck2, np2, nd2, sk2, nk2, dk2, ak2) @j +" + +lemma EiOOBno_EiOOBi_auth_prov: +" +All pkP pkD dh ck np nd sk nk dk ak #i. + ProvisionerFinishedProvisioning(pkP, pkD, dh, ck, np, nd, sk, nk, dk, ak) @i ==> + ( + Ex #j. + DeviceFinishedProvisioning(pkD, pkP, dh, ck, nd, np, sk, nk, dk) @j + ) +" + +lemma EiOOBno_EiOOBi_auth_dev: +" +All pkP pkD dh ck np nd sk nk dk ak #i. + DeviceFinishedKeyDistribution(pkD, pkP, dh, ck, nd, np, sk, nk, dk, ak) @i ==> + ( + Ex #j. + ProvisionerFinishedProvisioning(pkP, pkD, dh, ck, np, nd, sk, nk, dk, ak) @j + ) +" + +lemma EiOOBno_EiOOBi_weaksecret_nk_prov: +" +All pkP pkD dh ck np nd sk nk dk ak #i. + ProvisionerFinishedProvisioning(pkP, pkD, dh, ck, np, nd, sk, nk, dk, ak) @i ==> + not (Ex #j. K(nk) @j) +" + +lemma EiOOBno_EiOOBi_weaksecret_dk_prov: +" +All pkP pkD dh ck np nd sk nk dk ak #i. + ProvisionerFinishedProvisioning(pkP, pkD, dh, ck, np, nd, sk, nk, dk, ak) @i ==> + not (Ex #j. K(dk) @j) +" + +lemma EiOOBno_EiOOBi_weaksecret_ak_prov: +" +All pkP pkD dh ck np nd sk nk dk ak #i. + ProvisionerFinishedProvisioning(pkP, pkD, dh, ck, np, nd, sk, nk, dk, ak) @i ==> + not (Ex #j. K(ak) @j) +" + +lemma EiOOBno_EiOOBi_weaksecret_nk_dev: +" +All pkP pkD dh ck np nd sk nk dk ak #i. + DeviceFinishedKeyDistribution(pkD, pkP, dh, ck, nd, np, sk, nk, dk, ak) @i ==> + not (Ex #j. K(nk) @j) +" + +lemma EiOOBno_EiOOBi_weaksecret_dk_dev: +" +All pkP pkD dh ck np nd sk nk dk ak #i. + DeviceFinishedKeyDistribution(pkD, pkP, dh, ck, nd, np, sk, nk, dk, ak) @i ==> + not (Ex #j. K(dk) @j) +" + +lemma EiOOBno_EiOOBi_weaksecret_ak_dev: +" +All pkP pkD dh ck np nd sk nk dk ak #i. + DeviceFinishedKeyDistribution(pkD, pkP, dh, ck, nd, np, sk, nk, dk, ak) @i ==> + not (Ex #j. K(ak) @j) +" + +lemma EiOOBno_EiOOBi_double_impersonation: +" +All pkP1 pkD1 pkP2 pkD2 dh1 dh2 ck1 ck2 np1 np2 nd1 nd2 sk1 sk2 nk1 nk2 dk1 dk2 ak1 ak2 #i #j. + DeviceFinishedKeyDistribution(pkD1, pkP1, dh1, ck1, nd1, np1, sk1, nk1, dk1, ak1) @i & + ProvisionerFinishedProvisioning(pkP2, pkD2, dh2, ck2, np2, nd2, sk2, nk2, dk2, ak2) @j ==> + not (Ex #k1 #k2 #k3 #k4 . + K(nk1) @k1 & K(dk1) @k2 & K(nk2) @k3 & K(dk2) @k4 + ) +" + +#endif + +/********************************************/ +/* End lemmas about EiOOBno-EiOOBi exchange */ +/********************************************/ + +/****************************************/ +/* Lemmas about EiOOBno-EiOOBo exchange */ +/****************************************/ + +#ifdef EiOOBnoEiOOBo +lemma EiOOBno_EiOOBo_functional: exists-trace +" +Ex pkP1 pkD1 pkP2 pkD2 dh1 dh2 ck1 ck2 np1 np2 nd1 nd2 sk1 sk2 nk1 nk2 dk1 dk2 ak1 ak2 #i #j. + DeviceFinishedKeyDistribution(pkD1, pkP1, dh1, ck1, nd1, np1, sk1, nk1, dk1, ak1) @i & + ProvisionerFinishedProvisioning(pkP2, pkD2, dh2, ck2, np2, nd2, sk2, nk2, dk2, ak2) @j +" + +lemma EiOOBno_EiOOBo_auth_prov: +" +All pkP pkD dh ck np nd sk nk dk ak #i. + ProvisionerFinishedProvisioning(pkP, pkD, dh, ck, np, nd, sk, nk, dk, ak) @i ==> + ( + Ex #j. + DeviceFinishedProvisioning(pkD, pkP, dh, ck, nd, np, sk, nk, dk) @j + ) +" + +lemma EiOOBno_EiOOBo_auth_dev: +" +All pkP pkD dh ck np nd sk nk dk ak #i. + DeviceFinishedKeyDistribution(pkD, pkP, dh, ck, nd, np, sk, nk, dk, ak) @i ==> + ( + Ex #j. + ProvisionerFinishedProvisioning(pkP, pkD, dh, ck, np, nd, sk, nk, dk, ak) @j + ) +" + +lemma EiOOBno_EiOOBo_weaksecret_nk_prov: +" +All pkP pkD dh ck np nd sk nk dk ak #i. + ProvisionerFinishedProvisioning(pkP, pkD, dh, ck, np, nd, sk, nk, dk, ak) @i ==> + not (Ex #j. K(nk) @j) +" + +lemma EiOOBno_EiOOBo_weaksecret_dk_prov: +" +All pkP pkD dh ck np nd sk nk dk ak #i. + ProvisionerFinishedProvisioning(pkP, pkD, dh, ck, np, nd, sk, nk, dk, ak) @i ==> + not (Ex #j. K(dk) @j) +" + +lemma EiOOBno_EiOOBo_weaksecret_ak_prov: +" +All pkP pkD dh ck np nd sk nk dk ak #i. + ProvisionerFinishedProvisioning(pkP, pkD, dh, ck, np, nd, sk, nk, dk, ak) @i ==> + not (Ex #j. K(ak) @j) +" + +lemma EiOOBno_EiOOBo_weaksecret_nk_dev: +" +All pkP pkD dh ck np nd sk nk dk ak #i. + DeviceFinishedKeyDistribution(pkD, pkP, dh, ck, nd, np, sk, nk, dk, ak) @i ==> + not (Ex #j. K(nk) @j) +" + +lemma EiOOBno_EiOOBo_weaksecret_dk_dev: +" +All pkP pkD dh ck np nd sk nk dk ak #i. + DeviceFinishedKeyDistribution(pkD, pkP, dh, ck, nd, np, sk, nk, dk, ak) @i ==> + not (Ex #j. K(dk) @j) +" + +lemma EiOOBno_EiOOBo_weaksecret_ak_dev: +" +All pkP pkD dh ck np nd sk nk dk ak #i. + DeviceFinishedKeyDistribution(pkD, pkP, dh, ck, nd, np, sk, nk, dk, ak) @i ==> + not (Ex #j. K(ak) @j) +" + +lemma EiOOBno_EiOOBo_double_impersonation: +" +All pkP1 pkD1 pkP2 pkD2 dh1 dh2 ck1 ck2 np1 np2 nd1 nd2 sk1 sk2 nk1 nk2 dk1 dk2 ak1 ak2 #i #j. + DeviceFinishedKeyDistribution(pkD1, pkP1, dh1, ck1, nd1, np1, sk1, nk1, dk1, ak1) @i & + ProvisionerFinishedProvisioning(pkP2, pkD2, dh2, ck2, np2, nd2, sk2, nk2, dk2, ak2) @j ==> + not (Ex #k1 #k2 #k3 #k4 . + K(nk1) @k1 & K(dk1) @k2 & K(nk2) @k3 & K(dk2) @k4 + ) +" + +#endif + +/********************************************/ +/* End lemmas about EiOOBno-EiOOBo exchange */ +/********************************************/ + +/****************************************/ +/* Lemmas about EiOOBno-EiOOBs exchange */ +/****************************************/ + +#ifdef EiOOBnoEiOOBs +lemma EiOOBno_EiOOBs_functional: exists-trace +" +Ex pkP1 pkD1 pkP2 pkD2 dh1 dh2 ck1 ck2 np1 np2 nd1 nd2 sk1 sk2 nk1 nk2 dk1 dk2 ak1 ak2 #i #j. + DeviceFinishedKeyDistribution(pkD1, pkP1, dh1, ck1, nd1, np1, sk1, nk1, dk1, ak1) @i & + ProvisionerFinishedProvisioning(pkP2, pkD2, dh2, ck2, np2, nd2, sk2, nk2, dk2, ak2) @j +" + +lemma EiOOBno_EiOOBs_auth_prov: +" +All pkP pkD dh ck np nd sk nk dk ak #i. + ProvisionerFinishedProvisioning(pkP, pkD, dh, ck, np, nd, sk, nk, dk, ak) @i ==> + ( + Ex #j. + DeviceFinishedProvisioning(pkD, pkP, dh, ck, nd, np, sk, nk, dk) @j + ) +" + +lemma EiOOBno_EiOOBs_auth_dev: +" +All pkP pkD dh ck np nd sk nk dk ak #i. + DeviceFinishedKeyDistribution(pkD, pkP, dh, ck, nd, np, sk, nk, dk, ak) @i ==> + ( + Ex #j. + ProvisionerFinishedProvisioning(pkP, pkD, dh, ck, np, nd, sk, nk, dk, ak) @j + ) +" + +lemma EiOOBno_EiOOBs_weaksecret_nk_prov: +" +All pkP pkD dh ck np nd sk nk dk ak #i. + ProvisionerFinishedProvisioning(pkP, pkD, dh, ck, np, nd, sk, nk, dk, ak) @i ==> + not (Ex #j. K(nk) @j) +" + +lemma EiOOBno_EiOOBs_weaksecret_dk_prov: +" +All pkP pkD dh ck np nd sk nk dk ak #i. + ProvisionerFinishedProvisioning(pkP, pkD, dh, ck, np, nd, sk, nk, dk, ak) @i ==> + not (Ex #j. K(dk) @j) +" + +lemma EiOOBno_EiOOBs_weaksecret_ak_prov: +" +All pkP pkD dh ck np nd sk nk dk ak #i. + ProvisionerFinishedProvisioning(pkP, pkD, dh, ck, np, nd, sk, nk, dk, ak) @i ==> + not (Ex #j. K(ak) @j) +" + +lemma EiOOBno_EiOOBs_weaksecret_nk_dev: +" +All pkP pkD dh ck np nd sk nk dk ak #i. + DeviceFinishedKeyDistribution(pkD, pkP, dh, ck, nd, np, sk, nk, dk, ak) @i ==> + not (Ex #j. K(nk) @j) +" + +lemma EiOOBno_EiOOBs_weaksecret_dk_dev: +" +All pkP pkD dh ck np nd sk nk dk ak #i. + DeviceFinishedKeyDistribution(pkD, pkP, dh, ck, nd, np, sk, nk, dk, ak) @i ==> + not (Ex #j. K(dk) @j) +" + +lemma EiOOBno_EiOOBs_weaksecret_ak_dev: +" +All pkP pkD dh ck np nd sk nk dk ak #i. + DeviceFinishedKeyDistribution(pkD, pkP, dh, ck, nd, np, sk, nk, dk, ak) @i ==> + not (Ex #j. K(ak) @j) +" + +lemma EiOOBno_EiOOBs_double_impersonation: +" +All pkP1 pkD1 pkP2 pkD2 dh1 dh2 ck1 ck2 np1 np2 nd1 nd2 sk1 sk2 nk1 nk2 dk1 dk2 ak1 ak2 #i #j. + DeviceFinishedKeyDistribution(pkD1, pkP1, dh1, ck1, nd1, np1, sk1, nk1, dk1, ak1) @i & + ProvisionerFinishedProvisioning(pkP2, pkD2, dh2, ck2, np2, nd2, sk2, nk2, dk2, ak2) @j ==> + not (Ex #k1 #k2 #k3 #k4 . + K(nk1) @k1 & K(dk1) @k2 & K(nk2) @k3 & K(dk2) @k4 + ) +" + +#endif + +/********************************************/ +/* End lemmas about EiOOBno-EiOOBs exchange */ +/********************************************/ + +/****************************************/ +/* Lemmas about EiOOBi-EiOOBno exchange */ +/****************************************/ + +#ifdef EiOOBiEiOOBno +lemma EiOOBi_EiOOBno_functional: exists-trace +" +Ex pkP1 pkD1 pkP2 pkD2 dh1 dh2 ck1 ck2 np1 np2 nd1 nd2 sk1 sk2 nk1 nk2 dk1 dk2 ak1 ak2 #i #j. + DeviceFinishedKeyDistribution(pkD1, pkP1, dh1, ck1, nd1, np1, sk1, nk1, dk1, ak1) @i & + ProvisionerFinishedProvisioning(pkP2, pkD2, dh2, ck2, np2, nd2, sk2, nk2, dk2, ak2) @j +" + +lemma EiOOBi_EiOOBno_auth_prov: +" +All pkP pkD dh ck np nd sk nk dk ak #i. + ProvisionerFinishedProvisioning(pkP, pkD, dh, ck, np, nd, sk, nk, dk, ak) @i ==> + ( + Ex #j. + DeviceFinishedProvisioning(pkD, pkP, dh, ck, nd, np, sk, nk, dk) @j + ) +" + +lemma EiOOBi_EiOOBno_auth_dev: +" +All pkP pkD dh ck np nd sk nk dk ak #i. + DeviceFinishedKeyDistribution(pkD, pkP, dh, ck, nd, np, sk, nk, dk, ak) @i ==> + ( + Ex #j. + ProvisionerFinishedProvisioning(pkP, pkD, dh, ck, np, nd, sk, nk, dk, ak) @j + ) +" + +lemma EiOOBi_EiOOBno_weaksecret_nk_prov: +" +All pkP pkD dh ck np nd sk nk dk ak #i. + ProvisionerFinishedProvisioning(pkP, pkD, dh, ck, np, nd, sk, nk, dk, ak) @i ==> + not (Ex #j. K(nk) @j) +" + +lemma EiOOBi_EiOOBno_weaksecret_dk_prov: +" +All pkP pkD dh ck np nd sk nk dk ak #i. + ProvisionerFinishedProvisioning(pkP, pkD, dh, ck, np, nd, sk, nk, dk, ak) @i ==> + not (Ex #j. K(dk) @j) +" + +lemma EiOOBi_EiOOBno_weaksecret_ak_prov: +" +All pkP pkD dh ck np nd sk nk dk ak #i. + ProvisionerFinishedProvisioning(pkP, pkD, dh, ck, np, nd, sk, nk, dk, ak) @i ==> + not (Ex #j. K(ak) @j) +" + +lemma EiOOBi_EiOOBno_weaksecret_nk_dev: +" +All pkP pkD dh ck np nd sk nk dk ak #i. + DeviceFinishedKeyDistribution(pkD, pkP, dh, ck, nd, np, sk, nk, dk, ak) @i ==> + not (Ex #j. K(nk) @j) +" + +lemma EiOOBi_EiOOBno_weaksecret_dk_dev: +" +All pkP pkD dh ck np nd sk nk dk ak #i. + DeviceFinishedKeyDistribution(pkD, pkP, dh, ck, nd, np, sk, nk, dk, ak) @i ==> + not (Ex #j. K(dk) @j) +" + +lemma EiOOBi_EiOOBno_weaksecret_ak_dev: +" +All pkP pkD dh ck np nd sk nk dk ak #i. + DeviceFinishedKeyDistribution(pkD, pkP, dh, ck, nd, np, sk, nk, dk, ak) @i ==> + not (Ex #j. K(ak) @j) +" + +lemma EiOOBi_EiOOBno_double_impersonation: +" +All pkP1 pkD1 pkP2 pkD2 dh1 dh2 ck1 ck2 np1 np2 nd1 nd2 sk1 sk2 nk1 nk2 dk1 dk2 ak1 ak2 #i #j. + DeviceFinishedKeyDistribution(pkD1, pkP1, dh1, ck1, nd1, np1, sk1, nk1, dk1, ak1) @i & + ProvisionerFinishedProvisioning(pkP2, pkD2, dh2, ck2, np2, nd2, sk2, nk2, dk2, ak2) @j ==> + not (Ex #k1 #k2 #k3 #k4 . + K(nk1) @k1 & K(dk1) @k2 & K(nk2) @k3 & K(dk2) @k4 + ) +" + +#endif + +/********************************************/ +/* End lemmas about EiOOBi-EiOOBno exchange */ +/********************************************/ + +/***************************************/ +/* Lemmas about EiOOBi-EiOOBi exchange */ +/***************************************/ + +#ifdef EiOOBiEiOOBi +lemma EiOOBi_EiOOBi_functional: exists-trace +" +Ex pkP1 pkD1 pkP2 pkD2 dh1 dh2 ck1 ck2 np1 np2 nd1 nd2 sk1 sk2 nk1 nk2 dk1 dk2 ak1 ak2 #i #j. + DeviceFinishedKeyDistribution(pkD1, pkP1, dh1, ck1, nd1, np1, sk1, nk1, dk1, ak1) @i & + ProvisionerFinishedProvisioning(pkP2, pkD2, dh2, ck2, np2, nd2, sk2, nk2, dk2, ak2) @j +" + +lemma EiOOBi_EiOOBi_auth_prov: +" +All pkP pkD dh ck np nd sk nk dk ak #i. + ProvisionerFinishedProvisioning(pkP, pkD, dh, ck, np, nd, sk, nk, dk, ak) @i ==> + ( + Ex #j. + DeviceFinishedProvisioning(pkD, pkP, dh, ck, nd, np, sk, nk, dk) @j + ) +" + +lemma EiOOBi_EiOOBi_auth_dev: +" +All pkP pkD dh ck np nd sk nk dk ak #i. + DeviceFinishedKeyDistribution(pkD, pkP, dh, ck, nd, np, sk, nk, dk, ak) @i ==> + ( + Ex #j. + ProvisionerFinishedProvisioning(pkP, pkD, dh, ck, np, nd, sk, nk, dk, ak) @j + ) +" + +lemma EiOOBi_EiOOBi_weaksecret_nk_prov: +" +All pkP pkD dh ck np nd sk nk dk ak #i. + ProvisionerFinishedProvisioning(pkP, pkD, dh, ck, np, nd, sk, nk, dk, ak) @i ==> + not (Ex #j. K(nk) @j) +" + +lemma EiOOBi_EiOOBi_weaksecret_dk_prov: +" +All pkP pkD dh ck np nd sk nk dk ak #i. + ProvisionerFinishedProvisioning(pkP, pkD, dh, ck, np, nd, sk, nk, dk, ak) @i ==> + not (Ex #j. K(dk) @j) +" + +lemma EiOOBi_EiOOBi_weaksecret_ak_prov: +" +All pkP pkD dh ck np nd sk nk dk ak #i. + ProvisionerFinishedProvisioning(pkP, pkD, dh, ck, np, nd, sk, nk, dk, ak) @i ==> + not (Ex #j. K(ak) @j) +" + +lemma EiOOBi_EiOOBi_weaksecret_nk_dev: +" +All pkP pkD dh ck np nd sk nk dk ak #i. + DeviceFinishedKeyDistribution(pkD, pkP, dh, ck, nd, np, sk, nk, dk, ak) @i ==> + not (Ex #j. K(nk) @j) +" + +lemma EiOOBi_EiOOBi_weaksecret_dk_dev: +" +All pkP pkD dh ck np nd sk nk dk ak #i. + DeviceFinishedKeyDistribution(pkD, pkP, dh, ck, nd, np, sk, nk, dk, ak) @i ==> + not (Ex #j. K(dk) @j) +" + +lemma EiOOBi_EiOOBi_weaksecret_ak_dev: +" +All pkP pkD dh ck np nd sk nk dk ak #i. + DeviceFinishedKeyDistribution(pkD, pkP, dh, ck, nd, np, sk, nk, dk, ak) @i ==> + not (Ex #j. K(ak) @j) +" + +lemma EiOOBi_EiOOBi_double_impersonation: +" +All pkP1 pkD1 pkP2 pkD2 dh1 dh2 ck1 ck2 np1 np2 nd1 nd2 sk1 sk2 nk1 nk2 dk1 dk2 ak1 ak2 #i #j. + DeviceFinishedKeyDistribution(pkD1, pkP1, dh1, ck1, nd1, np1, sk1, nk1, dk1, ak1) @i & + ProvisionerFinishedProvisioning(pkP2, pkD2, dh2, ck2, np2, nd2, sk2, nk2, dk2, ak2) @j ==> + not (Ex #k1 #k2 #k3 #k4 . + K(nk1) @k1 & K(dk1) @k2 & K(nk2) @k3 & K(dk2) @k4 + ) +" + +#endif + +/*******************************************/ +/* End lemmas about EiOOBi-EiOOBi exchange */ +/*******************************************/ + +/***************************************/ +/* Lemmas about EiOOBi-EiOOBo exchange */ +/***************************************/ + +#ifdef EiOOBiEiOOBo +lemma EiOOBi_EiOOBo_functional: exists-trace +" +Ex pkP1 pkD1 pkP2 pkD2 dh1 dh2 ck1 ck2 np1 np2 nd1 nd2 sk1 sk2 nk1 nk2 dk1 dk2 ak1 ak2 #i #j. + DeviceFinishedKeyDistribution(pkD1, pkP1, dh1, ck1, nd1, np1, sk1, nk1, dk1, ak1) @i & + ProvisionerFinishedProvisioning(pkP2, pkD2, dh2, ck2, np2, nd2, sk2, nk2, dk2, ak2) @j +" + +lemma EiOOBi_EiOOBo_auth_prov: +" +All pkP pkD dh ck np nd sk nk dk ak #i. + ProvisionerFinishedProvisioning(pkP, pkD, dh, ck, np, nd, sk, nk, dk, ak) @i ==> + ( + Ex #j. + DeviceFinishedProvisioning(pkD, pkP, dh, ck, nd, np, sk, nk, dk) @j + ) +" + +lemma EiOOBi_EiOOBo_auth_dev: +" +All pkP pkD dh ck np nd sk nk dk ak #i. + DeviceFinishedKeyDistribution(pkD, pkP, dh, ck, nd, np, sk, nk, dk, ak) @i ==> + ( + Ex #j. + ProvisionerFinishedProvisioning(pkP, pkD, dh, ck, np, nd, sk, nk, dk, ak) @j + ) +" + +lemma EiOOBi_EiOOBo_weaksecret_nk_prov: +" +All pkP pkD dh ck np nd sk nk dk ak #i. + ProvisionerFinishedProvisioning(pkP, pkD, dh, ck, np, nd, sk, nk, dk, ak) @i ==> + not (Ex #j. K(nk) @j) +" + +lemma EiOOBi_EiOOBo_weaksecret_dk_prov: +" +All pkP pkD dh ck np nd sk nk dk ak #i. + ProvisionerFinishedProvisioning(pkP, pkD, dh, ck, np, nd, sk, nk, dk, ak) @i ==> + not (Ex #j. K(dk) @j) +" + +lemma EiOOBi_EiOOBo_weaksecret_ak_prov: +" +All pkP pkD dh ck np nd sk nk dk ak #i. + ProvisionerFinishedProvisioning(pkP, pkD, dh, ck, np, nd, sk, nk, dk, ak) @i ==> + not (Ex #j. K(ak) @j) +" + +lemma EiOOBi_EiOOBo_weaksecret_nk_dev: +" +All pkP pkD dh ck np nd sk nk dk ak #i. + DeviceFinishedKeyDistribution(pkD, pkP, dh, ck, nd, np, sk, nk, dk, ak) @i ==> + not (Ex #j. K(nk) @j) +" + +lemma EiOOBi_EiOOBo_weaksecret_dk_dev: +" +All pkP pkD dh ck np nd sk nk dk ak #i. + DeviceFinishedKeyDistribution(pkD, pkP, dh, ck, nd, np, sk, nk, dk, ak) @i ==> + not (Ex #j. K(dk) @j) +" + +lemma EiOOBi_EiOOBo_weaksecret_ak_dev: +" +All pkP pkD dh ck np nd sk nk dk ak #i. + DeviceFinishedKeyDistribution(pkD, pkP, dh, ck, nd, np, sk, nk, dk, ak) @i ==> + not (Ex #j. K(ak) @j) +" + +lemma EiOOBi_EiOOBo_double_impersonation: +" +All pkP1 pkD1 pkP2 pkD2 dh1 dh2 ck1 ck2 np1 np2 nd1 nd2 sk1 sk2 nk1 nk2 dk1 dk2 ak1 ak2 #i #j. + DeviceFinishedKeyDistribution(pkD1, pkP1, dh1, ck1, nd1, np1, sk1, nk1, dk1, ak1) @i & + ProvisionerFinishedProvisioning(pkP2, pkD2, dh2, ck2, np2, nd2, sk2, nk2, dk2, ak2) @j ==> + not (Ex #k1 #k2 #k3 #k4 . + K(nk1) @k1 & K(dk1) @k2 & K(nk2) @k3 & K(dk2) @k4 + ) +" + +#endif + +/*******************************************/ +/* End lemmas about EiOOBi-EiOOBo exchange */ +/*******************************************/ + +/***************************************/ +/* Lemmas about EiOOBi-EiOOBs exchange */ +/***************************************/ + +#ifdef EiOOBiEiOOBs +lemma EiOOBi_EiOOBs_functional: exists-trace +" +Ex pkP1 pkD1 pkP2 pkD2 dh1 dh2 ck1 ck2 np1 np2 nd1 nd2 sk1 sk2 nk1 nk2 dk1 dk2 ak1 ak2 #i #j. + DeviceFinishedKeyDistribution(pkD1, pkP1, dh1, ck1, nd1, np1, sk1, nk1, dk1, ak1) @i & + ProvisionerFinishedProvisioning(pkP2, pkD2, dh2, ck2, np2, nd2, sk2, nk2, dk2, ak2) @j +" + +lemma EiOOBi_EiOOBs_auth_prov: +" +All pkP pkD dh ck np nd sk nk dk ak #i. + ProvisionerFinishedProvisioning(pkP, pkD, dh, ck, np, nd, sk, nk, dk, ak) @i ==> + ( + Ex #j. + DeviceFinishedProvisioning(pkD, pkP, dh, ck, nd, np, sk, nk, dk) @j + ) +" + +lemma EiOOBi_EiOOBs_auth_dev: +" +All pkP pkD dh ck np nd sk nk dk ak #i. + DeviceFinishedKeyDistribution(pkD, pkP, dh, ck, nd, np, sk, nk, dk, ak) @i ==> + ( + Ex #j. + ProvisionerFinishedProvisioning(pkP, pkD, dh, ck, np, nd, sk, nk, dk, ak) @j + ) +" + +lemma EiOOBi_EiOOBs_weaksecret_nk_prov: +" +All pkP pkD dh ck np nd sk nk dk ak #i. + ProvisionerFinishedProvisioning(pkP, pkD, dh, ck, np, nd, sk, nk, dk, ak) @i ==> + not (Ex #j. K(nk) @j) +" + +lemma EiOOBi_EiOOBs_weaksecret_dk_prov: +" +All pkP pkD dh ck np nd sk nk dk ak #i. + ProvisionerFinishedProvisioning(pkP, pkD, dh, ck, np, nd, sk, nk, dk, ak) @i ==> + not (Ex #j. K(dk) @j) +" + +lemma EiOOBi_EiOOBs_weaksecret_ak_prov: +" +All pkP pkD dh ck np nd sk nk dk ak #i. + ProvisionerFinishedProvisioning(pkP, pkD, dh, ck, np, nd, sk, nk, dk, ak) @i ==> + not (Ex #j. K(ak) @j) +" + +lemma EiOOBi_EiOOBs_weaksecret_nk_dev: +" +All pkP pkD dh ck np nd sk nk dk ak #i. + DeviceFinishedKeyDistribution(pkD, pkP, dh, ck, nd, np, sk, nk, dk, ak) @i ==> + not (Ex #j. K(nk) @j) +" + +lemma EiOOBi_EiOOBs_weaksecret_dk_dev: +" +All pkP pkD dh ck np nd sk nk dk ak #i. + DeviceFinishedKeyDistribution(pkD, pkP, dh, ck, nd, np, sk, nk, dk, ak) @i ==> + not (Ex #j. K(dk) @j) +" + +lemma EiOOBi_EiOOBs_weaksecret_ak_dev: +" +All pkP pkD dh ck np nd sk nk dk ak #i. + DeviceFinishedKeyDistribution(pkD, pkP, dh, ck, nd, np, sk, nk, dk, ak) @i ==> + not (Ex #j. K(ak) @j) +" + +lemma EiOOBi_EiOOBs_double_impersonation: +" +All pkP1 pkD1 pkP2 pkD2 dh1 dh2 ck1 ck2 np1 np2 nd1 nd2 sk1 sk2 nk1 nk2 dk1 dk2 ak1 ak2 #i #j. + DeviceFinishedKeyDistribution(pkD1, pkP1, dh1, ck1, nd1, np1, sk1, nk1, dk1, ak1) @i & + ProvisionerFinishedProvisioning(pkP2, pkD2, dh2, ck2, np2, nd2, sk2, nk2, dk2, ak2) @j ==> + not (Ex #k1 #k2 #k3 #k4 . + K(nk1) @k1 & K(dk1) @k2 & K(nk2) @k3 & K(dk2) @k4 + ) +" + +#endif + +/*******************************************/ +/* End lemmas about EiOOBi-EiOOBs exchange */ +/*******************************************/ + +/****************************************/ +/* Lemmas about EiOOBo-EiOOBno exchange */ +/****************************************/ + +#ifdef EiOOBoEiOOBno +lemma EiOOBo_EiOOBno_functional: exists-trace +" +Ex pkP1 pkD1 pkP2 pkD2 dh1 dh2 ck1 ck2 np1 np2 nd1 nd2 sk1 sk2 nk1 nk2 dk1 dk2 ak1 ak2 #i #j. + DeviceFinishedKeyDistribution(pkD1, pkP1, dh1, ck1, nd1, np1, sk1, nk1, dk1, ak1) @i & + ProvisionerFinishedProvisioning(pkP2, pkD2, dh2, ck2, np2, nd2, sk2, nk2, dk2, ak2) @j +" + +lemma EiOOBo_EiOOBno_auth_prov: +" +All pkP pkD dh ck np nd sk nk dk ak #i. + ProvisionerFinishedProvisioning(pkP, pkD, dh, ck, np, nd, sk, nk, dk, ak) @i ==> + ( + Ex #j. + DeviceFinishedProvisioning(pkD, pkP, dh, ck, nd, np, sk, nk, dk) @j + ) +" + +lemma EiOOBo_EiOOBno_auth_dev: +" +All pkP pkD dh ck np nd sk nk dk ak #i. + DeviceFinishedKeyDistribution(pkD, pkP, dh, ck, nd, np, sk, nk, dk, ak) @i ==> + ( + Ex #j. + ProvisionerFinishedProvisioning(pkP, pkD, dh, ck, np, nd, sk, nk, dk, ak) @j + ) +" + +lemma EiOOBo_EiOOBno_weaksecret_nk_prov: +" +All pkP pkD dh ck np nd sk nk dk ak #i. + ProvisionerFinishedProvisioning(pkP, pkD, dh, ck, np, nd, sk, nk, dk, ak) @i ==> + not (Ex #j. K(nk) @j) +" + +lemma EiOOBo_EiOOBno_weaksecret_dk_prov: +" +All pkP pkD dh ck np nd sk nk dk ak #i. + ProvisionerFinishedProvisioning(pkP, pkD, dh, ck, np, nd, sk, nk, dk, ak) @i ==> + not (Ex #j. K(dk) @j) +" + +lemma EiOOBo_EiOOBno_weaksecret_ak_prov: +" +All pkP pkD dh ck np nd sk nk dk ak #i. + ProvisionerFinishedProvisioning(pkP, pkD, dh, ck, np, nd, sk, nk, dk, ak) @i ==> + not (Ex #j. K(ak) @j) +" + +lemma EiOOBo_EiOOBno_weaksecret_nk_dev: +" +All pkP pkD dh ck np nd sk nk dk ak #i. + DeviceFinishedKeyDistribution(pkD, pkP, dh, ck, nd, np, sk, nk, dk, ak) @i ==> + not (Ex #j. K(nk) @j) +" + +lemma EiOOBo_EiOOBno_weaksecret_dk_dev: +" +All pkP pkD dh ck np nd sk nk dk ak #i. + DeviceFinishedKeyDistribution(pkD, pkP, dh, ck, nd, np, sk, nk, dk, ak) @i ==> + not (Ex #j. K(dk) @j) +" + +lemma EiOOBo_EiOOBno_weaksecret_ak_dev: +" +All pkP pkD dh ck np nd sk nk dk ak #i. + DeviceFinishedKeyDistribution(pkD, pkP, dh, ck, nd, np, sk, nk, dk, ak) @i ==> + not (Ex #j. K(ak) @j) +" + +lemma EiOOBo_EiOOBno_double_impersonation: +" +All pkP1 pkD1 pkP2 pkD2 dh1 dh2 ck1 ck2 np1 np2 nd1 nd2 sk1 sk2 nk1 nk2 dk1 dk2 ak1 ak2 #i #j. + DeviceFinishedKeyDistribution(pkD1, pkP1, dh1, ck1, nd1, np1, sk1, nk1, dk1, ak1) @i & + ProvisionerFinishedProvisioning(pkP2, pkD2, dh2, ck2, np2, nd2, sk2, nk2, dk2, ak2) @j ==> + not (Ex #k1 #k2 #k3 #k4 . + K(nk1) @k1 & K(dk1) @k2 & K(nk2) @k3 & K(dk2) @k4 + ) +" + +#endif + +/********************************************/ +/* End lemmas about EiOOBo-EiOOBno exchange */ +/********************************************/ + +/***************************************/ +/* Lemmas about EiOOBo-EiOOBi exchange */ +/***************************************/ + +#ifdef EiOOBoEiOOBi +lemma EiOOBo_EiOOBi_functional: exists-trace +" +Ex pkP1 pkD1 pkP2 pkD2 dh1 dh2 ck1 ck2 np1 np2 nd1 nd2 sk1 sk2 nk1 nk2 dk1 dk2 ak1 ak2 #i #j. + DeviceFinishedKeyDistribution(pkD1, pkP1, dh1, ck1, nd1, np1, sk1, nk1, dk1, ak1) @i & + ProvisionerFinishedProvisioning(pkP2, pkD2, dh2, ck2, np2, nd2, sk2, nk2, dk2, ak2) @j +" + +lemma EiOOBo_EiOOBi_auth_prov: +" +All pkP pkD dh ck np nd sk nk dk ak #i. + ProvisionerFinishedProvisioning(pkP, pkD, dh, ck, np, nd, sk, nk, dk, ak) @i ==> + ( + Ex #j. + DeviceFinishedProvisioning(pkD, pkP, dh, ck, nd, np, sk, nk, dk) @j + ) +" + +lemma EiOOBo_EiOOBi_auth_dev: +" +All pkP pkD dh ck np nd sk nk dk ak #i. + DeviceFinishedKeyDistribution(pkD, pkP, dh, ck, nd, np, sk, nk, dk, ak) @i ==> + ( + Ex #j. + ProvisionerFinishedProvisioning(pkP, pkD, dh, ck, np, nd, sk, nk, dk, ak) @j + ) +" + +lemma EiOOBo_EiOOBi_weaksecret_nk_prov: +" +All pkP pkD dh ck np nd sk nk dk ak #i. + ProvisionerFinishedProvisioning(pkP, pkD, dh, ck, np, nd, sk, nk, dk, ak) @i ==> + not (Ex #j. K(nk) @j) +" + +lemma EiOOBo_EiOOBi_weaksecret_dk_prov: +" +All pkP pkD dh ck np nd sk nk dk ak #i. + ProvisionerFinishedProvisioning(pkP, pkD, dh, ck, np, nd, sk, nk, dk, ak) @i ==> + not (Ex #j. K(dk) @j) +" + +lemma EiOOBo_EiOOBi_weaksecret_ak_prov: +" +All pkP pkD dh ck np nd sk nk dk ak #i. + ProvisionerFinishedProvisioning(pkP, pkD, dh, ck, np, nd, sk, nk, dk, ak) @i ==> + not (Ex #j. K(ak) @j) +" + +lemma EiOOBo_EiOOBi_weaksecret_nk_dev: +" +All pkP pkD dh ck np nd sk nk dk ak #i. + DeviceFinishedKeyDistribution(pkD, pkP, dh, ck, nd, np, sk, nk, dk, ak) @i ==> + not (Ex #j. K(nk) @j) +" + +lemma EiOOBo_EiOOBi_weaksecret_dk_dev: +" +All pkP pkD dh ck np nd sk nk dk ak #i. + DeviceFinishedKeyDistribution(pkD, pkP, dh, ck, nd, np, sk, nk, dk, ak) @i ==> + not (Ex #j. K(dk) @j) +" + +lemma EiOOBo_EiOOBi_weaksecret_ak_dev: +" +All pkP pkD dh ck np nd sk nk dk ak #i. + DeviceFinishedKeyDistribution(pkD, pkP, dh, ck, nd, np, sk, nk, dk, ak) @i ==> + not (Ex #j. K(ak) @j) +" + +lemma EiOOBo_EiOOBi_double_impersonation: +" +All pkP1 pkD1 pkP2 pkD2 dh1 dh2 ck1 ck2 np1 np2 nd1 nd2 sk1 sk2 nk1 nk2 dk1 dk2 ak1 ak2 #i #j. + DeviceFinishedKeyDistribution(pkD1, pkP1, dh1, ck1, nd1, np1, sk1, nk1, dk1, ak1) @i & + ProvisionerFinishedProvisioning(pkP2, pkD2, dh2, ck2, np2, nd2, sk2, nk2, dk2, ak2) @j ==> + not (Ex #k1 #k2 #k3 #k4 . + K(nk1) @k1 & K(dk1) @k2 & K(nk2) @k3 & K(dk2) @k4 + ) +" + +#endif + +/*******************************************/ +/* End lemmas about EiOOBo-EiOOBi exchange */ +/*******************************************/ + +/***************************************/ +/* Lemmas about EiOOBo-EiOOBo exchange */ +/***************************************/ + +#ifdef EiOOBoEiOOBo +lemma EiOOBo_EiOOBo_functional: exists-trace +" +Ex pkP1 pkD1 pkP2 pkD2 dh1 dh2 ck1 ck2 np1 np2 nd1 nd2 sk1 sk2 nk1 nk2 dk1 dk2 ak1 ak2 #i #j. + DeviceFinishedKeyDistribution(pkD1, pkP1, dh1, ck1, nd1, np1, sk1, nk1, dk1, ak1) @i & + ProvisionerFinishedProvisioning(pkP2, pkD2, dh2, ck2, np2, nd2, sk2, nk2, dk2, ak2) @j +" + +lemma EiOOBo_EiOOBo_auth_prov: +" +All pkP pkD dh ck np nd sk nk dk ak #i. + ProvisionerFinishedProvisioning(pkP, pkD, dh, ck, np, nd, sk, nk, dk, ak) @i ==> + ( + Ex #j. + DeviceFinishedProvisioning(pkD, pkP, dh, ck, nd, np, sk, nk, dk) @j + ) +" + +lemma EiOOBo_EiOOBo_auth_dev: +" +All pkP pkD dh ck np nd sk nk dk ak #i. + DeviceFinishedKeyDistribution(pkD, pkP, dh, ck, nd, np, sk, nk, dk, ak) @i ==> + ( + Ex #j. + ProvisionerFinishedProvisioning(pkP, pkD, dh, ck, np, nd, sk, nk, dk, ak) @j + ) +" + +lemma EiOOBo_EiOOBo_weaksecret_nk_prov: +" +All pkP pkD dh ck np nd sk nk dk ak #i. + ProvisionerFinishedProvisioning(pkP, pkD, dh, ck, np, nd, sk, nk, dk, ak) @i ==> + not (Ex #j. K(nk) @j) +" + +lemma EiOOBo_EiOOBo_weaksecret_dk_prov: +" +All pkP pkD dh ck np nd sk nk dk ak #i. + ProvisionerFinishedProvisioning(pkP, pkD, dh, ck, np, nd, sk, nk, dk, ak) @i ==> + not (Ex #j. K(dk) @j) +" + +lemma EiOOBo_EiOOBo_weaksecret_ak_prov: +" +All pkP pkD dh ck np nd sk nk dk ak #i. + ProvisionerFinishedProvisioning(pkP, pkD, dh, ck, np, nd, sk, nk, dk, ak) @i ==> + not (Ex #j. K(ak) @j) +" + +lemma EiOOBo_EiOOBo_weaksecret_nk_dev: +" +All pkP pkD dh ck np nd sk nk dk ak #i. + DeviceFinishedKeyDistribution(pkD, pkP, dh, ck, nd, np, sk, nk, dk, ak) @i ==> + not (Ex #j. K(nk) @j) +" + +lemma EiOOBo_EiOOBo_weaksecret_dk_dev: +" +All pkP pkD dh ck np nd sk nk dk ak #i. + DeviceFinishedKeyDistribution(pkD, pkP, dh, ck, nd, np, sk, nk, dk, ak) @i ==> + not (Ex #j. K(dk) @j) +" + +lemma EiOOBo_EiOOBo_weaksecret_ak_dev: +" +All pkP pkD dh ck np nd sk nk dk ak #i. + DeviceFinishedKeyDistribution(pkD, pkP, dh, ck, nd, np, sk, nk, dk, ak) @i ==> + not (Ex #j. K(ak) @j) +" + +lemma EiOOBo_EiOOBo_double_impersonation: +" +All pkP1 pkD1 pkP2 pkD2 dh1 dh2 ck1 ck2 np1 np2 nd1 nd2 sk1 sk2 nk1 nk2 dk1 dk2 ak1 ak2 #i #j. + DeviceFinishedKeyDistribution(pkD1, pkP1, dh1, ck1, nd1, np1, sk1, nk1, dk1, ak1) @i & + ProvisionerFinishedProvisioning(pkP2, pkD2, dh2, ck2, np2, nd2, sk2, nk2, dk2, ak2) @j ==> + not (Ex #k1 #k2 #k3 #k4 . + K(nk1) @k1 & K(dk1) @k2 & K(nk2) @k3 & K(dk2) @k4 + ) +" + +#endif + +/*******************************************/ +/* End lemmas about EiOOBo-EiOOBo exchange */ +/*******************************************/ + +/***************************************/ +/* Lemmas about EiOOBo-EiOOBs exchange */ +/***************************************/ + +#ifdef EiOOBoEiOOBs +lemma EiOOBo_EiOOBs_functional: exists-trace +" +Ex pkP1 pkD1 pkP2 pkD2 dh1 dh2 ck1 ck2 np1 np2 nd1 nd2 sk1 sk2 nk1 nk2 dk1 dk2 ak1 ak2 #i #j. + DeviceFinishedKeyDistribution(pkD1, pkP1, dh1, ck1, nd1, np1, sk1, nk1, dk1, ak1) @i & + ProvisionerFinishedProvisioning(pkP2, pkD2, dh2, ck2, np2, nd2, sk2, nk2, dk2, ak2) @j +" + +lemma EiOOBo_EiOOBs_auth_prov: +" +All pkP pkD dh ck np nd sk nk dk ak #i. + ProvisionerFinishedProvisioning(pkP, pkD, dh, ck, np, nd, sk, nk, dk, ak) @i ==> + ( + Ex #j. + DeviceFinishedProvisioning(pkD, pkP, dh, ck, nd, np, sk, nk, dk) @j + ) +" + +lemma EiOOBo_EiOOBs_auth_dev: +" +All pkP pkD dh ck np nd sk nk dk ak #i. + DeviceFinishedKeyDistribution(pkD, pkP, dh, ck, nd, np, sk, nk, dk, ak) @i ==> + ( + Ex #j. + ProvisionerFinishedProvisioning(pkP, pkD, dh, ck, np, nd, sk, nk, dk, ak) @j + ) +" + +lemma EiOOBo_EiOOBs_weaksecret_nk_prov: +" +All pkP pkD dh ck np nd sk nk dk ak #i. + ProvisionerFinishedProvisioning(pkP, pkD, dh, ck, np, nd, sk, nk, dk, ak) @i ==> + not (Ex #j. K(nk) @j) +" + +lemma EiOOBo_EiOOBs_weaksecret_dk_prov: +" +All pkP pkD dh ck np nd sk nk dk ak #i. + ProvisionerFinishedProvisioning(pkP, pkD, dh, ck, np, nd, sk, nk, dk, ak) @i ==> + not (Ex #j. K(dk) @j) +" + +lemma EiOOBo_EiOOBs_weaksecret_ak_prov: +" +All pkP pkD dh ck np nd sk nk dk ak #i. + ProvisionerFinishedProvisioning(pkP, pkD, dh, ck, np, nd, sk, nk, dk, ak) @i ==> + not (Ex #j. K(ak) @j) +" + +lemma EiOOBo_EiOOBs_weaksecret_nk_dev: +" +All pkP pkD dh ck np nd sk nk dk ak #i. + DeviceFinishedKeyDistribution(pkD, pkP, dh, ck, nd, np, sk, nk, dk, ak) @i ==> + not (Ex #j. K(nk) @j) +" + +lemma EiOOBo_EiOOBs_weaksecret_dk_dev: +" +All pkP pkD dh ck np nd sk nk dk ak #i. + DeviceFinishedKeyDistribution(pkD, pkP, dh, ck, nd, np, sk, nk, dk, ak) @i ==> + not (Ex #j. K(dk) @j) +" + +lemma EiOOBo_EiOOBs_weaksecret_ak_dev: +" +All pkP pkD dh ck np nd sk nk dk ak #i. + DeviceFinishedKeyDistribution(pkD, pkP, dh, ck, nd, np, sk, nk, dk, ak) @i ==> + not (Ex #j. K(ak) @j) +" + +lemma EiOOBo_EiOOBs_double_impersonation: +" +All pkP1 pkD1 pkP2 pkD2 dh1 dh2 ck1 ck2 np1 np2 nd1 nd2 sk1 sk2 nk1 nk2 dk1 dk2 ak1 ak2 #i #j. + DeviceFinishedKeyDistribution(pkD1, pkP1, dh1, ck1, nd1, np1, sk1, nk1, dk1, ak1) @i & + ProvisionerFinishedProvisioning(pkP2, pkD2, dh2, ck2, np2, nd2, sk2, nk2, dk2, ak2) @j ==> + not (Ex #k1 #k2 #k3 #k4 . + K(nk1) @k1 & K(dk1) @k2 & K(nk2) @k3 & K(dk2) @k4 + ) +" + +#endif + +/*******************************************/ +/* End lemmas about EiOOBo-EiOOBs exchange */ +/*******************************************/ + +/****************************************/ +/* Lemmas about EiOOBs-EiOOBno exchange */ +/****************************************/ + +#ifdef EiOOBsEiOOBno +lemma EiOOBs_EiOOBno_functional: exists-trace +" +Ex pkP1 pkD1 pkP2 pkD2 dh1 dh2 ck1 ck2 np1 np2 nd1 nd2 sk1 sk2 nk1 nk2 dk1 dk2 ak1 ak2 #i #j. + DeviceFinishedKeyDistribution(pkD1, pkP1, dh1, ck1, nd1, np1, sk1, nk1, dk1, ak1) @i & + ProvisionerFinishedProvisioning(pkP2, pkD2, dh2, ck2, np2, nd2, sk2, nk2, dk2, ak2) @j +" + +lemma EiOOBs_EiOOBno_auth_prov: +" +All pkP pkD dh ck np nd sk nk dk ak #i. + ProvisionerFinishedProvisioning(pkP, pkD, dh, ck, np, nd, sk, nk, dk, ak) @i ==> + ( + Ex #j. + DeviceFinishedProvisioning(pkD, pkP, dh, ck, nd, np, sk, nk, dk) @j + ) +" + +lemma EiOOBs_EiOOBno_auth_dev: +" +All pkP pkD dh ck np nd sk nk dk ak #i. + DeviceFinishedKeyDistribution(pkD, pkP, dh, ck, nd, np, sk, nk, dk, ak) @i ==> + ( + Ex #j. + ProvisionerFinishedProvisioning(pkP, pkD, dh, ck, np, nd, sk, nk, dk, ak) @j + ) +" + +lemma EiOOBs_EiOOBno_weaksecret_nk_prov: +" +All pkP pkD dh ck np nd sk nk dk ak #i. + ProvisionerFinishedProvisioning(pkP, pkD, dh, ck, np, nd, sk, nk, dk, ak) @i ==> + not (Ex #j. K(nk) @j) +" + +lemma EiOOBs_EiOOBno_weaksecret_dk_prov: +" +All pkP pkD dh ck np nd sk nk dk ak #i. + ProvisionerFinishedProvisioning(pkP, pkD, dh, ck, np, nd, sk, nk, dk, ak) @i ==> + not (Ex #j. K(dk) @j) +" + +lemma EiOOBs_EiOOBno_weaksecret_ak_prov: +" +All pkP pkD dh ck np nd sk nk dk ak #i. + ProvisionerFinishedProvisioning(pkP, pkD, dh, ck, np, nd, sk, nk, dk, ak) @i ==> + not (Ex #j. K(ak) @j) +" + +lemma EiOOBs_EiOOBno_weaksecret_nk_dev: +" +All pkP pkD dh ck np nd sk nk dk ak #i. + DeviceFinishedKeyDistribution(pkD, pkP, dh, ck, nd, np, sk, nk, dk, ak) @i ==> + not (Ex #j. K(nk) @j) +" + +lemma EiOOBs_EiOOBno_weaksecret_dk_dev: +" +All pkP pkD dh ck np nd sk nk dk ak #i. + DeviceFinishedKeyDistribution(pkD, pkP, dh, ck, nd, np, sk, nk, dk, ak) @i ==> + not (Ex #j. K(dk) @j) +" + +lemma EiOOBs_EiOOBno_weaksecret_ak_dev: +" +All pkP pkD dh ck np nd sk nk dk ak #i. + DeviceFinishedKeyDistribution(pkD, pkP, dh, ck, nd, np, sk, nk, dk, ak) @i ==> + not (Ex #j. K(ak) @j) +" + +lemma EiOOBs_EiOOBno_double_impersonation: +" +All pkP1 pkD1 pkP2 pkD2 dh1 dh2 ck1 ck2 np1 np2 nd1 nd2 sk1 sk2 nk1 nk2 dk1 dk2 ak1 ak2 #i #j. + DeviceFinishedKeyDistribution(pkD1, pkP1, dh1, ck1, nd1, np1, sk1, nk1, dk1, ak1) @i & + ProvisionerFinishedProvisioning(pkP2, pkD2, dh2, ck2, np2, nd2, sk2, nk2, dk2, ak2) @j ==> + not (Ex #k1 #k2 #k3 #k4 . + K(nk1) @k1 & K(dk1) @k2 & K(nk2) @k3 & K(dk2) @k4 + ) +" + +#endif + +/********************************************/ +/* End lemmas about EiOOBs-EiOOBno exchange */ +/********************************************/ + +/***************************************/ +/* Lemmas about EiOOBs-EiOOBi exchange */ +/***************************************/ + +#ifdef EiOOBsEiOOBi +lemma EiOOBs_EiOOBi_functional: exists-trace +" +Ex pkP1 pkD1 pkP2 pkD2 dh1 dh2 ck1 ck2 np1 np2 nd1 nd2 sk1 sk2 nk1 nk2 dk1 dk2 ak1 ak2 #i #j. + DeviceFinishedKeyDistribution(pkD1, pkP1, dh1, ck1, nd1, np1, sk1, nk1, dk1, ak1) @i & + ProvisionerFinishedProvisioning(pkP2, pkD2, dh2, ck2, np2, nd2, sk2, nk2, dk2, ak2) @j +" + +lemma EiOOBs_EiOOBi_auth_prov: +" +All pkP pkD dh ck np nd sk nk dk ak #i. + ProvisionerFinishedProvisioning(pkP, pkD, dh, ck, np, nd, sk, nk, dk, ak) @i ==> + ( + Ex #j. + DeviceFinishedProvisioning(pkD, pkP, dh, ck, nd, np, sk, nk, dk) @j + ) +" + +lemma EiOOBs_EiOOBi_auth_dev: +" +All pkP pkD dh ck np nd sk nk dk ak #i. + DeviceFinishedKeyDistribution(pkD, pkP, dh, ck, nd, np, sk, nk, dk, ak) @i ==> + ( + Ex #j. + ProvisionerFinishedProvisioning(pkP, pkD, dh, ck, np, nd, sk, nk, dk, ak) @j + ) +" + +lemma EiOOBs_EiOOBi_weaksecret_nk_prov: +" +All pkP pkD dh ck np nd sk nk dk ak #i. + ProvisionerFinishedProvisioning(pkP, pkD, dh, ck, np, nd, sk, nk, dk, ak) @i ==> + not (Ex #j. K(nk) @j) +" + +lemma EiOOBs_EiOOBi_weaksecret_dk_prov: +" +All pkP pkD dh ck np nd sk nk dk ak #i. + ProvisionerFinishedProvisioning(pkP, pkD, dh, ck, np, nd, sk, nk, dk, ak) @i ==> + not (Ex #j. K(dk) @j) +" + +lemma EiOOBs_EiOOBi_weaksecret_ak_prov: +" +All pkP pkD dh ck np nd sk nk dk ak #i. + ProvisionerFinishedProvisioning(pkP, pkD, dh, ck, np, nd, sk, nk, dk, ak) @i ==> + not (Ex #j. K(ak) @j) +" + +lemma EiOOBs_EiOOBi_weaksecret_nk_dev: +" +All pkP pkD dh ck np nd sk nk dk ak #i. + DeviceFinishedKeyDistribution(pkD, pkP, dh, ck, nd, np, sk, nk, dk, ak) @i ==> + not (Ex #j. K(nk) @j) +" + +lemma EiOOBs_EiOOBi_weaksecret_dk_dev: +" +All pkP pkD dh ck np nd sk nk dk ak #i. + DeviceFinishedKeyDistribution(pkD, pkP, dh, ck, nd, np, sk, nk, dk, ak) @i ==> + not (Ex #j. K(dk) @j) +" + +lemma EiOOBs_EiOOBi_weaksecret_ak_dev: +" +All pkP pkD dh ck np nd sk nk dk ak #i. + DeviceFinishedKeyDistribution(pkD, pkP, dh, ck, nd, np, sk, nk, dk, ak) @i ==> + not (Ex #j. K(ak) @j) +" + +lemma EiOOBs_EiOOBi_double_impersonation: +" +All pkP1 pkD1 pkP2 pkD2 dh1 dh2 ck1 ck2 np1 np2 nd1 nd2 sk1 sk2 nk1 nk2 dk1 dk2 ak1 ak2 #i #j. + DeviceFinishedKeyDistribution(pkD1, pkP1, dh1, ck1, nd1, np1, sk1, nk1, dk1, ak1) @i & + ProvisionerFinishedProvisioning(pkP2, pkD2, dh2, ck2, np2, nd2, sk2, nk2, dk2, ak2) @j ==> + not (Ex #k1 #k2 #k3 #k4 . + K(nk1) @k1 & K(dk1) @k2 & K(nk2) @k3 & K(dk2) @k4 + ) +" + +#endif + +/*******************************************/ +/* End lemmas about EiOOBs-EiOOBi exchange */ +/*******************************************/ + +/***************************************/ +/* Lemmas about EiOOBs-EiOOBo exchange */ +/***************************************/ + +#ifdef EiOOBsEiOOBo +lemma EiOOBs_EiOOBo_functional: exists-trace +" +Ex pkP1 pkD1 pkP2 pkD2 dh1 dh2 ck1 ck2 np1 np2 nd1 nd2 sk1 sk2 nk1 nk2 dk1 dk2 ak1 ak2 #i #j. + DeviceFinishedKeyDistribution(pkD1, pkP1, dh1, ck1, nd1, np1, sk1, nk1, dk1, ak1) @i & + ProvisionerFinishedProvisioning(pkP2, pkD2, dh2, ck2, np2, nd2, sk2, nk2, dk2, ak2) @j +" + +lemma EiOOBs_EiOOBo_auth_prov: +" +All pkP pkD dh ck np nd sk nk dk ak #i. + ProvisionerFinishedProvisioning(pkP, pkD, dh, ck, np, nd, sk, nk, dk, ak) @i ==> + ( + Ex #j. + DeviceFinishedProvisioning(pkD, pkP, dh, ck, nd, np, sk, nk, dk) @j + ) +" + +lemma EiOOBs_EiOOBo_auth_dev: +" +All pkP pkD dh ck np nd sk nk dk ak #i. + DeviceFinishedKeyDistribution(pkD, pkP, dh, ck, nd, np, sk, nk, dk, ak) @i ==> + ( + Ex #j. + ProvisionerFinishedProvisioning(pkP, pkD, dh, ck, np, nd, sk, nk, dk, ak) @j + ) +" + +lemma EiOOBs_EiOOBo_weaksecret_nk_prov: +" +All pkP pkD dh ck np nd sk nk dk ak #i. + ProvisionerFinishedProvisioning(pkP, pkD, dh, ck, np, nd, sk, nk, dk, ak) @i ==> + not (Ex #j. K(nk) @j) +" + +lemma EiOOBs_EiOOBo_weaksecret_dk_prov: +" +All pkP pkD dh ck np nd sk nk dk ak #i. + ProvisionerFinishedProvisioning(pkP, pkD, dh, ck, np, nd, sk, nk, dk, ak) @i ==> + not (Ex #j. K(dk) @j) +" + +lemma EiOOBs_EiOOBo_weaksecret_ak_prov: +" +All pkP pkD dh ck np nd sk nk dk ak #i. + ProvisionerFinishedProvisioning(pkP, pkD, dh, ck, np, nd, sk, nk, dk, ak) @i ==> + not (Ex #j. K(ak) @j) +" + +lemma EiOOBs_EiOOBo_weaksecret_nk_dev: +" +All pkP pkD dh ck np nd sk nk dk ak #i. + DeviceFinishedKeyDistribution(pkD, pkP, dh, ck, nd, np, sk, nk, dk, ak) @i ==> + not (Ex #j. K(nk) @j) +" + +lemma EiOOBs_EiOOBo_weaksecret_dk_dev: +" +All pkP pkD dh ck np nd sk nk dk ak #i. + DeviceFinishedKeyDistribution(pkD, pkP, dh, ck, nd, np, sk, nk, dk, ak) @i ==> + not (Ex #j. K(dk) @j) +" + +lemma EiOOBs_EiOOBo_weaksecret_ak_dev: +" +All pkP pkD dh ck np nd sk nk dk ak #i. + DeviceFinishedKeyDistribution(pkD, pkP, dh, ck, nd, np, sk, nk, dk, ak) @i ==> + not (Ex #j. K(ak) @j) +" + +lemma EiOOBs_EiOOBo_double_impersonation: +" +All pkP1 pkD1 pkP2 pkD2 dh1 dh2 ck1 ck2 np1 np2 nd1 nd2 sk1 sk2 nk1 nk2 dk1 dk2 ak1 ak2 #i #j. + DeviceFinishedKeyDistribution(pkD1, pkP1, dh1, ck1, nd1, np1, sk1, nk1, dk1, ak1) @i & + ProvisionerFinishedProvisioning(pkP2, pkD2, dh2, ck2, np2, nd2, sk2, nk2, dk2, ak2) @j ==> + not (Ex #k1 #k2 #k3 #k4 . + K(nk1) @k1 & K(dk1) @k2 & K(nk2) @k3 & K(dk2) @k4 + ) +" + +#endif + +/*******************************************/ +/* End lemmas about EiOOBs-EiOOBo exchange */ +/*******************************************/ + +/***************************************/ +/* Lemmas about EiOOBs-EiOOBs exchange */ +/***************************************/ + +#ifdef EiOOBsEiOOBs +lemma EiOOBs_EiOOBs_functional: exists-trace +" +Ex pkP1 pkD1 pkP2 pkD2 dh1 dh2 ck1 ck2 np1 np2 nd1 nd2 sk1 sk2 nk1 nk2 dk1 dk2 ak1 ak2 #i #j. + DeviceFinishedKeyDistribution(pkD1, pkP1, dh1, ck1, nd1, np1, sk1, nk1, dk1, ak1) @i & + ProvisionerFinishedProvisioning(pkP2, pkD2, dh2, ck2, np2, nd2, sk2, nk2, dk2, ak2) @j +" + +lemma EiOOBs_EiOOBs_auth_prov: +" +All pkP pkD dh ck np nd sk nk dk ak #i. + ProvisionerFinishedProvisioning(pkP, pkD, dh, ck, np, nd, sk, nk, dk, ak) @i ==> + ( + Ex #j. + DeviceFinishedProvisioning(pkD, pkP, dh, ck, nd, np, sk, nk, dk) @j + ) +" + +lemma EiOOBs_EiOOBs_auth_dev: +" +All pkP pkD dh ck np nd sk nk dk ak #i. + DeviceFinishedKeyDistribution(pkD, pkP, dh, ck, nd, np, sk, nk, dk, ak) @i ==> + ( + Ex #j. + ProvisionerFinishedProvisioning(pkP, pkD, dh, ck, np, nd, sk, nk, dk, ak) @j + ) +" + +lemma EiOOBs_EiOOBs_weaksecret_nk_prov: +" +All pkP pkD dh ck np nd sk nk dk ak #i. + ProvisionerFinishedProvisioning(pkP, pkD, dh, ck, np, nd, sk, nk, dk, ak) @i ==> + not (Ex #j. K(nk) @j) +" + +lemma EiOOBs_EiOOBs_weaksecret_dk_prov: +" +All pkP pkD dh ck np nd sk nk dk ak #i. + ProvisionerFinishedProvisioning(pkP, pkD, dh, ck, np, nd, sk, nk, dk, ak) @i ==> + not (Ex #j. K(dk) @j) +" + +lemma EiOOBs_EiOOBs_weaksecret_ak_prov: +" +All pkP pkD dh ck np nd sk nk dk ak #i. + ProvisionerFinishedProvisioning(pkP, pkD, dh, ck, np, nd, sk, nk, dk, ak) @i ==> + not (Ex #j. K(ak) @j) +" + +lemma EiOOBs_EiOOBs_weaksecret_nk_dev: +" +All pkP pkD dh ck np nd sk nk dk ak #i. + DeviceFinishedKeyDistribution(pkD, pkP, dh, ck, nd, np, sk, nk, dk, ak) @i ==> + not (Ex #j. K(nk) @j) +" + +lemma EiOOBs_EiOOBs_weaksecret_dk_dev: +" +All pkP pkD dh ck np nd sk nk dk ak #i. + DeviceFinishedKeyDistribution(pkD, pkP, dh, ck, nd, np, sk, nk, dk, ak) @i ==> + not (Ex #j. K(dk) @j) +" + +lemma EiOOBs_EiOOBs_weaksecret_ak_dev: +" +All pkP pkD dh ck np nd sk nk dk ak #i. + DeviceFinishedKeyDistribution(pkD, pkP, dh, ck, nd, np, sk, nk, dk, ak) @i ==> + not (Ex #j. K(ak) @j) +" + +lemma EiOOBs_EiOOBs_double_impersonation: +" +All pkP1 pkD1 pkP2 pkD2 dh1 dh2 ck1 ck2 np1 np2 nd1 nd2 sk1 sk2 nk1 nk2 dk1 dk2 ak1 ak2 #i #j. + DeviceFinishedKeyDistribution(pkD1, pkP1, dh1, ck1, nd1, np1, sk1, nk1, dk1, ak1) @i & + ProvisionerFinishedProvisioning(pkP2, pkD2, dh2, ck2, np2, nd2, sk2, nk2, dk2, ak2) @j ==> + not (Ex #k1 #k2 #k3 #k4 . + K(nk1) @k1 & K(dk1) @k2 & K(nk2) @k3 & K(dk2) @k4 + ) +" + +#endif + +/*******************************************/ +/* End lemmas about EiOOBs-EiOOBs exchange */ +/*******************************************/ + +/*****************************************/ +/* Lemmas about EiOOBno-EoOOBno exchange */ +/*****************************************/ + +#ifdef EiOOBnoEoOOBno +lemma EiOOBno_EoOOBno_functional: exists-trace +" +Ex pkP1 pkD1 pkP2 pkD2 dh1 dh2 ck1 ck2 np1 np2 nd1 nd2 sk1 sk2 nk1 nk2 dk1 dk2 ak1 ak2 #i #j. + DeviceFinishedKeyDistribution(pkD1, pkP1, dh1, ck1, nd1, np1, sk1, nk1, dk1, ak1) @i & + ProvisionerFinishedProvisioning(pkP2, pkD2, dh2, ck2, np2, nd2, sk2, nk2, dk2, ak2) @j +" + +lemma EiOOBno_EoOOBno_auth_prov: +" +All pkP pkD dh ck np nd sk nk dk ak #i. + ProvisionerFinishedProvisioning(pkP, pkD, dh, ck, np, nd, sk, nk, dk, ak) @i ==> + ( + Ex #j. + DeviceFinishedProvisioning(pkD, pkP, dh, ck, nd, np, sk, nk, dk) @j + ) +" + +lemma EiOOBno_EoOOBno_auth_dev: +" +All pkP pkD dh ck np nd sk nk dk ak #i. + DeviceFinishedKeyDistribution(pkD, pkP, dh, ck, nd, np, sk, nk, dk, ak) @i ==> + ( + Ex #j. + ProvisionerFinishedProvisioning(pkP, pkD, dh, ck, np, nd, sk, nk, dk, ak) @j + ) +" + +lemma EiOOBno_EoOOBno_weaksecret_nk_prov: +" +All pkP pkD dh ck np nd sk nk dk ak #i. + ProvisionerFinishedProvisioning(pkP, pkD, dh, ck, np, nd, sk, nk, dk, ak) @i ==> + not (Ex #j. K(nk) @j) +" + +lemma EiOOBno_EoOOBno_weaksecret_dk_prov: +" +All pkP pkD dh ck np nd sk nk dk ak #i. + ProvisionerFinishedProvisioning(pkP, pkD, dh, ck, np, nd, sk, nk, dk, ak) @i ==> + not (Ex #j. K(dk) @j) +" + +lemma EiOOBno_EoOOBno_weaksecret_ak_prov: +" +All pkP pkD dh ck np nd sk nk dk ak #i. + ProvisionerFinishedProvisioning(pkP, pkD, dh, ck, np, nd, sk, nk, dk, ak) @i ==> + not (Ex #j. K(ak) @j) +" + +lemma EiOOBno_EoOOBno_weaksecret_nk_dev: +" +All pkP pkD dh ck np nd sk nk dk ak #i. + DeviceFinishedKeyDistribution(pkD, pkP, dh, ck, nd, np, sk, nk, dk, ak) @i ==> + not (Ex #j. K(nk) @j) +" + +lemma EiOOBno_EoOOBno_weaksecret_dk_dev: +" +All pkP pkD dh ck np nd sk nk dk ak #i. + DeviceFinishedKeyDistribution(pkD, pkP, dh, ck, nd, np, sk, nk, dk, ak) @i ==> + not (Ex #j. K(dk) @j) +" + +lemma EiOOBno_EoOOBno_weaksecret_ak_dev: +" +All pkP pkD dh ck np nd sk nk dk ak #i. + DeviceFinishedKeyDistribution(pkD, pkP, dh, ck, nd, np, sk, nk, dk, ak) @i ==> + not (Ex #j. K(ak) @j) +" + +lemma EiOOBno_EoOOBno_double_impersonation: +" +All pkP1 pkD1 pkP2 pkD2 dh1 dh2 ck1 ck2 np1 np2 nd1 nd2 sk1 sk2 nk1 nk2 dk1 dk2 ak1 ak2 #i #j. + DeviceFinishedKeyDistribution(pkD1, pkP1, dh1, ck1, nd1, np1, sk1, nk1, dk1, ak1) @i & + ProvisionerFinishedProvisioning(pkP2, pkD2, dh2, ck2, np2, nd2, sk2, nk2, dk2, ak2) @j ==> + not (Ex #k1 #k2 #k3 #k4 . + K(nk1) @k1 & K(dk1) @k2 & K(nk2) @k3 & K(dk2) @k4 + ) +" + +#endif + +/*********************************************/ +/* End lemmas about EiOOBno-EoOOBno exchange */ +/*********************************************/ + +/****************************************/ +/* Lemmas about EiOOBno-EoOOBi exchange */ +/****************************************/ + +#ifdef EiOOBnoEoOOBi +lemma EiOOBno_EoOOBi_functional: exists-trace +" +Ex pkP1 pkD1 pkP2 pkD2 dh1 dh2 ck1 ck2 np1 np2 nd1 nd2 sk1 sk2 nk1 nk2 dk1 dk2 ak1 ak2 #i #j. + DeviceFinishedKeyDistribution(pkD1, pkP1, dh1, ck1, nd1, np1, sk1, nk1, dk1, ak1) @i & + ProvisionerFinishedProvisioning(pkP2, pkD2, dh2, ck2, np2, nd2, sk2, nk2, dk2, ak2) @j +" + +lemma EiOOBno_EoOOBi_auth_prov: +" +All pkP pkD dh ck np nd sk nk dk ak #i. + ProvisionerFinishedProvisioning(pkP, pkD, dh, ck, np, nd, sk, nk, dk, ak) @i ==> + ( + Ex #j. + DeviceFinishedProvisioning(pkD, pkP, dh, ck, nd, np, sk, nk, dk) @j + ) +" + +lemma EiOOBno_EoOOBi_auth_dev: +" +All pkP pkD dh ck np nd sk nk dk ak #i. + DeviceFinishedKeyDistribution(pkD, pkP, dh, ck, nd, np, sk, nk, dk, ak) @i ==> + ( + Ex #j. + ProvisionerFinishedProvisioning(pkP, pkD, dh, ck, np, nd, sk, nk, dk, ak) @j + ) +" + +lemma EiOOBno_EoOOBi_weaksecret_nk_prov: +" +All pkP pkD dh ck np nd sk nk dk ak #i. + ProvisionerFinishedProvisioning(pkP, pkD, dh, ck, np, nd, sk, nk, dk, ak) @i ==> + not (Ex #j. K(nk) @j) +" + +lemma EiOOBno_EoOOBi_weaksecret_dk_prov: +" +All pkP pkD dh ck np nd sk nk dk ak #i. + ProvisionerFinishedProvisioning(pkP, pkD, dh, ck, np, nd, sk, nk, dk, ak) @i ==> + not (Ex #j. K(dk) @j) +" + +lemma EiOOBno_EoOOBi_weaksecret_ak_prov: +" +All pkP pkD dh ck np nd sk nk dk ak #i. + ProvisionerFinishedProvisioning(pkP, pkD, dh, ck, np, nd, sk, nk, dk, ak) @i ==> + not (Ex #j. K(ak) @j) +" + +lemma EiOOBno_EoOOBi_weaksecret_nk_dev: +" +All pkP pkD dh ck np nd sk nk dk ak #i. + DeviceFinishedKeyDistribution(pkD, pkP, dh, ck, nd, np, sk, nk, dk, ak) @i ==> + not (Ex #j. K(nk) @j) +" + +lemma EiOOBno_EoOOBi_weaksecret_dk_dev: +" +All pkP pkD dh ck np nd sk nk dk ak #i. + DeviceFinishedKeyDistribution(pkD, pkP, dh, ck, nd, np, sk, nk, dk, ak) @i ==> + not (Ex #j. K(dk) @j) +" + +lemma EiOOBno_EoOOBi_weaksecret_ak_dev: +" +All pkP pkD dh ck np nd sk nk dk ak #i. + DeviceFinishedKeyDistribution(pkD, pkP, dh, ck, nd, np, sk, nk, dk, ak) @i ==> + not (Ex #j. K(ak) @j) +" + +lemma EiOOBno_EoOOBi_double_impersonation: +" +All pkP1 pkD1 pkP2 pkD2 dh1 dh2 ck1 ck2 np1 np2 nd1 nd2 sk1 sk2 nk1 nk2 dk1 dk2 ak1 ak2 #i #j. + DeviceFinishedKeyDistribution(pkD1, pkP1, dh1, ck1, nd1, np1, sk1, nk1, dk1, ak1) @i & + ProvisionerFinishedProvisioning(pkP2, pkD2, dh2, ck2, np2, nd2, sk2, nk2, dk2, ak2) @j ==> + not (Ex #k1 #k2 #k3 #k4 . + K(nk1) @k1 & K(dk1) @k2 & K(nk2) @k3 & K(dk2) @k4 + ) +" + +#endif + +/********************************************/ +/* End lemmas about EiOOBno-EoOOBi exchange */ +/********************************************/ + +/****************************************/ +/* Lemmas about EiOOBno-EoOOBo exchange */ +/****************************************/ + +#ifdef EiOOBnoEoOOBo +lemma EiOOBno_EoOOBo_functional: exists-trace +" +Ex pkP1 pkD1 pkP2 pkD2 dh1 dh2 ck1 ck2 np1 np2 nd1 nd2 sk1 sk2 nk1 nk2 dk1 dk2 ak1 ak2 #i #j. + DeviceFinishedKeyDistribution(pkD1, pkP1, dh1, ck1, nd1, np1, sk1, nk1, dk1, ak1) @i & + ProvisionerFinishedProvisioning(pkP2, pkD2, dh2, ck2, np2, nd2, sk2, nk2, dk2, ak2) @j +" + +lemma EiOOBno_EoOOBo_auth_prov: +" +All pkP pkD dh ck np nd sk nk dk ak #i. + ProvisionerFinishedProvisioning(pkP, pkD, dh, ck, np, nd, sk, nk, dk, ak) @i ==> + ( + Ex #j. + DeviceFinishedProvisioning(pkD, pkP, dh, ck, nd, np, sk, nk, dk) @j + ) +" + +lemma EiOOBno_EoOOBo_auth_dev: +" +All pkP pkD dh ck np nd sk nk dk ak #i. + DeviceFinishedKeyDistribution(pkD, pkP, dh, ck, nd, np, sk, nk, dk, ak) @i ==> + ( + Ex #j. + ProvisionerFinishedProvisioning(pkP, pkD, dh, ck, np, nd, sk, nk, dk, ak) @j + ) +" + +lemma EiOOBno_EoOOBo_weaksecret_nk_prov: +" +All pkP pkD dh ck np nd sk nk dk ak #i. + ProvisionerFinishedProvisioning(pkP, pkD, dh, ck, np, nd, sk, nk, dk, ak) @i ==> + not (Ex #j. K(nk) @j) +" + +lemma EiOOBno_EoOOBo_weaksecret_dk_prov: +" +All pkP pkD dh ck np nd sk nk dk ak #i. + ProvisionerFinishedProvisioning(pkP, pkD, dh, ck, np, nd, sk, nk, dk, ak) @i ==> + not (Ex #j. K(dk) @j) +" + +lemma EiOOBno_EoOOBo_weaksecret_ak_prov: +" +All pkP pkD dh ck np nd sk nk dk ak #i. + ProvisionerFinishedProvisioning(pkP, pkD, dh, ck, np, nd, sk, nk, dk, ak) @i ==> + not (Ex #j. K(ak) @j) +" + +lemma EiOOBno_EoOOBo_weaksecret_nk_dev: +" +All pkP pkD dh ck np nd sk nk dk ak #i. + DeviceFinishedKeyDistribution(pkD, pkP, dh, ck, nd, np, sk, nk, dk, ak) @i ==> + not (Ex #j. K(nk) @j) +" + +lemma EiOOBno_EoOOBo_weaksecret_dk_dev: +" +All pkP pkD dh ck np nd sk nk dk ak #i. + DeviceFinishedKeyDistribution(pkD, pkP, dh, ck, nd, np, sk, nk, dk, ak) @i ==> + not (Ex #j. K(dk) @j) +" + +lemma EiOOBno_EoOOBo_weaksecret_ak_dev: +" +All pkP pkD dh ck np nd sk nk dk ak #i. + DeviceFinishedKeyDistribution(pkD, pkP, dh, ck, nd, np, sk, nk, dk, ak) @i ==> + not (Ex #j. K(ak) @j) +" + +lemma EiOOBno_EoOOBo_double_impersonation: +" +All pkP1 pkD1 pkP2 pkD2 dh1 dh2 ck1 ck2 np1 np2 nd1 nd2 sk1 sk2 nk1 nk2 dk1 dk2 ak1 ak2 #i #j. + DeviceFinishedKeyDistribution(pkD1, pkP1, dh1, ck1, nd1, np1, sk1, nk1, dk1, ak1) @i & + ProvisionerFinishedProvisioning(pkP2, pkD2, dh2, ck2, np2, nd2, sk2, nk2, dk2, ak2) @j ==> + not (Ex #k1 #k2 #k3 #k4 . + K(nk1) @k1 & K(dk1) @k2 & K(nk2) @k3 & K(dk2) @k4 + ) +" + +#endif + +/********************************************/ +/* End lemmas about EiOOBno-EoOOBo exchange */ +/********************************************/ + +/****************************************/ +/* Lemmas about EiOOBno-EoOOBs exchange */ +/****************************************/ + +#ifdef EiOOBnoEoOOBs +lemma EiOOBno_EoOOBs_functional: exists-trace +" +Ex pkP1 pkD1 pkP2 pkD2 dh1 dh2 ck1 ck2 np1 np2 nd1 nd2 sk1 sk2 nk1 nk2 dk1 dk2 ak1 ak2 #i #j. + DeviceFinishedKeyDistribution(pkD1, pkP1, dh1, ck1, nd1, np1, sk1, nk1, dk1, ak1) @i & + ProvisionerFinishedProvisioning(pkP2, pkD2, dh2, ck2, np2, nd2, sk2, nk2, dk2, ak2) @j +" + +lemma EiOOBno_EoOOBs_auth_prov: +" +All pkP pkD dh ck np nd sk nk dk ak #i. + ProvisionerFinishedProvisioning(pkP, pkD, dh, ck, np, nd, sk, nk, dk, ak) @i ==> + ( + Ex #j. + DeviceFinishedProvisioning(pkD, pkP, dh, ck, nd, np, sk, nk, dk) @j + ) +" + +lemma EiOOBno_EoOOBs_auth_dev: +" +All pkP pkD dh ck np nd sk nk dk ak #i. + DeviceFinishedKeyDistribution(pkD, pkP, dh, ck, nd, np, sk, nk, dk, ak) @i ==> + ( + Ex #j. + ProvisionerFinishedProvisioning(pkP, pkD, dh, ck, np, nd, sk, nk, dk, ak) @j + ) +" + +lemma EiOOBno_EoOOBs_weaksecret_nk_prov: +" +All pkP pkD dh ck np nd sk nk dk ak #i. + ProvisionerFinishedProvisioning(pkP, pkD, dh, ck, np, nd, sk, nk, dk, ak) @i ==> + not (Ex #j. K(nk) @j) +" + +lemma EiOOBno_EoOOBs_weaksecret_dk_prov: +" +All pkP pkD dh ck np nd sk nk dk ak #i. + ProvisionerFinishedProvisioning(pkP, pkD, dh, ck, np, nd, sk, nk, dk, ak) @i ==> + not (Ex #j. K(dk) @j) +" + +lemma EiOOBno_EoOOBs_weaksecret_ak_prov: +" +All pkP pkD dh ck np nd sk nk dk ak #i. + ProvisionerFinishedProvisioning(pkP, pkD, dh, ck, np, nd, sk, nk, dk, ak) @i ==> + not (Ex #j. K(ak) @j) +" + +lemma EiOOBno_EoOOBs_weaksecret_nk_dev: +" +All pkP pkD dh ck np nd sk nk dk ak #i. + DeviceFinishedKeyDistribution(pkD, pkP, dh, ck, nd, np, sk, nk, dk, ak) @i ==> + not (Ex #j. K(nk) @j) +" + +lemma EiOOBno_EoOOBs_weaksecret_dk_dev: +" +All pkP pkD dh ck np nd sk nk dk ak #i. + DeviceFinishedKeyDistribution(pkD, pkP, dh, ck, nd, np, sk, nk, dk, ak) @i ==> + not (Ex #j. K(dk) @j) +" + +lemma EiOOBno_EoOOBs_weaksecret_ak_dev: +" +All pkP pkD dh ck np nd sk nk dk ak #i. + DeviceFinishedKeyDistribution(pkD, pkP, dh, ck, nd, np, sk, nk, dk, ak) @i ==> + not (Ex #j. K(ak) @j) +" + +lemma EiOOBno_EoOOBs_double_impersonation: +" +All pkP1 pkD1 pkP2 pkD2 dh1 dh2 ck1 ck2 np1 np2 nd1 nd2 sk1 sk2 nk1 nk2 dk1 dk2 ak1 ak2 #i #j. + DeviceFinishedKeyDistribution(pkD1, pkP1, dh1, ck1, nd1, np1, sk1, nk1, dk1, ak1) @i & + ProvisionerFinishedProvisioning(pkP2, pkD2, dh2, ck2, np2, nd2, sk2, nk2, dk2, ak2) @j ==> + not (Ex #k1 #k2 #k3 #k4 . + K(nk1) @k1 & K(dk1) @k2 & K(nk2) @k3 & K(dk2) @k4 + ) +" + +#endif + +/********************************************/ +/* End lemmas about EiOOBno-EoOOBs exchange */ +/********************************************/ + +/****************************************/ +/* Lemmas about EiOOBi-EoOOBno exchange */ +/****************************************/ + +#ifdef EiOOBiEoOOBno +lemma EiOOBi_EoOOBno_functional: exists-trace +" +Ex pkP1 pkD1 pkP2 pkD2 dh1 dh2 ck1 ck2 np1 np2 nd1 nd2 sk1 sk2 nk1 nk2 dk1 dk2 ak1 ak2 #i #j. + DeviceFinishedKeyDistribution(pkD1, pkP1, dh1, ck1, nd1, np1, sk1, nk1, dk1, ak1) @i & + ProvisionerFinishedProvisioning(pkP2, pkD2, dh2, ck2, np2, nd2, sk2, nk2, dk2, ak2) @j +" + +lemma EiOOBi_EoOOBno_auth_prov: +" +All pkP pkD dh ck np nd sk nk dk ak #i. + ProvisionerFinishedProvisioning(pkP, pkD, dh, ck, np, nd, sk, nk, dk, ak) @i ==> + ( + Ex #j. + DeviceFinishedProvisioning(pkD, pkP, dh, ck, nd, np, sk, nk, dk) @j + ) +" + +lemma EiOOBi_EoOOBno_auth_dev: +" +All pkP pkD dh ck np nd sk nk dk ak #i. + DeviceFinishedKeyDistribution(pkD, pkP, dh, ck, nd, np, sk, nk, dk, ak) @i ==> + ( + Ex #j. + ProvisionerFinishedProvisioning(pkP, pkD, dh, ck, np, nd, sk, nk, dk, ak) @j + ) +" + +lemma EiOOBi_EoOOBno_weaksecret_nk_prov: +" +All pkP pkD dh ck np nd sk nk dk ak #i. + ProvisionerFinishedProvisioning(pkP, pkD, dh, ck, np, nd, sk, nk, dk, ak) @i ==> + not (Ex #j. K(nk) @j) +" + +lemma EiOOBi_EoOOBno_weaksecret_dk_prov: +" +All pkP pkD dh ck np nd sk nk dk ak #i. + ProvisionerFinishedProvisioning(pkP, pkD, dh, ck, np, nd, sk, nk, dk, ak) @i ==> + not (Ex #j. K(dk) @j) +" + +lemma EiOOBi_EoOOBno_weaksecret_ak_prov: +" +All pkP pkD dh ck np nd sk nk dk ak #i. + ProvisionerFinishedProvisioning(pkP, pkD, dh, ck, np, nd, sk, nk, dk, ak) @i ==> + not (Ex #j. K(ak) @j) +" + +lemma EiOOBi_EoOOBno_weaksecret_nk_dev: +" +All pkP pkD dh ck np nd sk nk dk ak #i. + DeviceFinishedKeyDistribution(pkD, pkP, dh, ck, nd, np, sk, nk, dk, ak) @i ==> + not (Ex #j. K(nk) @j) +" + +lemma EiOOBi_EoOOBno_weaksecret_dk_dev: +" +All pkP pkD dh ck np nd sk nk dk ak #i. + DeviceFinishedKeyDistribution(pkD, pkP, dh, ck, nd, np, sk, nk, dk, ak) @i ==> + not (Ex #j. K(dk) @j) +" + +lemma EiOOBi_EoOOBno_weaksecret_ak_dev: +" +All pkP pkD dh ck np nd sk nk dk ak #i. + DeviceFinishedKeyDistribution(pkD, pkP, dh, ck, nd, np, sk, nk, dk, ak) @i ==> + not (Ex #j. K(ak) @j) +" + +lemma EiOOBi_EoOOBno_double_impersonation: +" +All pkP1 pkD1 pkP2 pkD2 dh1 dh2 ck1 ck2 np1 np2 nd1 nd2 sk1 sk2 nk1 nk2 dk1 dk2 ak1 ak2 #i #j. + DeviceFinishedKeyDistribution(pkD1, pkP1, dh1, ck1, nd1, np1, sk1, nk1, dk1, ak1) @i & + ProvisionerFinishedProvisioning(pkP2, pkD2, dh2, ck2, np2, nd2, sk2, nk2, dk2, ak2) @j ==> + not (Ex #k1 #k2 #k3 #k4 . + K(nk1) @k1 & K(dk1) @k2 & K(nk2) @k3 & K(dk2) @k4 + ) +" + +#endif + +/********************************************/ +/* End lemmas about EiOOBi-EoOOBno exchange */ +/********************************************/ + +/***************************************/ +/* Lemmas about EiOOBi-EoOOBi exchange */ +/***************************************/ + +#ifdef EiOOBiEoOOBi +lemma EiOOBi_EoOOBi_functional: exists-trace +" +Ex pkP1 pkD1 pkP2 pkD2 dh1 dh2 ck1 ck2 np1 np2 nd1 nd2 sk1 sk2 nk1 nk2 dk1 dk2 ak1 ak2 #i #j. + DeviceFinishedKeyDistribution(pkD1, pkP1, dh1, ck1, nd1, np1, sk1, nk1, dk1, ak1) @i & + ProvisionerFinishedProvisioning(pkP2, pkD2, dh2, ck2, np2, nd2, sk2, nk2, dk2, ak2) @j +" + +lemma EiOOBi_EoOOBi_auth_prov: +" +All pkP pkD dh ck np nd sk nk dk ak #i. + ProvisionerFinishedProvisioning(pkP, pkD, dh, ck, np, nd, sk, nk, dk, ak) @i ==> + ( + Ex #j. + DeviceFinishedProvisioning(pkD, pkP, dh, ck, nd, np, sk, nk, dk) @j + ) +" + +lemma EiOOBi_EoOOBi_auth_dev: +" +All pkP pkD dh ck np nd sk nk dk ak #i. + DeviceFinishedKeyDistribution(pkD, pkP, dh, ck, nd, np, sk, nk, dk, ak) @i ==> + ( + Ex #j. + ProvisionerFinishedProvisioning(pkP, pkD, dh, ck, np, nd, sk, nk, dk, ak) @j + ) +" + +lemma EiOOBi_EoOOBi_weaksecret_nk_prov: +" +All pkP pkD dh ck np nd sk nk dk ak #i. + ProvisionerFinishedProvisioning(pkP, pkD, dh, ck, np, nd, sk, nk, dk, ak) @i ==> + not (Ex #j. K(nk) @j) +" + +lemma EiOOBi_EoOOBi_weaksecret_dk_prov: +" +All pkP pkD dh ck np nd sk nk dk ak #i. + ProvisionerFinishedProvisioning(pkP, pkD, dh, ck, np, nd, sk, nk, dk, ak) @i ==> + not (Ex #j. K(dk) @j) +" + +lemma EiOOBi_EoOOBi_weaksecret_ak_prov: +" +All pkP pkD dh ck np nd sk nk dk ak #i. + ProvisionerFinishedProvisioning(pkP, pkD, dh, ck, np, nd, sk, nk, dk, ak) @i ==> + not (Ex #j. K(ak) @j) +" + +lemma EiOOBi_EoOOBi_weaksecret_nk_dev: +" +All pkP pkD dh ck np nd sk nk dk ak #i. + DeviceFinishedKeyDistribution(pkD, pkP, dh, ck, nd, np, sk, nk, dk, ak) @i ==> + not (Ex #j. K(nk) @j) +" + +lemma EiOOBi_EoOOBi_weaksecret_dk_dev: +" +All pkP pkD dh ck np nd sk nk dk ak #i. + DeviceFinishedKeyDistribution(pkD, pkP, dh, ck, nd, np, sk, nk, dk, ak) @i ==> + not (Ex #j. K(dk) @j) +" + +lemma EiOOBi_EoOOBi_weaksecret_ak_dev: +" +All pkP pkD dh ck np nd sk nk dk ak #i. + DeviceFinishedKeyDistribution(pkD, pkP, dh, ck, nd, np, sk, nk, dk, ak) @i ==> + not (Ex #j. K(ak) @j) +" + +lemma EiOOBi_EoOOBi_double_impersonation: +" +All pkP1 pkD1 pkP2 pkD2 dh1 dh2 ck1 ck2 np1 np2 nd1 nd2 sk1 sk2 nk1 nk2 dk1 dk2 ak1 ak2 #i #j. + DeviceFinishedKeyDistribution(pkD1, pkP1, dh1, ck1, nd1, np1, sk1, nk1, dk1, ak1) @i & + ProvisionerFinishedProvisioning(pkP2, pkD2, dh2, ck2, np2, nd2, sk2, nk2, dk2, ak2) @j ==> + not (Ex #k1 #k2 #k3 #k4 . + K(nk1) @k1 & K(dk1) @k2 & K(nk2) @k3 & K(dk2) @k4 + ) +" + +#endif + +/*******************************************/ +/* End lemmas about EiOOBi-EoOOBi exchange */ +/*******************************************/ + +/***************************************/ +/* Lemmas about EiOOBi-EoOOBo exchange */ +/***************************************/ + +#ifdef EiOOBiEoOOBo +lemma EiOOBi_EoOOBo_functional: exists-trace +" +Ex pkP1 pkD1 pkP2 pkD2 dh1 dh2 ck1 ck2 np1 np2 nd1 nd2 sk1 sk2 nk1 nk2 dk1 dk2 ak1 ak2 #i #j. + DeviceFinishedKeyDistribution(pkD1, pkP1, dh1, ck1, nd1, np1, sk1, nk1, dk1, ak1) @i & + ProvisionerFinishedProvisioning(pkP2, pkD2, dh2, ck2, np2, nd2, sk2, nk2, dk2, ak2) @j +" + +lemma EiOOBi_EoOOBo_auth_prov: +" +All pkP pkD dh ck np nd sk nk dk ak #i. + ProvisionerFinishedProvisioning(pkP, pkD, dh, ck, np, nd, sk, nk, dk, ak) @i ==> + ( + Ex #j. + DeviceFinishedProvisioning(pkD, pkP, dh, ck, nd, np, sk, nk, dk) @j + ) +" + +lemma EiOOBi_EoOOBo_auth_dev: +" +All pkP pkD dh ck np nd sk nk dk ak #i. + DeviceFinishedKeyDistribution(pkD, pkP, dh, ck, nd, np, sk, nk, dk, ak) @i ==> + ( + Ex #j. + ProvisionerFinishedProvisioning(pkP, pkD, dh, ck, np, nd, sk, nk, dk, ak) @j + ) +" + +lemma EiOOBi_EoOOBo_weaksecret_nk_prov: +" +All pkP pkD dh ck np nd sk nk dk ak #i. + ProvisionerFinishedProvisioning(pkP, pkD, dh, ck, np, nd, sk, nk, dk, ak) @i ==> + not (Ex #j. K(nk) @j) +" + +lemma EiOOBi_EoOOBo_weaksecret_dk_prov: +" +All pkP pkD dh ck np nd sk nk dk ak #i. + ProvisionerFinishedProvisioning(pkP, pkD, dh, ck, np, nd, sk, nk, dk, ak) @i ==> + not (Ex #j. K(dk) @j) +" + +lemma EiOOBi_EoOOBo_weaksecret_ak_prov: +" +All pkP pkD dh ck np nd sk nk dk ak #i. + ProvisionerFinishedProvisioning(pkP, pkD, dh, ck, np, nd, sk, nk, dk, ak) @i ==> + not (Ex #j. K(ak) @j) +" + +lemma EiOOBi_EoOOBo_weaksecret_nk_dev: +" +All pkP pkD dh ck np nd sk nk dk ak #i. + DeviceFinishedKeyDistribution(pkD, pkP, dh, ck, nd, np, sk, nk, dk, ak) @i ==> + not (Ex #j. K(nk) @j) +" + +lemma EiOOBi_EoOOBo_weaksecret_dk_dev: +" +All pkP pkD dh ck np nd sk nk dk ak #i. + DeviceFinishedKeyDistribution(pkD, pkP, dh, ck, nd, np, sk, nk, dk, ak) @i ==> + not (Ex #j. K(dk) @j) +" + +lemma EiOOBi_EoOOBo_weaksecret_ak_dev: +" +All pkP pkD dh ck np nd sk nk dk ak #i. + DeviceFinishedKeyDistribution(pkD, pkP, dh, ck, nd, np, sk, nk, dk, ak) @i ==> + not (Ex #j. K(ak) @j) +" + +lemma EiOOBi_EoOOBo_double_impersonation: +" +All pkP1 pkD1 pkP2 pkD2 dh1 dh2 ck1 ck2 np1 np2 nd1 nd2 sk1 sk2 nk1 nk2 dk1 dk2 ak1 ak2 #i #j. + DeviceFinishedKeyDistribution(pkD1, pkP1, dh1, ck1, nd1, np1, sk1, nk1, dk1, ak1) @i & + ProvisionerFinishedProvisioning(pkP2, pkD2, dh2, ck2, np2, nd2, sk2, nk2, dk2, ak2) @j ==> + not (Ex #k1 #k2 #k3 #k4 . + K(nk1) @k1 & K(dk1) @k2 & K(nk2) @k3 & K(dk2) @k4 + ) +" + +#endif + +/*******************************************/ +/* End lemmas about EiOOBi-EoOOBo exchange */ +/*******************************************/ + +/***************************************/ +/* Lemmas about EiOOBi-EoOOBs exchange */ +/***************************************/ + +#ifdef EiOOBiEoOOBs +lemma EiOOBi_EoOOBs_functional: exists-trace +" +Ex pkP1 pkD1 pkP2 pkD2 dh1 dh2 ck1 ck2 np1 np2 nd1 nd2 sk1 sk2 nk1 nk2 dk1 dk2 ak1 ak2 #i #j. + DeviceFinishedKeyDistribution(pkD1, pkP1, dh1, ck1, nd1, np1, sk1, nk1, dk1, ak1) @i & + ProvisionerFinishedProvisioning(pkP2, pkD2, dh2, ck2, np2, nd2, sk2, nk2, dk2, ak2) @j +" + +lemma EiOOBi_EoOOBs_auth_prov: +" +All pkP pkD dh ck np nd sk nk dk ak #i. + ProvisionerFinishedProvisioning(pkP, pkD, dh, ck, np, nd, sk, nk, dk, ak) @i ==> + ( + Ex #j. + DeviceFinishedProvisioning(pkD, pkP, dh, ck, nd, np, sk, nk, dk) @j + ) +" + +lemma EiOOBi_EoOOBs_auth_dev: +" +All pkP pkD dh ck np nd sk nk dk ak #i. + DeviceFinishedKeyDistribution(pkD, pkP, dh, ck, nd, np, sk, nk, dk, ak) @i ==> + ( + Ex #j. + ProvisionerFinishedProvisioning(pkP, pkD, dh, ck, np, nd, sk, nk, dk, ak) @j + ) +" + +lemma EiOOBi_EoOOBs_weaksecret_nk_prov: +" +All pkP pkD dh ck np nd sk nk dk ak #i. + ProvisionerFinishedProvisioning(pkP, pkD, dh, ck, np, nd, sk, nk, dk, ak) @i ==> + not (Ex #j. K(nk) @j) +" + +lemma EiOOBi_EoOOBs_weaksecret_dk_prov: +" +All pkP pkD dh ck np nd sk nk dk ak #i. + ProvisionerFinishedProvisioning(pkP, pkD, dh, ck, np, nd, sk, nk, dk, ak) @i ==> + not (Ex #j. K(dk) @j) +" + +lemma EiOOBi_EoOOBs_weaksecret_ak_prov: +" +All pkP pkD dh ck np nd sk nk dk ak #i. + ProvisionerFinishedProvisioning(pkP, pkD, dh, ck, np, nd, sk, nk, dk, ak) @i ==> + not (Ex #j. K(ak) @j) +" + +lemma EiOOBi_EoOOBs_weaksecret_nk_dev: +" +All pkP pkD dh ck np nd sk nk dk ak #i. + DeviceFinishedKeyDistribution(pkD, pkP, dh, ck, nd, np, sk, nk, dk, ak) @i ==> + not (Ex #j. K(nk) @j) +" + +lemma EiOOBi_EoOOBs_weaksecret_dk_dev: +" +All pkP pkD dh ck np nd sk nk dk ak #i. + DeviceFinishedKeyDistribution(pkD, pkP, dh, ck, nd, np, sk, nk, dk, ak) @i ==> + not (Ex #j. K(dk) @j) +" + +lemma EiOOBi_EoOOBs_weaksecret_ak_dev: +" +All pkP pkD dh ck np nd sk nk dk ak #i. + DeviceFinishedKeyDistribution(pkD, pkP, dh, ck, nd, np, sk, nk, dk, ak) @i ==> + not (Ex #j. K(ak) @j) +" + +lemma EiOOBi_EoOOBs_double_impersonation: +" +All pkP1 pkD1 pkP2 pkD2 dh1 dh2 ck1 ck2 np1 np2 nd1 nd2 sk1 sk2 nk1 nk2 dk1 dk2 ak1 ak2 #i #j. + DeviceFinishedKeyDistribution(pkD1, pkP1, dh1, ck1, nd1, np1, sk1, nk1, dk1, ak1) @i & + ProvisionerFinishedProvisioning(pkP2, pkD2, dh2, ck2, np2, nd2, sk2, nk2, dk2, ak2) @j ==> + not (Ex #k1 #k2 #k3 #k4 . + K(nk1) @k1 & K(dk1) @k2 & K(nk2) @k3 & K(dk2) @k4 + ) +" + +#endif + +/*******************************************/ +/* End lemmas about EiOOBi-EoOOBs exchange */ +/*******************************************/ + +/****************************************/ +/* Lemmas about EiOOBo-EoOOBno exchange */ +/****************************************/ + +#ifdef EiOOBoEoOOBno +lemma EiOOBo_EoOOBno_functional: exists-trace +" +Ex pkP1 pkD1 pkP2 pkD2 dh1 dh2 ck1 ck2 np1 np2 nd1 nd2 sk1 sk2 nk1 nk2 dk1 dk2 ak1 ak2 #i #j. + DeviceFinishedKeyDistribution(pkD1, pkP1, dh1, ck1, nd1, np1, sk1, nk1, dk1, ak1) @i & + ProvisionerFinishedProvisioning(pkP2, pkD2, dh2, ck2, np2, nd2, sk2, nk2, dk2, ak2) @j +" + +lemma EiOOBo_EoOOBno_auth_prov: +" +All pkP pkD dh ck np nd sk nk dk ak #i. + ProvisionerFinishedProvisioning(pkP, pkD, dh, ck, np, nd, sk, nk, dk, ak) @i ==> + ( + Ex #j. + DeviceFinishedProvisioning(pkD, pkP, dh, ck, nd, np, sk, nk, dk) @j + ) +" + +lemma EiOOBo_EoOOBno_auth_dev: +" +All pkP pkD dh ck np nd sk nk dk ak #i. + DeviceFinishedKeyDistribution(pkD, pkP, dh, ck, nd, np, sk, nk, dk, ak) @i ==> + ( + Ex #j. + ProvisionerFinishedProvisioning(pkP, pkD, dh, ck, np, nd, sk, nk, dk, ak) @j + ) +" + +lemma EiOOBo_EoOOBno_weaksecret_nk_prov: +" +All pkP pkD dh ck np nd sk nk dk ak #i. + ProvisionerFinishedProvisioning(pkP, pkD, dh, ck, np, nd, sk, nk, dk, ak) @i ==> + not (Ex #j. K(nk) @j) +" + +lemma EiOOBo_EoOOBno_weaksecret_dk_prov: +" +All pkP pkD dh ck np nd sk nk dk ak #i. + ProvisionerFinishedProvisioning(pkP, pkD, dh, ck, np, nd, sk, nk, dk, ak) @i ==> + not (Ex #j. K(dk) @j) +" + +lemma EiOOBo_EoOOBno_weaksecret_ak_prov: +" +All pkP pkD dh ck np nd sk nk dk ak #i. + ProvisionerFinishedProvisioning(pkP, pkD, dh, ck, np, nd, sk, nk, dk, ak) @i ==> + not (Ex #j. K(ak) @j) +" + +lemma EiOOBo_EoOOBno_weaksecret_nk_dev: +" +All pkP pkD dh ck np nd sk nk dk ak #i. + DeviceFinishedKeyDistribution(pkD, pkP, dh, ck, nd, np, sk, nk, dk, ak) @i ==> + not (Ex #j. K(nk) @j) +" + +lemma EiOOBo_EoOOBno_weaksecret_dk_dev: +" +All pkP pkD dh ck np nd sk nk dk ak #i. + DeviceFinishedKeyDistribution(pkD, pkP, dh, ck, nd, np, sk, nk, dk, ak) @i ==> + not (Ex #j. K(dk) @j) +" + +lemma EiOOBo_EoOOBno_weaksecret_ak_dev: +" +All pkP pkD dh ck np nd sk nk dk ak #i. + DeviceFinishedKeyDistribution(pkD, pkP, dh, ck, nd, np, sk, nk, dk, ak) @i ==> + not (Ex #j. K(ak) @j) +" + +lemma EiOOBo_EoOOBno_double_impersonation: +" +All pkP1 pkD1 pkP2 pkD2 dh1 dh2 ck1 ck2 np1 np2 nd1 nd2 sk1 sk2 nk1 nk2 dk1 dk2 ak1 ak2 #i #j. + DeviceFinishedKeyDistribution(pkD1, pkP1, dh1, ck1, nd1, np1, sk1, nk1, dk1, ak1) @i & + ProvisionerFinishedProvisioning(pkP2, pkD2, dh2, ck2, np2, nd2, sk2, nk2, dk2, ak2) @j ==> + not (Ex #k1 #k2 #k3 #k4 . + K(nk1) @k1 & K(dk1) @k2 & K(nk2) @k3 & K(dk2) @k4 + ) +" + +#endif + +/********************************************/ +/* End lemmas about EiOOBo-EoOOBno exchange */ +/********************************************/ + +/***************************************/ +/* Lemmas about EiOOBo-EoOOBi exchange */ +/***************************************/ + +#ifdef EiOOBoEoOOBi +lemma EiOOBo_EoOOBi_functional: exists-trace +" +Ex pkP1 pkD1 pkP2 pkD2 dh1 dh2 ck1 ck2 np1 np2 nd1 nd2 sk1 sk2 nk1 nk2 dk1 dk2 ak1 ak2 #i #j. + DeviceFinishedKeyDistribution(pkD1, pkP1, dh1, ck1, nd1, np1, sk1, nk1, dk1, ak1) @i & + ProvisionerFinishedProvisioning(pkP2, pkD2, dh2, ck2, np2, nd2, sk2, nk2, dk2, ak2) @j +" + +lemma EiOOBo_EoOOBi_auth_prov: +" +All pkP pkD dh ck np nd sk nk dk ak #i. + ProvisionerFinishedProvisioning(pkP, pkD, dh, ck, np, nd, sk, nk, dk, ak) @i ==> + ( + Ex #j. + DeviceFinishedProvisioning(pkD, pkP, dh, ck, nd, np, sk, nk, dk) @j + ) +" + +lemma EiOOBo_EoOOBi_auth_dev: +" +All pkP pkD dh ck np nd sk nk dk ak #i. + DeviceFinishedKeyDistribution(pkD, pkP, dh, ck, nd, np, sk, nk, dk, ak) @i ==> + ( + Ex #j. + ProvisionerFinishedProvisioning(pkP, pkD, dh, ck, np, nd, sk, nk, dk, ak) @j + ) +" + +lemma EiOOBo_EoOOBi_weaksecret_nk_prov: +" +All pkP pkD dh ck np nd sk nk dk ak #i. + ProvisionerFinishedProvisioning(pkP, pkD, dh, ck, np, nd, sk, nk, dk, ak) @i ==> + not (Ex #j. K(nk) @j) +" + +lemma EiOOBo_EoOOBi_weaksecret_dk_prov: +" +All pkP pkD dh ck np nd sk nk dk ak #i. + ProvisionerFinishedProvisioning(pkP, pkD, dh, ck, np, nd, sk, nk, dk, ak) @i ==> + not (Ex #j. K(dk) @j) +" + +lemma EiOOBo_EoOOBi_weaksecret_ak_prov: +" +All pkP pkD dh ck np nd sk nk dk ak #i. + ProvisionerFinishedProvisioning(pkP, pkD, dh, ck, np, nd, sk, nk, dk, ak) @i ==> + not (Ex #j. K(ak) @j) +" + +lemma EiOOBo_EoOOBi_weaksecret_nk_dev: +" +All pkP pkD dh ck np nd sk nk dk ak #i. + DeviceFinishedKeyDistribution(pkD, pkP, dh, ck, nd, np, sk, nk, dk, ak) @i ==> + not (Ex #j. K(nk) @j) +" + +lemma EiOOBo_EoOOBi_weaksecret_dk_dev: +" +All pkP pkD dh ck np nd sk nk dk ak #i. + DeviceFinishedKeyDistribution(pkD, pkP, dh, ck, nd, np, sk, nk, dk, ak) @i ==> + not (Ex #j. K(dk) @j) +" + +lemma EiOOBo_EoOOBi_weaksecret_ak_dev: +" +All pkP pkD dh ck np nd sk nk dk ak #i. + DeviceFinishedKeyDistribution(pkD, pkP, dh, ck, nd, np, sk, nk, dk, ak) @i ==> + not (Ex #j. K(ak) @j) +" + +lemma EiOOBo_EoOOBi_double_impersonation: +" +All pkP1 pkD1 pkP2 pkD2 dh1 dh2 ck1 ck2 np1 np2 nd1 nd2 sk1 sk2 nk1 nk2 dk1 dk2 ak1 ak2 #i #j. + DeviceFinishedKeyDistribution(pkD1, pkP1, dh1, ck1, nd1, np1, sk1, nk1, dk1, ak1) @i & + ProvisionerFinishedProvisioning(pkP2, pkD2, dh2, ck2, np2, nd2, sk2, nk2, dk2, ak2) @j ==> + not (Ex #k1 #k2 #k3 #k4 . + K(nk1) @k1 & K(dk1) @k2 & K(nk2) @k3 & K(dk2) @k4 + ) +" + +#endif + +/*******************************************/ +/* End lemmas about EiOOBo-EoOOBi exchange */ +/*******************************************/ + +/***************************************/ +/* Lemmas about EiOOBo-EoOOBo exchange */ +/***************************************/ + +#ifdef EiOOBoEoOOBo +lemma EiOOBo_EoOOBo_functional: exists-trace +" +Ex pkP1 pkD1 pkP2 pkD2 dh1 dh2 ck1 ck2 np1 np2 nd1 nd2 sk1 sk2 nk1 nk2 dk1 dk2 ak1 ak2 #i #j. + DeviceFinishedKeyDistribution(pkD1, pkP1, dh1, ck1, nd1, np1, sk1, nk1, dk1, ak1) @i & + ProvisionerFinishedProvisioning(pkP2, pkD2, dh2, ck2, np2, nd2, sk2, nk2, dk2, ak2) @j +" + +lemma EiOOBo_EoOOBo_auth_prov: +" +All pkP pkD dh ck np nd sk nk dk ak #i. + ProvisionerFinishedProvisioning(pkP, pkD, dh, ck, np, nd, sk, nk, dk, ak) @i ==> + ( + Ex #j. + DeviceFinishedProvisioning(pkD, pkP, dh, ck, nd, np, sk, nk, dk) @j + ) +" + +lemma EiOOBo_EoOOBo_auth_dev: +" +All pkP pkD dh ck np nd sk nk dk ak #i. + DeviceFinishedKeyDistribution(pkD, pkP, dh, ck, nd, np, sk, nk, dk, ak) @i ==> + ( + Ex #j. + ProvisionerFinishedProvisioning(pkP, pkD, dh, ck, np, nd, sk, nk, dk, ak) @j + ) +" + +lemma EiOOBo_EoOOBo_weaksecret_nk_prov: +" +All pkP pkD dh ck np nd sk nk dk ak #i. + ProvisionerFinishedProvisioning(pkP, pkD, dh, ck, np, nd, sk, nk, dk, ak) @i ==> + not (Ex #j. K(nk) @j) +" + +lemma EiOOBo_EoOOBo_weaksecret_dk_prov: +" +All pkP pkD dh ck np nd sk nk dk ak #i. + ProvisionerFinishedProvisioning(pkP, pkD, dh, ck, np, nd, sk, nk, dk, ak) @i ==> + not (Ex #j. K(dk) @j) +" + +lemma EiOOBo_EoOOBo_weaksecret_ak_prov: +" +All pkP pkD dh ck np nd sk nk dk ak #i. + ProvisionerFinishedProvisioning(pkP, pkD, dh, ck, np, nd, sk, nk, dk, ak) @i ==> + not (Ex #j. K(ak) @j) +" + +lemma EiOOBo_EoOOBo_weaksecret_nk_dev: +" +All pkP pkD dh ck np nd sk nk dk ak #i. + DeviceFinishedKeyDistribution(pkD, pkP, dh, ck, nd, np, sk, nk, dk, ak) @i ==> + not (Ex #j. K(nk) @j) +" + +lemma EiOOBo_EoOOBo_weaksecret_dk_dev: +" +All pkP pkD dh ck np nd sk nk dk ak #i. + DeviceFinishedKeyDistribution(pkD, pkP, dh, ck, nd, np, sk, nk, dk, ak) @i ==> + not (Ex #j. K(dk) @j) +" + +lemma EiOOBo_EoOOBo_weaksecret_ak_dev: +" +All pkP pkD dh ck np nd sk nk dk ak #i. + DeviceFinishedKeyDistribution(pkD, pkP, dh, ck, nd, np, sk, nk, dk, ak) @i ==> + not (Ex #j. K(ak) @j) +" + +lemma EiOOBo_EoOOBo_double_impersonation: +" +All pkP1 pkD1 pkP2 pkD2 dh1 dh2 ck1 ck2 np1 np2 nd1 nd2 sk1 sk2 nk1 nk2 dk1 dk2 ak1 ak2 #i #j. + DeviceFinishedKeyDistribution(pkD1, pkP1, dh1, ck1, nd1, np1, sk1, nk1, dk1, ak1) @i & + ProvisionerFinishedProvisioning(pkP2, pkD2, dh2, ck2, np2, nd2, sk2, nk2, dk2, ak2) @j ==> + not (Ex #k1 #k2 #k3 #k4 . + K(nk1) @k1 & K(dk1) @k2 & K(nk2) @k3 & K(dk2) @k4 + ) +" + +#endif + +/*******************************************/ +/* End lemmas about EiOOBo-EoOOBo exchange */ +/*******************************************/ + +/***************************************/ +/* Lemmas about EiOOBo-EoOOBs exchange */ +/***************************************/ + +#ifdef EiOOBoEoOOBs +lemma EiOOBo_EoOOBs_functional: exists-trace +" +Ex pkP1 pkD1 pkP2 pkD2 dh1 dh2 ck1 ck2 np1 np2 nd1 nd2 sk1 sk2 nk1 nk2 dk1 dk2 ak1 ak2 #i #j. + DeviceFinishedKeyDistribution(pkD1, pkP1, dh1, ck1, nd1, np1, sk1, nk1, dk1, ak1) @i & + ProvisionerFinishedProvisioning(pkP2, pkD2, dh2, ck2, np2, nd2, sk2, nk2, dk2, ak2) @j +" + +lemma EiOOBo_EoOOBs_auth_prov: +" +All pkP pkD dh ck np nd sk nk dk ak #i. + ProvisionerFinishedProvisioning(pkP, pkD, dh, ck, np, nd, sk, nk, dk, ak) @i ==> + ( + Ex #j. + DeviceFinishedProvisioning(pkD, pkP, dh, ck, nd, np, sk, nk, dk) @j + ) +" + +lemma EiOOBo_EoOOBs_auth_dev: +" +All pkP pkD dh ck np nd sk nk dk ak #i. + DeviceFinishedKeyDistribution(pkD, pkP, dh, ck, nd, np, sk, nk, dk, ak) @i ==> + ( + Ex #j. + ProvisionerFinishedProvisioning(pkP, pkD, dh, ck, np, nd, sk, nk, dk, ak) @j + ) +" + +lemma EiOOBo_EoOOBs_weaksecret_nk_prov: +" +All pkP pkD dh ck np nd sk nk dk ak #i. + ProvisionerFinishedProvisioning(pkP, pkD, dh, ck, np, nd, sk, nk, dk, ak) @i ==> + not (Ex #j. K(nk) @j) +" + +lemma EiOOBo_EoOOBs_weaksecret_dk_prov: +" +All pkP pkD dh ck np nd sk nk dk ak #i. + ProvisionerFinishedProvisioning(pkP, pkD, dh, ck, np, nd, sk, nk, dk, ak) @i ==> + not (Ex #j. K(dk) @j) +" + +lemma EiOOBo_EoOOBs_weaksecret_ak_prov: +" +All pkP pkD dh ck np nd sk nk dk ak #i. + ProvisionerFinishedProvisioning(pkP, pkD, dh, ck, np, nd, sk, nk, dk, ak) @i ==> + not (Ex #j. K(ak) @j) +" + +lemma EiOOBo_EoOOBs_weaksecret_nk_dev: +" +All pkP pkD dh ck np nd sk nk dk ak #i. + DeviceFinishedKeyDistribution(pkD, pkP, dh, ck, nd, np, sk, nk, dk, ak) @i ==> + not (Ex #j. K(nk) @j) +" + +lemma EiOOBo_EoOOBs_weaksecret_dk_dev: +" +All pkP pkD dh ck np nd sk nk dk ak #i. + DeviceFinishedKeyDistribution(pkD, pkP, dh, ck, nd, np, sk, nk, dk, ak) @i ==> + not (Ex #j. K(dk) @j) +" + +lemma EiOOBo_EoOOBs_weaksecret_ak_dev: +" +All pkP pkD dh ck np nd sk nk dk ak #i. + DeviceFinishedKeyDistribution(pkD, pkP, dh, ck, nd, np, sk, nk, dk, ak) @i ==> + not (Ex #j. K(ak) @j) +" + +lemma EiOOBo_EoOOBs_double_impersonation: +" +All pkP1 pkD1 pkP2 pkD2 dh1 dh2 ck1 ck2 np1 np2 nd1 nd2 sk1 sk2 nk1 nk2 dk1 dk2 ak1 ak2 #i #j. + DeviceFinishedKeyDistribution(pkD1, pkP1, dh1, ck1, nd1, np1, sk1, nk1, dk1, ak1) @i & + ProvisionerFinishedProvisioning(pkP2, pkD2, dh2, ck2, np2, nd2, sk2, nk2, dk2, ak2) @j ==> + not (Ex #k1 #k2 #k3 #k4 . + K(nk1) @k1 & K(dk1) @k2 & K(nk2) @k3 & K(dk2) @k4 + ) +" + +#endif + +/*******************************************/ +/* End lemmas about EiOOBo-EoOOBs exchange */ +/*******************************************/ + +/****************************************/ +/* Lemmas about EiOOBs-EoOOBno exchange */ +/****************************************/ + +#ifdef EiOOBsEoOOBno +lemma EiOOBs_EoOOBno_functional: exists-trace +" +Ex pkP1 pkD1 pkP2 pkD2 dh1 dh2 ck1 ck2 np1 np2 nd1 nd2 sk1 sk2 nk1 nk2 dk1 dk2 ak1 ak2 #i #j. + DeviceFinishedKeyDistribution(pkD1, pkP1, dh1, ck1, nd1, np1, sk1, nk1, dk1, ak1) @i & + ProvisionerFinishedProvisioning(pkP2, pkD2, dh2, ck2, np2, nd2, sk2, nk2, dk2, ak2) @j +" + +lemma EiOOBs_EoOOBno_auth_prov: +" +All pkP pkD dh ck np nd sk nk dk ak #i. + ProvisionerFinishedProvisioning(pkP, pkD, dh, ck, np, nd, sk, nk, dk, ak) @i ==> + ( + Ex #j. + DeviceFinishedProvisioning(pkD, pkP, dh, ck, nd, np, sk, nk, dk) @j + ) +" + +lemma EiOOBs_EoOOBno_auth_dev: +" +All pkP pkD dh ck np nd sk nk dk ak #i. + DeviceFinishedKeyDistribution(pkD, pkP, dh, ck, nd, np, sk, nk, dk, ak) @i ==> + ( + Ex #j. + ProvisionerFinishedProvisioning(pkP, pkD, dh, ck, np, nd, sk, nk, dk, ak) @j + ) +" + +lemma EiOOBs_EoOOBno_weaksecret_nk_prov: +" +All pkP pkD dh ck np nd sk nk dk ak #i. + ProvisionerFinishedProvisioning(pkP, pkD, dh, ck, np, nd, sk, nk, dk, ak) @i ==> + not (Ex #j. K(nk) @j) +" + +lemma EiOOBs_EoOOBno_weaksecret_dk_prov: +" +All pkP pkD dh ck np nd sk nk dk ak #i. + ProvisionerFinishedProvisioning(pkP, pkD, dh, ck, np, nd, sk, nk, dk, ak) @i ==> + not (Ex #j. K(dk) @j) +" + +lemma EiOOBs_EoOOBno_weaksecret_ak_prov: +" +All pkP pkD dh ck np nd sk nk dk ak #i. + ProvisionerFinishedProvisioning(pkP, pkD, dh, ck, np, nd, sk, nk, dk, ak) @i ==> + not (Ex #j. K(ak) @j) +" + +lemma EiOOBs_EoOOBno_weaksecret_nk_dev: +" +All pkP pkD dh ck np nd sk nk dk ak #i. + DeviceFinishedKeyDistribution(pkD, pkP, dh, ck, nd, np, sk, nk, dk, ak) @i ==> + not (Ex #j. K(nk) @j) +" + +lemma EiOOBs_EoOOBno_weaksecret_dk_dev: +" +All pkP pkD dh ck np nd sk nk dk ak #i. + DeviceFinishedKeyDistribution(pkD, pkP, dh, ck, nd, np, sk, nk, dk, ak) @i ==> + not (Ex #j. K(dk) @j) +" + +lemma EiOOBs_EoOOBno_weaksecret_ak_dev: +" +All pkP pkD dh ck np nd sk nk dk ak #i. + DeviceFinishedKeyDistribution(pkD, pkP, dh, ck, nd, np, sk, nk, dk, ak) @i ==> + not (Ex #j. K(ak) @j) +" + +lemma EiOOBs_EoOOBno_double_impersonation: +" +All pkP1 pkD1 pkP2 pkD2 dh1 dh2 ck1 ck2 np1 np2 nd1 nd2 sk1 sk2 nk1 nk2 dk1 dk2 ak1 ak2 #i #j. + DeviceFinishedKeyDistribution(pkD1, pkP1, dh1, ck1, nd1, np1, sk1, nk1, dk1, ak1) @i & + ProvisionerFinishedProvisioning(pkP2, pkD2, dh2, ck2, np2, nd2, sk2, nk2, dk2, ak2) @j ==> + not (Ex #k1 #k2 #k3 #k4 . + K(nk1) @k1 & K(dk1) @k2 & K(nk2) @k3 & K(dk2) @k4 + ) +" + +#endif + +/********************************************/ +/* End lemmas about EiOOBs-EoOOBno exchange */ +/********************************************/ + +/***************************************/ +/* Lemmas about EiOOBs-EoOOBi exchange */ +/***************************************/ + +#ifdef EiOOBsEoOOBi +lemma EiOOBs_EoOOBi_functional: exists-trace +" +Ex pkP1 pkD1 pkP2 pkD2 dh1 dh2 ck1 ck2 np1 np2 nd1 nd2 sk1 sk2 nk1 nk2 dk1 dk2 ak1 ak2 #i #j. + DeviceFinishedKeyDistribution(pkD1, pkP1, dh1, ck1, nd1, np1, sk1, nk1, dk1, ak1) @i & + ProvisionerFinishedProvisioning(pkP2, pkD2, dh2, ck2, np2, nd2, sk2, nk2, dk2, ak2) @j +" + +lemma EiOOBs_EoOOBi_auth_prov: +" +All pkP pkD dh ck np nd sk nk dk ak #i. + ProvisionerFinishedProvisioning(pkP, pkD, dh, ck, np, nd, sk, nk, dk, ak) @i ==> + ( + Ex #j. + DeviceFinishedProvisioning(pkD, pkP, dh, ck, nd, np, sk, nk, dk) @j + ) +" + +lemma EiOOBs_EoOOBi_auth_dev: +" +All pkP pkD dh ck np nd sk nk dk ak #i. + DeviceFinishedKeyDistribution(pkD, pkP, dh, ck, nd, np, sk, nk, dk, ak) @i ==> + ( + Ex #j. + ProvisionerFinishedProvisioning(pkP, pkD, dh, ck, np, nd, sk, nk, dk, ak) @j + ) +" + +lemma EiOOBs_EoOOBi_weaksecret_nk_prov: +" +All pkP pkD dh ck np nd sk nk dk ak #i. + ProvisionerFinishedProvisioning(pkP, pkD, dh, ck, np, nd, sk, nk, dk, ak) @i ==> + not (Ex #j. K(nk) @j) +" + +lemma EiOOBs_EoOOBi_weaksecret_dk_prov: +" +All pkP pkD dh ck np nd sk nk dk ak #i. + ProvisionerFinishedProvisioning(pkP, pkD, dh, ck, np, nd, sk, nk, dk, ak) @i ==> + not (Ex #j. K(dk) @j) +" + +lemma EiOOBs_EoOOBi_weaksecret_ak_prov: +" +All pkP pkD dh ck np nd sk nk dk ak #i. + ProvisionerFinishedProvisioning(pkP, pkD, dh, ck, np, nd, sk, nk, dk, ak) @i ==> + not (Ex #j. K(ak) @j) +" + +lemma EiOOBs_EoOOBi_weaksecret_nk_dev: +" +All pkP pkD dh ck np nd sk nk dk ak #i. + DeviceFinishedKeyDistribution(pkD, pkP, dh, ck, nd, np, sk, nk, dk, ak) @i ==> + not (Ex #j. K(nk) @j) +" + +lemma EiOOBs_EoOOBi_weaksecret_dk_dev: +" +All pkP pkD dh ck np nd sk nk dk ak #i. + DeviceFinishedKeyDistribution(pkD, pkP, dh, ck, nd, np, sk, nk, dk, ak) @i ==> + not (Ex #j. K(dk) @j) +" + +lemma EiOOBs_EoOOBi_weaksecret_ak_dev: +" +All pkP pkD dh ck np nd sk nk dk ak #i. + DeviceFinishedKeyDistribution(pkD, pkP, dh, ck, nd, np, sk, nk, dk, ak) @i ==> + not (Ex #j. K(ak) @j) +" + +lemma EiOOBs_EoOOBi_double_impersonation: +" +All pkP1 pkD1 pkP2 pkD2 dh1 dh2 ck1 ck2 np1 np2 nd1 nd2 sk1 sk2 nk1 nk2 dk1 dk2 ak1 ak2 #i #j. + DeviceFinishedKeyDistribution(pkD1, pkP1, dh1, ck1, nd1, np1, sk1, nk1, dk1, ak1) @i & + ProvisionerFinishedProvisioning(pkP2, pkD2, dh2, ck2, np2, nd2, sk2, nk2, dk2, ak2) @j ==> + not (Ex #k1 #k2 #k3 #k4 . + K(nk1) @k1 & K(dk1) @k2 & K(nk2) @k3 & K(dk2) @k4 + ) +" + +#endif + +/*******************************************/ +/* End lemmas about EiOOBs-EoOOBi exchange */ +/*******************************************/ + +/***************************************/ +/* Lemmas about EiOOBs-EoOOBo exchange */ +/***************************************/ + +#ifdef EiOOBsEoOOBo +lemma EiOOBs_EoOOBo_functional: exists-trace +" +Ex pkP1 pkD1 pkP2 pkD2 dh1 dh2 ck1 ck2 np1 np2 nd1 nd2 sk1 sk2 nk1 nk2 dk1 dk2 ak1 ak2 #i #j. + DeviceFinishedKeyDistribution(pkD1, pkP1, dh1, ck1, nd1, np1, sk1, nk1, dk1, ak1) @i & + ProvisionerFinishedProvisioning(pkP2, pkD2, dh2, ck2, np2, nd2, sk2, nk2, dk2, ak2) @j +" + +lemma EiOOBs_EoOOBo_auth_prov: +" +All pkP pkD dh ck np nd sk nk dk ak #i. + ProvisionerFinishedProvisioning(pkP, pkD, dh, ck, np, nd, sk, nk, dk, ak) @i ==> + ( + Ex #j. + DeviceFinishedProvisioning(pkD, pkP, dh, ck, nd, np, sk, nk, dk) @j + ) +" + +lemma EiOOBs_EoOOBo_auth_dev: +" +All pkP pkD dh ck np nd sk nk dk ak #i. + DeviceFinishedKeyDistribution(pkD, pkP, dh, ck, nd, np, sk, nk, dk, ak) @i ==> + ( + Ex #j. + ProvisionerFinishedProvisioning(pkP, pkD, dh, ck, np, nd, sk, nk, dk, ak) @j + ) +" + +lemma EiOOBs_EoOOBo_weaksecret_nk_prov: +" +All pkP pkD dh ck np nd sk nk dk ak #i. + ProvisionerFinishedProvisioning(pkP, pkD, dh, ck, np, nd, sk, nk, dk, ak) @i ==> + not (Ex #j. K(nk) @j) +" + +lemma EiOOBs_EoOOBo_weaksecret_dk_prov: +" +All pkP pkD dh ck np nd sk nk dk ak #i. + ProvisionerFinishedProvisioning(pkP, pkD, dh, ck, np, nd, sk, nk, dk, ak) @i ==> + not (Ex #j. K(dk) @j) +" + +lemma EiOOBs_EoOOBo_weaksecret_ak_prov: +" +All pkP pkD dh ck np nd sk nk dk ak #i. + ProvisionerFinishedProvisioning(pkP, pkD, dh, ck, np, nd, sk, nk, dk, ak) @i ==> + not (Ex #j. K(ak) @j) +" + +lemma EiOOBs_EoOOBo_weaksecret_nk_dev: +" +All pkP pkD dh ck np nd sk nk dk ak #i. + DeviceFinishedKeyDistribution(pkD, pkP, dh, ck, nd, np, sk, nk, dk, ak) @i ==> + not (Ex #j. K(nk) @j) +" + +lemma EiOOBs_EoOOBo_weaksecret_dk_dev: +" +All pkP pkD dh ck np nd sk nk dk ak #i. + DeviceFinishedKeyDistribution(pkD, pkP, dh, ck, nd, np, sk, nk, dk, ak) @i ==> + not (Ex #j. K(dk) @j) +" + +lemma EiOOBs_EoOOBo_weaksecret_ak_dev: +" +All pkP pkD dh ck np nd sk nk dk ak #i. + DeviceFinishedKeyDistribution(pkD, pkP, dh, ck, nd, np, sk, nk, dk, ak) @i ==> + not (Ex #j. K(ak) @j) +" + +lemma EiOOBs_EoOOBo_double_impersonation: +" +All pkP1 pkD1 pkP2 pkD2 dh1 dh2 ck1 ck2 np1 np2 nd1 nd2 sk1 sk2 nk1 nk2 dk1 dk2 ak1 ak2 #i #j. + DeviceFinishedKeyDistribution(pkD1, pkP1, dh1, ck1, nd1, np1, sk1, nk1, dk1, ak1) @i & + ProvisionerFinishedProvisioning(pkP2, pkD2, dh2, ck2, np2, nd2, sk2, nk2, dk2, ak2) @j ==> + not (Ex #k1 #k2 #k3 #k4 . + K(nk1) @k1 & K(dk1) @k2 & K(nk2) @k3 & K(dk2) @k4 + ) +" + +#endif + +/*******************************************/ +/* End lemmas about EiOOBs-EoOOBo exchange */ +/*******************************************/ + +/***************************************/ +/* Lemmas about EiOOBs-EoOOBs exchange */ +/***************************************/ + +#ifdef EiOOBsEoOOBs +lemma EiOOBs_EoOOBs_functional: exists-trace +" +Ex pkP1 pkD1 pkP2 pkD2 dh1 dh2 ck1 ck2 np1 np2 nd1 nd2 sk1 sk2 nk1 nk2 dk1 dk2 ak1 ak2 #i #j. + DeviceFinishedKeyDistribution(pkD1, pkP1, dh1, ck1, nd1, np1, sk1, nk1, dk1, ak1) @i & + ProvisionerFinishedProvisioning(pkP2, pkD2, dh2, ck2, np2, nd2, sk2, nk2, dk2, ak2) @j +" + +lemma EiOOBs_EoOOBs_auth_prov: +" +All pkP pkD dh ck np nd sk nk dk ak #i. + ProvisionerFinishedProvisioning(pkP, pkD, dh, ck, np, nd, sk, nk, dk, ak) @i ==> + ( + Ex #j. + DeviceFinishedProvisioning(pkD, pkP, dh, ck, nd, np, sk, nk, dk) @j + ) +" + +lemma EiOOBs_EoOOBs_auth_dev: +" +All pkP pkD dh ck np nd sk nk dk ak #i. + DeviceFinishedKeyDistribution(pkD, pkP, dh, ck, nd, np, sk, nk, dk, ak) @i ==> + ( + Ex #j. + ProvisionerFinishedProvisioning(pkP, pkD, dh, ck, np, nd, sk, nk, dk, ak) @j + ) +" + +lemma EiOOBs_EoOOBs_weaksecret_nk_prov: +" +All pkP pkD dh ck np nd sk nk dk ak #i. + ProvisionerFinishedProvisioning(pkP, pkD, dh, ck, np, nd, sk, nk, dk, ak) @i ==> + not (Ex #j. K(nk) @j) +" + +lemma EiOOBs_EoOOBs_weaksecret_dk_prov: +" +All pkP pkD dh ck np nd sk nk dk ak #i. + ProvisionerFinishedProvisioning(pkP, pkD, dh, ck, np, nd, sk, nk, dk, ak) @i ==> + not (Ex #j. K(dk) @j) +" + +lemma EiOOBs_EoOOBs_weaksecret_ak_prov: +" +All pkP pkD dh ck np nd sk nk dk ak #i. + ProvisionerFinishedProvisioning(pkP, pkD, dh, ck, np, nd, sk, nk, dk, ak) @i ==> + not (Ex #j. K(ak) @j) +" + +lemma EiOOBs_EoOOBs_weaksecret_nk_dev: +" +All pkP pkD dh ck np nd sk nk dk ak #i. + DeviceFinishedKeyDistribution(pkD, pkP, dh, ck, nd, np, sk, nk, dk, ak) @i ==> + not (Ex #j. K(nk) @j) +" + +lemma EiOOBs_EoOOBs_weaksecret_dk_dev: +" +All pkP pkD dh ck np nd sk nk dk ak #i. + DeviceFinishedKeyDistribution(pkD, pkP, dh, ck, nd, np, sk, nk, dk, ak) @i ==> + not (Ex #j. K(dk) @j) +" + +lemma EiOOBs_EoOOBs_weaksecret_ak_dev: +" +All pkP pkD dh ck np nd sk nk dk ak #i. + DeviceFinishedKeyDistribution(pkD, pkP, dh, ck, nd, np, sk, nk, dk, ak) @i ==> + not (Ex #j. K(ak) @j) +" + +lemma EiOOBs_EoOOBs_double_impersonation: +" +All pkP1 pkD1 pkP2 pkD2 dh1 dh2 ck1 ck2 np1 np2 nd1 nd2 sk1 sk2 nk1 nk2 dk1 dk2 ak1 ak2 #i #j. + DeviceFinishedKeyDistribution(pkD1, pkP1, dh1, ck1, nd1, np1, sk1, nk1, dk1, ak1) @i & + ProvisionerFinishedProvisioning(pkP2, pkD2, dh2, ck2, np2, nd2, sk2, nk2, dk2, ak2) @j ==> + not (Ex #k1 #k2 #k3 #k4 . + K(nk1) @k1 & K(dk1) @k2 & K(nk2) @k3 & K(dk2) @k4 + ) +" + +#endif + +/*******************************************/ +/* End lemmas about EiOOBs-EoOOBs exchange */ +/*******************************************/ + +/*****************************************/ +/* Lemmas about EoOOBno-EiOOBno exchange */ +/*****************************************/ + +#ifdef EoOOBnoEiOOBno +lemma EoOOBno_EiOOBno_functional: exists-trace +" +Ex pkP1 pkD1 pkP2 pkD2 dh1 dh2 ck1 ck2 np1 np2 nd1 nd2 sk1 sk2 nk1 nk2 dk1 dk2 ak1 ak2 #i #j. + DeviceFinishedKeyDistribution(pkD1, pkP1, dh1, ck1, nd1, np1, sk1, nk1, dk1, ak1) @i & + ProvisionerFinishedProvisioning(pkP2, pkD2, dh2, ck2, np2, nd2, sk2, nk2, dk2, ak2) @j +" + +lemma EoOOBno_EiOOBno_auth_prov: +" +All pkP pkD dh ck np nd sk nk dk ak #i. + ProvisionerFinishedProvisioning(pkP, pkD, dh, ck, np, nd, sk, nk, dk, ak) @i ==> + ( + Ex #j. + DeviceFinishedProvisioning(pkD, pkP, dh, ck, nd, np, sk, nk, dk) @j + ) +" + +lemma EoOOBno_EiOOBno_auth_dev: +" +All pkP pkD dh ck np nd sk nk dk ak #i. + DeviceFinishedKeyDistribution(pkD, pkP, dh, ck, nd, np, sk, nk, dk, ak) @i ==> + ( + Ex #j. + ProvisionerFinishedProvisioning(pkP, pkD, dh, ck, np, nd, sk, nk, dk, ak) @j + ) +" + +lemma EoOOBno_EiOOBno_weaksecret_nk_prov: +" +All pkP pkD dh ck np nd sk nk dk ak #i. + ProvisionerFinishedProvisioning(pkP, pkD, dh, ck, np, nd, sk, nk, dk, ak) @i ==> + not (Ex #j. K(nk) @j) +" + +lemma EoOOBno_EiOOBno_weaksecret_dk_prov: +" +All pkP pkD dh ck np nd sk nk dk ak #i. + ProvisionerFinishedProvisioning(pkP, pkD, dh, ck, np, nd, sk, nk, dk, ak) @i ==> + not (Ex #j. K(dk) @j) +" + +lemma EoOOBno_EiOOBno_weaksecret_ak_prov: +" +All pkP pkD dh ck np nd sk nk dk ak #i. + ProvisionerFinishedProvisioning(pkP, pkD, dh, ck, np, nd, sk, nk, dk, ak) @i ==> + not (Ex #j. K(ak) @j) +" + +lemma EoOOBno_EiOOBno_weaksecret_nk_dev: +" +All pkP pkD dh ck np nd sk nk dk ak #i. + DeviceFinishedKeyDistribution(pkD, pkP, dh, ck, nd, np, sk, nk, dk, ak) @i ==> + not (Ex #j. K(nk) @j) +" + +lemma EoOOBno_EiOOBno_weaksecret_dk_dev: +" +All pkP pkD dh ck np nd sk nk dk ak #i. + DeviceFinishedKeyDistribution(pkD, pkP, dh, ck, nd, np, sk, nk, dk, ak) @i ==> + not (Ex #j. K(dk) @j) +" + +lemma EoOOBno_EiOOBno_weaksecret_ak_dev: +" +All pkP pkD dh ck np nd sk nk dk ak #i. + DeviceFinishedKeyDistribution(pkD, pkP, dh, ck, nd, np, sk, nk, dk, ak) @i ==> + not (Ex #j. K(ak) @j) +" + +lemma EoOOBno_EiOOBno_double_impersonation: +" +All pkP1 pkD1 pkP2 pkD2 dh1 dh2 ck1 ck2 np1 np2 nd1 nd2 sk1 sk2 nk1 nk2 dk1 dk2 ak1 ak2 #i #j. + DeviceFinishedKeyDistribution(pkD1, pkP1, dh1, ck1, nd1, np1, sk1, nk1, dk1, ak1) @i & + ProvisionerFinishedProvisioning(pkP2, pkD2, dh2, ck2, np2, nd2, sk2, nk2, dk2, ak2) @j ==> + not (Ex #k1 #k2 #k3 #k4 . + K(nk1) @k1 & K(dk1) @k2 & K(nk2) @k3 & K(dk2) @k4 + ) +" + +#endif + +/*********************************************/ +/* End lemmas about EoOOBno-EiOOBno exchange */ +/*********************************************/ + +/****************************************/ +/* Lemmas about EoOOBno-EiOOBi exchange */ +/****************************************/ + +#ifdef EoOOBnoEiOOBi +lemma EoOOBno_EiOOBi_functional: exists-trace +" +Ex pkP1 pkD1 pkP2 pkD2 dh1 dh2 ck1 ck2 np1 np2 nd1 nd2 sk1 sk2 nk1 nk2 dk1 dk2 ak1 ak2 #i #j. + DeviceFinishedKeyDistribution(pkD1, pkP1, dh1, ck1, nd1, np1, sk1, nk1, dk1, ak1) @i & + ProvisionerFinishedProvisioning(pkP2, pkD2, dh2, ck2, np2, nd2, sk2, nk2, dk2, ak2) @j +" + +lemma EoOOBno_EiOOBi_auth_prov: +" +All pkP pkD dh ck np nd sk nk dk ak #i. + ProvisionerFinishedProvisioning(pkP, pkD, dh, ck, np, nd, sk, nk, dk, ak) @i ==> + ( + Ex #j. + DeviceFinishedProvisioning(pkD, pkP, dh, ck, nd, np, sk, nk, dk) @j + ) +" + +lemma EoOOBno_EiOOBi_auth_dev: +" +All pkP pkD dh ck np nd sk nk dk ak #i. + DeviceFinishedKeyDistribution(pkD, pkP, dh, ck, nd, np, sk, nk, dk, ak) @i ==> + ( + Ex #j. + ProvisionerFinishedProvisioning(pkP, pkD, dh, ck, np, nd, sk, nk, dk, ak) @j + ) +" + +lemma EoOOBno_EiOOBi_weaksecret_nk_prov: +" +All pkP pkD dh ck np nd sk nk dk ak #i. + ProvisionerFinishedProvisioning(pkP, pkD, dh, ck, np, nd, sk, nk, dk, ak) @i ==> + not (Ex #j. K(nk) @j) +" + +lemma EoOOBno_EiOOBi_weaksecret_dk_prov: +" +All pkP pkD dh ck np nd sk nk dk ak #i. + ProvisionerFinishedProvisioning(pkP, pkD, dh, ck, np, nd, sk, nk, dk, ak) @i ==> + not (Ex #j. K(dk) @j) +" + +lemma EoOOBno_EiOOBi_weaksecret_ak_prov: +" +All pkP pkD dh ck np nd sk nk dk ak #i. + ProvisionerFinishedProvisioning(pkP, pkD, dh, ck, np, nd, sk, nk, dk, ak) @i ==> + not (Ex #j. K(ak) @j) +" + +lemma EoOOBno_EiOOBi_weaksecret_nk_dev: +" +All pkP pkD dh ck np nd sk nk dk ak #i. + DeviceFinishedKeyDistribution(pkD, pkP, dh, ck, nd, np, sk, nk, dk, ak) @i ==> + not (Ex #j. K(nk) @j) +" + +lemma EoOOBno_EiOOBi_weaksecret_dk_dev: +" +All pkP pkD dh ck np nd sk nk dk ak #i. + DeviceFinishedKeyDistribution(pkD, pkP, dh, ck, nd, np, sk, nk, dk, ak) @i ==> + not (Ex #j. K(dk) @j) +" + +lemma EoOOBno_EiOOBi_weaksecret_ak_dev: +" +All pkP pkD dh ck np nd sk nk dk ak #i. + DeviceFinishedKeyDistribution(pkD, pkP, dh, ck, nd, np, sk, nk, dk, ak) @i ==> + not (Ex #j. K(ak) @j) +" + +lemma EoOOBno_EiOOBi_double_impersonation: +" +All pkP1 pkD1 pkP2 pkD2 dh1 dh2 ck1 ck2 np1 np2 nd1 nd2 sk1 sk2 nk1 nk2 dk1 dk2 ak1 ak2 #i #j. + DeviceFinishedKeyDistribution(pkD1, pkP1, dh1, ck1, nd1, np1, sk1, nk1, dk1, ak1) @i & + ProvisionerFinishedProvisioning(pkP2, pkD2, dh2, ck2, np2, nd2, sk2, nk2, dk2, ak2) @j ==> + not (Ex #k1 #k2 #k3 #k4 . + K(nk1) @k1 & K(dk1) @k2 & K(nk2) @k3 & K(dk2) @k4 + ) +" + +#endif + +/********************************************/ +/* End lemmas about EoOOBno-EiOOBi exchange */ +/********************************************/ + +/****************************************/ +/* Lemmas about EoOOBno-EiOOBo exchange */ +/****************************************/ + +#ifdef EoOOBnoEiOOBo +lemma EoOOBno_EiOOBo_functional: exists-trace +" +Ex pkP1 pkD1 pkP2 pkD2 dh1 dh2 ck1 ck2 np1 np2 nd1 nd2 sk1 sk2 nk1 nk2 dk1 dk2 ak1 ak2 #i #j. + DeviceFinishedKeyDistribution(pkD1, pkP1, dh1, ck1, nd1, np1, sk1, nk1, dk1, ak1) @i & + ProvisionerFinishedProvisioning(pkP2, pkD2, dh2, ck2, np2, nd2, sk2, nk2, dk2, ak2) @j +" + +lemma EoOOBno_EiOOBo_auth_prov: +" +All pkP pkD dh ck np nd sk nk dk ak #i. + ProvisionerFinishedProvisioning(pkP, pkD, dh, ck, np, nd, sk, nk, dk, ak) @i ==> + ( + Ex #j. + DeviceFinishedProvisioning(pkD, pkP, dh, ck, nd, np, sk, nk, dk) @j + ) +" + +lemma EoOOBno_EiOOBo_auth_dev: +" +All pkP pkD dh ck np nd sk nk dk ak #i. + DeviceFinishedKeyDistribution(pkD, pkP, dh, ck, nd, np, sk, nk, dk, ak) @i ==> + ( + Ex #j. + ProvisionerFinishedProvisioning(pkP, pkD, dh, ck, np, nd, sk, nk, dk, ak) @j + ) +" + +lemma EoOOBno_EiOOBo_weaksecret_nk_prov: +" +All pkP pkD dh ck np nd sk nk dk ak #i. + ProvisionerFinishedProvisioning(pkP, pkD, dh, ck, np, nd, sk, nk, dk, ak) @i ==> + not (Ex #j. K(nk) @j) +" + +lemma EoOOBno_EiOOBo_weaksecret_dk_prov: +" +All pkP pkD dh ck np nd sk nk dk ak #i. + ProvisionerFinishedProvisioning(pkP, pkD, dh, ck, np, nd, sk, nk, dk, ak) @i ==> + not (Ex #j. K(dk) @j) +" + +lemma EoOOBno_EiOOBo_weaksecret_ak_prov: +" +All pkP pkD dh ck np nd sk nk dk ak #i. + ProvisionerFinishedProvisioning(pkP, pkD, dh, ck, np, nd, sk, nk, dk, ak) @i ==> + not (Ex #j. K(ak) @j) +" + +lemma EoOOBno_EiOOBo_weaksecret_nk_dev: +" +All pkP pkD dh ck np nd sk nk dk ak #i. + DeviceFinishedKeyDistribution(pkD, pkP, dh, ck, nd, np, sk, nk, dk, ak) @i ==> + not (Ex #j. K(nk) @j) +" + +lemma EoOOBno_EiOOBo_weaksecret_dk_dev: +" +All pkP pkD dh ck np nd sk nk dk ak #i. + DeviceFinishedKeyDistribution(pkD, pkP, dh, ck, nd, np, sk, nk, dk, ak) @i ==> + not (Ex #j. K(dk) @j) +" + +lemma EoOOBno_EiOOBo_weaksecret_ak_dev: +" +All pkP pkD dh ck np nd sk nk dk ak #i. + DeviceFinishedKeyDistribution(pkD, pkP, dh, ck, nd, np, sk, nk, dk, ak) @i ==> + not (Ex #j. K(ak) @j) +" + +lemma EoOOBno_EiOOBo_double_impersonation: +" +All pkP1 pkD1 pkP2 pkD2 dh1 dh2 ck1 ck2 np1 np2 nd1 nd2 sk1 sk2 nk1 nk2 dk1 dk2 ak1 ak2 #i #j. + DeviceFinishedKeyDistribution(pkD1, pkP1, dh1, ck1, nd1, np1, sk1, nk1, dk1, ak1) @i & + ProvisionerFinishedProvisioning(pkP2, pkD2, dh2, ck2, np2, nd2, sk2, nk2, dk2, ak2) @j ==> + not (Ex #k1 #k2 #k3 #k4 . + K(nk1) @k1 & K(dk1) @k2 & K(nk2) @k3 & K(dk2) @k4 + ) +" + +#endif + +/********************************************/ +/* End lemmas about EoOOBno-EiOOBo exchange */ +/********************************************/ + +/****************************************/ +/* Lemmas about EoOOBno-EiOOBs exchange */ +/****************************************/ + +#ifdef EoOOBnoEiOOBs +lemma EoOOBno_EiOOBs_functional: exists-trace +" +Ex pkP1 pkD1 pkP2 pkD2 dh1 dh2 ck1 ck2 np1 np2 nd1 nd2 sk1 sk2 nk1 nk2 dk1 dk2 ak1 ak2 #i #j. + DeviceFinishedKeyDistribution(pkD1, pkP1, dh1, ck1, nd1, np1, sk1, nk1, dk1, ak1) @i & + ProvisionerFinishedProvisioning(pkP2, pkD2, dh2, ck2, np2, nd2, sk2, nk2, dk2, ak2) @j +" + +lemma EoOOBno_EiOOBs_auth_prov: +" +All pkP pkD dh ck np nd sk nk dk ak #i. + ProvisionerFinishedProvisioning(pkP, pkD, dh, ck, np, nd, sk, nk, dk, ak) @i ==> + ( + Ex #j. + DeviceFinishedProvisioning(pkD, pkP, dh, ck, nd, np, sk, nk, dk) @j + ) +" + +lemma EoOOBno_EiOOBs_auth_dev: +" +All pkP pkD dh ck np nd sk nk dk ak #i. + DeviceFinishedKeyDistribution(pkD, pkP, dh, ck, nd, np, sk, nk, dk, ak) @i ==> + ( + Ex #j. + ProvisionerFinishedProvisioning(pkP, pkD, dh, ck, np, nd, sk, nk, dk, ak) @j + ) +" + +lemma EoOOBno_EiOOBs_weaksecret_nk_prov: +" +All pkP pkD dh ck np nd sk nk dk ak #i. + ProvisionerFinishedProvisioning(pkP, pkD, dh, ck, np, nd, sk, nk, dk, ak) @i ==> + not (Ex #j. K(nk) @j) +" + +lemma EoOOBno_EiOOBs_weaksecret_dk_prov: +" +All pkP pkD dh ck np nd sk nk dk ak #i. + ProvisionerFinishedProvisioning(pkP, pkD, dh, ck, np, nd, sk, nk, dk, ak) @i ==> + not (Ex #j. K(dk) @j) +" + +lemma EoOOBno_EiOOBs_weaksecret_ak_prov: +" +All pkP pkD dh ck np nd sk nk dk ak #i. + ProvisionerFinishedProvisioning(pkP, pkD, dh, ck, np, nd, sk, nk, dk, ak) @i ==> + not (Ex #j. K(ak) @j) +" + +lemma EoOOBno_EiOOBs_weaksecret_nk_dev: +" +All pkP pkD dh ck np nd sk nk dk ak #i. + DeviceFinishedKeyDistribution(pkD, pkP, dh, ck, nd, np, sk, nk, dk, ak) @i ==> + not (Ex #j. K(nk) @j) +" + +lemma EoOOBno_EiOOBs_weaksecret_dk_dev: +" +All pkP pkD dh ck np nd sk nk dk ak #i. + DeviceFinishedKeyDistribution(pkD, pkP, dh, ck, nd, np, sk, nk, dk, ak) @i ==> + not (Ex #j. K(dk) @j) +" + +lemma EoOOBno_EiOOBs_weaksecret_ak_dev: +" +All pkP pkD dh ck np nd sk nk dk ak #i. + DeviceFinishedKeyDistribution(pkD, pkP, dh, ck, nd, np, sk, nk, dk, ak) @i ==> + not (Ex #j. K(ak) @j) +" + +lemma EoOOBno_EiOOBs_double_impersonation: +" +All pkP1 pkD1 pkP2 pkD2 dh1 dh2 ck1 ck2 np1 np2 nd1 nd2 sk1 sk2 nk1 nk2 dk1 dk2 ak1 ak2 #i #j. + DeviceFinishedKeyDistribution(pkD1, pkP1, dh1, ck1, nd1, np1, sk1, nk1, dk1, ak1) @i & + ProvisionerFinishedProvisioning(pkP2, pkD2, dh2, ck2, np2, nd2, sk2, nk2, dk2, ak2) @j ==> + not (Ex #k1 #k2 #k3 #k4 . + K(nk1) @k1 & K(dk1) @k2 & K(nk2) @k3 & K(dk2) @k4 + ) +" + +#endif + +/********************************************/ +/* End lemmas about EoOOBno-EiOOBs exchange */ +/********************************************/ + +/****************************************/ +/* Lemmas about EoOOBi-EiOOBno exchange */ +/****************************************/ + +#ifdef EoOOBiEiOOBno +lemma EoOOBi_EiOOBno_functional: exists-trace +" +Ex pkP1 pkD1 pkP2 pkD2 dh1 dh2 ck1 ck2 np1 np2 nd1 nd2 sk1 sk2 nk1 nk2 dk1 dk2 ak1 ak2 #i #j. + DeviceFinishedKeyDistribution(pkD1, pkP1, dh1, ck1, nd1, np1, sk1, nk1, dk1, ak1) @i & + ProvisionerFinishedProvisioning(pkP2, pkD2, dh2, ck2, np2, nd2, sk2, nk2, dk2, ak2) @j +" + +lemma EoOOBi_EiOOBno_auth_prov: +" +All pkP pkD dh ck np nd sk nk dk ak #i. + ProvisionerFinishedProvisioning(pkP, pkD, dh, ck, np, nd, sk, nk, dk, ak) @i ==> + ( + Ex #j. + DeviceFinishedProvisioning(pkD, pkP, dh, ck, nd, np, sk, nk, dk) @j + ) +" + +lemma EoOOBi_EiOOBno_auth_dev: +" +All pkP pkD dh ck np nd sk nk dk ak #i. + DeviceFinishedKeyDistribution(pkD, pkP, dh, ck, nd, np, sk, nk, dk, ak) @i ==> + ( + Ex #j. + ProvisionerFinishedProvisioning(pkP, pkD, dh, ck, np, nd, sk, nk, dk, ak) @j + ) +" + +lemma EoOOBi_EiOOBno_weaksecret_nk_prov: +" +All pkP pkD dh ck np nd sk nk dk ak #i. + ProvisionerFinishedProvisioning(pkP, pkD, dh, ck, np, nd, sk, nk, dk, ak) @i ==> + not (Ex #j. K(nk) @j) +" + +lemma EoOOBi_EiOOBno_weaksecret_dk_prov: +" +All pkP pkD dh ck np nd sk nk dk ak #i. + ProvisionerFinishedProvisioning(pkP, pkD, dh, ck, np, nd, sk, nk, dk, ak) @i ==> + not (Ex #j. K(dk) @j) +" + +lemma EoOOBi_EiOOBno_weaksecret_ak_prov: +" +All pkP pkD dh ck np nd sk nk dk ak #i. + ProvisionerFinishedProvisioning(pkP, pkD, dh, ck, np, nd, sk, nk, dk, ak) @i ==> + not (Ex #j. K(ak) @j) +" + +lemma EoOOBi_EiOOBno_weaksecret_nk_dev: +" +All pkP pkD dh ck np nd sk nk dk ak #i. + DeviceFinishedKeyDistribution(pkD, pkP, dh, ck, nd, np, sk, nk, dk, ak) @i ==> + not (Ex #j. K(nk) @j) +" + +lemma EoOOBi_EiOOBno_weaksecret_dk_dev: +" +All pkP pkD dh ck np nd sk nk dk ak #i. + DeviceFinishedKeyDistribution(pkD, pkP, dh, ck, nd, np, sk, nk, dk, ak) @i ==> + not (Ex #j. K(dk) @j) +" + +lemma EoOOBi_EiOOBno_weaksecret_ak_dev: +" +All pkP pkD dh ck np nd sk nk dk ak #i. + DeviceFinishedKeyDistribution(pkD, pkP, dh, ck, nd, np, sk, nk, dk, ak) @i ==> + not (Ex #j. K(ak) @j) +" + +lemma EoOOBi_EiOOBno_double_impersonation: +" +All pkP1 pkD1 pkP2 pkD2 dh1 dh2 ck1 ck2 np1 np2 nd1 nd2 sk1 sk2 nk1 nk2 dk1 dk2 ak1 ak2 #i #j. + DeviceFinishedKeyDistribution(pkD1, pkP1, dh1, ck1, nd1, np1, sk1, nk1, dk1, ak1) @i & + ProvisionerFinishedProvisioning(pkP2, pkD2, dh2, ck2, np2, nd2, sk2, nk2, dk2, ak2) @j ==> + not (Ex #k1 #k2 #k3 #k4 . + K(nk1) @k1 & K(dk1) @k2 & K(nk2) @k3 & K(dk2) @k4 + ) +" + +#endif + +/********************************************/ +/* End lemmas about EoOOBi-EiOOBno exchange */ +/********************************************/ + +/***************************************/ +/* Lemmas about EoOOBi-EiOOBi exchange */ +/***************************************/ + +#ifdef EoOOBiEiOOBi +lemma EoOOBi_EiOOBi_functional: exists-trace +" +Ex pkP1 pkD1 pkP2 pkD2 dh1 dh2 ck1 ck2 np1 np2 nd1 nd2 sk1 sk2 nk1 nk2 dk1 dk2 ak1 ak2 #i #j. + DeviceFinishedKeyDistribution(pkD1, pkP1, dh1, ck1, nd1, np1, sk1, nk1, dk1, ak1) @i & + ProvisionerFinishedProvisioning(pkP2, pkD2, dh2, ck2, np2, nd2, sk2, nk2, dk2, ak2) @j +" + +lemma EoOOBi_EiOOBi_auth_prov: +" +All pkP pkD dh ck np nd sk nk dk ak #i. + ProvisionerFinishedProvisioning(pkP, pkD, dh, ck, np, nd, sk, nk, dk, ak) @i ==> + ( + Ex #j. + DeviceFinishedProvisioning(pkD, pkP, dh, ck, nd, np, sk, nk, dk) @j + ) +" + +lemma EoOOBi_EiOOBi_auth_dev: +" +All pkP pkD dh ck np nd sk nk dk ak #i. + DeviceFinishedKeyDistribution(pkD, pkP, dh, ck, nd, np, sk, nk, dk, ak) @i ==> + ( + Ex #j. + ProvisionerFinishedProvisioning(pkP, pkD, dh, ck, np, nd, sk, nk, dk, ak) @j + ) +" + +lemma EoOOBi_EiOOBi_weaksecret_nk_prov: +" +All pkP pkD dh ck np nd sk nk dk ak #i. + ProvisionerFinishedProvisioning(pkP, pkD, dh, ck, np, nd, sk, nk, dk, ak) @i ==> + not (Ex #j. K(nk) @j) +" + +lemma EoOOBi_EiOOBi_weaksecret_dk_prov: +" +All pkP pkD dh ck np nd sk nk dk ak #i. + ProvisionerFinishedProvisioning(pkP, pkD, dh, ck, np, nd, sk, nk, dk, ak) @i ==> + not (Ex #j. K(dk) @j) +" + +lemma EoOOBi_EiOOBi_weaksecret_ak_prov: +" +All pkP pkD dh ck np nd sk nk dk ak #i. + ProvisionerFinishedProvisioning(pkP, pkD, dh, ck, np, nd, sk, nk, dk, ak) @i ==> + not (Ex #j. K(ak) @j) +" + +lemma EoOOBi_EiOOBi_weaksecret_nk_dev: +" +All pkP pkD dh ck np nd sk nk dk ak #i. + DeviceFinishedKeyDistribution(pkD, pkP, dh, ck, nd, np, sk, nk, dk, ak) @i ==> + not (Ex #j. K(nk) @j) +" + +lemma EoOOBi_EiOOBi_weaksecret_dk_dev: +" +All pkP pkD dh ck np nd sk nk dk ak #i. + DeviceFinishedKeyDistribution(pkD, pkP, dh, ck, nd, np, sk, nk, dk, ak) @i ==> + not (Ex #j. K(dk) @j) +" + +lemma EoOOBi_EiOOBi_weaksecret_ak_dev: +" +All pkP pkD dh ck np nd sk nk dk ak #i. + DeviceFinishedKeyDistribution(pkD, pkP, dh, ck, nd, np, sk, nk, dk, ak) @i ==> + not (Ex #j. K(ak) @j) +" + +lemma EoOOBi_EiOOBi_double_impersonation: +" +All pkP1 pkD1 pkP2 pkD2 dh1 dh2 ck1 ck2 np1 np2 nd1 nd2 sk1 sk2 nk1 nk2 dk1 dk2 ak1 ak2 #i #j. + DeviceFinishedKeyDistribution(pkD1, pkP1, dh1, ck1, nd1, np1, sk1, nk1, dk1, ak1) @i & + ProvisionerFinishedProvisioning(pkP2, pkD2, dh2, ck2, np2, nd2, sk2, nk2, dk2, ak2) @j ==> + not (Ex #k1 #k2 #k3 #k4 . + K(nk1) @k1 & K(dk1) @k2 & K(nk2) @k3 & K(dk2) @k4 + ) +" + +#endif + +/*******************************************/ +/* End lemmas about EoOOBi-EiOOBi exchange */ +/*******************************************/ + +/***************************************/ +/* Lemmas about EoOOBi-EiOOBo exchange */ +/***************************************/ + +#ifdef EoOOBiEiOOBo +lemma EoOOBi_EiOOBo_functional: exists-trace +" +Ex pkP1 pkD1 pkP2 pkD2 dh1 dh2 ck1 ck2 np1 np2 nd1 nd2 sk1 sk2 nk1 nk2 dk1 dk2 ak1 ak2 #i #j. + DeviceFinishedKeyDistribution(pkD1, pkP1, dh1, ck1, nd1, np1, sk1, nk1, dk1, ak1) @i & + ProvisionerFinishedProvisioning(pkP2, pkD2, dh2, ck2, np2, nd2, sk2, nk2, dk2, ak2) @j +" + +lemma EoOOBi_EiOOBo_auth_prov: +" +All pkP pkD dh ck np nd sk nk dk ak #i. + ProvisionerFinishedProvisioning(pkP, pkD, dh, ck, np, nd, sk, nk, dk, ak) @i ==> + ( + Ex #j. + DeviceFinishedProvisioning(pkD, pkP, dh, ck, nd, np, sk, nk, dk) @j + ) +" + +lemma EoOOBi_EiOOBo_auth_dev: +" +All pkP pkD dh ck np nd sk nk dk ak #i. + DeviceFinishedKeyDistribution(pkD, pkP, dh, ck, nd, np, sk, nk, dk, ak) @i ==> + ( + Ex #j. + ProvisionerFinishedProvisioning(pkP, pkD, dh, ck, np, nd, sk, nk, dk, ak) @j + ) +" + +lemma EoOOBi_EiOOBo_weaksecret_nk_prov: +" +All pkP pkD dh ck np nd sk nk dk ak #i. + ProvisionerFinishedProvisioning(pkP, pkD, dh, ck, np, nd, sk, nk, dk, ak) @i ==> + not (Ex #j. K(nk) @j) +" + +lemma EoOOBi_EiOOBo_weaksecret_dk_prov: +" +All pkP pkD dh ck np nd sk nk dk ak #i. + ProvisionerFinishedProvisioning(pkP, pkD, dh, ck, np, nd, sk, nk, dk, ak) @i ==> + not (Ex #j. K(dk) @j) +" + +lemma EoOOBi_EiOOBo_weaksecret_ak_prov: +" +All pkP pkD dh ck np nd sk nk dk ak #i. + ProvisionerFinishedProvisioning(pkP, pkD, dh, ck, np, nd, sk, nk, dk, ak) @i ==> + not (Ex #j. K(ak) @j) +" + +lemma EoOOBi_EiOOBo_weaksecret_nk_dev: +" +All pkP pkD dh ck np nd sk nk dk ak #i. + DeviceFinishedKeyDistribution(pkD, pkP, dh, ck, nd, np, sk, nk, dk, ak) @i ==> + not (Ex #j. K(nk) @j) +" + +lemma EoOOBi_EiOOBo_weaksecret_dk_dev: +" +All pkP pkD dh ck np nd sk nk dk ak #i. + DeviceFinishedKeyDistribution(pkD, pkP, dh, ck, nd, np, sk, nk, dk, ak) @i ==> + not (Ex #j. K(dk) @j) +" + +lemma EoOOBi_EiOOBo_weaksecret_ak_dev: +" +All pkP pkD dh ck np nd sk nk dk ak #i. + DeviceFinishedKeyDistribution(pkD, pkP, dh, ck, nd, np, sk, nk, dk, ak) @i ==> + not (Ex #j. K(ak) @j) +" + +lemma EoOOBi_EiOOBo_double_impersonation: +" +All pkP1 pkD1 pkP2 pkD2 dh1 dh2 ck1 ck2 np1 np2 nd1 nd2 sk1 sk2 nk1 nk2 dk1 dk2 ak1 ak2 #i #j. + DeviceFinishedKeyDistribution(pkD1, pkP1, dh1, ck1, nd1, np1, sk1, nk1, dk1, ak1) @i & + ProvisionerFinishedProvisioning(pkP2, pkD2, dh2, ck2, np2, nd2, sk2, nk2, dk2, ak2) @j ==> + not (Ex #k1 #k2 #k3 #k4 . + K(nk1) @k1 & K(dk1) @k2 & K(nk2) @k3 & K(dk2) @k4 + ) +" + +#endif + +/*******************************************/ +/* End lemmas about EoOOBi-EiOOBo exchange */ +/*******************************************/ + +/***************************************/ +/* Lemmas about EoOOBi-EiOOBs exchange */ +/***************************************/ + +#ifdef EoOOBiEiOOBs +lemma EoOOBi_EiOOBs_functional: exists-trace +" +Ex pkP1 pkD1 pkP2 pkD2 dh1 dh2 ck1 ck2 np1 np2 nd1 nd2 sk1 sk2 nk1 nk2 dk1 dk2 ak1 ak2 #i #j. + DeviceFinishedKeyDistribution(pkD1, pkP1, dh1, ck1, nd1, np1, sk1, nk1, dk1, ak1) @i & + ProvisionerFinishedProvisioning(pkP2, pkD2, dh2, ck2, np2, nd2, sk2, nk2, dk2, ak2) @j +" + +lemma EoOOBi_EiOOBs_auth_prov: +" +All pkP pkD dh ck np nd sk nk dk ak #i. + ProvisionerFinishedProvisioning(pkP, pkD, dh, ck, np, nd, sk, nk, dk, ak) @i ==> + ( + Ex #j. + DeviceFinishedProvisioning(pkD, pkP, dh, ck, nd, np, sk, nk, dk) @j + ) +" + +lemma EoOOBi_EiOOBs_auth_dev: +" +All pkP pkD dh ck np nd sk nk dk ak #i. + DeviceFinishedKeyDistribution(pkD, pkP, dh, ck, nd, np, sk, nk, dk, ak) @i ==> + ( + Ex #j. + ProvisionerFinishedProvisioning(pkP, pkD, dh, ck, np, nd, sk, nk, dk, ak) @j + ) +" + +lemma EoOOBi_EiOOBs_weaksecret_nk_prov: +" +All pkP pkD dh ck np nd sk nk dk ak #i. + ProvisionerFinishedProvisioning(pkP, pkD, dh, ck, np, nd, sk, nk, dk, ak) @i ==> + not (Ex #j. K(nk) @j) +" + +lemma EoOOBi_EiOOBs_weaksecret_dk_prov: +" +All pkP pkD dh ck np nd sk nk dk ak #i. + ProvisionerFinishedProvisioning(pkP, pkD, dh, ck, np, nd, sk, nk, dk, ak) @i ==> + not (Ex #j. K(dk) @j) +" + +lemma EoOOBi_EiOOBs_weaksecret_ak_prov: +" +All pkP pkD dh ck np nd sk nk dk ak #i. + ProvisionerFinishedProvisioning(pkP, pkD, dh, ck, np, nd, sk, nk, dk, ak) @i ==> + not (Ex #j. K(ak) @j) +" + +lemma EoOOBi_EiOOBs_weaksecret_nk_dev: +" +All pkP pkD dh ck np nd sk nk dk ak #i. + DeviceFinishedKeyDistribution(pkD, pkP, dh, ck, nd, np, sk, nk, dk, ak) @i ==> + not (Ex #j. K(nk) @j) +" + +lemma EoOOBi_EiOOBs_weaksecret_dk_dev: +" +All pkP pkD dh ck np nd sk nk dk ak #i. + DeviceFinishedKeyDistribution(pkD, pkP, dh, ck, nd, np, sk, nk, dk, ak) @i ==> + not (Ex #j. K(dk) @j) +" + +lemma EoOOBi_EiOOBs_weaksecret_ak_dev: +" +All pkP pkD dh ck np nd sk nk dk ak #i. + DeviceFinishedKeyDistribution(pkD, pkP, dh, ck, nd, np, sk, nk, dk, ak) @i ==> + not (Ex #j. K(ak) @j) +" + +lemma EoOOBi_EiOOBs_double_impersonation: +" +All pkP1 pkD1 pkP2 pkD2 dh1 dh2 ck1 ck2 np1 np2 nd1 nd2 sk1 sk2 nk1 nk2 dk1 dk2 ak1 ak2 #i #j. + DeviceFinishedKeyDistribution(pkD1, pkP1, dh1, ck1, nd1, np1, sk1, nk1, dk1, ak1) @i & + ProvisionerFinishedProvisioning(pkP2, pkD2, dh2, ck2, np2, nd2, sk2, nk2, dk2, ak2) @j ==> + not (Ex #k1 #k2 #k3 #k4 . + K(nk1) @k1 & K(dk1) @k2 & K(nk2) @k3 & K(dk2) @k4 + ) +" + +#endif + +/*******************************************/ +/* End lemmas about EoOOBi-EiOOBs exchange */ +/*******************************************/ + +/****************************************/ +/* Lemmas about EoOOBo-EiOOBno exchange */ +/****************************************/ + +#ifdef EoOOBoEiOOBno +lemma EoOOBo_EiOOBno_functional: exists-trace +" +Ex pkP1 pkD1 pkP2 pkD2 dh1 dh2 ck1 ck2 np1 np2 nd1 nd2 sk1 sk2 nk1 nk2 dk1 dk2 ak1 ak2 #i #j. + DeviceFinishedKeyDistribution(pkD1, pkP1, dh1, ck1, nd1, np1, sk1, nk1, dk1, ak1) @i & + ProvisionerFinishedProvisioning(pkP2, pkD2, dh2, ck2, np2, nd2, sk2, nk2, dk2, ak2) @j +" + +lemma EoOOBo_EiOOBno_auth_prov: +" +All pkP pkD dh ck np nd sk nk dk ak #i. + ProvisionerFinishedProvisioning(pkP, pkD, dh, ck, np, nd, sk, nk, dk, ak) @i ==> + ( + Ex #j. + DeviceFinishedProvisioning(pkD, pkP, dh, ck, nd, np, sk, nk, dk) @j + ) +" + +lemma EoOOBo_EiOOBno_auth_dev: +" +All pkP pkD dh ck np nd sk nk dk ak #i. + DeviceFinishedKeyDistribution(pkD, pkP, dh, ck, nd, np, sk, nk, dk, ak) @i ==> + ( + Ex #j. + ProvisionerFinishedProvisioning(pkP, pkD, dh, ck, np, nd, sk, nk, dk, ak) @j + ) +" + +lemma EoOOBo_EiOOBno_weaksecret_nk_prov: +" +All pkP pkD dh ck np nd sk nk dk ak #i. + ProvisionerFinishedProvisioning(pkP, pkD, dh, ck, np, nd, sk, nk, dk, ak) @i ==> + not (Ex #j. K(nk) @j) +" + +lemma EoOOBo_EiOOBno_weaksecret_dk_prov: +" +All pkP pkD dh ck np nd sk nk dk ak #i. + ProvisionerFinishedProvisioning(pkP, pkD, dh, ck, np, nd, sk, nk, dk, ak) @i ==> + not (Ex #j. K(dk) @j) +" + +lemma EoOOBo_EiOOBno_weaksecret_ak_prov: +" +All pkP pkD dh ck np nd sk nk dk ak #i. + ProvisionerFinishedProvisioning(pkP, pkD, dh, ck, np, nd, sk, nk, dk, ak) @i ==> + not (Ex #j. K(ak) @j) +" + +lemma EoOOBo_EiOOBno_weaksecret_nk_dev: +" +All pkP pkD dh ck np nd sk nk dk ak #i. + DeviceFinishedKeyDistribution(pkD, pkP, dh, ck, nd, np, sk, nk, dk, ak) @i ==> + not (Ex #j. K(nk) @j) +" + +lemma EoOOBo_EiOOBno_weaksecret_dk_dev: +" +All pkP pkD dh ck np nd sk nk dk ak #i. + DeviceFinishedKeyDistribution(pkD, pkP, dh, ck, nd, np, sk, nk, dk, ak) @i ==> + not (Ex #j. K(dk) @j) +" + +lemma EoOOBo_EiOOBno_weaksecret_ak_dev: +" +All pkP pkD dh ck np nd sk nk dk ak #i. + DeviceFinishedKeyDistribution(pkD, pkP, dh, ck, nd, np, sk, nk, dk, ak) @i ==> + not (Ex #j. K(ak) @j) +" + +lemma EoOOBo_EiOOBno_double_impersonation: +" +All pkP1 pkD1 pkP2 pkD2 dh1 dh2 ck1 ck2 np1 np2 nd1 nd2 sk1 sk2 nk1 nk2 dk1 dk2 ak1 ak2 #i #j. + DeviceFinishedKeyDistribution(pkD1, pkP1, dh1, ck1, nd1, np1, sk1, nk1, dk1, ak1) @i & + ProvisionerFinishedProvisioning(pkP2, pkD2, dh2, ck2, np2, nd2, sk2, nk2, dk2, ak2) @j ==> + not (Ex #k1 #k2 #k3 #k4 . + K(nk1) @k1 & K(dk1) @k2 & K(nk2) @k3 & K(dk2) @k4 + ) +" + +#endif + +/********************************************/ +/* End lemmas about EoOOBo-EiOOBno exchange */ +/********************************************/ + +/***************************************/ +/* Lemmas about EoOOBo-EiOOBi exchange */ +/***************************************/ + +#ifdef EoOOBoEiOOBi +lemma EoOOBo_EiOOBi_functional: exists-trace +" +Ex pkP1 pkD1 pkP2 pkD2 dh1 dh2 ck1 ck2 np1 np2 nd1 nd2 sk1 sk2 nk1 nk2 dk1 dk2 ak1 ak2 #i #j. + DeviceFinishedKeyDistribution(pkD1, pkP1, dh1, ck1, nd1, np1, sk1, nk1, dk1, ak1) @i & + ProvisionerFinishedProvisioning(pkP2, pkD2, dh2, ck2, np2, nd2, sk2, nk2, dk2, ak2) @j +" + +lemma EoOOBo_EiOOBi_auth_prov: +" +All pkP pkD dh ck np nd sk nk dk ak #i. + ProvisionerFinishedProvisioning(pkP, pkD, dh, ck, np, nd, sk, nk, dk, ak) @i ==> + ( + Ex #j. + DeviceFinishedProvisioning(pkD, pkP, dh, ck, nd, np, sk, nk, dk) @j + ) +" + +lemma EoOOBo_EiOOBi_auth_dev: +" +All pkP pkD dh ck np nd sk nk dk ak #i. + DeviceFinishedKeyDistribution(pkD, pkP, dh, ck, nd, np, sk, nk, dk, ak) @i ==> + ( + Ex #j. + ProvisionerFinishedProvisioning(pkP, pkD, dh, ck, np, nd, sk, nk, dk, ak) @j + ) +" + +lemma EoOOBo_EiOOBi_weaksecret_nk_prov: +" +All pkP pkD dh ck np nd sk nk dk ak #i. + ProvisionerFinishedProvisioning(pkP, pkD, dh, ck, np, nd, sk, nk, dk, ak) @i ==> + not (Ex #j. K(nk) @j) +" + +lemma EoOOBo_EiOOBi_weaksecret_dk_prov: +" +All pkP pkD dh ck np nd sk nk dk ak #i. + ProvisionerFinishedProvisioning(pkP, pkD, dh, ck, np, nd, sk, nk, dk, ak) @i ==> + not (Ex #j. K(dk) @j) +" + +lemma EoOOBo_EiOOBi_weaksecret_ak_prov: +" +All pkP pkD dh ck np nd sk nk dk ak #i. + ProvisionerFinishedProvisioning(pkP, pkD, dh, ck, np, nd, sk, nk, dk, ak) @i ==> + not (Ex #j. K(ak) @j) +" + +lemma EoOOBo_EiOOBi_weaksecret_nk_dev: +" +All pkP pkD dh ck np nd sk nk dk ak #i. + DeviceFinishedKeyDistribution(pkD, pkP, dh, ck, nd, np, sk, nk, dk, ak) @i ==> + not (Ex #j. K(nk) @j) +" + +lemma EoOOBo_EiOOBi_weaksecret_dk_dev: +" +All pkP pkD dh ck np nd sk nk dk ak #i. + DeviceFinishedKeyDistribution(pkD, pkP, dh, ck, nd, np, sk, nk, dk, ak) @i ==> + not (Ex #j. K(dk) @j) +" + +lemma EoOOBo_EiOOBi_weaksecret_ak_dev: +" +All pkP pkD dh ck np nd sk nk dk ak #i. + DeviceFinishedKeyDistribution(pkD, pkP, dh, ck, nd, np, sk, nk, dk, ak) @i ==> + not (Ex #j. K(ak) @j) +" + +lemma EoOOBo_EiOOBi_double_impersonation: +" +All pkP1 pkD1 pkP2 pkD2 dh1 dh2 ck1 ck2 np1 np2 nd1 nd2 sk1 sk2 nk1 nk2 dk1 dk2 ak1 ak2 #i #j. + DeviceFinishedKeyDistribution(pkD1, pkP1, dh1, ck1, nd1, np1, sk1, nk1, dk1, ak1) @i & + ProvisionerFinishedProvisioning(pkP2, pkD2, dh2, ck2, np2, nd2, sk2, nk2, dk2, ak2) @j ==> + not (Ex #k1 #k2 #k3 #k4 . + K(nk1) @k1 & K(dk1) @k2 & K(nk2) @k3 & K(dk2) @k4 + ) +" + +#endif + +/*******************************************/ +/* End lemmas about EoOOBo-EiOOBi exchange */ +/*******************************************/ + +/***************************************/ +/* Lemmas about EoOOBo-EiOOBo exchange */ +/***************************************/ + +#ifdef EoOOBoEiOOBo +lemma EoOOBo_EiOOBo_functional: exists-trace +" +Ex pkP1 pkD1 pkP2 pkD2 dh1 dh2 ck1 ck2 np1 np2 nd1 nd2 sk1 sk2 nk1 nk2 dk1 dk2 ak1 ak2 #i #j. + DeviceFinishedKeyDistribution(pkD1, pkP1, dh1, ck1, nd1, np1, sk1, nk1, dk1, ak1) @i & + ProvisionerFinishedProvisioning(pkP2, pkD2, dh2, ck2, np2, nd2, sk2, nk2, dk2, ak2) @j +" + +lemma EoOOBo_EiOOBo_auth_prov: +" +All pkP pkD dh ck np nd sk nk dk ak #i. + ProvisionerFinishedProvisioning(pkP, pkD, dh, ck, np, nd, sk, nk, dk, ak) @i ==> + ( + Ex #j. + DeviceFinishedProvisioning(pkD, pkP, dh, ck, nd, np, sk, nk, dk) @j + ) +" + +lemma EoOOBo_EiOOBo_auth_dev: +" +All pkP pkD dh ck np nd sk nk dk ak #i. + DeviceFinishedKeyDistribution(pkD, pkP, dh, ck, nd, np, sk, nk, dk, ak) @i ==> + ( + Ex #j. + ProvisionerFinishedProvisioning(pkP, pkD, dh, ck, np, nd, sk, nk, dk, ak) @j + ) +" + +lemma EoOOBo_EiOOBo_weaksecret_nk_prov: +" +All pkP pkD dh ck np nd sk nk dk ak #i. + ProvisionerFinishedProvisioning(pkP, pkD, dh, ck, np, nd, sk, nk, dk, ak) @i ==> + not (Ex #j. K(nk) @j) +" + +lemma EoOOBo_EiOOBo_weaksecret_dk_prov: +" +All pkP pkD dh ck np nd sk nk dk ak #i. + ProvisionerFinishedProvisioning(pkP, pkD, dh, ck, np, nd, sk, nk, dk, ak) @i ==> + not (Ex #j. K(dk) @j) +" + +lemma EoOOBo_EiOOBo_weaksecret_ak_prov: +" +All pkP pkD dh ck np nd sk nk dk ak #i. + ProvisionerFinishedProvisioning(pkP, pkD, dh, ck, np, nd, sk, nk, dk, ak) @i ==> + not (Ex #j. K(ak) @j) +" + +lemma EoOOBo_EiOOBo_weaksecret_nk_dev: +" +All pkP pkD dh ck np nd sk nk dk ak #i. + DeviceFinishedKeyDistribution(pkD, pkP, dh, ck, nd, np, sk, nk, dk, ak) @i ==> + not (Ex #j. K(nk) @j) +" + +lemma EoOOBo_EiOOBo_weaksecret_dk_dev: +" +All pkP pkD dh ck np nd sk nk dk ak #i. + DeviceFinishedKeyDistribution(pkD, pkP, dh, ck, nd, np, sk, nk, dk, ak) @i ==> + not (Ex #j. K(dk) @j) +" + +lemma EoOOBo_EiOOBo_weaksecret_ak_dev: +" +All pkP pkD dh ck np nd sk nk dk ak #i. + DeviceFinishedKeyDistribution(pkD, pkP, dh, ck, nd, np, sk, nk, dk, ak) @i ==> + not (Ex #j. K(ak) @j) +" + +lemma EoOOBo_EiOOBo_double_impersonation: +" +All pkP1 pkD1 pkP2 pkD2 dh1 dh2 ck1 ck2 np1 np2 nd1 nd2 sk1 sk2 nk1 nk2 dk1 dk2 ak1 ak2 #i #j. + DeviceFinishedKeyDistribution(pkD1, pkP1, dh1, ck1, nd1, np1, sk1, nk1, dk1, ak1) @i & + ProvisionerFinishedProvisioning(pkP2, pkD2, dh2, ck2, np2, nd2, sk2, nk2, dk2, ak2) @j ==> + not (Ex #k1 #k2 #k3 #k4 . + K(nk1) @k1 & K(dk1) @k2 & K(nk2) @k3 & K(dk2) @k4 + ) +" + +#endif + +/*******************************************/ +/* End lemmas about EoOOBo-EiOOBo exchange */ +/*******************************************/ + +/***************************************/ +/* Lemmas about EoOOBo-EiOOBs exchange */ +/***************************************/ + +#ifdef EoOOBoEiOOBs +lemma EoOOBo_EiOOBs_functional: exists-trace +" +Ex pkP1 pkD1 pkP2 pkD2 dh1 dh2 ck1 ck2 np1 np2 nd1 nd2 sk1 sk2 nk1 nk2 dk1 dk2 ak1 ak2 #i #j. + DeviceFinishedKeyDistribution(pkD1, pkP1, dh1, ck1, nd1, np1, sk1, nk1, dk1, ak1) @i & + ProvisionerFinishedProvisioning(pkP2, pkD2, dh2, ck2, np2, nd2, sk2, nk2, dk2, ak2) @j +" + +lemma EoOOBo_EiOOBs_auth_prov: +" +All pkP pkD dh ck np nd sk nk dk ak #i. + ProvisionerFinishedProvisioning(pkP, pkD, dh, ck, np, nd, sk, nk, dk, ak) @i ==> + ( + Ex #j. + DeviceFinishedProvisioning(pkD, pkP, dh, ck, nd, np, sk, nk, dk) @j + ) +" + +lemma EoOOBo_EiOOBs_auth_dev: +" +All pkP pkD dh ck np nd sk nk dk ak #i. + DeviceFinishedKeyDistribution(pkD, pkP, dh, ck, nd, np, sk, nk, dk, ak) @i ==> + ( + Ex #j. + ProvisionerFinishedProvisioning(pkP, pkD, dh, ck, np, nd, sk, nk, dk, ak) @j + ) +" + +lemma EoOOBo_EiOOBs_weaksecret_nk_prov: +" +All pkP pkD dh ck np nd sk nk dk ak #i. + ProvisionerFinishedProvisioning(pkP, pkD, dh, ck, np, nd, sk, nk, dk, ak) @i ==> + not (Ex #j. K(nk) @j) +" + +lemma EoOOBo_EiOOBs_weaksecret_dk_prov: +" +All pkP pkD dh ck np nd sk nk dk ak #i. + ProvisionerFinishedProvisioning(pkP, pkD, dh, ck, np, nd, sk, nk, dk, ak) @i ==> + not (Ex #j. K(dk) @j) +" + +lemma EoOOBo_EiOOBs_weaksecret_ak_prov: +" +All pkP pkD dh ck np nd sk nk dk ak #i. + ProvisionerFinishedProvisioning(pkP, pkD, dh, ck, np, nd, sk, nk, dk, ak) @i ==> + not (Ex #j. K(ak) @j) +" + +lemma EoOOBo_EiOOBs_weaksecret_nk_dev: +" +All pkP pkD dh ck np nd sk nk dk ak #i. + DeviceFinishedKeyDistribution(pkD, pkP, dh, ck, nd, np, sk, nk, dk, ak) @i ==> + not (Ex #j. K(nk) @j) +" + +lemma EoOOBo_EiOOBs_weaksecret_dk_dev: +" +All pkP pkD dh ck np nd sk nk dk ak #i. + DeviceFinishedKeyDistribution(pkD, pkP, dh, ck, nd, np, sk, nk, dk, ak) @i ==> + not (Ex #j. K(dk) @j) +" + +lemma EoOOBo_EiOOBs_weaksecret_ak_dev: +" +All pkP pkD dh ck np nd sk nk dk ak #i. + DeviceFinishedKeyDistribution(pkD, pkP, dh, ck, nd, np, sk, nk, dk, ak) @i ==> + not (Ex #j. K(ak) @j) +" + +lemma EoOOBo_EiOOBs_double_impersonation: +" +All pkP1 pkD1 pkP2 pkD2 dh1 dh2 ck1 ck2 np1 np2 nd1 nd2 sk1 sk2 nk1 nk2 dk1 dk2 ak1 ak2 #i #j. + DeviceFinishedKeyDistribution(pkD1, pkP1, dh1, ck1, nd1, np1, sk1, nk1, dk1, ak1) @i & + ProvisionerFinishedProvisioning(pkP2, pkD2, dh2, ck2, np2, nd2, sk2, nk2, dk2, ak2) @j ==> + not (Ex #k1 #k2 #k3 #k4 . + K(nk1) @k1 & K(dk1) @k2 & K(nk2) @k3 & K(dk2) @k4 + ) +" + +#endif + +/*******************************************/ +/* End lemmas about EoOOBo-EiOOBs exchange */ +/*******************************************/ + +/****************************************/ +/* Lemmas about EoOOBs-EiOOBno exchange */ +/****************************************/ + +#ifdef EoOOBsEiOOBno +lemma EoOOBs_EiOOBno_functional: exists-trace +" +Ex pkP1 pkD1 pkP2 pkD2 dh1 dh2 ck1 ck2 np1 np2 nd1 nd2 sk1 sk2 nk1 nk2 dk1 dk2 ak1 ak2 #i #j. + DeviceFinishedKeyDistribution(pkD1, pkP1, dh1, ck1, nd1, np1, sk1, nk1, dk1, ak1) @i & + ProvisionerFinishedProvisioning(pkP2, pkD2, dh2, ck2, np2, nd2, sk2, nk2, dk2, ak2) @j +" + +lemma EoOOBs_EiOOBno_auth_prov: +" +All pkP pkD dh ck np nd sk nk dk ak #i. + ProvisionerFinishedProvisioning(pkP, pkD, dh, ck, np, nd, sk, nk, dk, ak) @i ==> + ( + Ex #j. + DeviceFinishedProvisioning(pkD, pkP, dh, ck, nd, np, sk, nk, dk) @j + ) +" + +lemma EoOOBs_EiOOBno_auth_dev: +" +All pkP pkD dh ck np nd sk nk dk ak #i. + DeviceFinishedKeyDistribution(pkD, pkP, dh, ck, nd, np, sk, nk, dk, ak) @i ==> + ( + Ex #j. + ProvisionerFinishedProvisioning(pkP, pkD, dh, ck, np, nd, sk, nk, dk, ak) @j + ) +" + +lemma EoOOBs_EiOOBno_weaksecret_nk_prov: +" +All pkP pkD dh ck np nd sk nk dk ak #i. + ProvisionerFinishedProvisioning(pkP, pkD, dh, ck, np, nd, sk, nk, dk, ak) @i ==> + not (Ex #j. K(nk) @j) +" + +lemma EoOOBs_EiOOBno_weaksecret_dk_prov: +" +All pkP pkD dh ck np nd sk nk dk ak #i. + ProvisionerFinishedProvisioning(pkP, pkD, dh, ck, np, nd, sk, nk, dk, ak) @i ==> + not (Ex #j. K(dk) @j) +" + +lemma EoOOBs_EiOOBno_weaksecret_ak_prov: +" +All pkP pkD dh ck np nd sk nk dk ak #i. + ProvisionerFinishedProvisioning(pkP, pkD, dh, ck, np, nd, sk, nk, dk, ak) @i ==> + not (Ex #j. K(ak) @j) +" + +lemma EoOOBs_EiOOBno_weaksecret_nk_dev: +" +All pkP pkD dh ck np nd sk nk dk ak #i. + DeviceFinishedKeyDistribution(pkD, pkP, dh, ck, nd, np, sk, nk, dk, ak) @i ==> + not (Ex #j. K(nk) @j) +" + +lemma EoOOBs_EiOOBno_weaksecret_dk_dev: +" +All pkP pkD dh ck np nd sk nk dk ak #i. + DeviceFinishedKeyDistribution(pkD, pkP, dh, ck, nd, np, sk, nk, dk, ak) @i ==> + not (Ex #j. K(dk) @j) +" + +lemma EoOOBs_EiOOBno_weaksecret_ak_dev: +" +All pkP pkD dh ck np nd sk nk dk ak #i. + DeviceFinishedKeyDistribution(pkD, pkP, dh, ck, nd, np, sk, nk, dk, ak) @i ==> + not (Ex #j. K(ak) @j) +" + +lemma EoOOBs_EiOOBno_double_impersonation: +" +All pkP1 pkD1 pkP2 pkD2 dh1 dh2 ck1 ck2 np1 np2 nd1 nd2 sk1 sk2 nk1 nk2 dk1 dk2 ak1 ak2 #i #j. + DeviceFinishedKeyDistribution(pkD1, pkP1, dh1, ck1, nd1, np1, sk1, nk1, dk1, ak1) @i & + ProvisionerFinishedProvisioning(pkP2, pkD2, dh2, ck2, np2, nd2, sk2, nk2, dk2, ak2) @j ==> + not (Ex #k1 #k2 #k3 #k4 . + K(nk1) @k1 & K(dk1) @k2 & K(nk2) @k3 & K(dk2) @k4 + ) +" + +#endif + +/********************************************/ +/* End lemmas about EoOOBs-EiOOBno exchange */ +/********************************************/ + +/***************************************/ +/* Lemmas about EoOOBs-EiOOBi exchange */ +/***************************************/ + +#ifdef EoOOBsEiOOBi +lemma EoOOBs_EiOOBi_functional: exists-trace +" +Ex pkP1 pkD1 pkP2 pkD2 dh1 dh2 ck1 ck2 np1 np2 nd1 nd2 sk1 sk2 nk1 nk2 dk1 dk2 ak1 ak2 #i #j. + DeviceFinishedKeyDistribution(pkD1, pkP1, dh1, ck1, nd1, np1, sk1, nk1, dk1, ak1) @i & + ProvisionerFinishedProvisioning(pkP2, pkD2, dh2, ck2, np2, nd2, sk2, nk2, dk2, ak2) @j +" + +lemma EoOOBs_EiOOBi_auth_prov: +" +All pkP pkD dh ck np nd sk nk dk ak #i. + ProvisionerFinishedProvisioning(pkP, pkD, dh, ck, np, nd, sk, nk, dk, ak) @i ==> + ( + Ex #j. + DeviceFinishedProvisioning(pkD, pkP, dh, ck, nd, np, sk, nk, dk) @j + ) +" + +lemma EoOOBs_EiOOBi_auth_dev: +" +All pkP pkD dh ck np nd sk nk dk ak #i. + DeviceFinishedKeyDistribution(pkD, pkP, dh, ck, nd, np, sk, nk, dk, ak) @i ==> + ( + Ex #j. + ProvisionerFinishedProvisioning(pkP, pkD, dh, ck, np, nd, sk, nk, dk, ak) @j + ) +" + +lemma EoOOBs_EiOOBi_weaksecret_nk_prov: +" +All pkP pkD dh ck np nd sk nk dk ak #i. + ProvisionerFinishedProvisioning(pkP, pkD, dh, ck, np, nd, sk, nk, dk, ak) @i ==> + not (Ex #j. K(nk) @j) +" + +lemma EoOOBs_EiOOBi_weaksecret_dk_prov: +" +All pkP pkD dh ck np nd sk nk dk ak #i. + ProvisionerFinishedProvisioning(pkP, pkD, dh, ck, np, nd, sk, nk, dk, ak) @i ==> + not (Ex #j. K(dk) @j) +" + +lemma EoOOBs_EiOOBi_weaksecret_ak_prov: +" +All pkP pkD dh ck np nd sk nk dk ak #i. + ProvisionerFinishedProvisioning(pkP, pkD, dh, ck, np, nd, sk, nk, dk, ak) @i ==> + not (Ex #j. K(ak) @j) +" + +lemma EoOOBs_EiOOBi_weaksecret_nk_dev: +" +All pkP pkD dh ck np nd sk nk dk ak #i. + DeviceFinishedKeyDistribution(pkD, pkP, dh, ck, nd, np, sk, nk, dk, ak) @i ==> + not (Ex #j. K(nk) @j) +" + +lemma EoOOBs_EiOOBi_weaksecret_dk_dev: +" +All pkP pkD dh ck np nd sk nk dk ak #i. + DeviceFinishedKeyDistribution(pkD, pkP, dh, ck, nd, np, sk, nk, dk, ak) @i ==> + not (Ex #j. K(dk) @j) +" + +lemma EoOOBs_EiOOBi_weaksecret_ak_dev: +" +All pkP pkD dh ck np nd sk nk dk ak #i. + DeviceFinishedKeyDistribution(pkD, pkP, dh, ck, nd, np, sk, nk, dk, ak) @i ==> + not (Ex #j. K(ak) @j) +" + +lemma EoOOBs_EiOOBi_double_impersonation: +" +All pkP1 pkD1 pkP2 pkD2 dh1 dh2 ck1 ck2 np1 np2 nd1 nd2 sk1 sk2 nk1 nk2 dk1 dk2 ak1 ak2 #i #j. + DeviceFinishedKeyDistribution(pkD1, pkP1, dh1, ck1, nd1, np1, sk1, nk1, dk1, ak1) @i & + ProvisionerFinishedProvisioning(pkP2, pkD2, dh2, ck2, np2, nd2, sk2, nk2, dk2, ak2) @j ==> + not (Ex #k1 #k2 #k3 #k4 . + K(nk1) @k1 & K(dk1) @k2 & K(nk2) @k3 & K(dk2) @k4 + ) +" + +#endif + +/*******************************************/ +/* End lemmas about EoOOBs-EiOOBi exchange */ +/*******************************************/ + +/***************************************/ +/* Lemmas about EoOOBs-EiOOBo exchange */ +/***************************************/ + +#ifdef EoOOBsEiOOBo +lemma EoOOBs_EiOOBo_functional: exists-trace +" +Ex pkP1 pkD1 pkP2 pkD2 dh1 dh2 ck1 ck2 np1 np2 nd1 nd2 sk1 sk2 nk1 nk2 dk1 dk2 ak1 ak2 #i #j. + DeviceFinishedKeyDistribution(pkD1, pkP1, dh1, ck1, nd1, np1, sk1, nk1, dk1, ak1) @i & + ProvisionerFinishedProvisioning(pkP2, pkD2, dh2, ck2, np2, nd2, sk2, nk2, dk2, ak2) @j +" + +lemma EoOOBs_EiOOBo_auth_prov: +" +All pkP pkD dh ck np nd sk nk dk ak #i. + ProvisionerFinishedProvisioning(pkP, pkD, dh, ck, np, nd, sk, nk, dk, ak) @i ==> + ( + Ex #j. + DeviceFinishedProvisioning(pkD, pkP, dh, ck, nd, np, sk, nk, dk) @j + ) +" + +lemma EoOOBs_EiOOBo_auth_dev: +" +All pkP pkD dh ck np nd sk nk dk ak #i. + DeviceFinishedKeyDistribution(pkD, pkP, dh, ck, nd, np, sk, nk, dk, ak) @i ==> + ( + Ex #j. + ProvisionerFinishedProvisioning(pkP, pkD, dh, ck, np, nd, sk, nk, dk, ak) @j + ) +" + +lemma EoOOBs_EiOOBo_weaksecret_nk_prov: +" +All pkP pkD dh ck np nd sk nk dk ak #i. + ProvisionerFinishedProvisioning(pkP, pkD, dh, ck, np, nd, sk, nk, dk, ak) @i ==> + not (Ex #j. K(nk) @j) +" + +lemma EoOOBs_EiOOBo_weaksecret_dk_prov: +" +All pkP pkD dh ck np nd sk nk dk ak #i. + ProvisionerFinishedProvisioning(pkP, pkD, dh, ck, np, nd, sk, nk, dk, ak) @i ==> + not (Ex #j. K(dk) @j) +" + +lemma EoOOBs_EiOOBo_weaksecret_ak_prov: +" +All pkP pkD dh ck np nd sk nk dk ak #i. + ProvisionerFinishedProvisioning(pkP, pkD, dh, ck, np, nd, sk, nk, dk, ak) @i ==> + not (Ex #j. K(ak) @j) +" + +lemma EoOOBs_EiOOBo_weaksecret_nk_dev: +" +All pkP pkD dh ck np nd sk nk dk ak #i. + DeviceFinishedKeyDistribution(pkD, pkP, dh, ck, nd, np, sk, nk, dk, ak) @i ==> + not (Ex #j. K(nk) @j) +" + +lemma EoOOBs_EiOOBo_weaksecret_dk_dev: +" +All pkP pkD dh ck np nd sk nk dk ak #i. + DeviceFinishedKeyDistribution(pkD, pkP, dh, ck, nd, np, sk, nk, dk, ak) @i ==> + not (Ex #j. K(dk) @j) +" + +lemma EoOOBs_EiOOBo_weaksecret_ak_dev: +" +All pkP pkD dh ck np nd sk nk dk ak #i. + DeviceFinishedKeyDistribution(pkD, pkP, dh, ck, nd, np, sk, nk, dk, ak) @i ==> + not (Ex #j. K(ak) @j) +" + +lemma EoOOBs_EiOOBo_double_impersonation: +" +All pkP1 pkD1 pkP2 pkD2 dh1 dh2 ck1 ck2 np1 np2 nd1 nd2 sk1 sk2 nk1 nk2 dk1 dk2 ak1 ak2 #i #j. + DeviceFinishedKeyDistribution(pkD1, pkP1, dh1, ck1, nd1, np1, sk1, nk1, dk1, ak1) @i & + ProvisionerFinishedProvisioning(pkP2, pkD2, dh2, ck2, np2, nd2, sk2, nk2, dk2, ak2) @j ==> + not (Ex #k1 #k2 #k3 #k4 . + K(nk1) @k1 & K(dk1) @k2 & K(nk2) @k3 & K(dk2) @k4 + ) +" + +#endif + +/*******************************************/ +/* End lemmas about EoOOBs-EiOOBo exchange */ +/*******************************************/ + +/***************************************/ +/* Lemmas about EoOOBs-EiOOBs exchange */ +/***************************************/ + +#ifdef EoOOBsEiOOBs +lemma EoOOBs_EiOOBs_functional: exists-trace +" +Ex pkP1 pkD1 pkP2 pkD2 dh1 dh2 ck1 ck2 np1 np2 nd1 nd2 sk1 sk2 nk1 nk2 dk1 dk2 ak1 ak2 #i #j. + DeviceFinishedKeyDistribution(pkD1, pkP1, dh1, ck1, nd1, np1, sk1, nk1, dk1, ak1) @i & + ProvisionerFinishedProvisioning(pkP2, pkD2, dh2, ck2, np2, nd2, sk2, nk2, dk2, ak2) @j +" + +lemma EoOOBs_EiOOBs_auth_prov: +" +All pkP pkD dh ck np nd sk nk dk ak #i. + ProvisionerFinishedProvisioning(pkP, pkD, dh, ck, np, nd, sk, nk, dk, ak) @i ==> + ( + Ex #j. + DeviceFinishedProvisioning(pkD, pkP, dh, ck, nd, np, sk, nk, dk) @j + ) +" + +lemma EoOOBs_EiOOBs_auth_dev: +" +All pkP pkD dh ck np nd sk nk dk ak #i. + DeviceFinishedKeyDistribution(pkD, pkP, dh, ck, nd, np, sk, nk, dk, ak) @i ==> + ( + Ex #j. + ProvisionerFinishedProvisioning(pkP, pkD, dh, ck, np, nd, sk, nk, dk, ak) @j + ) +" + +lemma EoOOBs_EiOOBs_weaksecret_nk_prov: +" +All pkP pkD dh ck np nd sk nk dk ak #i. + ProvisionerFinishedProvisioning(pkP, pkD, dh, ck, np, nd, sk, nk, dk, ak) @i ==> + not (Ex #j. K(nk) @j) +" + +lemma EoOOBs_EiOOBs_weaksecret_dk_prov: +" +All pkP pkD dh ck np nd sk nk dk ak #i. + ProvisionerFinishedProvisioning(pkP, pkD, dh, ck, np, nd, sk, nk, dk, ak) @i ==> + not (Ex #j. K(dk) @j) +" + +lemma EoOOBs_EiOOBs_weaksecret_ak_prov: +" +All pkP pkD dh ck np nd sk nk dk ak #i. + ProvisionerFinishedProvisioning(pkP, pkD, dh, ck, np, nd, sk, nk, dk, ak) @i ==> + not (Ex #j. K(ak) @j) +" + +lemma EoOOBs_EiOOBs_weaksecret_nk_dev: +" +All pkP pkD dh ck np nd sk nk dk ak #i. + DeviceFinishedKeyDistribution(pkD, pkP, dh, ck, nd, np, sk, nk, dk, ak) @i ==> + not (Ex #j. K(nk) @j) +" + +lemma EoOOBs_EiOOBs_weaksecret_dk_dev: +" +All pkP pkD dh ck np nd sk nk dk ak #i. + DeviceFinishedKeyDistribution(pkD, pkP, dh, ck, nd, np, sk, nk, dk, ak) @i ==> + not (Ex #j. K(dk) @j) +" + +lemma EoOOBs_EiOOBs_weaksecret_ak_dev: +" +All pkP pkD dh ck np nd sk nk dk ak #i. + DeviceFinishedKeyDistribution(pkD, pkP, dh, ck, nd, np, sk, nk, dk, ak) @i ==> + not (Ex #j. K(ak) @j) +" + +lemma EoOOBs_EiOOBs_double_impersonation: +" +All pkP1 pkD1 pkP2 pkD2 dh1 dh2 ck1 ck2 np1 np2 nd1 nd2 sk1 sk2 nk1 nk2 dk1 dk2 ak1 ak2 #i #j. + DeviceFinishedKeyDistribution(pkD1, pkP1, dh1, ck1, nd1, np1, sk1, nk1, dk1, ak1) @i & + ProvisionerFinishedProvisioning(pkP2, pkD2, dh2, ck2, np2, nd2, sk2, nk2, dk2, ak2) @j ==> + not (Ex #k1 #k2 #k3 #k4 . + K(nk1) @k1 & K(dk1) @k2 & K(nk2) @k3 & K(dk2) @k4 + ) +" + +#endif + +/*******************************************/ +/* End lemmas about EoOOBs-EiOOBs exchange */ +/*******************************************/ + +/*****************************************/ +/* Lemmas about EoOOBno-EoOOBno exchange */ +/*****************************************/ + +#ifdef EoOOBnoEoOOBno +lemma EoOOBno_EoOOBno_functional: exists-trace +" +Ex pkP1 pkD1 pkP2 pkD2 dh1 dh2 ck1 ck2 np1 np2 nd1 nd2 sk1 sk2 nk1 nk2 dk1 dk2 ak1 ak2 #i #j. + DeviceFinishedKeyDistribution(pkD1, pkP1, dh1, ck1, nd1, np1, sk1, nk1, dk1, ak1) @i & + ProvisionerFinishedProvisioning(pkP2, pkD2, dh2, ck2, np2, nd2, sk2, nk2, dk2, ak2) @j +" + +lemma EoOOBno_EoOOBno_auth_prov: +" +All pkP pkD dh ck np nd sk nk dk ak #i. + ProvisionerFinishedProvisioning(pkP, pkD, dh, ck, np, nd, sk, nk, dk, ak) @i ==> + ( + Ex #j. + DeviceFinishedProvisioning(pkD, pkP, dh, ck, nd, np, sk, nk, dk) @j + ) +" + +lemma EoOOBno_EoOOBno_auth_dev: +" +All pkP pkD dh ck np nd sk nk dk ak #i. + DeviceFinishedKeyDistribution(pkD, pkP, dh, ck, nd, np, sk, nk, dk, ak) @i ==> + ( + Ex #j. + ProvisionerFinishedProvisioning(pkP, pkD, dh, ck, np, nd, sk, nk, dk, ak) @j + ) +" + +lemma EoOOBno_EoOOBno_weaksecret_nk_prov: +" +All pkP pkD dh ck np nd sk nk dk ak #i. + ProvisionerFinishedProvisioning(pkP, pkD, dh, ck, np, nd, sk, nk, dk, ak) @i ==> + not (Ex #j. K(nk) @j) +" + +lemma EoOOBno_EoOOBno_weaksecret_dk_prov: +" +All pkP pkD dh ck np nd sk nk dk ak #i. + ProvisionerFinishedProvisioning(pkP, pkD, dh, ck, np, nd, sk, nk, dk, ak) @i ==> + not (Ex #j. K(dk) @j) +" + +lemma EoOOBno_EoOOBno_weaksecret_ak_prov: +" +All pkP pkD dh ck np nd sk nk dk ak #i. + ProvisionerFinishedProvisioning(pkP, pkD, dh, ck, np, nd, sk, nk, dk, ak) @i ==> + not (Ex #j. K(ak) @j) +" + +lemma EoOOBno_EoOOBno_weaksecret_nk_dev: +" +All pkP pkD dh ck np nd sk nk dk ak #i. + DeviceFinishedKeyDistribution(pkD, pkP, dh, ck, nd, np, sk, nk, dk, ak) @i ==> + not (Ex #j. K(nk) @j) +" + +lemma EoOOBno_EoOOBno_weaksecret_dk_dev: +" +All pkP pkD dh ck np nd sk nk dk ak #i. + DeviceFinishedKeyDistribution(pkD, pkP, dh, ck, nd, np, sk, nk, dk, ak) @i ==> + not (Ex #j. K(dk) @j) +" + +lemma EoOOBno_EoOOBno_weaksecret_ak_dev: +" +All pkP pkD dh ck np nd sk nk dk ak #i. + DeviceFinishedKeyDistribution(pkD, pkP, dh, ck, nd, np, sk, nk, dk, ak) @i ==> + not (Ex #j. K(ak) @j) +" + +lemma EoOOBno_EoOOBno_double_impersonation: +" +All pkP1 pkD1 pkP2 pkD2 dh1 dh2 ck1 ck2 np1 np2 nd1 nd2 sk1 sk2 nk1 nk2 dk1 dk2 ak1 ak2 #i #j. + DeviceFinishedKeyDistribution(pkD1, pkP1, dh1, ck1, nd1, np1, sk1, nk1, dk1, ak1) @i & + ProvisionerFinishedProvisioning(pkP2, pkD2, dh2, ck2, np2, nd2, sk2, nk2, dk2, ak2) @j ==> + not (Ex #k1 #k2 #k3 #k4 . + K(nk1) @k1 & K(dk1) @k2 & K(nk2) @k3 & K(dk2) @k4 + ) +" + +#endif + +/*********************************************/ +/* End lemmas about EoOOBno-EoOOBno exchange */ +/*********************************************/ + +/****************************************/ +/* Lemmas about EoOOBno-EoOOBi exchange */ +/****************************************/ + +#ifdef EoOOBnoEoOOBi +lemma EoOOBno_EoOOBi_functional: exists-trace +" +Ex pkP1 pkD1 pkP2 pkD2 dh1 dh2 ck1 ck2 np1 np2 nd1 nd2 sk1 sk2 nk1 nk2 dk1 dk2 ak1 ak2 #i #j. + DeviceFinishedKeyDistribution(pkD1, pkP1, dh1, ck1, nd1, np1, sk1, nk1, dk1, ak1) @i & + ProvisionerFinishedProvisioning(pkP2, pkD2, dh2, ck2, np2, nd2, sk2, nk2, dk2, ak2) @j +" + +lemma EoOOBno_EoOOBi_auth_prov: +" +All pkP pkD dh ck np nd sk nk dk ak #i. + ProvisionerFinishedProvisioning(pkP, pkD, dh, ck, np, nd, sk, nk, dk, ak) @i ==> + ( + Ex #j. + DeviceFinishedProvisioning(pkD, pkP, dh, ck, nd, np, sk, nk, dk) @j + ) +" + +lemma EoOOBno_EoOOBi_auth_dev: +" +All pkP pkD dh ck np nd sk nk dk ak #i. + DeviceFinishedKeyDistribution(pkD, pkP, dh, ck, nd, np, sk, nk, dk, ak) @i ==> + ( + Ex #j. + ProvisionerFinishedProvisioning(pkP, pkD, dh, ck, np, nd, sk, nk, dk, ak) @j + ) +" + +lemma EoOOBno_EoOOBi_weaksecret_nk_prov: +" +All pkP pkD dh ck np nd sk nk dk ak #i. + ProvisionerFinishedProvisioning(pkP, pkD, dh, ck, np, nd, sk, nk, dk, ak) @i ==> + not (Ex #j. K(nk) @j) +" + +lemma EoOOBno_EoOOBi_weaksecret_dk_prov: +" +All pkP pkD dh ck np nd sk nk dk ak #i. + ProvisionerFinishedProvisioning(pkP, pkD, dh, ck, np, nd, sk, nk, dk, ak) @i ==> + not (Ex #j. K(dk) @j) +" + +lemma EoOOBno_EoOOBi_weaksecret_ak_prov: +" +All pkP pkD dh ck np nd sk nk dk ak #i. + ProvisionerFinishedProvisioning(pkP, pkD, dh, ck, np, nd, sk, nk, dk, ak) @i ==> + not (Ex #j. K(ak) @j) +" + +lemma EoOOBno_EoOOBi_weaksecret_nk_dev: +" +All pkP pkD dh ck np nd sk nk dk ak #i. + DeviceFinishedKeyDistribution(pkD, pkP, dh, ck, nd, np, sk, nk, dk, ak) @i ==> + not (Ex #j. K(nk) @j) +" + +lemma EoOOBno_EoOOBi_weaksecret_dk_dev: +" +All pkP pkD dh ck np nd sk nk dk ak #i. + DeviceFinishedKeyDistribution(pkD, pkP, dh, ck, nd, np, sk, nk, dk, ak) @i ==> + not (Ex #j. K(dk) @j) +" + +lemma EoOOBno_EoOOBi_weaksecret_ak_dev: +" +All pkP pkD dh ck np nd sk nk dk ak #i. + DeviceFinishedKeyDistribution(pkD, pkP, dh, ck, nd, np, sk, nk, dk, ak) @i ==> + not (Ex #j. K(ak) @j) +" + +lemma EoOOBno_EoOOBi_double_impersonation: +" +All pkP1 pkD1 pkP2 pkD2 dh1 dh2 ck1 ck2 np1 np2 nd1 nd2 sk1 sk2 nk1 nk2 dk1 dk2 ak1 ak2 #i #j. + DeviceFinishedKeyDistribution(pkD1, pkP1, dh1, ck1, nd1, np1, sk1, nk1, dk1, ak1) @i & + ProvisionerFinishedProvisioning(pkP2, pkD2, dh2, ck2, np2, nd2, sk2, nk2, dk2, ak2) @j ==> + not (Ex #k1 #k2 #k3 #k4 . + K(nk1) @k1 & K(dk1) @k2 & K(nk2) @k3 & K(dk2) @k4 + ) +" + +#endif + +/********************************************/ +/* End lemmas about EoOOBno-EoOOBi exchange */ +/********************************************/ + +/****************************************/ +/* Lemmas about EoOOBno-EoOOBo exchange */ +/****************************************/ + +#ifdef EoOOBnoEoOOBo +lemma EoOOBno_EoOOBo_functional: exists-trace +" +Ex pkP1 pkD1 pkP2 pkD2 dh1 dh2 ck1 ck2 np1 np2 nd1 nd2 sk1 sk2 nk1 nk2 dk1 dk2 ak1 ak2 #i #j. + DeviceFinishedKeyDistribution(pkD1, pkP1, dh1, ck1, nd1, np1, sk1, nk1, dk1, ak1) @i & + ProvisionerFinishedProvisioning(pkP2, pkD2, dh2, ck2, np2, nd2, sk2, nk2, dk2, ak2) @j +" + +lemma EoOOBno_EoOOBo_auth_prov: +" +All pkP pkD dh ck np nd sk nk dk ak #i. + ProvisionerFinishedProvisioning(pkP, pkD, dh, ck, np, nd, sk, nk, dk, ak) @i ==> + ( + Ex #j. + DeviceFinishedProvisioning(pkD, pkP, dh, ck, nd, np, sk, nk, dk) @j + ) +" + +lemma EoOOBno_EoOOBo_auth_dev: +" +All pkP pkD dh ck np nd sk nk dk ak #i. + DeviceFinishedKeyDistribution(pkD, pkP, dh, ck, nd, np, sk, nk, dk, ak) @i ==> + ( + Ex #j. + ProvisionerFinishedProvisioning(pkP, pkD, dh, ck, np, nd, sk, nk, dk, ak) @j + ) +" + +lemma EoOOBno_EoOOBo_weaksecret_nk_prov: +" +All pkP pkD dh ck np nd sk nk dk ak #i. + ProvisionerFinishedProvisioning(pkP, pkD, dh, ck, np, nd, sk, nk, dk, ak) @i ==> + not (Ex #j. K(nk) @j) +" + +lemma EoOOBno_EoOOBo_weaksecret_dk_prov: +" +All pkP pkD dh ck np nd sk nk dk ak #i. + ProvisionerFinishedProvisioning(pkP, pkD, dh, ck, np, nd, sk, nk, dk, ak) @i ==> + not (Ex #j. K(dk) @j) +" + +lemma EoOOBno_EoOOBo_weaksecret_ak_prov: +" +All pkP pkD dh ck np nd sk nk dk ak #i. + ProvisionerFinishedProvisioning(pkP, pkD, dh, ck, np, nd, sk, nk, dk, ak) @i ==> + not (Ex #j. K(ak) @j) +" + +lemma EoOOBno_EoOOBo_weaksecret_nk_dev: +" +All pkP pkD dh ck np nd sk nk dk ak #i. + DeviceFinishedKeyDistribution(pkD, pkP, dh, ck, nd, np, sk, nk, dk, ak) @i ==> + not (Ex #j. K(nk) @j) +" + +lemma EoOOBno_EoOOBo_weaksecret_dk_dev: +" +All pkP pkD dh ck np nd sk nk dk ak #i. + DeviceFinishedKeyDistribution(pkD, pkP, dh, ck, nd, np, sk, nk, dk, ak) @i ==> + not (Ex #j. K(dk) @j) +" + +lemma EoOOBno_EoOOBo_weaksecret_ak_dev: +" +All pkP pkD dh ck np nd sk nk dk ak #i. + DeviceFinishedKeyDistribution(pkD, pkP, dh, ck, nd, np, sk, nk, dk, ak) @i ==> + not (Ex #j. K(ak) @j) +" + +lemma EoOOBno_EoOOBo_double_impersonation: +" +All pkP1 pkD1 pkP2 pkD2 dh1 dh2 ck1 ck2 np1 np2 nd1 nd2 sk1 sk2 nk1 nk2 dk1 dk2 ak1 ak2 #i #j. + DeviceFinishedKeyDistribution(pkD1, pkP1, dh1, ck1, nd1, np1, sk1, nk1, dk1, ak1) @i & + ProvisionerFinishedProvisioning(pkP2, pkD2, dh2, ck2, np2, nd2, sk2, nk2, dk2, ak2) @j ==> + not (Ex #k1 #k2 #k3 #k4 . + K(nk1) @k1 & K(dk1) @k2 & K(nk2) @k3 & K(dk2) @k4 + ) +" + +#endif + +/********************************************/ +/* End lemmas about EoOOBno-EoOOBo exchange */ +/********************************************/ + +/****************************************/ +/* Lemmas about EoOOBno-EoOOBs exchange */ +/****************************************/ + +#ifdef EoOOBnoEoOOBs +lemma EoOOBno_EoOOBs_functional: exists-trace +" +Ex pkP1 pkD1 pkP2 pkD2 dh1 dh2 ck1 ck2 np1 np2 nd1 nd2 sk1 sk2 nk1 nk2 dk1 dk2 ak1 ak2 #i #j. + DeviceFinishedKeyDistribution(pkD1, pkP1, dh1, ck1, nd1, np1, sk1, nk1, dk1, ak1) @i & + ProvisionerFinishedProvisioning(pkP2, pkD2, dh2, ck2, np2, nd2, sk2, nk2, dk2, ak2) @j +" + +lemma EoOOBno_EoOOBs_auth_prov: +" +All pkP pkD dh ck np nd sk nk dk ak #i. + ProvisionerFinishedProvisioning(pkP, pkD, dh, ck, np, nd, sk, nk, dk, ak) @i ==> + ( + Ex #j. + DeviceFinishedProvisioning(pkD, pkP, dh, ck, nd, np, sk, nk, dk) @j + ) +" + +lemma EoOOBno_EoOOBs_auth_dev: +" +All pkP pkD dh ck np nd sk nk dk ak #i. + DeviceFinishedKeyDistribution(pkD, pkP, dh, ck, nd, np, sk, nk, dk, ak) @i ==> + ( + Ex #j. + ProvisionerFinishedProvisioning(pkP, pkD, dh, ck, np, nd, sk, nk, dk, ak) @j + ) +" + +lemma EoOOBno_EoOOBs_weaksecret_nk_prov: +" +All pkP pkD dh ck np nd sk nk dk ak #i. + ProvisionerFinishedProvisioning(pkP, pkD, dh, ck, np, nd, sk, nk, dk, ak) @i ==> + not (Ex #j. K(nk) @j) +" + +lemma EoOOBno_EoOOBs_weaksecret_dk_prov: +" +All pkP pkD dh ck np nd sk nk dk ak #i. + ProvisionerFinishedProvisioning(pkP, pkD, dh, ck, np, nd, sk, nk, dk, ak) @i ==> + not (Ex #j. K(dk) @j) +" + +lemma EoOOBno_EoOOBs_weaksecret_ak_prov: +" +All pkP pkD dh ck np nd sk nk dk ak #i. + ProvisionerFinishedProvisioning(pkP, pkD, dh, ck, np, nd, sk, nk, dk, ak) @i ==> + not (Ex #j. K(ak) @j) +" + +lemma EoOOBno_EoOOBs_weaksecret_nk_dev: +" +All pkP pkD dh ck np nd sk nk dk ak #i. + DeviceFinishedKeyDistribution(pkD, pkP, dh, ck, nd, np, sk, nk, dk, ak) @i ==> + not (Ex #j. K(nk) @j) +" + +lemma EoOOBno_EoOOBs_weaksecret_dk_dev: +" +All pkP pkD dh ck np nd sk nk dk ak #i. + DeviceFinishedKeyDistribution(pkD, pkP, dh, ck, nd, np, sk, nk, dk, ak) @i ==> + not (Ex #j. K(dk) @j) +" + +lemma EoOOBno_EoOOBs_weaksecret_ak_dev: +" +All pkP pkD dh ck np nd sk nk dk ak #i. + DeviceFinishedKeyDistribution(pkD, pkP, dh, ck, nd, np, sk, nk, dk, ak) @i ==> + not (Ex #j. K(ak) @j) +" + +lemma EoOOBno_EoOOBs_double_impersonation: +" +All pkP1 pkD1 pkP2 pkD2 dh1 dh2 ck1 ck2 np1 np2 nd1 nd2 sk1 sk2 nk1 nk2 dk1 dk2 ak1 ak2 #i #j. + DeviceFinishedKeyDistribution(pkD1, pkP1, dh1, ck1, nd1, np1, sk1, nk1, dk1, ak1) @i & + ProvisionerFinishedProvisioning(pkP2, pkD2, dh2, ck2, np2, nd2, sk2, nk2, dk2, ak2) @j ==> + not (Ex #k1 #k2 #k3 #k4 . + K(nk1) @k1 & K(dk1) @k2 & K(nk2) @k3 & K(dk2) @k4 + ) +" + +#endif + +/********************************************/ +/* End lemmas about EoOOBno-EoOOBs exchange */ +/********************************************/ + +/****************************************/ +/* Lemmas about EoOOBi-EoOOBno exchange */ +/****************************************/ + +#ifdef EoOOBiEoOOBno +lemma EoOOBi_EoOOBno_functional: exists-trace +" +Ex pkP1 pkD1 pkP2 pkD2 dh1 dh2 ck1 ck2 np1 np2 nd1 nd2 sk1 sk2 nk1 nk2 dk1 dk2 ak1 ak2 #i #j. + DeviceFinishedKeyDistribution(pkD1, pkP1, dh1, ck1, nd1, np1, sk1, nk1, dk1, ak1) @i & + ProvisionerFinishedProvisioning(pkP2, pkD2, dh2, ck2, np2, nd2, sk2, nk2, dk2, ak2) @j +" + +lemma EoOOBi_EoOOBno_auth_prov: +" +All pkP pkD dh ck np nd sk nk dk ak #i. + ProvisionerFinishedProvisioning(pkP, pkD, dh, ck, np, nd, sk, nk, dk, ak) @i ==> + ( + Ex #j. + DeviceFinishedProvisioning(pkD, pkP, dh, ck, nd, np, sk, nk, dk) @j + ) +" + +lemma EoOOBi_EoOOBno_auth_dev: +" +All pkP pkD dh ck np nd sk nk dk ak #i. + DeviceFinishedKeyDistribution(pkD, pkP, dh, ck, nd, np, sk, nk, dk, ak) @i ==> + ( + Ex #j. + ProvisionerFinishedProvisioning(pkP, pkD, dh, ck, np, nd, sk, nk, dk, ak) @j + ) +" + +lemma EoOOBi_EoOOBno_weaksecret_nk_prov: +" +All pkP pkD dh ck np nd sk nk dk ak #i. + ProvisionerFinishedProvisioning(pkP, pkD, dh, ck, np, nd, sk, nk, dk, ak) @i ==> + not (Ex #j. K(nk) @j) +" + +lemma EoOOBi_EoOOBno_weaksecret_dk_prov: +" +All pkP pkD dh ck np nd sk nk dk ak #i. + ProvisionerFinishedProvisioning(pkP, pkD, dh, ck, np, nd, sk, nk, dk, ak) @i ==> + not (Ex #j. K(dk) @j) +" + +lemma EoOOBi_EoOOBno_weaksecret_ak_prov: +" +All pkP pkD dh ck np nd sk nk dk ak #i. + ProvisionerFinishedProvisioning(pkP, pkD, dh, ck, np, nd, sk, nk, dk, ak) @i ==> + not (Ex #j. K(ak) @j) +" + +lemma EoOOBi_EoOOBno_weaksecret_nk_dev: +" +All pkP pkD dh ck np nd sk nk dk ak #i. + DeviceFinishedKeyDistribution(pkD, pkP, dh, ck, nd, np, sk, nk, dk, ak) @i ==> + not (Ex #j. K(nk) @j) +" + +lemma EoOOBi_EoOOBno_weaksecret_dk_dev: +" +All pkP pkD dh ck np nd sk nk dk ak #i. + DeviceFinishedKeyDistribution(pkD, pkP, dh, ck, nd, np, sk, nk, dk, ak) @i ==> + not (Ex #j. K(dk) @j) +" + +lemma EoOOBi_EoOOBno_weaksecret_ak_dev: +" +All pkP pkD dh ck np nd sk nk dk ak #i. + DeviceFinishedKeyDistribution(pkD, pkP, dh, ck, nd, np, sk, nk, dk, ak) @i ==> + not (Ex #j. K(ak) @j) +" + +lemma EoOOBi_EoOOBno_double_impersonation: +" +All pkP1 pkD1 pkP2 pkD2 dh1 dh2 ck1 ck2 np1 np2 nd1 nd2 sk1 sk2 nk1 nk2 dk1 dk2 ak1 ak2 #i #j. + DeviceFinishedKeyDistribution(pkD1, pkP1, dh1, ck1, nd1, np1, sk1, nk1, dk1, ak1) @i & + ProvisionerFinishedProvisioning(pkP2, pkD2, dh2, ck2, np2, nd2, sk2, nk2, dk2, ak2) @j ==> + not (Ex #k1 #k2 #k3 #k4 . + K(nk1) @k1 & K(dk1) @k2 & K(nk2) @k3 & K(dk2) @k4 + ) +" + +#endif + +/********************************************/ +/* End lemmas about EoOOBi-EoOOBno exchange */ +/********************************************/ + +/***************************************/ +/* Lemmas about EoOOBi-EoOOBi exchange */ +/***************************************/ + +#ifdef EoOOBiEoOOBi +lemma EoOOBi_EoOOBi_functional: exists-trace +" +Ex pkP1 pkD1 pkP2 pkD2 dh1 dh2 ck1 ck2 np1 np2 nd1 nd2 sk1 sk2 nk1 nk2 dk1 dk2 ak1 ak2 #i #j. + DeviceFinishedKeyDistribution(pkD1, pkP1, dh1, ck1, nd1, np1, sk1, nk1, dk1, ak1) @i & + ProvisionerFinishedProvisioning(pkP2, pkD2, dh2, ck2, np2, nd2, sk2, nk2, dk2, ak2) @j +" + +lemma EoOOBi_EoOOBi_auth_prov: +" +All pkP pkD dh ck np nd sk nk dk ak #i. + ProvisionerFinishedProvisioning(pkP, pkD, dh, ck, np, nd, sk, nk, dk, ak) @i ==> + ( + Ex #j. + DeviceFinishedProvisioning(pkD, pkP, dh, ck, nd, np, sk, nk, dk) @j + ) +" + +lemma EoOOBi_EoOOBi_auth_dev: +" +All pkP pkD dh ck np nd sk nk dk ak #i. + DeviceFinishedKeyDistribution(pkD, pkP, dh, ck, nd, np, sk, nk, dk, ak) @i ==> + ( + Ex #j. + ProvisionerFinishedProvisioning(pkP, pkD, dh, ck, np, nd, sk, nk, dk, ak) @j + ) +" + +lemma EoOOBi_EoOOBi_weaksecret_nk_prov: +" +All pkP pkD dh ck np nd sk nk dk ak #i. + ProvisionerFinishedProvisioning(pkP, pkD, dh, ck, np, nd, sk, nk, dk, ak) @i ==> + not (Ex #j. K(nk) @j) +" + +lemma EoOOBi_EoOOBi_weaksecret_dk_prov: +" +All pkP pkD dh ck np nd sk nk dk ak #i. + ProvisionerFinishedProvisioning(pkP, pkD, dh, ck, np, nd, sk, nk, dk, ak) @i ==> + not (Ex #j. K(dk) @j) +" + +lemma EoOOBi_EoOOBi_weaksecret_ak_prov: +" +All pkP pkD dh ck np nd sk nk dk ak #i. + ProvisionerFinishedProvisioning(pkP, pkD, dh, ck, np, nd, sk, nk, dk, ak) @i ==> + not (Ex #j. K(ak) @j) +" + +lemma EoOOBi_EoOOBi_weaksecret_nk_dev: +" +All pkP pkD dh ck np nd sk nk dk ak #i. + DeviceFinishedKeyDistribution(pkD, pkP, dh, ck, nd, np, sk, nk, dk, ak) @i ==> + not (Ex #j. K(nk) @j) +" + +lemma EoOOBi_EoOOBi_weaksecret_dk_dev: +" +All pkP pkD dh ck np nd sk nk dk ak #i. + DeviceFinishedKeyDistribution(pkD, pkP, dh, ck, nd, np, sk, nk, dk, ak) @i ==> + not (Ex #j. K(dk) @j) +" + +lemma EoOOBi_EoOOBi_weaksecret_ak_dev: +" +All pkP pkD dh ck np nd sk nk dk ak #i. + DeviceFinishedKeyDistribution(pkD, pkP, dh, ck, nd, np, sk, nk, dk, ak) @i ==> + not (Ex #j. K(ak) @j) +" + +lemma EoOOBi_EoOOBi_double_impersonation: +" +All pkP1 pkD1 pkP2 pkD2 dh1 dh2 ck1 ck2 np1 np2 nd1 nd2 sk1 sk2 nk1 nk2 dk1 dk2 ak1 ak2 #i #j. + DeviceFinishedKeyDistribution(pkD1, pkP1, dh1, ck1, nd1, np1, sk1, nk1, dk1, ak1) @i & + ProvisionerFinishedProvisioning(pkP2, pkD2, dh2, ck2, np2, nd2, sk2, nk2, dk2, ak2) @j ==> + not (Ex #k1 #k2 #k3 #k4 . + K(nk1) @k1 & K(dk1) @k2 & K(nk2) @k3 & K(dk2) @k4 + ) +" + +#endif + +/*******************************************/ +/* End lemmas about EoOOBi-EoOOBi exchange */ +/*******************************************/ + +/***************************************/ +/* Lemmas about EoOOBi-EoOOBo exchange */ +/***************************************/ + +#ifdef EoOOBiEoOOBo +lemma EoOOBi_EoOOBo_functional: exists-trace +" +Ex pkP1 pkD1 pkP2 pkD2 dh1 dh2 ck1 ck2 np1 np2 nd1 nd2 sk1 sk2 nk1 nk2 dk1 dk2 ak1 ak2 #i #j. + DeviceFinishedKeyDistribution(pkD1, pkP1, dh1, ck1, nd1, np1, sk1, nk1, dk1, ak1) @i & + ProvisionerFinishedProvisioning(pkP2, pkD2, dh2, ck2, np2, nd2, sk2, nk2, dk2, ak2) @j +" + +lemma EoOOBi_EoOOBo_auth_prov: +" +All pkP pkD dh ck np nd sk nk dk ak #i. + ProvisionerFinishedProvisioning(pkP, pkD, dh, ck, np, nd, sk, nk, dk, ak) @i ==> + ( + Ex #j. + DeviceFinishedProvisioning(pkD, pkP, dh, ck, nd, np, sk, nk, dk) @j + ) +" + +lemma EoOOBi_EoOOBo_auth_dev: +" +All pkP pkD dh ck np nd sk nk dk ak #i. + DeviceFinishedKeyDistribution(pkD, pkP, dh, ck, nd, np, sk, nk, dk, ak) @i ==> + ( + Ex #j. + ProvisionerFinishedProvisioning(pkP, pkD, dh, ck, np, nd, sk, nk, dk, ak) @j + ) +" + +lemma EoOOBi_EoOOBo_weaksecret_nk_prov: +" +All pkP pkD dh ck np nd sk nk dk ak #i. + ProvisionerFinishedProvisioning(pkP, pkD, dh, ck, np, nd, sk, nk, dk, ak) @i ==> + not (Ex #j. K(nk) @j) +" + +lemma EoOOBi_EoOOBo_weaksecret_dk_prov: +" +All pkP pkD dh ck np nd sk nk dk ak #i. + ProvisionerFinishedProvisioning(pkP, pkD, dh, ck, np, nd, sk, nk, dk, ak) @i ==> + not (Ex #j. K(dk) @j) +" + +lemma EoOOBi_EoOOBo_weaksecret_ak_prov: +" +All pkP pkD dh ck np nd sk nk dk ak #i. + ProvisionerFinishedProvisioning(pkP, pkD, dh, ck, np, nd, sk, nk, dk, ak) @i ==> + not (Ex #j. K(ak) @j) +" + +lemma EoOOBi_EoOOBo_weaksecret_nk_dev: +" +All pkP pkD dh ck np nd sk nk dk ak #i. + DeviceFinishedKeyDistribution(pkD, pkP, dh, ck, nd, np, sk, nk, dk, ak) @i ==> + not (Ex #j. K(nk) @j) +" + +lemma EoOOBi_EoOOBo_weaksecret_dk_dev: +" +All pkP pkD dh ck np nd sk nk dk ak #i. + DeviceFinishedKeyDistribution(pkD, pkP, dh, ck, nd, np, sk, nk, dk, ak) @i ==> + not (Ex #j. K(dk) @j) +" + +lemma EoOOBi_EoOOBo_weaksecret_ak_dev: +" +All pkP pkD dh ck np nd sk nk dk ak #i. + DeviceFinishedKeyDistribution(pkD, pkP, dh, ck, nd, np, sk, nk, dk, ak) @i ==> + not (Ex #j. K(ak) @j) +" + +lemma EoOOBi_EoOOBo_double_impersonation: +" +All pkP1 pkD1 pkP2 pkD2 dh1 dh2 ck1 ck2 np1 np2 nd1 nd2 sk1 sk2 nk1 nk2 dk1 dk2 ak1 ak2 #i #j. + DeviceFinishedKeyDistribution(pkD1, pkP1, dh1, ck1, nd1, np1, sk1, nk1, dk1, ak1) @i & + ProvisionerFinishedProvisioning(pkP2, pkD2, dh2, ck2, np2, nd2, sk2, nk2, dk2, ak2) @j ==> + not (Ex #k1 #k2 #k3 #k4 . + K(nk1) @k1 & K(dk1) @k2 & K(nk2) @k3 & K(dk2) @k4 + ) +" + +#endif + +/*******************************************/ +/* End lemmas about EoOOBi-EoOOBo exchange */ +/*******************************************/ + +/***************************************/ +/* Lemmas about EoOOBi-EoOOBs exchange */ +/***************************************/ + +#ifdef EoOOBiEoOOBs +lemma EoOOBi_EoOOBs_functional: exists-trace +" +Ex pkP1 pkD1 pkP2 pkD2 dh1 dh2 ck1 ck2 np1 np2 nd1 nd2 sk1 sk2 nk1 nk2 dk1 dk2 ak1 ak2 #i #j. + DeviceFinishedKeyDistribution(pkD1, pkP1, dh1, ck1, nd1, np1, sk1, nk1, dk1, ak1) @i & + ProvisionerFinishedProvisioning(pkP2, pkD2, dh2, ck2, np2, nd2, sk2, nk2, dk2, ak2) @j +" + +lemma EoOOBi_EoOOBs_auth_prov: +" +All pkP pkD dh ck np nd sk nk dk ak #i. + ProvisionerFinishedProvisioning(pkP, pkD, dh, ck, np, nd, sk, nk, dk, ak) @i ==> + ( + Ex #j. + DeviceFinishedProvisioning(pkD, pkP, dh, ck, nd, np, sk, nk, dk) @j + ) +" + +lemma EoOOBi_EoOOBs_auth_dev: +" +All pkP pkD dh ck np nd sk nk dk ak #i. + DeviceFinishedKeyDistribution(pkD, pkP, dh, ck, nd, np, sk, nk, dk, ak) @i ==> + ( + Ex #j. + ProvisionerFinishedProvisioning(pkP, pkD, dh, ck, np, nd, sk, nk, dk, ak) @j + ) +" + +lemma EoOOBi_EoOOBs_weaksecret_nk_prov: +" +All pkP pkD dh ck np nd sk nk dk ak #i. + ProvisionerFinishedProvisioning(pkP, pkD, dh, ck, np, nd, sk, nk, dk, ak) @i ==> + not (Ex #j. K(nk) @j) +" + +lemma EoOOBi_EoOOBs_weaksecret_dk_prov: +" +All pkP pkD dh ck np nd sk nk dk ak #i. + ProvisionerFinishedProvisioning(pkP, pkD, dh, ck, np, nd, sk, nk, dk, ak) @i ==> + not (Ex #j. K(dk) @j) +" + +lemma EoOOBi_EoOOBs_weaksecret_ak_prov: +" +All pkP pkD dh ck np nd sk nk dk ak #i. + ProvisionerFinishedProvisioning(pkP, pkD, dh, ck, np, nd, sk, nk, dk, ak) @i ==> + not (Ex #j. K(ak) @j) +" + +lemma EoOOBi_EoOOBs_weaksecret_nk_dev: +" +All pkP pkD dh ck np nd sk nk dk ak #i. + DeviceFinishedKeyDistribution(pkD, pkP, dh, ck, nd, np, sk, nk, dk, ak) @i ==> + not (Ex #j. K(nk) @j) +" + +lemma EoOOBi_EoOOBs_weaksecret_dk_dev: +" +All pkP pkD dh ck np nd sk nk dk ak #i. + DeviceFinishedKeyDistribution(pkD, pkP, dh, ck, nd, np, sk, nk, dk, ak) @i ==> + not (Ex #j. K(dk) @j) +" + +lemma EoOOBi_EoOOBs_weaksecret_ak_dev: +" +All pkP pkD dh ck np nd sk nk dk ak #i. + DeviceFinishedKeyDistribution(pkD, pkP, dh, ck, nd, np, sk, nk, dk, ak) @i ==> + not (Ex #j. K(ak) @j) +" + +lemma EoOOBi_EoOOBs_double_impersonation: +" +All pkP1 pkD1 pkP2 pkD2 dh1 dh2 ck1 ck2 np1 np2 nd1 nd2 sk1 sk2 nk1 nk2 dk1 dk2 ak1 ak2 #i #j. + DeviceFinishedKeyDistribution(pkD1, pkP1, dh1, ck1, nd1, np1, sk1, nk1, dk1, ak1) @i & + ProvisionerFinishedProvisioning(pkP2, pkD2, dh2, ck2, np2, nd2, sk2, nk2, dk2, ak2) @j ==> + not (Ex #k1 #k2 #k3 #k4 . + K(nk1) @k1 & K(dk1) @k2 & K(nk2) @k3 & K(dk2) @k4 + ) +" + +#endif + +/*******************************************/ +/* End lemmas about EoOOBi-EoOOBs exchange */ +/*******************************************/ + +/****************************************/ +/* Lemmas about EoOOBo-EoOOBno exchange */ +/****************************************/ + +#ifdef EoOOBoEoOOBno +lemma EoOOBo_EoOOBno_functional: exists-trace +" +Ex pkP1 pkD1 pkP2 pkD2 dh1 dh2 ck1 ck2 np1 np2 nd1 nd2 sk1 sk2 nk1 nk2 dk1 dk2 ak1 ak2 #i #j. + DeviceFinishedKeyDistribution(pkD1, pkP1, dh1, ck1, nd1, np1, sk1, nk1, dk1, ak1) @i & + ProvisionerFinishedProvisioning(pkP2, pkD2, dh2, ck2, np2, nd2, sk2, nk2, dk2, ak2) @j +" + +lemma EoOOBo_EoOOBno_auth_prov: +" +All pkP pkD dh ck np nd sk nk dk ak #i. + ProvisionerFinishedProvisioning(pkP, pkD, dh, ck, np, nd, sk, nk, dk, ak) @i ==> + ( + Ex #j. + DeviceFinishedProvisioning(pkD, pkP, dh, ck, nd, np, sk, nk, dk) @j + ) +" + +lemma EoOOBo_EoOOBno_auth_dev: +" +All pkP pkD dh ck np nd sk nk dk ak #i. + DeviceFinishedKeyDistribution(pkD, pkP, dh, ck, nd, np, sk, nk, dk, ak) @i ==> + ( + Ex #j. + ProvisionerFinishedProvisioning(pkP, pkD, dh, ck, np, nd, sk, nk, dk, ak) @j + ) +" + +lemma EoOOBo_EoOOBno_weaksecret_nk_prov: +" +All pkP pkD dh ck np nd sk nk dk ak #i. + ProvisionerFinishedProvisioning(pkP, pkD, dh, ck, np, nd, sk, nk, dk, ak) @i ==> + not (Ex #j. K(nk) @j) +" + +lemma EoOOBo_EoOOBno_weaksecret_dk_prov: +" +All pkP pkD dh ck np nd sk nk dk ak #i. + ProvisionerFinishedProvisioning(pkP, pkD, dh, ck, np, nd, sk, nk, dk, ak) @i ==> + not (Ex #j. K(dk) @j) +" + +lemma EoOOBo_EoOOBno_weaksecret_ak_prov: +" +All pkP pkD dh ck np nd sk nk dk ak #i. + ProvisionerFinishedProvisioning(pkP, pkD, dh, ck, np, nd, sk, nk, dk, ak) @i ==> + not (Ex #j. K(ak) @j) +" + +lemma EoOOBo_EoOOBno_weaksecret_nk_dev: +" +All pkP pkD dh ck np nd sk nk dk ak #i. + DeviceFinishedKeyDistribution(pkD, pkP, dh, ck, nd, np, sk, nk, dk, ak) @i ==> + not (Ex #j. K(nk) @j) +" + +lemma EoOOBo_EoOOBno_weaksecret_dk_dev: +" +All pkP pkD dh ck np nd sk nk dk ak #i. + DeviceFinishedKeyDistribution(pkD, pkP, dh, ck, nd, np, sk, nk, dk, ak) @i ==> + not (Ex #j. K(dk) @j) +" + +lemma EoOOBo_EoOOBno_weaksecret_ak_dev: +" +All pkP pkD dh ck np nd sk nk dk ak #i. + DeviceFinishedKeyDistribution(pkD, pkP, dh, ck, nd, np, sk, nk, dk, ak) @i ==> + not (Ex #j. K(ak) @j) +" + +lemma EoOOBo_EoOOBno_double_impersonation: +" +All pkP1 pkD1 pkP2 pkD2 dh1 dh2 ck1 ck2 np1 np2 nd1 nd2 sk1 sk2 nk1 nk2 dk1 dk2 ak1 ak2 #i #j. + DeviceFinishedKeyDistribution(pkD1, pkP1, dh1, ck1, nd1, np1, sk1, nk1, dk1, ak1) @i & + ProvisionerFinishedProvisioning(pkP2, pkD2, dh2, ck2, np2, nd2, sk2, nk2, dk2, ak2) @j ==> + not (Ex #k1 #k2 #k3 #k4 . + K(nk1) @k1 & K(dk1) @k2 & K(nk2) @k3 & K(dk2) @k4 + ) +" + +#endif + +/********************************************/ +/* End lemmas about EoOOBo-EoOOBno exchange */ +/********************************************/ + +/***************************************/ +/* Lemmas about EoOOBo-EoOOBi exchange */ +/***************************************/ + +#ifdef EoOOBoEoOOBi +lemma EoOOBo_EoOOBi_functional: exists-trace +" +Ex pkP1 pkD1 pkP2 pkD2 dh1 dh2 ck1 ck2 np1 np2 nd1 nd2 sk1 sk2 nk1 nk2 dk1 dk2 ak1 ak2 #i #j. + DeviceFinishedKeyDistribution(pkD1, pkP1, dh1, ck1, nd1, np1, sk1, nk1, dk1, ak1) @i & + ProvisionerFinishedProvisioning(pkP2, pkD2, dh2, ck2, np2, nd2, sk2, nk2, dk2, ak2) @j +" + +lemma EoOOBo_EoOOBi_auth_prov: +" +All pkP pkD dh ck np nd sk nk dk ak #i. + ProvisionerFinishedProvisioning(pkP, pkD, dh, ck, np, nd, sk, nk, dk, ak) @i ==> + ( + Ex #j. + DeviceFinishedProvisioning(pkD, pkP, dh, ck, nd, np, sk, nk, dk) @j + ) +" + +lemma EoOOBo_EoOOBi_auth_dev: +" +All pkP pkD dh ck np nd sk nk dk ak #i. + DeviceFinishedKeyDistribution(pkD, pkP, dh, ck, nd, np, sk, nk, dk, ak) @i ==> + ( + Ex #j. + ProvisionerFinishedProvisioning(pkP, pkD, dh, ck, np, nd, sk, nk, dk, ak) @j + ) +" + +lemma EoOOBo_EoOOBi_weaksecret_nk_prov: +" +All pkP pkD dh ck np nd sk nk dk ak #i. + ProvisionerFinishedProvisioning(pkP, pkD, dh, ck, np, nd, sk, nk, dk, ak) @i ==> + not (Ex #j. K(nk) @j) +" + +lemma EoOOBo_EoOOBi_weaksecret_dk_prov: +" +All pkP pkD dh ck np nd sk nk dk ak #i. + ProvisionerFinishedProvisioning(pkP, pkD, dh, ck, np, nd, sk, nk, dk, ak) @i ==> + not (Ex #j. K(dk) @j) +" + +lemma EoOOBo_EoOOBi_weaksecret_ak_prov: +" +All pkP pkD dh ck np nd sk nk dk ak #i. + ProvisionerFinishedProvisioning(pkP, pkD, dh, ck, np, nd, sk, nk, dk, ak) @i ==> + not (Ex #j. K(ak) @j) +" + +lemma EoOOBo_EoOOBi_weaksecret_nk_dev: +" +All pkP pkD dh ck np nd sk nk dk ak #i. + DeviceFinishedKeyDistribution(pkD, pkP, dh, ck, nd, np, sk, nk, dk, ak) @i ==> + not (Ex #j. K(nk) @j) +" + +lemma EoOOBo_EoOOBi_weaksecret_dk_dev: +" +All pkP pkD dh ck np nd sk nk dk ak #i. + DeviceFinishedKeyDistribution(pkD, pkP, dh, ck, nd, np, sk, nk, dk, ak) @i ==> + not (Ex #j. K(dk) @j) +" + +lemma EoOOBo_EoOOBi_weaksecret_ak_dev: +" +All pkP pkD dh ck np nd sk nk dk ak #i. + DeviceFinishedKeyDistribution(pkD, pkP, dh, ck, nd, np, sk, nk, dk, ak) @i ==> + not (Ex #j. K(ak) @j) +" + +lemma EoOOBo_EoOOBi_double_impersonation: +" +All pkP1 pkD1 pkP2 pkD2 dh1 dh2 ck1 ck2 np1 np2 nd1 nd2 sk1 sk2 nk1 nk2 dk1 dk2 ak1 ak2 #i #j. + DeviceFinishedKeyDistribution(pkD1, pkP1, dh1, ck1, nd1, np1, sk1, nk1, dk1, ak1) @i & + ProvisionerFinishedProvisioning(pkP2, pkD2, dh2, ck2, np2, nd2, sk2, nk2, dk2, ak2) @j ==> + not (Ex #k1 #k2 #k3 #k4 . + K(nk1) @k1 & K(dk1) @k2 & K(nk2) @k3 & K(dk2) @k4 + ) +" + +#endif + +/*******************************************/ +/* End lemmas about EoOOBo-EoOOBi exchange */ +/*******************************************/ + +/***************************************/ +/* Lemmas about EoOOBo-EoOOBo exchange */ +/***************************************/ + +#ifdef EoOOBoEoOOBo +lemma EoOOBo_EoOOBo_functional: exists-trace +" +Ex pkP1 pkD1 pkP2 pkD2 dh1 dh2 ck1 ck2 np1 np2 nd1 nd2 sk1 sk2 nk1 nk2 dk1 dk2 ak1 ak2 #i #j. + DeviceFinishedKeyDistribution(pkD1, pkP1, dh1, ck1, nd1, np1, sk1, nk1, dk1, ak1) @i & + ProvisionerFinishedProvisioning(pkP2, pkD2, dh2, ck2, np2, nd2, sk2, nk2, dk2, ak2) @j +" + +lemma EoOOBo_EoOOBo_auth_prov: +" +All pkP pkD dh ck np nd sk nk dk ak #i. + ProvisionerFinishedProvisioning(pkP, pkD, dh, ck, np, nd, sk, nk, dk, ak) @i ==> + ( + Ex #j. + DeviceFinishedProvisioning(pkD, pkP, dh, ck, nd, np, sk, nk, dk) @j + ) +" + +lemma EoOOBo_EoOOBo_auth_dev: +" +All pkP pkD dh ck np nd sk nk dk ak #i. + DeviceFinishedKeyDistribution(pkD, pkP, dh, ck, nd, np, sk, nk, dk, ak) @i ==> + ( + Ex #j. + ProvisionerFinishedProvisioning(pkP, pkD, dh, ck, np, nd, sk, nk, dk, ak) @j + ) +" + +lemma EoOOBo_EoOOBo_weaksecret_nk_prov: +" +All pkP pkD dh ck np nd sk nk dk ak #i. + ProvisionerFinishedProvisioning(pkP, pkD, dh, ck, np, nd, sk, nk, dk, ak) @i ==> + not (Ex #j. K(nk) @j) +" + +lemma EoOOBo_EoOOBo_weaksecret_dk_prov: +" +All pkP pkD dh ck np nd sk nk dk ak #i. + ProvisionerFinishedProvisioning(pkP, pkD, dh, ck, np, nd, sk, nk, dk, ak) @i ==> + not (Ex #j. K(dk) @j) +" + +lemma EoOOBo_EoOOBo_weaksecret_ak_prov: +" +All pkP pkD dh ck np nd sk nk dk ak #i. + ProvisionerFinishedProvisioning(pkP, pkD, dh, ck, np, nd, sk, nk, dk, ak) @i ==> + not (Ex #j. K(ak) @j) +" + +lemma EoOOBo_EoOOBo_weaksecret_nk_dev: +" +All pkP pkD dh ck np nd sk nk dk ak #i. + DeviceFinishedKeyDistribution(pkD, pkP, dh, ck, nd, np, sk, nk, dk, ak) @i ==> + not (Ex #j. K(nk) @j) +" + +lemma EoOOBo_EoOOBo_weaksecret_dk_dev: +" +All pkP pkD dh ck np nd sk nk dk ak #i. + DeviceFinishedKeyDistribution(pkD, pkP, dh, ck, nd, np, sk, nk, dk, ak) @i ==> + not (Ex #j. K(dk) @j) +" + +lemma EoOOBo_EoOOBo_weaksecret_ak_dev: +" +All pkP pkD dh ck np nd sk nk dk ak #i. + DeviceFinishedKeyDistribution(pkD, pkP, dh, ck, nd, np, sk, nk, dk, ak) @i ==> + not (Ex #j. K(ak) @j) +" + +lemma EoOOBo_EoOOBo_double_impersonation: +" +All pkP1 pkD1 pkP2 pkD2 dh1 dh2 ck1 ck2 np1 np2 nd1 nd2 sk1 sk2 nk1 nk2 dk1 dk2 ak1 ak2 #i #j. + DeviceFinishedKeyDistribution(pkD1, pkP1, dh1, ck1, nd1, np1, sk1, nk1, dk1, ak1) @i & + ProvisionerFinishedProvisioning(pkP2, pkD2, dh2, ck2, np2, nd2, sk2, nk2, dk2, ak2) @j ==> + not (Ex #k1 #k2 #k3 #k4 . + K(nk1) @k1 & K(dk1) @k2 & K(nk2) @k3 & K(dk2) @k4 + ) +" + +#endif + +/*******************************************/ +/* End lemmas about EoOOBo-EoOOBo exchange */ +/*******************************************/ + +/***************************************/ +/* Lemmas about EoOOBo-EoOOBs exchange */ +/***************************************/ + +#ifdef EoOOBoEoOOBs +lemma EoOOBo_EoOOBs_functional: exists-trace +" +Ex pkP1 pkD1 pkP2 pkD2 dh1 dh2 ck1 ck2 np1 np2 nd1 nd2 sk1 sk2 nk1 nk2 dk1 dk2 ak1 ak2 #i #j. + DeviceFinishedKeyDistribution(pkD1, pkP1, dh1, ck1, nd1, np1, sk1, nk1, dk1, ak1) @i & + ProvisionerFinishedProvisioning(pkP2, pkD2, dh2, ck2, np2, nd2, sk2, nk2, dk2, ak2) @j +" + +lemma EoOOBo_EoOOBs_auth_prov: +" +All pkP pkD dh ck np nd sk nk dk ak #i. + ProvisionerFinishedProvisioning(pkP, pkD, dh, ck, np, nd, sk, nk, dk, ak) @i ==> + ( + Ex #j. + DeviceFinishedProvisioning(pkD, pkP, dh, ck, nd, np, sk, nk, dk) @j + ) +" + +lemma EoOOBo_EoOOBs_auth_dev: +" +All pkP pkD dh ck np nd sk nk dk ak #i. + DeviceFinishedKeyDistribution(pkD, pkP, dh, ck, nd, np, sk, nk, dk, ak) @i ==> + ( + Ex #j. + ProvisionerFinishedProvisioning(pkP, pkD, dh, ck, np, nd, sk, nk, dk, ak) @j + ) +" + +lemma EoOOBo_EoOOBs_weaksecret_nk_prov: +" +All pkP pkD dh ck np nd sk nk dk ak #i. + ProvisionerFinishedProvisioning(pkP, pkD, dh, ck, np, nd, sk, nk, dk, ak) @i ==> + not (Ex #j. K(nk) @j) +" + +lemma EoOOBo_EoOOBs_weaksecret_dk_prov: +" +All pkP pkD dh ck np nd sk nk dk ak #i. + ProvisionerFinishedProvisioning(pkP, pkD, dh, ck, np, nd, sk, nk, dk, ak) @i ==> + not (Ex #j. K(dk) @j) +" + +lemma EoOOBo_EoOOBs_weaksecret_ak_prov: +" +All pkP pkD dh ck np nd sk nk dk ak #i. + ProvisionerFinishedProvisioning(pkP, pkD, dh, ck, np, nd, sk, nk, dk, ak) @i ==> + not (Ex #j. K(ak) @j) +" + +lemma EoOOBo_EoOOBs_weaksecret_nk_dev: +" +All pkP pkD dh ck np nd sk nk dk ak #i. + DeviceFinishedKeyDistribution(pkD, pkP, dh, ck, nd, np, sk, nk, dk, ak) @i ==> + not (Ex #j. K(nk) @j) +" + +lemma EoOOBo_EoOOBs_weaksecret_dk_dev: +" +All pkP pkD dh ck np nd sk nk dk ak #i. + DeviceFinishedKeyDistribution(pkD, pkP, dh, ck, nd, np, sk, nk, dk, ak) @i ==> + not (Ex #j. K(dk) @j) +" + +lemma EoOOBo_EoOOBs_weaksecret_ak_dev: +" +All pkP pkD dh ck np nd sk nk dk ak #i. + DeviceFinishedKeyDistribution(pkD, pkP, dh, ck, nd, np, sk, nk, dk, ak) @i ==> + not (Ex #j. K(ak) @j) +" + +lemma EoOOBo_EoOOBs_double_impersonation: +" +All pkP1 pkD1 pkP2 pkD2 dh1 dh2 ck1 ck2 np1 np2 nd1 nd2 sk1 sk2 nk1 nk2 dk1 dk2 ak1 ak2 #i #j. + DeviceFinishedKeyDistribution(pkD1, pkP1, dh1, ck1, nd1, np1, sk1, nk1, dk1, ak1) @i & + ProvisionerFinishedProvisioning(pkP2, pkD2, dh2, ck2, np2, nd2, sk2, nk2, dk2, ak2) @j ==> + not (Ex #k1 #k2 #k3 #k4 . + K(nk1) @k1 & K(dk1) @k2 & K(nk2) @k3 & K(dk2) @k4 + ) +" + +#endif + +/*******************************************/ +/* End lemmas about EoOOBo-EoOOBs exchange */ +/*******************************************/ + +/****************************************/ +/* Lemmas about EoOOBs-EoOOBno exchange */ +/****************************************/ + +#ifdef EoOOBsEoOOBno +lemma EoOOBs_EoOOBno_functional: exists-trace +" +Ex pkP1 pkD1 pkP2 pkD2 dh1 dh2 ck1 ck2 np1 np2 nd1 nd2 sk1 sk2 nk1 nk2 dk1 dk2 ak1 ak2 #i #j. + DeviceFinishedKeyDistribution(pkD1, pkP1, dh1, ck1, nd1, np1, sk1, nk1, dk1, ak1) @i & + ProvisionerFinishedProvisioning(pkP2, pkD2, dh2, ck2, np2, nd2, sk2, nk2, dk2, ak2) @j +" + +lemma EoOOBs_EoOOBno_auth_prov: +" +All pkP pkD dh ck np nd sk nk dk ak #i. + ProvisionerFinishedProvisioning(pkP, pkD, dh, ck, np, nd, sk, nk, dk, ak) @i ==> + ( + Ex #j. + DeviceFinishedProvisioning(pkD, pkP, dh, ck, nd, np, sk, nk, dk) @j + ) +" + +lemma EoOOBs_EoOOBno_auth_dev: +" +All pkP pkD dh ck np nd sk nk dk ak #i. + DeviceFinishedKeyDistribution(pkD, pkP, dh, ck, nd, np, sk, nk, dk, ak) @i ==> + ( + Ex #j. + ProvisionerFinishedProvisioning(pkP, pkD, dh, ck, np, nd, sk, nk, dk, ak) @j + ) +" + +lemma EoOOBs_EoOOBno_weaksecret_nk_prov: +" +All pkP pkD dh ck np nd sk nk dk ak #i. + ProvisionerFinishedProvisioning(pkP, pkD, dh, ck, np, nd, sk, nk, dk, ak) @i ==> + not (Ex #j. K(nk) @j) +" + +lemma EoOOBs_EoOOBno_weaksecret_dk_prov: +" +All pkP pkD dh ck np nd sk nk dk ak #i. + ProvisionerFinishedProvisioning(pkP, pkD, dh, ck, np, nd, sk, nk, dk, ak) @i ==> + not (Ex #j. K(dk) @j) +" + +lemma EoOOBs_EoOOBno_weaksecret_ak_prov: +" +All pkP pkD dh ck np nd sk nk dk ak #i. + ProvisionerFinishedProvisioning(pkP, pkD, dh, ck, np, nd, sk, nk, dk, ak) @i ==> + not (Ex #j. K(ak) @j) +" + +lemma EoOOBs_EoOOBno_weaksecret_nk_dev: +" +All pkP pkD dh ck np nd sk nk dk ak #i. + DeviceFinishedKeyDistribution(pkD, pkP, dh, ck, nd, np, sk, nk, dk, ak) @i ==> + not (Ex #j. K(nk) @j) +" + +lemma EoOOBs_EoOOBno_weaksecret_dk_dev: +" +All pkP pkD dh ck np nd sk nk dk ak #i. + DeviceFinishedKeyDistribution(pkD, pkP, dh, ck, nd, np, sk, nk, dk, ak) @i ==> + not (Ex #j. K(dk) @j) +" + +lemma EoOOBs_EoOOBno_weaksecret_ak_dev: +" +All pkP pkD dh ck np nd sk nk dk ak #i. + DeviceFinishedKeyDistribution(pkD, pkP, dh, ck, nd, np, sk, nk, dk, ak) @i ==> + not (Ex #j. K(ak) @j) +" + +lemma EoOOBs_EoOOBno_double_impersonation: +" +All pkP1 pkD1 pkP2 pkD2 dh1 dh2 ck1 ck2 np1 np2 nd1 nd2 sk1 sk2 nk1 nk2 dk1 dk2 ak1 ak2 #i #j. + DeviceFinishedKeyDistribution(pkD1, pkP1, dh1, ck1, nd1, np1, sk1, nk1, dk1, ak1) @i & + ProvisionerFinishedProvisioning(pkP2, pkD2, dh2, ck2, np2, nd2, sk2, nk2, dk2, ak2) @j ==> + not (Ex #k1 #k2 #k3 #k4 . + K(nk1) @k1 & K(dk1) @k2 & K(nk2) @k3 & K(dk2) @k4 + ) +" + +#endif + +/********************************************/ +/* End lemmas about EoOOBs-EoOOBno exchange */ +/********************************************/ + +/***************************************/ +/* Lemmas about EoOOBs-EoOOBi exchange */ +/***************************************/ + +#ifdef EoOOBsEoOOBi +lemma EoOOBs_EoOOBi_functional: exists-trace +" +Ex pkP1 pkD1 pkP2 pkD2 dh1 dh2 ck1 ck2 np1 np2 nd1 nd2 sk1 sk2 nk1 nk2 dk1 dk2 ak1 ak2 #i #j. + DeviceFinishedKeyDistribution(pkD1, pkP1, dh1, ck1, nd1, np1, sk1, nk1, dk1, ak1) @i & + ProvisionerFinishedProvisioning(pkP2, pkD2, dh2, ck2, np2, nd2, sk2, nk2, dk2, ak2) @j +" + +lemma EoOOBs_EoOOBi_auth_prov: +" +All pkP pkD dh ck np nd sk nk dk ak #i. + ProvisionerFinishedProvisioning(pkP, pkD, dh, ck, np, nd, sk, nk, dk, ak) @i ==> + ( + Ex #j. + DeviceFinishedProvisioning(pkD, pkP, dh, ck, nd, np, sk, nk, dk) @j + ) +" + +lemma EoOOBs_EoOOBi_auth_dev: +" +All pkP pkD dh ck np nd sk nk dk ak #i. + DeviceFinishedKeyDistribution(pkD, pkP, dh, ck, nd, np, sk, nk, dk, ak) @i ==> + ( + Ex #j. + ProvisionerFinishedProvisioning(pkP, pkD, dh, ck, np, nd, sk, nk, dk, ak) @j + ) +" + +lemma EoOOBs_EoOOBi_weaksecret_nk_prov: +" +All pkP pkD dh ck np nd sk nk dk ak #i. + ProvisionerFinishedProvisioning(pkP, pkD, dh, ck, np, nd, sk, nk, dk, ak) @i ==> + not (Ex #j. K(nk) @j) +" + +lemma EoOOBs_EoOOBi_weaksecret_dk_prov: +" +All pkP pkD dh ck np nd sk nk dk ak #i. + ProvisionerFinishedProvisioning(pkP, pkD, dh, ck, np, nd, sk, nk, dk, ak) @i ==> + not (Ex #j. K(dk) @j) +" + +lemma EoOOBs_EoOOBi_weaksecret_ak_prov: +" +All pkP pkD dh ck np nd sk nk dk ak #i. + ProvisionerFinishedProvisioning(pkP, pkD, dh, ck, np, nd, sk, nk, dk, ak) @i ==> + not (Ex #j. K(ak) @j) +" + +lemma EoOOBs_EoOOBi_weaksecret_nk_dev: +" +All pkP pkD dh ck np nd sk nk dk ak #i. + DeviceFinishedKeyDistribution(pkD, pkP, dh, ck, nd, np, sk, nk, dk, ak) @i ==> + not (Ex #j. K(nk) @j) +" + +lemma EoOOBs_EoOOBi_weaksecret_dk_dev: +" +All pkP pkD dh ck np nd sk nk dk ak #i. + DeviceFinishedKeyDistribution(pkD, pkP, dh, ck, nd, np, sk, nk, dk, ak) @i ==> + not (Ex #j. K(dk) @j) +" + +lemma EoOOBs_EoOOBi_weaksecret_ak_dev: +" +All pkP pkD dh ck np nd sk nk dk ak #i. + DeviceFinishedKeyDistribution(pkD, pkP, dh, ck, nd, np, sk, nk, dk, ak) @i ==> + not (Ex #j. K(ak) @j) +" + +lemma EoOOBs_EoOOBi_double_impersonation: +" +All pkP1 pkD1 pkP2 pkD2 dh1 dh2 ck1 ck2 np1 np2 nd1 nd2 sk1 sk2 nk1 nk2 dk1 dk2 ak1 ak2 #i #j. + DeviceFinishedKeyDistribution(pkD1, pkP1, dh1, ck1, nd1, np1, sk1, nk1, dk1, ak1) @i & + ProvisionerFinishedProvisioning(pkP2, pkD2, dh2, ck2, np2, nd2, sk2, nk2, dk2, ak2) @j ==> + not (Ex #k1 #k2 #k3 #k4 . + K(nk1) @k1 & K(dk1) @k2 & K(nk2) @k3 & K(dk2) @k4 + ) +" + +#endif + +/*******************************************/ +/* End lemmas about EoOOBs-EoOOBi exchange */ +/*******************************************/ + +/***************************************/ +/* Lemmas about EoOOBs-EoOOBo exchange */ +/***************************************/ + +#ifdef EoOOBsEoOOBo +lemma EoOOBs_EoOOBo_functional: exists-trace +" +Ex pkP1 pkD1 pkP2 pkD2 dh1 dh2 ck1 ck2 np1 np2 nd1 nd2 sk1 sk2 nk1 nk2 dk1 dk2 ak1 ak2 #i #j. + DeviceFinishedKeyDistribution(pkD1, pkP1, dh1, ck1, nd1, np1, sk1, nk1, dk1, ak1) @i & + ProvisionerFinishedProvisioning(pkP2, pkD2, dh2, ck2, np2, nd2, sk2, nk2, dk2, ak2) @j +" + +lemma EoOOBs_EoOOBo_auth_prov: +" +All pkP pkD dh ck np nd sk nk dk ak #i. + ProvisionerFinishedProvisioning(pkP, pkD, dh, ck, np, nd, sk, nk, dk, ak) @i ==> + ( + Ex #j. + DeviceFinishedProvisioning(pkD, pkP, dh, ck, nd, np, sk, nk, dk) @j + ) +" + +lemma EoOOBs_EoOOBo_auth_dev: +" +All pkP pkD dh ck np nd sk nk dk ak #i. + DeviceFinishedKeyDistribution(pkD, pkP, dh, ck, nd, np, sk, nk, dk, ak) @i ==> + ( + Ex #j. + ProvisionerFinishedProvisioning(pkP, pkD, dh, ck, np, nd, sk, nk, dk, ak) @j + ) +" + +lemma EoOOBs_EoOOBo_weaksecret_nk_prov: +" +All pkP pkD dh ck np nd sk nk dk ak #i. + ProvisionerFinishedProvisioning(pkP, pkD, dh, ck, np, nd, sk, nk, dk, ak) @i ==> + not (Ex #j. K(nk) @j) +" + +lemma EoOOBs_EoOOBo_weaksecret_dk_prov: +" +All pkP pkD dh ck np nd sk nk dk ak #i. + ProvisionerFinishedProvisioning(pkP, pkD, dh, ck, np, nd, sk, nk, dk, ak) @i ==> + not (Ex #j. K(dk) @j) +" + +lemma EoOOBs_EoOOBo_weaksecret_ak_prov: +" +All pkP pkD dh ck np nd sk nk dk ak #i. + ProvisionerFinishedProvisioning(pkP, pkD, dh, ck, np, nd, sk, nk, dk, ak) @i ==> + not (Ex #j. K(ak) @j) +" + +lemma EoOOBs_EoOOBo_weaksecret_nk_dev: +" +All pkP pkD dh ck np nd sk nk dk ak #i. + DeviceFinishedKeyDistribution(pkD, pkP, dh, ck, nd, np, sk, nk, dk, ak) @i ==> + not (Ex #j. K(nk) @j) +" + +lemma EoOOBs_EoOOBo_weaksecret_dk_dev: +" +All pkP pkD dh ck np nd sk nk dk ak #i. + DeviceFinishedKeyDistribution(pkD, pkP, dh, ck, nd, np, sk, nk, dk, ak) @i ==> + not (Ex #j. K(dk) @j) +" + +lemma EoOOBs_EoOOBo_weaksecret_ak_dev: +" +All pkP pkD dh ck np nd sk nk dk ak #i. + DeviceFinishedKeyDistribution(pkD, pkP, dh, ck, nd, np, sk, nk, dk, ak) @i ==> + not (Ex #j. K(ak) @j) +" + +lemma EoOOBs_EoOOBo_double_impersonation: +" +All pkP1 pkD1 pkP2 pkD2 dh1 dh2 ck1 ck2 np1 np2 nd1 nd2 sk1 sk2 nk1 nk2 dk1 dk2 ak1 ak2 #i #j. + DeviceFinishedKeyDistribution(pkD1, pkP1, dh1, ck1, nd1, np1, sk1, nk1, dk1, ak1) @i & + ProvisionerFinishedProvisioning(pkP2, pkD2, dh2, ck2, np2, nd2, sk2, nk2, dk2, ak2) @j ==> + not (Ex #k1 #k2 #k3 #k4 . + K(nk1) @k1 & K(dk1) @k2 & K(nk2) @k3 & K(dk2) @k4 + ) +" + +#endif + +/*******************************************/ +/* End lemmas about EoOOBs-EoOOBo exchange */ +/*******************************************/ + +/***************************************/ +/* Lemmas about EoOOBs-EoOOBs exchange */ +/***************************************/ + +#ifdef EoOOBsEoOOBs +lemma EoOOBs_EoOOBs_functional: exists-trace +" +Ex pkP1 pkD1 pkP2 pkD2 dh1 dh2 ck1 ck2 np1 np2 nd1 nd2 sk1 sk2 nk1 nk2 dk1 dk2 ak1 ak2 #i #j. + DeviceFinishedKeyDistribution(pkD1, pkP1, dh1, ck1, nd1, np1, sk1, nk1, dk1, ak1) @i & + ProvisionerFinishedProvisioning(pkP2, pkD2, dh2, ck2, np2, nd2, sk2, nk2, dk2, ak2) @j +" + +lemma EoOOBs_EoOOBs_auth_prov: +" +All pkP pkD dh ck np nd sk nk dk ak #i. + ProvisionerFinishedProvisioning(pkP, pkD, dh, ck, np, nd, sk, nk, dk, ak) @i ==> + ( + Ex #j. + DeviceFinishedProvisioning(pkD, pkP, dh, ck, nd, np, sk, nk, dk) @j + ) +" + +lemma EoOOBs_EoOOBs_auth_dev: +" +All pkP pkD dh ck np nd sk nk dk ak #i. + DeviceFinishedKeyDistribution(pkD, pkP, dh, ck, nd, np, sk, nk, dk, ak) @i ==> + ( + Ex #j. + ProvisionerFinishedProvisioning(pkP, pkD, dh, ck, np, nd, sk, nk, dk, ak) @j + ) +" + +lemma EoOOBs_EoOOBs_weaksecret_nk_prov: +" +All pkP pkD dh ck np nd sk nk dk ak #i. + ProvisionerFinishedProvisioning(pkP, pkD, dh, ck, np, nd, sk, nk, dk, ak) @i ==> + not (Ex #j. K(nk) @j) +" + +lemma EoOOBs_EoOOBs_weaksecret_dk_prov: +" +All pkP pkD dh ck np nd sk nk dk ak #i. + ProvisionerFinishedProvisioning(pkP, pkD, dh, ck, np, nd, sk, nk, dk, ak) @i ==> + not (Ex #j. K(dk) @j) +" + +lemma EoOOBs_EoOOBs_weaksecret_ak_prov: +" +All pkP pkD dh ck np nd sk nk dk ak #i. + ProvisionerFinishedProvisioning(pkP, pkD, dh, ck, np, nd, sk, nk, dk, ak) @i ==> + not (Ex #j. K(ak) @j) +" + +lemma EoOOBs_EoOOBs_weaksecret_nk_dev: +" +All pkP pkD dh ck np nd sk nk dk ak #i. + DeviceFinishedKeyDistribution(pkD, pkP, dh, ck, nd, np, sk, nk, dk, ak) @i ==> + not (Ex #j. K(nk) @j) +" + +lemma EoOOBs_EoOOBs_weaksecret_dk_dev: +" +All pkP pkD dh ck np nd sk nk dk ak #i. + DeviceFinishedKeyDistribution(pkD, pkP, dh, ck, nd, np, sk, nk, dk, ak) @i ==> + not (Ex #j. K(dk) @j) +" + +lemma EoOOBs_EoOOBs_weaksecret_ak_dev: +" +All pkP pkD dh ck np nd sk nk dk ak #i. + DeviceFinishedKeyDistribution(pkD, pkP, dh, ck, nd, np, sk, nk, dk, ak) @i ==> + not (Ex #j. K(ak) @j) +" + +lemma EoOOBs_EoOOBs_double_impersonation: +" +All pkP1 pkD1 pkP2 pkD2 dh1 dh2 ck1 ck2 np1 np2 nd1 nd2 sk1 sk2 nk1 nk2 dk1 dk2 ak1 ak2 #i #j. + DeviceFinishedKeyDistribution(pkD1, pkP1, dh1, ck1, nd1, np1, sk1, nk1, dk1, ak1) @i & + ProvisionerFinishedProvisioning(pkP2, pkD2, dh2, ck2, np2, nd2, sk2, nk2, dk2, ak2) @j ==> + not (Ex #k1 #k2 #k3 #k4 . + K(nk1) @k1 & K(dk1) @k2 & K(nk2) @k3 & K(dk2) @k4 + ) +" + +#endif + +/*******************************************/ +/* End lemmas about EoOOBs-EoOOBs exchange */ +/*******************************************/ + +/* +* Command-line to generate a Tamarin file with the entire model without all preprocessor macros: +* tamarin-prover mesh.spthy -DEiOOBoEiOOBno -DProvEiOOBo -DEoOOBoEoOOBs -DEiOOBiEiOOBo -DEiOOBnoEiOOBi -DDevOOBi -DDevECDH -DProvEiOOBi -DEiOOBnoEiOOBo -DEoOOBsEiOOBno -DEoOOBsEiOOBo -DEoOOBnoEiOOBi -DEoOOBoEoOOBno -DEiOOBnoEoOOBno -DEoOOBiEiOOBo -DEiOOBnoEiOOBno -DEiOOBoEiOOBs -DEiOOBnoEoOOBs -DEoOOBsEiOOBs -DEiOOBoEoOOBi -DEoOOBnoEoOOBi -DEoOOBoEiOOBno -DDevEiOOBno -DEiOOBiEoOOBo -DEiOOBoEoOOBs -DEoOOBiEoOOBno -DEiOOBsEoOOBno -DEoOOBnoEoOOBs -DProvOOBi -DProvEoOOBs -DEoOOBnoEoOOBno -DEoOOBoEiOOBi -DDevEo -DEoOOBnoEiOOBs -DEoOOBiEoOOBo -DEoOOBnoEoOOBo -DEoOOBiEiOOBs -DProvEoOOBno -DDevEoOOBi -DDevEoOOBs -DProvEiOOBs -DProvEiOOBno -DEoOOBoEoOOBo -DDevOOBo -DEiOOBiEiOOBi -DEiOOBoEiOOBi -DEiOOBiEoOOBno -DProvEo -DEoOOBiEiOOBno -DDevEi -DEiOOBoEoOOBo -DDevOOBno -DEoOOBoEiOOBs -DEiOOBiEiOOBs -DEiOOBiEiOOBno -DProvEoOOBi -DEoOOBiEoOOBi -DEiOOBsEiOOBno -DEoOOBsEoOOBo -DEiOOBnoEiOOBs -DDevEiOOBs -DProvOOBo -DEoOOBnoEiOOBo -DEiOOBnoEoOOBo -DEiOOBsEiOOBi -DProvEoOOBo -DEiOOBsEiOOBo -DEoOOBnoEiOOBno -DEoOOBsEoOOBi -DEiOOBsEoOOBo -DEoOOBiEoOOBs -DEoOOBsEoOOBs -DEiOOBoEoOOBno -DDevEiOOBi -DEiOOBiEoOOBi -DProvECDH -DEoOOBoEiOOBo -DEoOOBiEiOOBi -DProvOOBno -DDevEoOOBo -DEiOOBsEoOOBi -DProvEi -DEiOOBoEiOOBo -DProvOOBs -DEiOOBiEoOOBs -DDevOOBs -DEoOOBsEiOOBi -DDevEiOOBo -DEoOOBoEoOOBi -DEiOOBnoEoOOBi -DDevEoOOBno -DEiOOBsEoOOBs -DEoOOBsEoOOBno -DEiOOBsEiOOBs +*/ + +/* Command lines to prove individual cases: +tamarin-prover mesh.spthy -DProvEi -DProvEiOOBno -DProvOOBno -DDevEi -DDevEiOOBno -DDevOOBno -DProvECDH -DDevECDH -DEiOOBnoEiOOBno --prove +tamarin-prover mesh.spthy -DProvEi -DProvEiOOBno -DProvOOBno -DDevEi -DDevEiOOBi -DDevOOBi -DProvECDH -DDevECDH -DEiOOBnoEiOOBi --prove +tamarin-prover mesh.spthy -DProvEi -DProvEiOOBno -DProvOOBno -DDevEi -DDevEiOOBo -DDevOOBo -DProvECDH -DDevECDH -DEiOOBnoEiOOBo --prove +tamarin-prover mesh.spthy -DProvEi -DProvEiOOBno -DProvOOBno -DDevEi -DDevEiOOBs -DDevOOBs -DProvECDH -DDevECDH -DEiOOBnoEiOOBs --prove +tamarin-prover mesh.spthy -DProvEi -DProvEiOOBi -DProvOOBi -DDevEi -DDevEiOOBno -DDevOOBno -DProvECDH -DDevECDH -DEiOOBiEiOOBno --prove +tamarin-prover mesh.spthy -DProvEi -DProvEiOOBi -DProvOOBi -DDevEi -DDevEiOOBi -DDevOOBi -DProvECDH -DDevECDH -DEiOOBiEiOOBi --prove +tamarin-prover mesh.spthy -DProvEi -DProvEiOOBi -DProvOOBi -DDevEi -DDevEiOOBo -DDevOOBo -DProvECDH -DDevECDH -DEiOOBiEiOOBo --prove +tamarin-prover mesh.spthy -DProvEi -DProvEiOOBi -DProvOOBi -DDevEi -DDevEiOOBs -DDevOOBs -DProvECDH -DDevECDH -DEiOOBiEiOOBs --prove +tamarin-prover mesh.spthy -DProvEi -DProvEiOOBo -DProvOOBo -DDevEi -DDevEiOOBno -DDevOOBno -DProvECDH -DDevECDH -DEiOOBoEiOOBno --prove +tamarin-prover mesh.spthy -DProvEi -DProvEiOOBo -DProvOOBo -DDevEi -DDevEiOOBi -DDevOOBi -DProvECDH -DDevECDH -DEiOOBoEiOOBi --prove +tamarin-prover mesh.spthy -DProvEi -DProvEiOOBo -DProvOOBo -DDevEi -DDevEiOOBo -DDevOOBo -DProvECDH -DDevECDH -DEiOOBoEiOOBo --prove +tamarin-prover mesh.spthy -DProvEi -DProvEiOOBo -DProvOOBo -DDevEi -DDevEiOOBs -DDevOOBs -DProvECDH -DDevECDH -DEiOOBoEiOOBs --prove +tamarin-prover mesh.spthy -DProvEi -DProvEiOOBs -DProvOOBs -DDevEi -DDevEiOOBno -DDevOOBno -DProvECDH -DDevECDH -DEiOOBsEiOOBno --prove +tamarin-prover mesh.spthy -DProvEi -DProvEiOOBs -DProvOOBs -DDevEi -DDevEiOOBi -DDevOOBi -DProvECDH -DDevECDH -DEiOOBsEiOOBi --prove +tamarin-prover mesh.spthy -DProvEi -DProvEiOOBs -DProvOOBs -DDevEi -DDevEiOOBo -DDevOOBo -DProvECDH -DDevECDH -DEiOOBsEiOOBo --prove +tamarin-prover mesh.spthy -DProvEi -DProvEiOOBs -DProvOOBs -DDevEi -DDevEiOOBs -DDevOOBs -DProvECDH -DDevECDH -DEiOOBsEiOOBs --prove +tamarin-prover mesh.spthy -DProvEi -DProvEiOOBno -DProvOOBno -DDevEo -DDevEoOOBno -DDevOOBno -DProvECDH -DDevECDH -DEiOOBnoEoOOBno --prove +tamarin-prover mesh.spthy -DProvEi -DProvEiOOBno -DProvOOBno -DDevEo -DDevEoOOBi -DDevOOBi -DProvECDH -DDevECDH -DEiOOBnoEoOOBi --prove +tamarin-prover mesh.spthy -DProvEi -DProvEiOOBno -DProvOOBno -DDevEo -DDevEoOOBo -DDevOOBo -DProvECDH -DDevECDH -DEiOOBnoEoOOBo --prove +tamarin-prover mesh.spthy -DProvEi -DProvEiOOBno -DProvOOBno -DDevEo -DDevEoOOBs -DDevOOBs -DProvECDH -DDevECDH -DEiOOBnoEoOOBs --prove +tamarin-prover mesh.spthy -DProvEi -DProvEiOOBi -DProvOOBi -DDevEo -DDevEoOOBno -DDevOOBno -DProvECDH -DDevECDH -DEiOOBiEoOOBno --prove +tamarin-prover mesh.spthy -DProvEi -DProvEiOOBi -DProvOOBi -DDevEo -DDevEoOOBi -DDevOOBi -DProvECDH -DDevECDH -DEiOOBiEoOOBi --prove +tamarin-prover mesh.spthy -DProvEi -DProvEiOOBi -DProvOOBi -DDevEo -DDevEoOOBo -DDevOOBo -DProvECDH -DDevECDH -DEiOOBiEoOOBo --prove +tamarin-prover mesh.spthy -DProvEi -DProvEiOOBi -DProvOOBi -DDevEo -DDevEoOOBs -DDevOOBs -DProvECDH -DDevECDH -DEiOOBiEoOOBs --prove +tamarin-prover mesh.spthy -DProvEi -DProvEiOOBo -DProvOOBo -DDevEo -DDevEoOOBno -DDevOOBno -DProvECDH -DDevECDH -DEiOOBoEoOOBno --prove +tamarin-prover mesh.spthy -DProvEi -DProvEiOOBo -DProvOOBo -DDevEo -DDevEoOOBi -DDevOOBi -DProvECDH -DDevECDH -DEiOOBoEoOOBi --prove +tamarin-prover mesh.spthy -DProvEi -DProvEiOOBo -DProvOOBo -DDevEo -DDevEoOOBo -DDevOOBo -DProvECDH -DDevECDH -DEiOOBoEoOOBo --prove +tamarin-prover mesh.spthy -DProvEi -DProvEiOOBo -DProvOOBo -DDevEo -DDevEoOOBs -DDevOOBs -DProvECDH -DDevECDH -DEiOOBoEoOOBs --prove +tamarin-prover mesh.spthy -DProvEi -DProvEiOOBs -DProvOOBs -DDevEo -DDevEoOOBno -DDevOOBno -DProvECDH -DDevECDH -DEiOOBsEoOOBno --prove +tamarin-prover mesh.spthy -DProvEi -DProvEiOOBs -DProvOOBs -DDevEo -DDevEoOOBi -DDevOOBi -DProvECDH -DDevECDH -DEiOOBsEoOOBi --prove +tamarin-prover mesh.spthy -DProvEi -DProvEiOOBs -DProvOOBs -DDevEo -DDevEoOOBo -DDevOOBo -DProvECDH -DDevECDH -DEiOOBsEoOOBo --prove +tamarin-prover mesh.spthy -DProvEi -DProvEiOOBs -DProvOOBs -DDevEo -DDevEoOOBs -DDevOOBs -DProvECDH -DDevECDH -DEiOOBsEoOOBs --prove +tamarin-prover mesh.spthy -DProvEo -DProvEoOOBno -DProvOOBno -DDevEi -DDevEiOOBno -DDevOOBno -DProvECDH -DDevECDH -DEoOOBnoEiOOBno --prove +tamarin-prover mesh.spthy -DProvEo -DProvEoOOBno -DProvOOBno -DDevEi -DDevEiOOBi -DDevOOBi -DProvECDH -DDevECDH -DEoOOBnoEiOOBi --prove +tamarin-prover mesh.spthy -DProvEo -DProvEoOOBno -DProvOOBno -DDevEi -DDevEiOOBo -DDevOOBo -DProvECDH -DDevECDH -DEoOOBnoEiOOBo --prove +tamarin-prover mesh.spthy -DProvEo -DProvEoOOBno -DProvOOBno -DDevEi -DDevEiOOBs -DDevOOBs -DProvECDH -DDevECDH -DEoOOBnoEiOOBs --prove +tamarin-prover mesh.spthy -DProvEo -DProvEoOOBi -DProvOOBi -DDevEi -DDevEiOOBno -DDevOOBno -DProvECDH -DDevECDH -DEoOOBiEiOOBno --prove +tamarin-prover mesh.spthy -DProvEo -DProvEoOOBi -DProvOOBi -DDevEi -DDevEiOOBi -DDevOOBi -DProvECDH -DDevECDH -DEoOOBiEiOOBi --prove +tamarin-prover mesh.spthy -DProvEo -DProvEoOOBi -DProvOOBi -DDevEi -DDevEiOOBo -DDevOOBo -DProvECDH -DDevECDH -DEoOOBiEiOOBo --prove +tamarin-prover mesh.spthy -DProvEo -DProvEoOOBi -DProvOOBi -DDevEi -DDevEiOOBs -DDevOOBs -DProvECDH -DDevECDH -DEoOOBiEiOOBs --prove +tamarin-prover mesh.spthy -DProvEo -DProvEoOOBo -DProvOOBo -DDevEi -DDevEiOOBno -DDevOOBno -DProvECDH -DDevECDH -DEoOOBoEiOOBno --prove +tamarin-prover mesh.spthy -DProvEo -DProvEoOOBo -DProvOOBo -DDevEi -DDevEiOOBi -DDevOOBi -DProvECDH -DDevECDH -DEoOOBoEiOOBi --prove +tamarin-prover mesh.spthy -DProvEo -DProvEoOOBo -DProvOOBo -DDevEi -DDevEiOOBo -DDevOOBo -DProvECDH -DDevECDH -DEoOOBoEiOOBo --prove +tamarin-prover mesh.spthy -DProvEo -DProvEoOOBo -DProvOOBo -DDevEi -DDevEiOOBs -DDevOOBs -DProvECDH -DDevECDH -DEoOOBoEiOOBs --prove +tamarin-prover mesh.spthy -DProvEo -DProvEoOOBs -DProvOOBs -DDevEi -DDevEiOOBno -DDevOOBno -DProvECDH -DDevECDH -DEoOOBsEiOOBno --prove +tamarin-prover mesh.spthy -DProvEo -DProvEoOOBs -DProvOOBs -DDevEi -DDevEiOOBi -DDevOOBi -DProvECDH -DDevECDH -DEoOOBsEiOOBi --prove +tamarin-prover mesh.spthy -DProvEo -DProvEoOOBs -DProvOOBs -DDevEi -DDevEiOOBo -DDevOOBo -DProvECDH -DDevECDH -DEoOOBsEiOOBo --prove +tamarin-prover mesh.spthy -DProvEo -DProvEoOOBs -DProvOOBs -DDevEi -DDevEiOOBs -DDevOOBs -DProvECDH -DDevECDH -DEoOOBsEiOOBs --prove +tamarin-prover mesh.spthy -DProvEo -DProvEoOOBno -DProvOOBno -DDevEo -DDevEoOOBno -DDevOOBno -DProvECDH -DDevECDH -DEoOOBnoEoOOBno --prove +tamarin-prover mesh.spthy -DProvEo -DProvEoOOBno -DProvOOBno -DDevEo -DDevEoOOBi -DDevOOBi -DProvECDH -DDevECDH -DEoOOBnoEoOOBi --prove +tamarin-prover mesh.spthy -DProvEo -DProvEoOOBno -DProvOOBno -DDevEo -DDevEoOOBo -DDevOOBo -DProvECDH -DDevECDH -DEoOOBnoEoOOBo --prove +tamarin-prover mesh.spthy -DProvEo -DProvEoOOBno -DProvOOBno -DDevEo -DDevEoOOBs -DDevOOBs -DProvECDH -DDevECDH -DEoOOBnoEoOOBs --prove +tamarin-prover mesh.spthy -DProvEo -DProvEoOOBi -DProvOOBi -DDevEo -DDevEoOOBno -DDevOOBno -DProvECDH -DDevECDH -DEoOOBiEoOOBno --prove +tamarin-prover mesh.spthy -DProvEo -DProvEoOOBi -DProvOOBi -DDevEo -DDevEoOOBi -DDevOOBi -DProvECDH -DDevECDH -DEoOOBiEoOOBi --prove +tamarin-prover mesh.spthy -DProvEo -DProvEoOOBi -DProvOOBi -DDevEo -DDevEoOOBo -DDevOOBo -DProvECDH -DDevECDH -DEoOOBiEoOOBo --prove +tamarin-prover mesh.spthy -DProvEo -DProvEoOOBi -DProvOOBi -DDevEo -DDevEoOOBs -DDevOOBs -DProvECDH -DDevECDH -DEoOOBiEoOOBs --prove +tamarin-prover mesh.spthy -DProvEo -DProvEoOOBo -DProvOOBo -DDevEo -DDevEoOOBno -DDevOOBno -DProvECDH -DDevECDH -DEoOOBoEoOOBno --prove +tamarin-prover mesh.spthy -DProvEo -DProvEoOOBo -DProvOOBo -DDevEo -DDevEoOOBi -DDevOOBi -DProvECDH -DDevECDH -DEoOOBoEoOOBi --prove +tamarin-prover mesh.spthy -DProvEo -DProvEoOOBo -DProvOOBo -DDevEo -DDevEoOOBo -DDevOOBo -DProvECDH -DDevECDH -DEoOOBoEoOOBo --prove +tamarin-prover mesh.spthy -DProvEo -DProvEoOOBo -DProvOOBo -DDevEo -DDevEoOOBs -DDevOOBs -DProvECDH -DDevECDH -DEoOOBoEoOOBs --prove +tamarin-prover mesh.spthy -DProvEo -DProvEoOOBs -DProvOOBs -DDevEo -DDevEoOOBno -DDevOOBno -DProvECDH -DDevECDH -DEoOOBsEoOOBno --prove +tamarin-prover mesh.spthy -DProvEo -DProvEoOOBs -DProvOOBs -DDevEo -DDevEoOOBi -DDevOOBi -DProvECDH -DDevECDH -DEoOOBsEoOOBi --prove +tamarin-prover mesh.spthy -DProvEo -DProvEoOOBs -DProvOOBs -DDevEo -DDevEoOOBo -DDevOOBo -DProvECDH -DDevECDH -DEoOOBsEoOOBo --prove +tamarin-prover mesh.spthy -DProvEo -DProvEoOOBs -DProvOOBs -DDevEo -DDevEoOOBs -DDevOOBs -DProvECDH -DDevECDH -DEoOOBsEoOOBs --prove + + +JSON configuration file: +{ +"EiOOBnoEiOOBno": ["ProvEi","ProvEiOOBno","ProvOOBno","DevEi","DevEiOOBno","DevOOBno","ProvECDH","DevECDH","EiOOBnoEiOOBno"], +"EiOOBnoEiOOBi": ["ProvEi","ProvEiOOBno","ProvOOBno","DevEi","DevEiOOBi","DevOOBi","ProvECDH","DevECDH","EiOOBnoEiOOBi"], +"EiOOBnoEiOOBo": ["ProvEi","ProvEiOOBno","ProvOOBno","DevEi","DevEiOOBo","DevOOBo","ProvECDH","DevECDH","EiOOBnoEiOOBo"], +"EiOOBnoEiOOBs": ["ProvEi","ProvEiOOBno","ProvOOBno","DevEi","DevEiOOBs","DevOOBs","ProvECDH","DevECDH","EiOOBnoEiOOBs"], +"EiOOBiEiOOBno": ["ProvEi","ProvEiOOBi","ProvOOBi","DevEi","DevEiOOBno","DevOOBno","ProvECDH","DevECDH","EiOOBiEiOOBno"], +"EiOOBiEiOOBi": ["ProvEi","ProvEiOOBi","ProvOOBi","DevEi","DevEiOOBi","DevOOBi","ProvECDH","DevECDH","EiOOBiEiOOBi"], +"EiOOBiEiOOBo": ["ProvEi","ProvEiOOBi","ProvOOBi","DevEi","DevEiOOBo","DevOOBo","ProvECDH","DevECDH","EiOOBiEiOOBo"], +"EiOOBiEiOOBs": ["ProvEi","ProvEiOOBi","ProvOOBi","DevEi","DevEiOOBs","DevOOBs","ProvECDH","DevECDH","EiOOBiEiOOBs"], +"EiOOBoEiOOBno": ["ProvEi","ProvEiOOBo","ProvOOBo","DevEi","DevEiOOBno","DevOOBno","ProvECDH","DevECDH","EiOOBoEiOOBno"], +"EiOOBoEiOOBi": ["ProvEi","ProvEiOOBo","ProvOOBo","DevEi","DevEiOOBi","DevOOBi","ProvECDH","DevECDH","EiOOBoEiOOBi"], +"EiOOBoEiOOBo": ["ProvEi","ProvEiOOBo","ProvOOBo","DevEi","DevEiOOBo","DevOOBo","ProvECDH","DevECDH","EiOOBoEiOOBo"], +"EiOOBoEiOOBs": ["ProvEi","ProvEiOOBo","ProvOOBo","DevEi","DevEiOOBs","DevOOBs","ProvECDH","DevECDH","EiOOBoEiOOBs"], +"EiOOBsEiOOBno": ["ProvEi","ProvEiOOBs","ProvOOBs","DevEi","DevEiOOBno","DevOOBno","ProvECDH","DevECDH","EiOOBsEiOOBno"], +"EiOOBsEiOOBi": ["ProvEi","ProvEiOOBs","ProvOOBs","DevEi","DevEiOOBi","DevOOBi","ProvECDH","DevECDH","EiOOBsEiOOBi"], +"EiOOBsEiOOBo": ["ProvEi","ProvEiOOBs","ProvOOBs","DevEi","DevEiOOBo","DevOOBo","ProvECDH","DevECDH","EiOOBsEiOOBo"], +"EiOOBsEiOOBs": ["ProvEi","ProvEiOOBs","ProvOOBs","DevEi","DevEiOOBs","DevOOBs","ProvECDH","DevECDH","EiOOBsEiOOBs"], +"EiOOBnoEoOOBno": ["ProvEi","ProvEiOOBno","ProvOOBno","DevEo","DevEoOOBno","DevOOBno","ProvECDH","DevECDH","EiOOBnoEoOOBno"], +"EiOOBnoEoOOBi": ["ProvEi","ProvEiOOBno","ProvOOBno","DevEo","DevEoOOBi","DevOOBi","ProvECDH","DevECDH","EiOOBnoEoOOBi"], +"EiOOBnoEoOOBo": ["ProvEi","ProvEiOOBno","ProvOOBno","DevEo","DevEoOOBo","DevOOBo","ProvECDH","DevECDH","EiOOBnoEoOOBo"], +"EiOOBnoEoOOBs": ["ProvEi","ProvEiOOBno","ProvOOBno","DevEo","DevEoOOBs","DevOOBs","ProvECDH","DevECDH","EiOOBnoEoOOBs"], +"EiOOBiEoOOBno": ["ProvEi","ProvEiOOBi","ProvOOBi","DevEo","DevEoOOBno","DevOOBno","ProvECDH","DevECDH","EiOOBiEoOOBno"], +"EiOOBiEoOOBi": ["ProvEi","ProvEiOOBi","ProvOOBi","DevEo","DevEoOOBi","DevOOBi","ProvECDH","DevECDH","EiOOBiEoOOBi"], +"EiOOBiEoOOBo": ["ProvEi","ProvEiOOBi","ProvOOBi","DevEo","DevEoOOBo","DevOOBo","ProvECDH","DevECDH","EiOOBiEoOOBo"], +"EiOOBiEoOOBs": ["ProvEi","ProvEiOOBi","ProvOOBi","DevEo","DevEoOOBs","DevOOBs","ProvECDH","DevECDH","EiOOBiEoOOBs"], +"EiOOBoEoOOBno": ["ProvEi","ProvEiOOBo","ProvOOBo","DevEo","DevEoOOBno","DevOOBno","ProvECDH","DevECDH","EiOOBoEoOOBno"], +"EiOOBoEoOOBi": ["ProvEi","ProvEiOOBo","ProvOOBo","DevEo","DevEoOOBi","DevOOBi","ProvECDH","DevECDH","EiOOBoEoOOBi"], +"EiOOBoEoOOBo": ["ProvEi","ProvEiOOBo","ProvOOBo","DevEo","DevEoOOBo","DevOOBo","ProvECDH","DevECDH","EiOOBoEoOOBo"], +"EiOOBoEoOOBs": ["ProvEi","ProvEiOOBo","ProvOOBo","DevEo","DevEoOOBs","DevOOBs","ProvECDH","DevECDH","EiOOBoEoOOBs"], +"EiOOBsEoOOBno": ["ProvEi","ProvEiOOBs","ProvOOBs","DevEo","DevEoOOBno","DevOOBno","ProvECDH","DevECDH","EiOOBsEoOOBno"], +"EiOOBsEoOOBi": ["ProvEi","ProvEiOOBs","ProvOOBs","DevEo","DevEoOOBi","DevOOBi","ProvECDH","DevECDH","EiOOBsEoOOBi"], +"EiOOBsEoOOBo": ["ProvEi","ProvEiOOBs","ProvOOBs","DevEo","DevEoOOBo","DevOOBo","ProvECDH","DevECDH","EiOOBsEoOOBo"], +"EiOOBsEoOOBs": ["ProvEi","ProvEiOOBs","ProvOOBs","DevEo","DevEoOOBs","DevOOBs","ProvECDH","DevECDH","EiOOBsEoOOBs"], +"EoOOBnoEiOOBno": ["ProvEo","ProvEoOOBno","ProvOOBno","DevEi","DevEiOOBno","DevOOBno","ProvECDH","DevECDH","EoOOBnoEiOOBno"], +"EoOOBnoEiOOBi": ["ProvEo","ProvEoOOBno","ProvOOBno","DevEi","DevEiOOBi","DevOOBi","ProvECDH","DevECDH","EoOOBnoEiOOBi"], +"EoOOBnoEiOOBo": ["ProvEo","ProvEoOOBno","ProvOOBno","DevEi","DevEiOOBo","DevOOBo","ProvECDH","DevECDH","EoOOBnoEiOOBo"], +"EoOOBnoEiOOBs": ["ProvEo","ProvEoOOBno","ProvOOBno","DevEi","DevEiOOBs","DevOOBs","ProvECDH","DevECDH","EoOOBnoEiOOBs"], +"EoOOBiEiOOBno": ["ProvEo","ProvEoOOBi","ProvOOBi","DevEi","DevEiOOBno","DevOOBno","ProvECDH","DevECDH","EoOOBiEiOOBno"], +"EoOOBiEiOOBi": ["ProvEo","ProvEoOOBi","ProvOOBi","DevEi","DevEiOOBi","DevOOBi","ProvECDH","DevECDH","EoOOBiEiOOBi"], +"EoOOBiEiOOBo": ["ProvEo","ProvEoOOBi","ProvOOBi","DevEi","DevEiOOBo","DevOOBo","ProvECDH","DevECDH","EoOOBiEiOOBo"], +"EoOOBiEiOOBs": ["ProvEo","ProvEoOOBi","ProvOOBi","DevEi","DevEiOOBs","DevOOBs","ProvECDH","DevECDH","EoOOBiEiOOBs"], +"EoOOBoEiOOBno": ["ProvEo","ProvEoOOBo","ProvOOBo","DevEi","DevEiOOBno","DevOOBno","ProvECDH","DevECDH","EoOOBoEiOOBno"], +"EoOOBoEiOOBi": ["ProvEo","ProvEoOOBo","ProvOOBo","DevEi","DevEiOOBi","DevOOBi","ProvECDH","DevECDH","EoOOBoEiOOBi"], +"EoOOBoEiOOBo": ["ProvEo","ProvEoOOBo","ProvOOBo","DevEi","DevEiOOBo","DevOOBo","ProvECDH","DevECDH","EoOOBoEiOOBo"], +"EoOOBoEiOOBs": ["ProvEo","ProvEoOOBo","ProvOOBo","DevEi","DevEiOOBs","DevOOBs","ProvECDH","DevECDH","EoOOBoEiOOBs"], +"EoOOBsEiOOBno": ["ProvEo","ProvEoOOBs","ProvOOBs","DevEi","DevEiOOBno","DevOOBno","ProvECDH","DevECDH","EoOOBsEiOOBno"], +"EoOOBsEiOOBi": ["ProvEo","ProvEoOOBs","ProvOOBs","DevEi","DevEiOOBi","DevOOBi","ProvECDH","DevECDH","EoOOBsEiOOBi"], +"EoOOBsEiOOBo": ["ProvEo","ProvEoOOBs","ProvOOBs","DevEi","DevEiOOBo","DevOOBo","ProvECDH","DevECDH","EoOOBsEiOOBo"], +"EoOOBsEiOOBs": ["ProvEo","ProvEoOOBs","ProvOOBs","DevEi","DevEiOOBs","DevOOBs","ProvECDH","DevECDH","EoOOBsEiOOBs"], +"EoOOBnoEoOOBno": ["ProvEo","ProvEoOOBno","ProvOOBno","DevEo","DevEoOOBno","DevOOBno","ProvECDH","DevECDH","EoOOBnoEoOOBno"], +"EoOOBnoEoOOBi": ["ProvEo","ProvEoOOBno","ProvOOBno","DevEo","DevEoOOBi","DevOOBi","ProvECDH","DevECDH","EoOOBnoEoOOBi"], +"EoOOBnoEoOOBo": ["ProvEo","ProvEoOOBno","ProvOOBno","DevEo","DevEoOOBo","DevOOBo","ProvECDH","DevECDH","EoOOBnoEoOOBo"], +"EoOOBnoEoOOBs": ["ProvEo","ProvEoOOBno","ProvOOBno","DevEo","DevEoOOBs","DevOOBs","ProvECDH","DevECDH","EoOOBnoEoOOBs"], +"EoOOBiEoOOBno": ["ProvEo","ProvEoOOBi","ProvOOBi","DevEo","DevEoOOBno","DevOOBno","ProvECDH","DevECDH","EoOOBiEoOOBno"], +"EoOOBiEoOOBi": ["ProvEo","ProvEoOOBi","ProvOOBi","DevEo","DevEoOOBi","DevOOBi","ProvECDH","DevECDH","EoOOBiEoOOBi"], +"EoOOBiEoOOBo": ["ProvEo","ProvEoOOBi","ProvOOBi","DevEo","DevEoOOBo","DevOOBo","ProvECDH","DevECDH","EoOOBiEoOOBo"], +"EoOOBiEoOOBs": ["ProvEo","ProvEoOOBi","ProvOOBi","DevEo","DevEoOOBs","DevOOBs","ProvECDH","DevECDH","EoOOBiEoOOBs"], +"EoOOBoEoOOBno": ["ProvEo","ProvEoOOBo","ProvOOBo","DevEo","DevEoOOBno","DevOOBno","ProvECDH","DevECDH","EoOOBoEoOOBno"], +"EoOOBoEoOOBi": ["ProvEo","ProvEoOOBo","ProvOOBo","DevEo","DevEoOOBi","DevOOBi","ProvECDH","DevECDH","EoOOBoEoOOBi"], +"EoOOBoEoOOBo": ["ProvEo","ProvEoOOBo","ProvOOBo","DevEo","DevEoOOBo","DevOOBo","ProvECDH","DevECDH","EoOOBoEoOOBo"], +"EoOOBoEoOOBs": ["ProvEo","ProvEoOOBo","ProvOOBo","DevEo","DevEoOOBs","DevOOBs","ProvECDH","DevECDH","EoOOBoEoOOBs"], +"EoOOBsEoOOBno": ["ProvEo","ProvEoOOBs","ProvOOBs","DevEo","DevEoOOBno","DevOOBno","ProvECDH","DevECDH","EoOOBsEoOOBno"], +"EoOOBsEoOOBi": ["ProvEo","ProvEoOOBs","ProvOOBs","DevEo","DevEoOOBi","DevOOBi","ProvECDH","DevECDH","EoOOBsEoOOBi"], +"EoOOBsEoOOBo": ["ProvEo","ProvEoOOBs","ProvOOBs","DevEo","DevEoOOBo","DevOOBo","ProvECDH","DevECDH","EoOOBsEoOOBo"], +"EoOOBsEoOOBs": ["ProvEo","ProvEoOOBs","ProvOOBs","DevEo","DevEoOOBs","DevOOBs","ProvECDH","DevECDH","EoOOBsEoOOBs"], +} +*/ + +end diff --git a/examples/esorics23-bluetooth/results/results_ble.png b/examples/esorics23-bluetooth/results/results_ble.png new file mode 100644 index 0000000000000000000000000000000000000000..2d0facbc7c0beb386e811b8adaf906922d43d8d2 GIT binary patch literal 1182637 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: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

&WtdN3~{gE6i;heH-p|d8?O0R70rRXd#Q$j z{m&>S1YZg5zJ8Cf6z~|Pi!c@c9xyn<<+f~8(AB0_#M<`DF6k2v+T$(pq<3zhd`ZqPXDHd52#ZPsX6hmKl2nefF?;l7XDAG9kE<+gO7>)8h z<80*>6&1tx*<+%>nVt5Tz7Odi5G~Ai(0ig#l9Q4)*^+P(qFX_c3W#6Xd*=i^*UZB_ zx?zo#*@U0Sf`EeQ)0G%Z5>X9Pq1xynB)3YcCe&!|LtjC2`;11BS=RE4UexZ1wjxZz z56?dg_vdQSij52xal-Zrnn+>4k(>jF_0J48pv+{*;$F~XEXF>gT`z&ph0w5Xa=m$( zYI1^f>Y!U7=m`|jv909S`ANk1vn;*zkMln>pr9KBb^`C3?kT*}sFhw zFb3Vn;#{J?RtgVLU`xeaGDWB+zvJh@`^D|xrX$fR=*R3m5j|WlJMSUD-kmq!Y6K@Y zY*Xl#QZg(`Sw!2taW`C-iK_c@vg)&S%^)eqOn?}R&Ci+_)8CiHf=xSY+cqCk72GM; z!`vJFmb5jZYO@&E(>zm*YhC@-lt3%0x)&P0m#JB(P_!Mxkxc5EHtRg1+@<2%BBXTM zEVLwO%kgDNM#fj0_usq#W+cm61M$wy3oA@D>hQNgVkzwOfl$iT;y8BQ8VN(+vt@hV z#b8EzNJgn_*0fwkM@5})A=qpPA8b_q;mrJW0{ascDhzi-`NfUPtu`9SgdFDf$BUC) z2Y}v)@0BsBV3#$99G$;}0ixxAY|aYsUT&i=fJpQ_yRUkY7%@d6c=G%r;w+7l;Jw_< z*?tp3K%-Z|K{fy$h1=0SC$nyqHdLiyR8K68NRn_l;D=4}sIbPt6p`_0iEDQY2W3eZ z+Ma3=5yZz(=T(e3&CGilr3X=nx-vyMWy{lCPZQeB*TahfCVGKwg7J2WRFE0sGmRg0 z93@qmm~8}_4ik4O9^`WH@uODRsw4U@*BDgIAXmo0oG7MBUxwYw1LE0nN#1%`Z$8tR ze%32qBK&$ot8k@$D^>jgBq3?bN+90eKjl%?7{GiUL z+dxIR^d9Yd$qzaoo<+29+PwOzKq89*8Z~+K?j!zE34e7@cKIG5g9~qpm>v@E9!?D$ zrGP_J(w?W*9j5RpW`Tx#m7~^xs+>q@Eg&ghfcC(Hb){eoR%>l~%`E(_Wrufwo5a;> zcMD5^%V}pRnT(=cDDH4H)tx_%O&g87&g$A6>FLbVF3n-hTj;c|BL5*|y3&_Wz}O5< zjuCS#G!$-NO12dJij3qBcLYNJEV>sQ=tdB#a_g}kz)oqRo#{8>M{O!5=+6$`EK$Z?U2%R7L zmqK9QvVV|_<^-zF^>ZBTfJ6v#SN$o^Y*Zjj7ZlyLOr;?S>mt6F?iLK&7MlB_kn@sb zuEMKktov0qFG*I)$y!OPjpTSFEP|cCPdavx48M;BJ<}F%O__z)&HH&Gh)?`W_xnq! zqdf4n0;E&+Hc)tbiI)PYny7pc`R_hk=>;H0%gE+@+@!6OCAar&^G>FEOGAAz_`DLj zw{Uy6r>R_NNS>qk8t>yG4n08YT!1g`R;ZY9SPEJ!$x_Qy9~`Ss$qr&bM(q%OIj*;4 z9xVOqu{F5BDq~IzfdG_QB7Ri$v2*ghX@%c7>1R{=Xx4C)%V9;Ku3!BvHaRNo|C01Ptv>=u&#%Gl4tHjitDU`!0@U?KS=d0=DK1pgMT^ap7&ibh0$sIl zwqdWK*PHN>%d>!7sJ%O~88ie+yhf%RzNUpZPdJoqaOn{Pg!E$k3Y`OEJ`=)E!(GSk z;BtZ~!05D-arH!>^VBd-;sqlT=G^8uUis$%rS@NeO5BotnE!7On-oSx+(G=J5p+z? ztDXL)&cvwUyUvs18ZzN}pNGS$u@62Ia^IIcTQkIgDL~CK+h-Yo>{m9{d3xR2LW!oM zo~x)tUl<@1f0ri1`lpGszh3Uh7k}pSVj%}W(B>V=OJ9VP8K$GBXAPhI47uu>{os!6ZlKcua-ec=Nk- zG$g@u-tX4j{5s4=bn_Rm9phQ-yL1ibe+CwSZ|aZce(G|$z3!a(99(V6uu_0mB~4O@ z$yGR59RSTTypu|mUL~~7H8bd(t`!n>r-6=YTMMVEcR^~Q)~x9G5(EI2R}?yKiab_8 zY`r%vLVGDyg{sVNWv0F67;m7F&G0D}fvgGgT!ZK4llO-Q!rR-Rn-F9Tkc{|J{)SsF zBGq(%32*LziDXZdDD{}vh~?LSB&H>AsHdB>W9CASsb@yR2Dm{PgImj+8*^o8oSGC7 zH`mE(5)W;LSnW0p(}^NumCz%b-#jB$%pgz+l9|&qJ+9^uNDUqv?x+H~8uA`$+IiiJoY$5kz~=ogn#8N@swiIa+EI<~#Z+EYt^@>QkhMlu-;C zM9B#7@9ophVnDk%+&MKnygzQjQ!EB%BKt+hl7W0yZk>luTh~k=T7<^`du!3Yu)(MP zdtc7#T!lg4he@apCt|S)C zC(hG191GsOLA%s4Wv12Dp;R9Q=hfICnB0D=kjFT!$(kPaW?=BsVVAy`^LRk)a_-F0 zVnI|J#wv?5OUg0}0G%vi-qv-0Tt+ev{|(TI=6cp_ny%09Z zYx#(=b9X(4m(FU{+md~wm2^_w7as31oDV8QtIUhp(qCTFcs)7b4?#ElKKcxFC{V1R zrsnEty*s0L%qOZ(mj>F!X7T4nfvzPqx_pQmZtlzedMKh>qh3!qkcohXfN=A$r$;N%uJn197rx;VaPOid_;E7&*q zLnTm;paBpog~-iZUjAW(pRRY8`2>yYS<3McTvh&Od|X^-#_=X-w}EfXGx{+uK5%SX zq6};K)MIzYB&Pv`NMUZU_alm^4Fa+`D?%LCVdc7-0;fhssr^l0RJ%B=n`@2SV#w;$a|!VMTi6E4y#K8qnmutBZ)KU+Y;=)kj& zX!Iz>=>g%LST5S}P(=#`$Jkf)UN79n{<==UMe++Y!AVGWOA1ow1MJ%W-26p{9Aq-7 z#XbG!<)Qq`%lqH^Re;#J(E46_HQluM=tRd5!}LjTJZ zZgGZaV20w7vPusKnY81~>u&MKb;y5n{_lSiS>ZNlc5vLs_8I6~7R(8|v9D~B{L->? zYR3%z7}F*6Uqe@$L(>WTA6nl2)0@8l&~D%+SXKL@UQE~hxTo) zi%-C-Ka7?;3jnX4koSl^^u>X1ssev^dp1k~w9oOrnsFN0AHwcJ({T&=^zy`GSbHa@7RaA#M{2JBFZ z$8)*sYg*_nr^(iBe~OBL!G@F(YJPj~ffrTh-=9A|v~M%VbdU{Q!Y{wBL_f<6FRCg1 z{rh&R)=$^af8V^Q`5*PIPpH%bPV8j$Q<4i>#VsH()(@(fb#FlNGBSY3@4#QXLRlJb z$Zs>!vGqN#Per63=iYN#-w6?mR?J;t&``$joI4prmZ+S(rq3iWesMKr({DZYSbW#K z7Zkrez7(whU1)v$_D=vp8X(^&P z`VPO>p>k<~etofu;-M#)^*~fbjVn57A*`B-$}l6aDU9s`d3*X@#m2PVo4tl3zx+n_ zGt;o8kunwa+F!Yfwq4xPGrMUwJgHVqh~!vvWl(e?lZ#}1fF zLF#grN4kb$cOHmMy5L^iyCvfM^8;9XdOY^Re`0bxMgNe3L}q>_G_tQ=Cbi@u-l|%P zhJwi1tT4w`wc{1~yVM8L!A}o+gRc2$b@XU9LCuqM1|Mku8m!)}`x#7?jt`KDmrM8g z?Pmm$;l(K2O=O+axS`+dBfxW?dg8e7R2TJ233&J)1Nmzj;66+_>-MC+O`U@nQSEM_ zW?^df*RRusfLsbnl)}Mu-L!UdnEnh2cDT7*m9Q^PyXx-idxvnzyhurt02TH8wi8_A zmEu0C#{PJkTb#CQG+L%}wP)#W<}XoO=pm*B?^#a^>ZRey?Tr zlXCp#xcEH+0YN^Ad7sKJhY%8XwFXc4s252&4cQe z_!UXddDz_U&2^%CN&tW1ZtZDQcB;2m!xo2Od@+lxQ{U@$2tfC>8*vSGCMp3Ye-t z%RS4)fS!oRdQR*{jWIiv`AiqAA3IPihG_Kj6In|SJScQJ>=&2@XV62x8_*{=!$;CB z3u1+DqC#~33~Ab@M{W#SmVp|9m!IQLEXY~2mf^nN-8k@^DFuC-a~eAhFTB11*1Ky? zMIgHO6wtgA>Op_p*{X7i@EC}=-C-hE&jO*$8=Jp1D^m1KWGh)!m%;EUp!LKiPmG22 z0VyW3why3NQzm9G6AIj3X7xmX464Y`o>gc#s6~6@mxA`?@UdAkkgcX&yB>s8HKs(c z=~R4d;WVWvd7UKvD}zhar0w=eW#jwLJ)nSN6aIm}esop#-_)%@&uwh?zT|92h2m(_ zkK=CqbUDf!2^NWBH+AC!#isp0P2AeZ6Z5autsE{-({77ACam*Dr8(iS$7~%yDcx-V zF;Fq6a$w$@+bSQ&6Nmy4=x26bh!r*)!GbSWu}2~0x$`aJjkiS)7Lz0zi?P#G z99tZDo&m9BvXKP3FG{tWNy=X56}%K>L5>46jt>DPc6+fSrEP4Js8KVg6q9^2!&aD2D876j=2R zb7PMI5ZRCTlux?)9U_6;-Lgj)z9jh}#$zIh2~}{50e&6!2dw)iO|&l{c2TlZF>QYg zqJEOAfj`JrjpW$Ln&*2<$sn!{pugM>nBdPMX8J@MNcoHVDME7AzC3!!h+%g74<`M z*H3*fHYQ8IQcVJV0^xi56HD;00ncJ?L|=oAOz!G$ zZH#WgCt^#BBQS=8{>%`FUt>uNXoK1>Y`FF*l2;0+MAWV)+_52-a|n_u>+m5 z6vr+OBOM^IoX~)QCNIUmZ<8@5z$b~QH?)`hDi|8aHFxk9Q~ zGlP5GE1!*vlX08*My}>EWQA7(qufIrTvqWYUr|8gR~HG{acT#vhC+@9XBGgGT!(4# zKy07{Q*s{=116F1#1+v2XpGn~ED7r}9g41q>BwQe!a4hJtxrBCZ)nfO_uok>&%NPiP#xSq4(abYwGEI&~!P5{P7R zS8fpqHUV;zE63j|nMDr!-zpg^1fgb@#G+AJZ%h1tG53~nQEq+THz6S*CnSU1&&v|R?@O1WU!T9xU72) z_WK$AWxlPu{hBwk2lVq#dB1nixxXW`4i1VdEF*lvnSVuQ$NWQppJ$GLcsN+7%-l)i z&OLs)e%dP~R9cW)qcko%JOO>XG#yr8(h17$?*Mrdg-cICvLXlv4GPWaT)w{Hfsz5rEbG)eK9q1FWF&3oIx&vN` zcf#wL(uh(t@^U}R&c1uVEU7uhyL(VZIx);UxvURV&=whlvCQ^^DcUTVkHte3u^~~ckC;o* z!osZ8-tZPg-|Z`yy^n9P9E5vqeggD~-V`b!{8DF1gk;yzM3=^gQ!2)ntgEQ|8D)w7 zm}gbmEP5G}hTPoogSI$NG(NZJaXL(P6B4^NciAf4Z%o)`LCAvla_Ot9!^yUJ9A_Ry zC^yBYr$5+r-U#^qRLz`!P?WTnO#f=O?V#9;!i6kt%(Y4AeJWa*;ONnTCP9UmhwOr# zQ8~&X=`gX}Emiic`Hlrbk#cpUl3?be3ZDU&jJ##j zXB1MKpzOPgliN12ARu}8HAn6CxM@mBc8Bi9i_eo##vG~S(G*9XHTMk)QSg~ zYmH$m-dis#-@ar@?LaGI?&Dxbe2t!0aWbS(Ry>H`P$b~=o>JqoL#-KT?m+Sf(=x>? z(`Gk~9%PJkiL*M1oAu%&ABc0^qcwJaEN9ZCOM}w=Sr0?uBz)i^zyc-Dec#dQHl+4p zfvKL0rUvrI{YL8FQClt0fNkH~buQIlFk(p_0$=Q<*VusATxS zhwI*r_(=!3uFB~Z16 zt9l+CWP;fhu9Ap(*llVHA(qAGo*yO}6IYSgm!**?d#h3Zykj{+a5NFJoG7+^_`=ed zLcremD=dR?UIAQjCZbk+FC09+BE9q_01ZToft*qSvA07#%s_79*CPl@0lG^WBZc}j z41j$A0k5PJH12q{jva)-OXOG!~@a*yL}+`~@&=rwWTQ?ooImJK!{)hvN3&Ic*S ziigm~%@Uosj&Tj*VWIL(`~(CLZqzJxuzwg?HNAyMLeflOYP`4PA|KXZV25dsq}`0=h8*5dCuXiiBPc@0Vk2ZV zWfwGe`tenFpM3+9c};BDw1xDc{^cu*6F3y%JPAT+j#V zd32RT3GC$aTFI*}y6Pvsd+t*?4z;P%7%)Rcb;B%Cpve3wx)Gq}#hNxR__HBlt} z^?nlHBRwIuky3OlL}?mYxj}o-EY{4R`IR8>+jhYb9M*RW+&{!4W@hQugW(VfETR&p3@rq~=Xw_d};rT-K7l*GJ$!Ot?PLpx7ST-n#$U?d%mZlvQ&kU&ym{P|jW zY>(4VUq_AUT&x1xr!%qKjU*~@wX4#`)OulAh+RpET5NwpmSx?pVIj^NEaKa6MUPQ8 zo1P7F6tfFDk@*N^5oJ%WoX?;eF%lK>i8XSausdoem7EzZb`0gM%n2UMQSDjWOH%uk zxq*B`0_7aRHNc@ZmQndITouC`Avms7P;(p{x4&7tWb)2Ih_j|QHNv$tqp~O!mo?si zro6-SPITe(jnJi=e9XDOK|E*EDb0+Z`DPfllU3$`x;PGRj5}j4hCDZ}R4u+tQe1Sz zG;Z?a=hw1z!I~Vl8OY}0*(slT0`$8}q?&zw{pmjZ?XfP7a+zvft3#GTTx@lj{>G<> zN;X1=b}6I|h3!igT|#|9(Jkt3fq+JVKAjCJTvZyduLYx%a@gDTFJSBz=$zP@XjolI z+)ZGN9bm*6)DK4~#bkus8%hJ9z1p^>L)Tl4&XPhGJ-I0lG83%rRlkzH9#w>E+o22d zjBpO^WZ;U@$Byb*;*2X8#HBzi;^OLz+a+Dk)vh^Tj3Qm3btiHAHN=x?b0Bt`fSYG%K{9FhK`VbUQL@683DY+3 za4+*<4o+u%KUu6;!VIel0qgVIo18p3QDoLKT~KhBslMXXE`>I6OBZ^lorlX}R3w|_ z0YfD9@wR%7MrGz6tXS{!c;%ZOx#bFdL_kivTv|$LoW`zeZ>km9j4?Vhx*B=B;a#XW z|J{n91oS2$>!=E5HpM|ATqQy%QkzOv*9aXOb!B4!wzio z5l+bh4iNvLXCNRoSF`kb={TQ0raV@Sv$I{K<8+;_hcmWKH997ACVJFy_Nae>4F0TecSwiLh6FMQ-?re91E06vA zCwP-r(#$?xno%NnFL-gm7K|8pW8|WW?}@F#@lr{ZfGlKHLX*=Q(T#$`j~vXCv;r@M z-1*S@?150ea-dF_>-WFV3f)+l_?kQp-Odn0be$Tu=*h1Jo`GK?G>@u_|5wSh(gv3P znBL`@L^Uiim%h}ZA(gW{?paVjKFkRCQIvi90t}kj zj`=>*2D{)=ZC6O8b7$C(`+;^kG5^;GyF0hgdg4n*UmSG%XV~3bd(F03-Mkt0H43c; z!t(MQ760lLHYk1pSMu3;2#y{{R0m2w1Zfxygz}?UV*f%6adG=MI3ou$ek zoj!n%AN`!nxX%R$@__Siz^%K8tqT%Y0}AziL99oMZnp-<7N?m%4q2C~UCj3A1byBX zpyxLJ2glss3~5_H$1#-jH->oepY-&vb}($!t)#^5z23R<%^BF;jI?;`D*fJF>@WOO z@pi(uzwtL?^t@{E3m?2mnvN8skc_L@*@!Gdn)I9zE8_J84p{ZdW13{`AHbLIlKpGp zJ9w=zv~#;^Y1Kq$Jf3bkA-HZc@ccPDhJm{R@7#q4X*vx0LhqqDlcU=3`QNblO`pFk zgycsI=60-^zkQxF=>L0;@zaZC@;?^peL=gjR1qDjyH01Dt8U=5Q3(gtv3chpYaIkD zz!UfqbR5D*JGl}{&5fJ}pTe_}-~l1Gh(y+s5C(qENv8*Vl!60mP550*3P1ASB&?o# zu9w0~pIuKmC^mtI-@NWgGY;Hfa7w;-P-rr$=M^{j(P$sIvFFLye3~|4tu%f8rU$j4WA2MB!2*?F#bYRI8#~p-=jh+P{RXt zKeTl_-5a*r`Sv+q9uwzE$#vp87Q^{gdS0icsNV7YCVZ~9pYnjct@ii~Si3ZU{_GS) z&p3Ty%~A&*n6he4j@O&jo5IIEUS~$Ars4lz(?S*~yn2(Sbe&{Lp~T1L%5yM@`ErSJ z=TGgi>#+&#ydEZbbFQ4iww{C+pii zlG^F>Qyau0@z-sk@m!7ZOLI5e)Au+C=E;uaB=;R=3-I$6PC2aD&e9rSd&rODS8oa$ zWtUDD)Rx-x)rD>5_UQ<-V{8GGW(ArS_Q7yO9R#}NfuthkMv&u98rc9k`W*5T)EF4Y z95qYKeAM7mF#b({uXznu&=gikZi+Ys50LUSUwicIWLMDwWLxPx|0;PDvq05SS%eLJ zVryMbm|$>6HFsHfX#zB`L{>VSfkwW{N()fdOmKpVu!O>qH`Xf6zvZ8TudlyrJdC?E z>y~r*rJ2`C{Q?*6AFobO4o#Jc6JU=^8@y+WVfxL`z9w)6#MAoj$E^D+Vz=t*Ar}sc z32}h^gV$mRsS8qUPYS?=>=SB!tiYWqa}3(xhCvRlpN)gk@3lMcFN6z;j-OgGGU^lm~gOLVygk0Q&a{9tA)BslS!fhEz_>lk0-qtH?=qWg~BxU8Gulc=rTo-WN&p6uad?{=gHUKZ&pKh)J@ z>7c#j;r(4X#8S#Z{NB6qeTa9?_eb|~Ew|M-Mqt0UCr?4*s!U9jSoJ&yX1bZ0FGs-+I7_7#$iIaw7R0PNRpP zpbqCK;vfiV(biw|vdvR zJ>!e7z2EOyR~YMzP2OH^If|h+elV#QdjzA^$f`p_)^Fc{|9t#IK01i?T3=I4bZuCj zN7pO#MG0-Zk5{km-V}P7erQu4_cU+Cgcy<&4n<}V!qLb{qs)1`a*g1LkC!uMI@N1N z3K0#6aw#XO0gp`mcG3drZYp!Wp1RQ_;p!esi^-18AlkET+f@%U8(6L(p%ExE;km=#UB`pS}_;G;v(&O-T~r2?2oTTRyN->a6_9MCSwSLxe!&+-Zs^qKo@ ze`Zb@L3IH^UG7JA@e6G_SR+Nb9b(q!0-36wNgP{x)u<5(F4L8p2k&yfH)@Yi;D(bu zS058Mef`@1f8Rh*9zQvTF^PVs*Z7@&*o5{P(qVsrm}@-mVvAY=ltu9HKQxa>?#uMWx2{Yx4CMWeq6c=kdIdG}7_D8(g2C!AYVlBbC>azz?Ub-ta=M;jL z^hQUco-J3XG<~K_M|?dpC{w1rg2Ipm;fyZ+Ub}TmNzOu@2AVHa^!-miHtxez$JO$+%){IH$`U82V5_eXi3<>~jcsirw~XO3 zg1tlMTf%DKrd-$!fm&C91PLL3&>gg3S+3(@F66*@LSSIc-Oxtjtc^ZC-eiWV6PZ?L zFyD1c7*C%jAJygEFQ&yl*Z*$*-KjftX{1GkS#zDhSeMzAbZtCQAc0;Lj^ddxE^-9| zfkKr(dFEF#jxk@YOom4!#s)-Ugm1$YnvdPz!5UT&Q<{z?L79L*kd9gL;tv|my* zBKI?Pu^?Uodc8$+Pc-uw`9)`(V^;cf1tsq(bdHjnJ8Jkfv4NjIDdw3QMv zDHp@fXV+NNzyw*mAP~1h(r8TjH};v-ddn-b^cH!hB5eI$j3m0MO$>bJr7oS~F9cehe1lkvgc+>S5BTH!tjy5*pqWfYp87hR#i1-Ip1b#;CmAjE;5O)?T7h z?WnNkak{tSGVMUyt_j;8d7g0Z<4x#_@u(jW95#D!yy>tllf_sh(k~T(^hVSCnlxOz zaC73>JFBf3f|{ja{as~j=#{5!$D|a;&4^bSnph5R$;Rl?Ac6XyLw(ZeP{Ab5eKC(8W+~h8iL{m9 zSIx!_7%Ma^fWwHBO@MuU6i7zaP^CuaM2&!>aYd& zUYCc4MmT<}(~w&mHqpeP?mic055p6fVyr1CsW)pX3aj4yU$JV%l!S?GQPa;MgelWR z6B}LUpj(gP?_R}&^$=+&Wg7( zm*4CfRO;cOWd>f*m{*r#CZnE;fIyP+xL`vrSpr*(KMFo-_sQiSVGt$w-Qp%*f?0?3@9mjgm%OBKx*G0uAHo_LlYCQHTM2yYpi&M zl(fKWIGFaT*D}u3mlb`zTcQ4;ss*}z!0VVO`lqj)#EY1+sq)myAv90 z(qR^_Zs1hFMNW+?SP4AGbctMaa4#$SJ)mDDJZ^-xe3B(ZpSs-AVe6N!a%jRTwR2;j z#y=}p>?sj2K&A~vmXt+Cdl)-@8Yt53avQy$^*}vH)Aps+OP^)ue|^v+bNOp0$3;8qR46W-T#GM@wVI3GYTL+~55pTNtmkxRtABLz;%IQh=C z$&M|K_m#x!T>234;Lw2*)eT^ygeAt6AYX(aMfVZLmHY}m6>OJoaVj|!C5hpiB)7L( zh17aV@r-{)YU1TuazQfH0n)9=?#8kY=?8j8eZ{LW_}`ILAq4RCVqpeE$;d&|rJ3#d zb{G?q0G`waJho)LHB97#T=ggR&gPy(cwQP;d}Mso7ILnl(K(_E@oFjzrM6Tb}0=&c$@}gfgJj|9E_b#}%;^|FO~! z4f&#>E1{ru$|t@9RbQEvJoXLLSEg(Rw;);mFNhaaUuky#zVilI%}_d96L@2mynvT+ z@ogNIE};bFU^v!x#X;uQ646hV6wI^6uz;1@j3!1!*wSs>ZnXa}9mvT#mR6EMyTb6H=R)TL z9q(m-kocU=oEM0)NxCN(Ub$?sbA^h(S3|^UW#IBgtzMNJGhXyT+e2*D{Uy*EtR zA)RsQHbC4>FX}>(LRzh1YR5OgYNB`Q$s-%&%iF34H@X`;hy*=)67W};1?^SMCovwH z#m1Mvtk5ivJ+zw%q_noBkSW%ytg_-n1HH}zF=C0k4+7S4rSS1o@undEBmZlyZ?a)aY)=4`F@ zpiZ^TG+``TAHBA!Z=O9AI&EAXrYka5rt{L-5zBp%db<7`d!R_Z-EG3b#pQUti{+s9 z3PoP&4o5Pm&}*3}#RC3bq>gzk3~IRX#TzEE{S0mQXKq}lv#`}0iV3vVu7@wFonjqQ zQ?Em0(GMFd{V?t#WGhEIBGretBWFtmri-O)8ue8FAqHPqo0| zQ`2$i;_3Z-=zjSV^;K~ts`gft9Jw3ESlAOf{(oiPP z{k898ujBH*oa=fMJpR8~JfSasET7!0)vlol`S}4T#*dv|7VBsm!?DRAZlfCs%3RT* z-w5#9Nk5n)kdhNPuUtFIdKKa*?w7QEa6#5P*bNiG=Xv@=e&fQN_7I0Vzqqi;B1wS$ zkR%*7;)K_Ek{G(A?ZONjGu*X7&8JBc+QTU3>r(ayb4BE~;|Y%UR+lcB=)N3=;q6y~ z746sd;;Cn}hK3Lg4A*?QymQ23?QTz7j7Wbnc{=QgJD0^9bg8zgnvOecPr~MpX1-t2 zgI^Oj^TwDP^jnxV$492hbFa`e<5z#16o>QnHO28*ZC#mmq6RKew2Fr{mQNx~S{5(S zsFTu1wTGX&%R@fqB2wAE?f?ZvYGP|-H*G977M)bf6Vm3T>8$1J3E zgkZL1hQS&e6fT~RS-`3UN8F~gGzRui=SHexd?@wPHaGrZ z4OmZNB}IbkCjqh8qGyAu1J={tg!cddo@~88DWR%w`fAIe%*jnN!xk~&IK`QcexF9?_ueoAaP+b%x|cdR3Dfs3}NRdyOV8< zn&%KhotG)+xa}C-X(?YlMHni?f+^D~8o{KF4}R1r@Lk+^*1=)mtF6_{VxG))3}wY~ zeq*>=?x}2onTVms;z4ltjl}X3d3Df(v_8wkdFCYwLhB|odEieR`qlo)p7{VRQ$`~` z)e(ZFgqIBl{*K@R(a;`FX$pqIY+V_S))d!RKD{E#xeTBah11=|jKBB_T@4t_e>v1b zP0&3KXRjAlw&m>ALDD^rLq_CCbuK9knFjd+$%i9;7ap8i53hJ4^(psijKeO&fJhdI z&_G~owEqlCao8oz%RH*ZVq{-u{eGVrz2d{S=gAlTq;B!~*mI$onwrA4V|WQqkxZPx z-y|gPY_jPaP2Wy`)$e39DC?q`Z7_WY<**5sV&K%VxOWmASU<1esG7sQTfAfV0meEm0}a^e)5pJHK#<2;*4 zW#A1gfd~YiRs;I%;Xf#H!Kue*=MkXKuGB}wKVUQ%(kS};_J7i6$%3oNNDrm)FUdf( zU2K|b^EYn!=bt_jsI*qxm7m=ez|1LgBhsQJ19H1U2Jp!2>fii;+Q3T`CLf!U_Kl7z zLKVDW+xb6{UpVbo0y=U1NfK6By5Aqq`!A38-+dGvy83~r8Sd{MVXS+9@d(SJDMS=q z-i5rS@^AhM_Se}P(t8gs1f;jnR%vhv|G?qi|BrFFC<~T8p~cbdLdR9rVOLJWn0vsJ z`P$Rjyhj#zGWT?T^DjHBJ=&FHvgtuS{%C_@_D3`iOUsT99)2p-TK^AdIY@zS!2->~ z_QJ!<|8SoQp*TPDg}48|%K~I@Kh&U6sV01VHKAuR74D***fxLDWa=x6-mAahc$Lpg zl@+8azaBjV29j6>(KSR@H~w5Pe;d&I{FcPp+PO6uEBXCu>$!~2`&$QMKv?p&EV}hB z>dUA3Z5>U}R(IT$n;If3F!>0AUPZ)PDS4@>Lq%_-sDxKs_)88F#br+|bg(hPI04)UGQOTqy3#uxYby!j^n#g^DK=thR@AJZcCOUGdiZ{r(JHe@D+;Jt=<0xbFa2tNSvD(d+ zyMEA9KOI;LK@PzS9NQBsHiMz5gJ`QxN_^w55RGk~LPMwHmIv^C+nASmuCfb$J>_PV?dLX?G*1twy*_o%v8{4&RWuxh}}Fm|hEJM(&R^TP{38TqZ$+5%;w? zlz`LY`@!xh?Ns?$!Cv`oFLpck_#yLWF;tGhgaYuO_--1X(G0-bxzPPFBZ&DO&+zQADomlJ>;v^z3+Z z@?bbet*5WQe;v44OHnzE;2=~q>1ZD1j*8>-I@_hq0kQO}if}knNj~M|=E(`j#VR&v z4y>%(``+JfZ*RXA%2ij`odgrdq{cgCQ$%BX8anS_pT^6A;8 zR|4Z}@jAPTrTx**MYwDw^!em5mFNJs>5KrWJ zyxBK#H+{FUV{p|QM2d!t|9r6)BQV@`-4nn)E~oDqF=KxZMtzWGN8`Fy)Se5zuYHue zr;E{TqcRIt23)HyCX2OxyWMAe$?pJ8={Vg76t~*7pQw8@(U}wm0wZRUdbFomF031a z`Jw#pcrhUU1X2=@tuRxwoE|#Y9T7S+N_-9nkyiQgMZ@F{N41vCJ~%XHKm`k0U0rXV zA7?2fJp(N~FG<2!`%v(@6vXs?^$^DQ{R+ZX&36~O*zDXyPPW8vF*`Xj?A~psn$Jgg zp1xrI$IO@%YeWIBKFp*;)#^%ADE<$?j9Kio<~=S1#inkC|H@kJq5*xpA#BL}x-pX2 zYDYF5=U7Rk8Bt?s6A$L!9I2bro)$wNg2e*(K!01ayphxKy7G8(sX*t=2n#bW<5L5U zmGZ(KE{w>U!^IvO%cd-nMD9c+Dw%Jet5sX5r|lT`L3Fh#|CCGMx(^OPwUAKJfgcev zLSzbAujry3!|9{`{&(@gb<$`-`R~Ry>>kZ`o@N`15FUMAQOns>U$E{fO;i-K;$SzR zwFaUf0i6fAZZpr0>yGguUQ3Lt1LWREd^F9iFYsDFU%M;$K=ZJ#I0jw0Sv7CxA2Z-C z5?RY_!{%;`o~fG@V@d~vu&ah4!;Gd8B?+d}YnlT82m;H?j>YKmxPitoi^K!r0B&O` z!G9T3Q?n^(HX5c{SF}DwQo?BEZzXL{60B}X;IuEbmGO;bL*GyI^w-B(%bsgjiD$l` z>$pTkjEz3hE=3-~Y-e+fv6U_vYPmjE>I8n^RpQH68jW;4_6FCB{f|a5M{pavR8t(@ zT=G?*5Q!pjyXmQyeHC+ceSfarrF*=#oAkh`vE7D@QwE`)^<90*tmRMIKpo8py%)x7vse5)iy{@F{zn=;D7BD1K; zjq0FmG`m>k_$e?v{35&%@^u>{E6q!JX|6Pqwqp0=y{$|a*#+ClQ1Pn%YHNvv#|0T_} zy`FKq((plhfMar0(z35cunTq+-uHilx~Zick!<>IS~tRhN%ffWe>15@ojlNQtm}$H zP#lXDZ_8xPQpe&m2U1y#7Gr$De$sxNqHvYc>T5bjg~=U5KP9q#;sMdo<$E5{#WCrW6XF4T4NN5bdVHa|#Vt-OPb$4~|?b|)ox-CT-55nAhrPy#sRIgl>t)$L+Q z&aEnqCpwsd9e*9X^UD#S$vLS>AY^FZWutD&23ewXWGZ#tAKijgg%>WlTW>`xuX)Fz zyMa`1&L{oFuYb>UO*(|Evzuoib8o?~?y8Gul>v9*o)?JLKvDd(=;18lN9ZxoST1_E zS8=7D9J+W-z#&lA`C4$s8&jL?I>Ld1)OQryQv_ngdJRLH{CYo^~tQN zu_9Jy||Qzrii>*&&?sTc+~)(D70A=OOR7t$tX8L-dawMveZ zNV2a|uthvJwxuz_-U4>$^2zDS*$~P+erCJ6Z|=NgoP-lKE%jV&#|gtWod>D^a4}u= zcA)>ptu3N&6qEAPmd&_p5y%T3cGSb;C7m(+VnRR057m+;-@*mYwsb;j3?t3{r+?GenpbDNy#`XA@ja6k;a=;FsyV)nrLl1jcy=MeJ9Zv@wDAb1MmCevu+#PmmV7Td}R{M zUf)&iMyS3~!l$rXzdSrPH%&hN&H4?vCOw0hxIfyx4Ps%3IdkmNM!H}0jLi5@PIsP} z%xL&OTe`d(=8M7oEPZj>;;ta=uVh#!STq_^uswXk(l`g2TMRueDTn;g1+^AoHY$~97E~+aKQ{sQ%R;rsdWRd?Iw`LC}kd=;$ z9ca7)hoGQcMKIEIKD=VRFMz9nl}IENLG_)Aclm*sa;(CQs7BXi%z@5`l7M}YtP$C- zvA3~ZIG3cXKfL%BCB3z>fx)~_XgmG#^q+20SH0D8)qQpfva&%YoV>m zvC7al6vyl4x&}`3)jH#`=!2M;7@!wzcq`JNR&HR${|gO>Y=4kPYi>o$aon-;UE@K)jEz*BIg?BE`_y(3m7UhZU{r`95RPr}++5~5sS}Ha8zPa~v)Rb>_ zuaHK8v~)JTaBzRhjd!1HpvBFN#Q)nJ;@9Pd8=B#jInc$(^f!1_Js`6d6|&&gj_?;P zIRyUUtrs300%C<5TspUw)xRcE((m~0c6p;?S^|lOazS(MbjntQ$!AQwrswq)n3Q^l zles!v=oQOGx~~~;qs92gcVGS6=;dF3`g~(X#mWxd0V3UZBogMQYoXEFmT*FGO*P#Y z-!rV~6Gk6t6KCw17=xV~$^m)H&|Dt2IL8Mur$C0xHSy=Yt9IVpIBSy|lcx1}UQJ*u zVi6rWPa0JHK-4gki+qs+Sv=>et(5heoA}f{^l5+XYff43&xf#*8<%eKKz2Xco=R&F3v>Fk>(n8 zcCehjVwcCtNBMlFt&^i<8D!YpSZU=|)~->pekMW2c`l^R;9X~fe~X)?dY&Rl;w|9p z9@)k6ym+h5BF9a!4X>MULi9=DCA3a#B^mffU$e$*IMt29wR-iQ3b>0xO|Eei9pK{i zAbepvm};lj3#hJpiHZa-xO6v;rs^!l7I_{$=uJH#~U~K7lR2{b*4DTSEPlIyjL${wh)dgh_dv9IA zn#?(hZ^yzkVVPR{$mO=VK6={3S@Q%vYI=XHGZl^E@q!Zw8F3^CVkUNAkA!ia$I|({ z#IYW&YK@;5Y*~4lW4imZo9(HJ^WtY9z_#@FF3%fX84P^c+j%p~#qnTr>a<1f_+V>u>e&yE!~aG^ zxBJQ}t#&7XI3C^=zkuq9#FEUaIRw`H@Ho|ykjz&|&pzFsxfqV7qbQFn2lKzN%p>iY zKUt>MD_RI#uFgeXId*CL2xD_1?(4OQDZ)Q~Y&zeWV%~%QmHJLy zOzCGdMi#>SZi_TSsvaCg=0l!0H|DSht`*R*pDSqTV_W$u<4|CU%1)WU%XM6Dt7H>S z&4O=vy67qzUvNzLm!hzd#0E^D=h&$zqKzz#e`ldt&v^WaM%1gi7rs;MZ>V}wFx51PD z;&2`D!BK5+b0$AfKUfbXyyV(AZr$KbSdmdSShrC6^M^*{ee8rH+6;`v{6Fbsw4nZ| zH<*}?bc>w3m&awZP8qnrbP)bfEn&P>+Y_#sNXb8JM{<3V`%q6%$CiY2^`My3-T35R z6tmt&OQ#ZJsD{?xG-SVfqTyS$Zeh0&AFW;URfKn?>nfUcmGWB(R7Pr`D)~hn3&cMD zzX~D$W_BH8CEl;Np#zGg`m{BdqUn9o@yv_jiGkV9fZRw|@Gty;oar@_jYa5iu{v4r zQnJ=(&-2>n4$5|#{U06zV`#a6DydL8dkTH`n^2|DL{5?@PV!ds`Uv?e0KL31q8h;a zb0F@L5cc2?Ex_MsNzk7((z($WixWSjv333P8|L<0ts9#@y?Y^wzrix)lj!!PFcdCC z|INs#J9TMhV-liVP>wM{WXAJq=}I92$08wD*HkC(!fGxnY2bKSP zntyu&AA2b1bB2N+92`4M1PcU6AN6>VH^DR_8;cfhQB=CfA>-UpP5?$&Li><{3D!K^e+(ozYFK3 zdy7#RSbB18q{=a8RfxPu_U3j)+d0CS(-!*ll=8f_LiXX;r?++9_R8NOef&r={g#c* zUf{KNoY^08@*jVA6~y_vFPzis!!6dB*N+NhUO%yU+sWNlagt(c<(5dXgcRlnC2C7Y zwJ8Vv$V88Q-PP*-sZP`Ts|P1e`(xEVYoGrS-23rZpxs(6`SZYfoQB{Y2QUlYnP&Vx z1U(miSniZldm%%n!zjA^!GlnrF#m$p^*6MM`cwK>%OpJRJ9c=aC$B0*5@l)0A^F8U||AafsW1>FSF+P@6B~wtqA%fWjBTWtVJ+<(^w?`@ay)+Iz`7-_eZ9yss#zhr$+_J z<(~b=qw$0mxn78~p-)md75q%|sn4&K14sG%m4|s2`P!9zP|)fHhSDLU+?N|Z^1`2m zU$~-fg^057c*k&P!6Susa7&8No!Tf&D^h^3EQMH#lAfyWN1rTko%5M_CakjtIUKJc zA|2O8z5?y3iBVga-Ea+&;aAZhKU1;ZRUCt5P}0ZES+@_4Ia6+%_bKlh`dg@g9ENp1 z+;`X6R7;L_m&9R$15+;Z;YrU{{V$W`0$WO%%eLWg^4glER*Biw=btUs`((LF!F-WM za53DeR}4oi;o177W)O~;AnZ}a3#89`CMyFUfk9er6ckdKwT6;Ue{{OFDyxhYvA23Z z?fHgwfkr{yv!SxQgWZ0`1dr2F&?8x>4}yfG!g;Fa@HX8*<62Urd&3Ps3+Rgyz_6=_ z_6CW~4TNUv@O&hU{&d2k8YH`C1k12c4U+qPMXvmgDI=5dG+zheRV{9IaK+(# zs7CvhCwN8pP`}2WVM+k)i$MN;z8(pQ-Xgtu9YG*uhXMAAx}qR}rL^G+|BUx~py`dN z@{G zj!ISphk9WH=+R^%b6<=%}oCHu%YUDqp9%Ovin@HO+zu_PkpF7^H$pbfynC z3C`T!%f<2BrKJSX4esxk$1dFKlw45mSOoUgX8rk@4G=ua#Yqq3S=oNZ<8YeW&8v>2d*Vuzf+gP*_Z3O#sa9IP$~MO z;!e)-@6cPTp?4*l1RRhnLwo*D@ji;2=tswy@28yKz-}j5EtB%muqXZsdQxi{kN0`e zctO3WB9$?8IUgJG&~94&4bynHgh4z510nV zTW2#KO$}0{ESf&*zZMQEG4WwSvR{c>I$R0$>=RD4_o?q{C;$mz=}ZXo+ui&Dh1 zW*n_8+q=>j1R1ey6-A*Xu9b)6b6v>D1H|d>VQ@`izA?;f>U(*A${4-hBa3W2m`n$2oyQCQ@ z-(i5-K{-?SAXsL`?X+GsozaGYF|?#P5c;5vhhl8u??t1CkxBO7N>dKBD`jo*TJ%@ic`RlE^#`MQ(2y7x1!DF#S3krqQY`bxX*sO@_$^^lsy z&LRo)!|cSY>MeG3_In3jPN-$+-XC01+vAyYQ&=%ykFYT<{j_GdZ_n^kuR-9oASd#y z&8-E9Iy!gS970K3mh()ap&~Z@ZK+RMC2u3=rO=8b`hr85#ss)#X{3dEm(f=Tdr3w_ zv=7rb4&54^;#TY$C%SMls?m_HJbhPOW}5=69r{2GMLDBJZ;^N)fn7r0qAh~ZH~r54 zVedVIqFmQ?U4rBw2!enhK}D2|WDr3RRDy_-b7*qTA~}O31JGp2N)wx$Gbl|)pvggK z$w@$H!g<><#$030yJ@M$>?Dqv_V4U z+cMY*0epc0OZz3Od2jK8jl`bU14aC%0A#JKfja42CInOex+TQr$Yl1k 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�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≪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

C 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%0A+`cOj3+DX``xJ*U?PkNn@E@nq3**Q zMz|n*>BaIZRd>oCkj*Q7Vq*0*gK~>&|A3mFvQ_#*6pW~7)H<58#(;h;ds=T9>FX^22#EDF_g=ho_f1pB&{^FsWUmq%DDMpcmOXH%K5OI6NvoHBa@dFew z3E!qQvho~%KaPBr(zrQRBWdW0*U=%9XgdHy4rd?a;P|mdrYFC8BECZ6pQc+*cVB|! zT-Cp*feLtLLBZ^IXuwkBN(SYVAD~~JuiI7L>kjiHYGy>mR5O^B{7@2;0Jr7FGWI06 z>gz?(qmC~}JFHl4;BR$bdI@@IyU&g=kPG(jQ7n{TMhjA2d~S>v8ZWDR`t}?0CNric zbWWfX?*{aqydZR5qVjcktI)iF)T>Z3}r!!66? zLO$MovOSc2AJa29!Hn?qIaPzWtrTVpr*U_pbJR2;k}fYy?SuW7=lXE0uyvG3R{v#5 zR%!n;;YmYUTcWwmm&Y^3oFz-b=57W(+L5rV@WLexWhckSj9L|ih1<2?p47dv8Haq6 z*S}gKf$q2AiN+n%W;JX}KSy?4Mh%r^Uo#&g7(c=By`K>ANq9#}o}$iKL1}k_0iPAE zCy`^_U5sJY^{^JS3gql3jiWVJYa2X{@%oHN{{R5Rt@Oo?WWJYt5WET&g8&O=NT4CH ze-B%*bMP`kwA`3G67_;lCVYpbQv5Oyj2oIvcOKgE_&vp|zjCuvvz9F{z(c=|5 z1?R(45#6kZvUu34(T~P;N_h>opA(k2G{G|i!-dEcR+)zMy=9)Vv-w~`s1^wklrg-g z3d!f(g1?VGovnQgP^=d9@dmM`cJ@B(4_sYrYS-x;PKrQLc4eL~ZN7j-l->Di@`o&? z8T46hx$oQ+LrZ64V`WviHzQRo;jb#~r-myzm@4Fwr0@xxOnR)yT7CkA=x)*0`%$)1 zqnFp|KO&-L;#I_sz!7*>c6Sa`Nf=c+A$$;qP0 zhrb^q02POQ-wqPea=zPWQYuWXfVR-rG?B@nTqP!xxgx`Rx*Cdr@rd*Y2Z z{4z77v7`lT7pf1}V>5z0shytk-@k!=mpkH{`hCgF`&qfirS~bN?`rAPl8p+8K3YAI z1@*5rGKwz=p(Qpjw@s>i(Zf#?&t^*b7yRR{G34dtt+*_|mPuT_&-P(td0gr)69SpH zxS5Hhr5Gw=p@RCn^X}Z!F*5()cB&lE)u+J(-_e8IwhUd{i)e~Q+CdWP>hq;LHE3fB zWQEN~5S-V3%jwxk=<^5sk^%2AsNb7j8u&QL^1!_zSw-d>+5 z%iK$9S6}#)w0dlj92rJ_^#BbH3>A_D?!IY~ZVnN9P5tIhCIlIJ9q=bj2aKmw+U$Nm zW{$%8`5}3rCjfPwkh1eLWo*?rn?0`0R0ZQ|RKjZC<%TW!J}M10 zENxQFcS^!18Fl~04|amXjneW~Tz&5Iyo(b&wDWt%m5d&jeKP{Hu> zH>bElXA!$g3jmg{BkHeh{mStNa6*#wFJ{wS9N%pr)E{n!nUQ#>Tf)k3wn^v1Kkcs$ zU;Uo-5!#qyduPQr4-hiY9>A$}ZX~k*pV#RBtl41$6@(uA_kz&>5e*1}99@f``gO%n zp=8sqZUvxaej_5K_mTKUxfP}hCT-gJhfuFPqC$9_Mh;NNu>~}thwvDG7JR@N;HJ^i zvJIFHPlcw#`-x;UuNK-P@O%XdkrEmK2|avoqE&PhCye*O(d1hXs59T~{2RN6sBZX_ zZrk#eEdM09pq>4@veid@-_!iH{(bX%9) zex-!IsU#*NRJ&>o$=G37Zvm-k9^+`w_pjaq9^L5^#=zga4Cfiw4>kzs@O}SQ0+DIN zMquY-OFcHcZiwCLqv*G!GWYzyAdPm)4#*_VzkOSFC-_Ni60A{L8oh+^?+JYgzLFUU zNMDqQ+oX%lIptP0Awggfu3RBr{7R4mU za$3*wuYb(?NG5m3aH{6?B01YMH4OmqE#(jpYESMxr_W28Jm7B`MR1{3P`ipJO0FM6JP0q8e{)dA8kPte#DN-Yt99aqyA^;*>kmNK{taDyLl)lmD=3bqh{X*NL2q5i? zP41kCWl12950rdl1@qalbUy+7UuYBlKcXD5kL7m7(%%Q99AkiYwI2{U?qsQ&`5X(< zBMQcQpWAY7TDDQRf1=~%RsFU#Ndx|R%Bvq`{oo5!2O#yVi_bwL;U}sG#C+~$-+Q?X zK=&^J#y-eu=0txUdeCqG$DbtO-HI_Tt08HBPEt;L_g%xnrcK5)A#F zo$Sq);3cfji2>MUk*CDpUM~kdg>w3!%JIPa^3=54+y}&1^Bxz(YdcRGa{_topsJvx zK@)Vtlb*ARi0D9e5RGc)>zxRp9T1CW2pPb7%VZ&&Dwts_)i0tpA`6lEFVCe!PbD3F z?Q1s+!bf^l^8RLySS0_5f9his%P}9p(QNxqsf;$JGG$Dez)FWQfCjB+r=bp7r_HI^ zTACc%c&-ZG%In3FZmjbxvcegC&sWY4@dOMi>BN9w4`6ZhfR?xeCaD|3CGd)jfh1uM zWS*ou9c^u0P`1;%IMaa{lmD)8d#%<-Z?Ez+eUV0zpcV=6H>IJIaLYnOpi`h3LLf>i z@;jo!KdY5j!+jb7G7P-ewyeEW)8$C+9UL4qsW9nJG51%iI&ps|;R>elx}f7`z2j_J zwb?ZT_JYR+bRr(#xDD6-gP6oi#kKf1V3GmucK}RE_|-4zx-l)PL{$O6s!-Iv6PP?! zHz&a{<`uiaGqJS*BJ_b`;6<{%6~el)Fp554EQI$_fb}O^sW#8hAAyiqKsn1|6t{M# zB>Z>FQ5fkmQN~Rypo{Ya2TJkdyP`O?Y7U>%ix|187w&aYa5heP4_z zI?MYHp^HIde@$`*_{xv7LX>Z2*&#e>2M ztOVAko%@gqHv{Kp0Vuljh_i?@wM^rG0i_~tswnIgHxTNl)20>IZjMFyMN(>#=B@Xg zO>2koVc0P4?t?9`ZUEhq=U)Yy0J|bQQJV7C*P2j2#0yBy0Bp+;CaOLeh~Yf(T+|bI zU_*5-HcPXcJ(W1L_i|~hfKsNb3rh{h8q^0uy@b9Gh@;EbK_U|hzSmMXUm7KPO4mSZ z30zppM=WNQHFjfw(pMCHRp4A9tyHW~ zP{;949E+^xL3q+T^B;7159^<8ZIwUDpw7q|-g*%8iTdtmqX#U?5|m!30KZ#Vq??*Y zwKqIk!23H(U(iPSKOKrNqUii+@{s$d``ESZS+6`APU#+v2gvHs7&^M&dzqknFBV|@ zs6lVKfFYTsFNrpJ-f|QSv5P9Ko-D1T&3(v(W}9Q~>V7)~h!*FjCBo>Nps{F-I4A0L zwrqj0N#A@2taFnPa05M$2bcg?>wux9&E+|Fi5yl>4`2y;y^q3~~| zE6uoWP0x^WD45^Sh{5waZk;~4@)f325g`KG7apYA_eZFJd-gbW8cZ)}e zN~3kXNjyFN&8>9DMOAZ2fJwsbC@JZWqC}31OS9A-&P62<`xk$KYV52W!|AK2bUGC~ zO$pmi(7x4lC5z&8t>bzO4V=VQ0G#hkSLb{_0tM;>zQEZM76cq@(X5*s!l zh+?ipiA3Q|?sY2JmwQXY;a}^FWGcBW@UrJBx;Sn1!%*`BdcEFTQjDz~4l*^juaSAH z4_|NXl(-><)?bQF6qWCXX85ml5dY`mU_g)y*(>UR969^~AJ&w(8a+(7*#zop3KcL| zZBGK*Kn*@N$AU(f_Ffv2B{LXUaRLp)zk`|Z$He15VZDYUBiZp}y7D=(%m*)n(&+mh z&JtpPs=86(OrQSxYkE%~FtewhA;lAfaOa zqqzYhx2D^FB{ESvu7KV~m}@9mGbnEGeMa%u3a$Y>RJLi#{^se))Xa&elvW)p-nzfx z`8~l)Lt;t<)LX^2$Hv5Ko4$4eG&kiz!`Jdj+>Aj6Z6Wx^VEf}6zOTy;p84oKM|K^r zG3_`Kn{$7c#(QSk$+}CU6OD3&imkl5f?X3 zn?_QPC>Yj|5bWqk(RUBR4B+V~wpkn*=kss5yCb|KtM?T&Ig?tHRgJ-0M>`skK^D~- zwI(7aLJb1RE068^e9*^# zu}HJJ^!6>fX3-W>6w+xd-@WtYu2={MS#vU;tJLDUPpwvB>Njp%X4nQk;r_b2L!|~1 zxV$89q87iSl`vTad;F8)pZgbze<0Q-f$#UpKyNW$&_NZTQsg*W?BN~xf{!p&z6;EP zzz%NvYjtSC@lE~lHyiWvGU(wX=^o%YxkzX~9aLW^j{5W?@G_8GRh*_c?@moa;hERV zxDXavatr6EGM4tK&q6;7>{-7B41PnwV`%cq1{RT-Bt82YdNH-AjDYP+$ksoSdqYlo zIRH-B_+G91$J(p#O%7k$E#m_I#5b}07km?VR3rMH-M0SKp0tH~}wwoi&)7n&6u>+!dXQ1UXdw|CH!NwM*Gd z-*Nz(tHELfB@CLqy<*{5m}%HdO{W%Y_vg0osxDxC=Z0WB{ZE|JfPXc*qSo@YK)xc= zySWOk^55@xtRk2`8ok_m`>H9dXN1y)DbH1bRVPbUDI~6*TAVP15nH*l==N+DI(|)- zxN@%chN2|X7ga`giEMGgIH1C=eDm?%tmt^vBXHi!zqD1pS~V9r;IXphHKw~+_ie6V z;H+r%*b@*xrLB5FPm0?XJo|Z`ZOO&5@q=ZD5*u}48ASZT^ynW%NJ>qe^kEDvdS17I z;$7=vq4KoWJy!g+a|K*s<%FPbhFpkLEPzMZqc~p=<{s?4ryh4{DL@kZ>7;+mCF@{1 zEv1|E+$s(&KfkEr+CBcNSxk!am0pj2>lxb_Jw)~hkJYi8K1G^ae0`RH9OWc#_W+Qi zngh&9x{@>rKm$U^)FlKZuuaQ=6#)$ArD>% z$gKn1cB}Ih2v9lVC##QFZL1#}_n2*kwgTmJCmIbbcxaf+wf<-!fByUSM#u;HK#8rMrDB_&cU3VoGTmb03p^6 z$R$;m``)86Gb^$E91Uo8_IOWH3^?(59o?oUz+1crdb@o!!GIf;gPnI`4Su!a85eD# zfWAi}fHOD-j;iL}QwQ=wRO;uOTA;X`1z@l_A3K-O;7OtfItPP04fVXr3-h9p-vMfa z+YXmDgyUTjQ91At^2V@Nfo*VGB^cNS*$Si{#}DEQN+O0B#$#d<6Z1*^l@%mQ9&1(# z7t$d{yZ1VHi;KUjFvAA6fiNaPPkgqe_fZQ|MOxC+y_sU2n1&^;LvlUU`9172(9_&K zG4nzuWJYFBp$6Z;$w}<=ni)HQf7?rjlz_hcCWsPECKTX&O@)N@`&(Du0_?)@1!jEz zi?iYn%6yah#jT!xr-%;ME`7kc*rZs(FZ22eO>b(VBG4Qx8#;uM)L!`eBg%x?*jXVW zEqvzR*t&96z>abOjIAiW>r@JsT2D+Q!mSCFGQNFg23`+L%80QGLBb#gJcwkW^}dW1 zFd#8veSl%~7=?;}w^#LU8~{u)#{eqd6a<(ObXUJXZ)+JV^SJ~$GRDiI1e8c>CsJpm7ysL(Td`9%F<0gwVTx{E<-?&Br#gbUGP zS+Jd2)EgOoT5TQ_?o7V|6G{PbY@z9Sxx6H0acE zW*hh52+E{n^y9uY!?R*^O6lYt>%Xm*vpE;b37mwF-s8;NfSE{w>-o-UY?> zz)7O|B)rDboebTNhRDeuNX1pN5ya;vGMzOYp~-MFWkxYj|G{hu{ned2+gTXBj}+T- zaiuB-Hfv6a1GR<&h%a-hXXE0PJ!C*nqZSxw0Y}FRo@O$^{XT5 z(ay+!{Sd}~{UKuEwq}%I!ZOvd=Z%&4BH&*}Y9LYVFIv;zPf>mkp%-Y>je3)Z0PYVo zee%2O@>EPHtCiDE30~zi%QH(5(x2DbJ22($1bGqI35c+J!uF4N{hz<2gv65i-#Jv^ z!ukH?!T~^OSee}c*D`wZju{e?zDpR5$JHu2p0C@D>Oe7w>ji$F*Z;r&KE;r#-p!j=X>SMBAap%JQ$Dj8FZ^im^DF5V!PSkLjL;sdMZ3@t z5xi~6&FmD~SORFLKR#GD=#!V9DWkt_05?0+TJ@giJfazVU){e9-O4oLBd`;)&AJ#} zAEF8VF^3>yu=5;TE?KS6&ndRnb>ug`^+iNEL~0qWiUjsQecGf+@W2b)=_;j4OOuzd z>OFyfRrRYI5t2d^+KzdD8d!qj5Qyq8|F+Q;ukl*)Y{0#VDrhY{&j)|WhqwE$E2z?N zbq?C0QYHH^vO1U0!!;`Keb904Gay2JJWC&w#>#0C*IBn4Qej55zwn%TT#xPa#jRLA z`S>>!7%wIAg5*WiQk`BNS`H}+j%-tQnRjvS9N4YseHh;CI{Y?F+o0?z>l)-Rz3p3O z(_g>3)sE5O5SmrsTpZ)yhVt&|58i_V!7rP#^P%V6uXCRF&JXh{#6nZNi$+1l;>jpO zWx5?=thg}_Kf4cXn*KmFCZy6<{nzdT6Ffi2-xDyaQ<|na#REU!@#W>Y%_N|sqAZHo zF9!=>d~NyJeE?MjG7#|xVl}HoAbK?DK5W$*+yS+EwjMylp@jfdy}j~s_wL1jfbPsi z_&bYHCSnoy3IHIKcIv(f<&7a^b(Zc2_kB>kl?8{@J~w{v4sw^y%BRz}z*wm#VQ+&M z2x#Yghobf%+9&t<^XFv{UXKUS<1WB-VgvStYTu#gup(Ipg5AA)A%!}1s;nO`?A-vZ z2~qpg4v1drfyFgP@i4UWB~O}}h@1G}d=lN4EHVl_3)%7Fv;kcD5X`8~!}W)Gy=n~^ z%XCG_x4z$5+clWyRXXF_^Q`P1Ezx6f5bApwk}YCH5Q5YHv}&oXLEs>*oRn|ZwA%xn z??;UWiGuYljk7zj`U9J^^vry!o*>!Ha;^KDQ$^QmBs=@}<)s2GWvLo8u*X2&M+z;8HFR z-Di6V-l-q~LmnT?9cogH67oT9_bkWtp_TIpav>6qJq3I+J1>YVVfK3c`8%sg&OE)3 z4X4%sKLyE@cW1Ezhe0&{tNWDs+gAs_O&t(_zsnfX@Zq3eXsE`)^z`z4HyhLk>;b^5 zyb%;2R(pVl)ayd1;~1^+wdx+=u|RMq=|btIvLBbnAEk+INbQ;1EUuA;ri5eZ z6?qR{e{{FK1Z4`t)+KQ3c7y#((jmL0HZN!&<=>uma^S%771(cVko$81rpc56(TGbE z^o_Wh3uqe%9AO?u8^#1>*x8m+pEEEec}MdeK?~HTt)Bp6T*sER9}s@Z9kf@V)jvS~ z!Ua-4Fv4D~>E4HHcL~Pv{``V|Iaj*Gkb~C+x+-tQ&45<53~?)<80|_75DH&{HUX-? zZg5lZ79=RYOMWipBgsQ!KZ(+26Y<+TuSxzwaidhrprplk|DdCfQ<%DdczZFiWxw9A zLpXQI=#1yhZ-eaX&fa|H4{Pqqa`=NMR^uN}EUyuhu+#&A)s)y0IP_#=NmfXazVHSH-%nkicj5>m^knVE)K}oEbV4S8 zV@XLvs{2MB2`pI+t^q6%ggfyvXEf1O!J+$+W9u+{{QfPuETjQ+SQJ!hccYudiFYNY5WE#jfqR^(dZMZurix!lT+}vc80-d&8`B%!CXNQd08CE$J=CMyMttZ&; z&F{$^k*6DbbLopQdUa5^aCVmXGyttYC-@{_xCJ86kN#-%yY`*>-uN-&5P~oOv`gbj zqhzIBAOi7$H&K8PyA`ytc((OX$ie&J8>4~SS9KIp_k7IEOdO*+6bhCZSsJsZG;Hwm4lcQSjD=FF()fw19N(nehVKJLhpt0oTLVhZZvh4Cy_-8<@~rdDO3S zA^(mdTw1Mp{-MT5hYDB8fpAUz*cVREPfZG^zh?p3Y+un8C_?0h|`%QPd^%F&6&w=|24c$d$PqNE-8`HP{UJ%{VJA;UwfL zE@#S2&C;7f7q7wAZoJ11Bke>B;P;0}&$O=zT?RKS86CR%H!KYwlBZ|wo(!wV_iqvz z+}%GyH^_Vl_#FB6tOOjcEYWqb}L~SshF^^>HjW2k5^r z)0J#I!|~nyaI9PI3WgTmkE#+4cATO#VyR$j)PXq;nqEzUPkNSVn(Efx;H)ZLFNL`X zW^memt?r^VHk@6zBN*&gjW8^Dz9vL)e6UGMFkJ*&n6|F#lXQGsq&W(!DczLpB8R^K zFHpH=9O5~O>1lnX5V#Zkd`a_fzGDrf0~WUf*=IWd=Lyd~1OWr(TgPRovJB8VgAJQt zV%lbbSdsU%z?7j{$C=1xc9#l-Z#u-!G~S#m;w*2GXM9A>?H2iglmfih)KUHUpa8R= zW5q|FERzZKikc~d;!`8$Mw0qHx*}0$5^fK?y*6ivdAp;N*!bGHpAKcI@Q}$W@%axQ zeoxHb?NxDd3g+qHwdwyP!WiV3_TrHXvZ7*pm_WWcqVnjg&nmd^!akQAr~5tX;Smat z=tCYs>kJJ`H-Ky?C^KH?%))4zvZ%#>1g^G2)XNU?bu?Y?Q{!@tZndU5vON6KL6`%s zHe1xH=x-OCjfxhbI6Mwz0xqEPo&T?e(Z^Svr)6K~qEt)6wNvvDWGm^Phh5aGPXvM` zAuyLsbz8Ntv!xuokkZ8foYDuhj6h(aSrW8U9j>slXjZUS4wi~bAF^e<(N9mQqqIjA z@Gi5BXxq84hZ{&08V}A2mJC!6YjcK`#X~Bt88YJ9^71m7TgV`$o>xoR1@r3<(`o5Q z+|)VIq!UcR>eq!}jgUC{g1{SS!R3)lXW&cO^roGlI^TP}Xm(mDM`Yj53iFIb>#w5( zM+nF2;y*0EhdWQ8g!8{W4O`itv`LpcP23;iX(*_7oegc;Xhs>u1=n$t|Ch#FpU$Y) zJksDPWK(1y!fpobzzNMraAe;&t>3rD;N}xvu=U+^%T_f zG~JI!V;o+JHwQiI?Ka*;(ehZ3MU{L6wUc!trdu7kQ7PHGC)ds*B8Oc(7qUD>Buc*o z(IBm40^1cN{XzA4&Ps4!Z2`eATwK=F_muIs3svH@KGaq%D;C_|P96UV6z<6cztwa8 z$5Hh6!zmsu{5Y(!l(aHK5uTZarEh|srkijOX#55S#DuF|Tqr_D%l+GfnL#furK}|i zpwZsPk{#4ICm>nU&2c@?f-x*tE4a552>fBPT9VQlr`SaljTQ%;U=|&;BZwjFHPZm-#G{%$0r%Neag!q#bP(%2Jnfc+gFopl|9ciyK}z5^Q@!#-o5LY36CV zDKvEYRPn)=a4+6&q{pMGQ}B>v8}t{+md&6`sOsB^<*4CDbKTJIV#T;24vZ!CEJ<0RkeOiby0*muevQ$tLq75_!!OfQ8RJIl-+=Rt| z4Uc4L1Zyj`vd*BU>i-T7aD6UV8qs{?Or@ogA37<}0maDjzw7RSf7RXbmiq(1Gq=&~ zHg#eDaLRi#dPGYfFHrV;1)*aP3Ee!Y#Ax;b1F_-Rf0NxoUO&|fJ>v}G^hjD&6aX%3 zI|51QMd_jcM0l>5|0zy&@+v~O7Y5GH`V zLp0G_{-g_sOQwnTn%f#xC$%ymCZX+fF~4hwE6+_2zniN?j;i%4GiE$Udk@6m2HJb!?)*o+n;u&nV2mzC0QuBg28>z(l3^LPQ?vvj z+E%c%^i6%{_{>Xaqr&n*3jd(`!xrf&y?M$?aVU<@T)E_eRqAzwVaQ>BolU29L{cBL zv-pLM*}Sj$5zb32OR*ZLTS}n&cA`lqk31lbZoqmDHm{sp(B)V9l1=T&!8FJatkF#9 zOkIUGQZ{#7<-P8I2=QW3(#3|`E|lUl-jI@mqs63proASlW}4^Y*0jS}Ra?Nm;GNOjbA<%N48N0~7UE2PW`%py#+0 zM#zy+BoxK}7>}G8@h}>aggK1nw_pOtu3+!iK?_V``l*WvWkdQ~O7jH9HqeFxm7Y-i zDF**>!~OOLlx&bTeEZi%!9TQNHfsdijtIG=5W9V{zB-N(z?uHXpmP)Cf6(woNg1#Y@Gd5JnH#T8Vl6k z-mkKjvoI$!uu3mbixf7$_NdO;ef)L+V^6c=RZh5aT1x5>dd?=X-Jw1x31FFWkZ22?(+=M(QqSEGmjyZZjeFa0vW zut0Tg=es#-dMxy4b|NP{HyJN&%D?=k|0~1)rlb9@4F8Xhl`rDV|H|*;AW_Y$73k|<3UzM2SAu1T|pF z-uM&{_j^CPnwaF=qNVKu`R}w3>J9(1KCj^Q|DrzsAlSUrJH^I-dN7kZL7V!WTlp%d zO#|c5`-0U2z?Hpri_=R`h3VjB2}6zCCY{`m8)qI9RSI#J3c~3{_D7p)Ju?p+vJK4# z5(6?I!O``X;MjNmYX4?SpO1CCbS$Y{{N)XV-HYVa)m)3teX60et+An6=S?wI>~{_` zlyE?>;xGyv$$xym;quH9(5a`FfqZ(@b(myX91Uipl9v*1J8w!SgCN0VwOuCEWdN!j zsX4$9fH&m(79+XQnQ4#`OTebf>~(e+4Y4hHU#-^?uR{10u$=iy;0%mx#DQG4(78*Z z4?CNo_e{BIr0_v6mvV+AiUZkGpY8YKy*BKT2Hqf>kiT69B-t*|vy@L)f-<5OD?)gD z@87cDxQ?{Y{BX(U%J0I))Bhs<4>2q2*|p(=$ccNonNH#}sU^_cQ^CQ(fjA88kHyy7 z43A9kiPQ?!sX)tscOIe=2EVY$UkKjJ?0v;0b4`IF4y=O6fuwSu3wW821$-8?jlhQ~ z@$n`E8Hz&N+zvN?u1tt#-eHg$tOCbZ89|pFW&mpa0KFz)-V`KGgLaHnkowS5GbKNlN+Bt@89z@|p&~ZJqP{cLC8Yj1Z4J(tZ(fa@ah*}w z!Bb%}{hc0(sx^b&e38?omh;6237n7e+&@$Pz;7r0Bhr*0J7xVqNTb#(FD{Ik@gwHh zW2S^WtNfnc?znF@l?iRL1jx!>vIEc-@&REh1o>657%OB1B*>WS7$lwG$1CR}b-M;> zyy3nc5R$0G$jImm5PK6^f^H<&EW8Q2$(j6|5{K{UlnR|Q?%OKF4|* z8w*e?gK1El$x67{^AOwwoj@dB1`m#_Uj3M*-K($uBy{z`-p9c{`2Tf*X%sW+ z(1)d8(HBQ?^w0$HAkYcgP%zOuYC9!lf{e|PJQ{FKxeOUHQvNUzuA>c<_DUYIp=Kmt z&03-~o?xPVQWV|;nBTR>%D6BTmOy0kxb2)5Zvl4D8j~`j(sV!YeWG?Dc zy(BStdHhXS>6@SS=96^X9RzkV7Rt}m?te89N~;ZvpW(J*@XhEW>K0IP5{j4Nzd}nu z9}&UaRcCpWBOeX4)Nb&&TpoF(*vBCsJQ1LEeT5Txxc15 z6U`Jp5?W8GSYY1)xOs13X&cy~^qBrKDTcsCGcJ;q6iG`r&Y*Hl54gXdQYY!Jh6SvF zll=rUjlCPlv9GKG0hP1)wxmHtQ?ZSDtBlX5>&%Hah}at?ADwQH5-cC!`eJ`U+O(2X z_fr7<0|X)FJ4Mf6rZD&gbdNP?WX0$5AU)Q3_#EFi`hf6R04jNo*)+E{h^1eQmaTrh zDR2A*qe}M3 ze$;riF%<_Nn|7AaF+pxzA*On*S%3#|C`Ugvw$8?KJf}eYRld^ue>EfCh?|B83dO}T zJ*IYy5U}t*Xd_$~WRu(=!!9a$i}zkgH2<@?`FnX*$cjLHDYvp4h>>|n?xQllr?J9! z?Rwmh%Y_~N^NX|9P2%R6fM7j-kuZuobFg~AL+X8mG`AVN6~G<}o8Bz0>+ii^6Ce#M zlO_HNrejHzh)4sX0vDUn*tn^0uV}-Hu{^O)Lj|6KbaIX;p1P>fHGJw9RGckLB$WdU ziFyXN!z*AwBx{(IHSUY$j}SNl&l|q&1E;NLXsl5H#YF5kWxpln$hqP-XkK6GNLuiyy*O(zGsJX#-=WK~IBgcl@=~r46GAn{V%98rtDTzgPEc&)}kV zv+DPCiso}XUdb(5|FvCP`)J6+7eMosvkC0LIg z5&-WhS-4i+3OF5`OQ%P*sz44RXk<$ip|ykV68YTPYNTX)l*xWTZxx7tpc@^R2b z%8b{rT4qRHQ20dM6FH4pbQ+6wA6YObotG?5%tIv`t)?r-)4V%y$MjxLJSa0H-=dM0 zEP&H&z9?48e7^BO@1E3znO6|SNCo^L==x=IH$R@e9++(wXA#!06bXcF=|~yyzY6nv zav(6N(6(G3flY7=oXB}m??$!NQH=FWm@Sux!2*-pKOE0lt~{@CST#wHaKm%k#=aZo zhDKUiI*EF~&??)@SdFQCOBmR`CJ&_XSXXZMwlE};f|(kd6`|l7+t-c4fzM8{uzP@` zUyNPo&f zq^baYDFI4xf2l0yi1*gBQ)CjX+OWjn6)D6*fSnIrWczR!Q}(j3sIoa&v|kY}@O4P% zQ~(+wiNRP1TwpjYGvA%_Ev|B+2&Dc0$u;pey^U}J0u@|JTBS|U#CAA2!@V8Y0+{EK zkP5{%Q6fg#Zlk`lC8Pv`mz?MXL#2Dd#BC3LZd|-X8f-e`mO-*Sn(iOut`i*F)nHS| zu>cF!nI%LlTF2HeUy+;Kdxc~CK$`HoE)Ddx^t)mU`DI|@LUUj|#;fZ*tBsf?OCgn4 z8nJR~^jhAXxYgzHs{T|1P>B$DY9v2Qr*Q9aiyxko48MZIc+Q3p*JB-W!@jb12Y>eR)n zEOIr|V?wtOvWDACbOYR27naF(H{dTm$#BM&v(&h=^dYhWZNlH*4Gp_)0?+>xYX>V) z?IC3~D}aDko9HiLwHgL@BzlxKp}GZ9eKRz|=DpW6M(n`3g4_EvSiJo@qq+c%JD~&i z%1N?yZP($KF)f=TH}r97k9!t7VDSn5=N|44wpP=s3S`njW^AHfN(3$Jfy?%Igwom6 zf&b|NWkf}SR?krCCGD-tY$XAfueeNlqX3$GnHXXWzLM2l-Z)|nCSe8m4Gp58Psw$Z z8!&7+$Rh`WzY6|VtOKE>3{?jkK}R$N{~a_lNtL_YQWdPNhRnGV!S50ELGV_HQmjRD zSV)m$YO%nEKRz9)!e#oP+*i64bSp9`_fZG+6-7^gR+05Zv3kwiKwk%4;A54RtF`= zY-~)HbBEo=#lrfLmJRvv@d|cd2kBc@Gz|+kPqBlU_Wap>4*VD+71=)UB?a%*(XlQh zYO4$^bMt8A_MF?`YS+w++`OoQ^x?&bT=TH!I&a{tWP&@cG~FnLA=54JdntZ+ z$Q!Xkw5?d|FQID`l2wL#e60PkrZ~>+>Uh$(u&BeMK7L|SmjzvoHFZgZ7P_Ij#ta;# zDy&xq=_q!@(Ut01(vq<*exr2MIijb_xHP;g^l&sJL1~Kkq%p`+j)8tg+S}drWaMe39D>2OO-%oA@oXs5#(%N+jwFY z6b8rT?WrLL_x${g6|qF^7}Wjz+6pTgZowda`=5w*1XFBO6o+Sj>Ekd3clX`9$FXPs8f3I5e_)1 zS}wDn$ATrxpHVn^rAhms7fOA4AOr2kJ5o8{I|45$5Bk>esyGZZW4*2$(!zi40>DKs zhh?`t4YWfw*2bTwK{X(R^MJgrjip^5_?-2~XJ_;|{td|}GbOgCBK z^ZKkWzX>A>yHo9mv{|wZ7jA?dVzv?qVwZi7@xet74MwM&(DDeNMz`>2wGpCZ7c{g$R~jAR+FH7be9zEv*tG>&TN$PG(vyiW#Vz z?^TXcrgHC}>ldMaQ(n(pxbb$t$F{1&t=D%ue09L8Jy@B@Z<^13 zty}p!`mqn*%IHk9j;QOVh!VtPCo46Tu0ui3>0XZNRbxu#E?c?Ae#1F0@B}Rlrp!TO zT>S9rrY4(nQy{I)Yiv>h=a&&2VLxq&>|5F>g9Xuoi@aLXA~!ioTFB_D>pM=5b}T^e zfg$b=Txs*$Ch75&WlU`&Gsgq=ud~$AR6qIwzUc*yqw`uz!21az%ofj(hnEW!+Y+D` z3j701hHiWRV&Td_n@(3n0Rp#XF~PLU#Dy$A5>_~4tGIy)R_9avL2+DDllSY5vN(7| zQ8}gAa1hiLf+1IL-(!SZnK2HF4Qq6&x_m#ngvou+loO(yY_kOX(wS#%ZyK#EXz&$uaY%;HuTim#8R=#P#xSt z+Wh>iV6*klnuhGJ^VhrS$u@=QTE+5OTkoRrLR9uQK0OV(lHie`l+%ZkN6H;M+xWoZ zfFRDL+5ZE%=sF%kMOmvqLk8^D6mK5N`gJ9Zc{Tis;RD|$4PC%BGg#@IDh_uB8mwLq z+PbzrvH}8HCesRhK6DeuU}Nl7Vn`G#O&SK4mcYu>;S|0t9if?G=Rq<-=?jbl+l|o8fqeLhs`HZhLwR&k%7;RLHd~LS> z4Jsk?5G%Wcq=UFKs`uXAEZ8!*`utul4<2DYngc-*tKfO;B>_$#YMMeIN@+z`c+rj| zEh&l&$13_LZRp>kq8f}AFq184bjiuR68J&mW4}t0 zg`|&t^@YLBe;p3|5%VxThgP^hnRv?ky+Gqrf|J<);GdH&jM?SJnH@uTlm<{w4iuXZ>S^@S@Bf$i0QJPqTwYk+ z{TuZ}B{i!;LxTR-4=;cQyxlRN;$VgADZ|2qRBuK(iFHZ3g^b?~o^6iJh|*gZj3!XL zG5%X;~koAvZB1)l#`9w(3m&G@?A z)~zSco>>URNv*d%Hy%-$u*>|u37t9otS$mmfzBWB47uff;3q#`TC(c?a3EV#*;@zv zVY~mmL59KP({8-L&r`>=omxJfdSi^{8XYW*5k2Di>qb`!392+O+amPeoXrX6W*?)q>w zp1DVq5Yph!9$|_M=RG=3O%6lhaU0SPE&is7Y1eA_$nl?#fM^v&K2q2 z8Y;KwnV5BL}v$iMuYpt=e>~QwX=EfUHAd~;fsLQ z#D@(wiEe>y;irI{R1hn0Upkf&bWP>suTej2*~N2!XiM@$#x9wd@dOO=Pe2XhYLUV$ z(IQI@l_)bH9l}!iA1V6nD5x;~(Mmywt5(KIZxP+%x0$)Q^6OrJo1*Cyd}XeEXOdZ~ z*}t-9gGY<``F^wxz$KwK3%bGUybgF)?*7^;ZShM?VIHa}>z=NK;gF|kC+rChP-wz8 zTi5aN=zt#qHu`3<@KHN@e3_Z(a%Lb>^!@iH`s*!W?$ZMTA~b7bi}tw(Zdv^eB0KVZ z^B5Sg1jZ?kUdn!@n=_}&mNq=K@#ZU#y}jAnKejH6l?GPS@5okUwOfCw zM2}keqh_21d?GROeN~+?`-n9bEHg}~yl?INmyesj{!@Ga9o#Psi{cRmb?)&%5ukDZ zIqU6uUh>^Ymf|OSYvT{}_4Qu`f)cV4WK5S+-ns%~#0;5*H1oWbz2yLvb=#os-BA;G zK}jDzR0}24r?H5|bh%-hb30@NTpCh0X`g~3h@LV(T#dDz-)>A^@t@+aphOUeD0wt? zzF8|MC0W>RCr~0SBf-GayJTN^-Vqau1 z*jmMpc;U_4*l|=9Q9eGa-UmrO?Q{KNSdmDS*XK>c`Eur~0-C$klp=o2c2COBM8j}@ zir#qF?bg32LQRk`U%NFfb4iPa;jb2reK`9<*Lwq`3{dpN3xs$$RF3@*tCeL??S+_) zntZP}C9l!`@c*M+L(n=U&L6uzsz3>fz0U#Vjhn{!$1xy~_2lLQo?Pch6pq@J5sa1; ze$G4Ma7!0zuRoQ0$Gx>!d;LXb}K(d_fw?8S!?)D7RoXj>T>bnskT%N9O9F(f5V0pCf zs4sFb;&ObQN$Pc;Z%SUbA7*9ZVPHos87GSQiSP{{Q_2qK!p8O8 z^u^z;YPHHzKayVv#)2DnP=%lyt8eVOl)VRCr1xRiGa)b%qxA@s<}K;?a*H^AGQL&Z zy{+k00IC0aRi$H~_`#8wT5ag-#k*`tcC!N~@K5t>G)eJnBCy?XVX?%G0H=Ne3!|4& z8952ympofSfy63PV%j* zzk{-e&)>dtm>T=D&O}crB(N^cIB3`C^h0ljx#v zB`mA^01xb5FxR0iHt&|_oxadmOfE|uK)lb;gaI;b4eTj5DcYcK>7%Oq zGj$o?SKa#ed>@OvpQ(#zILzu6-b9GW0=R6t7`x{~Ng+pokvN8l%)%Qacl`>4`9YKo&ay=4F)Q|_>iD%rBHQcDarx1&2|aT-6w)hc9_qv7<}c>3NtN#l zd5Qfne`2(3zsY?z2(26P$+s5KH3xfN$7=@e5iYmuLp0cw0t4_9Q?&$MtFP6`bB+`p2O{WR#eg(Nu*WF|4wTtzJeHqA>;v^&jiZQ zs7CgQ@#GK-9fDxy_Nwe{i1R5Ji(5oBEWZiddxA+_+8r`;i?}iVfY0mR?2KFj1Hi3o zcRS8D)J6pM8Y}_hJ?_J@?wD?-2S{Oom~Z8^)n#O4?0kAZbXpROr9ge5vVM5ZRsr)g z4vp9}Tw8R<$*@m&^do64Wl^Y`Fj!dE#(lq4|M=RClR(1ts%ELAn!7 z#dK`9=na@Mompb`@GcuTTVLozRKq7gL*v9c$DP?ClW*ZVnqB2JVNxVr!7 z>1>kgud}Rr;+IQ^S@n$J#vPpZ654F0d(!wCrNPWd^Qwx}B*HCp6#P8cf;wd?Xtkwy zuVR9&z6Jau@Qe3uH)-hlx!xi)6L~7L@U!{(X3+i}z@%8sEf}(jmyWahmxM0NpfXk< zLl5a{hGx+j5e-;S4_WD4p=pV{(Oe4pn~_$aDzPF9=2X%EQKC}{h> z&14$2b~4lmw5%Ta`z@8ZprdVi))*N}K3lAD0X^fCqbob58l_*qQ^%ak>~io?m^gNd zAkwx;>x6K;e*f0OJ(~MmGBhFvYaZ zdNNjQVE4O)WM)j)=J{iKlJc>_ElkuQ*OVIsQKO}eySI=ahN|Tj`H_#^+aivvI4Hqi zaj#f1lS*WTTR%XOZfAp!_w(>GqgpNC`Y%4yiZ;g4Q-rJOpm4ZyXVE-Q=kmYO>fN6q zs#He4Dz75?hHV&g8kRfpblD_slotYD=E2 zvd0_y&kG-78ok}Ze#i;t?8v9p2|ujkvg}dugRA{prD-_u?02Q9{)V->gL`a~*M_cY z=v2TC-?C)K53%>BK?>rf5BD_ym*f=*TEX=%xIr-*6M-S!h6@!muTn8N=4Rc86_%!3 zyZL`;a46C8qHMPtc`rVbmX+S+Sbcx+-zqwV`Bgl#!o|z)?vLuQMbA5Y1ZwEuxEm=V zf`=R>YlxmQi>C4(SGH^d=M}%#y&MAj>;N?iee`rh;^)ZxT79%OCf8Gmkq%QYf8qf| zOK>PxmMh(bFrG~UN!pxnn*(M#8TnCaL<2+y^1B?cXB)6UI)?0DxCNj;`F{3-ZEJ1SQ{CeK<=p8@VWbf$$;vYJ&QHR zph&t{lw%}E?b9L@e{w-by(f}{{R2rxwrvZ%S+*MIcY_v79aBnKs{Gu3)}%SlDK6El zJbGXxPyLD{6>XaZl;ow0)az%(BSAB$nWok?Ct8QQQ~ht!6r+sd;v3;H-B`#EmwMFw zv>u^;k%}5}SGxZ+C#SvO=gRN+P6o6QK6Dn8ro8@vd2QtBT}_9axPm8?*%GeL9l3;F z-mac^&sO}Bvkn@scCw6tf*-Yx;-vT9+n~6S=u_d=o-{hbTGN8vF_N!+Q4ETKJJ$ui zy~;G`8~wDD9Vw!b%_qW6ZeVEpSZM-mmZyz6QQHi4GKPaH&)ws-mEO=trqR@dLZuP9q(z{fW8%3Q-qK(T#Z$nF zCwrcZtA!^8yzHe~`|OC%QXy>i&&vi4$#LFv8Mt`RmnXnoQ&JBZ3xfRED!@0=Zo7D@Lh z5Se2d7$X;rt*lzD;aycRzJf!c<5w)-o}YwM$bi?Oz#`o^)a~X+YJZ2SZ{Bpg_DKvy zR%Oy1lD#Stg(aVc7o~Dt3?vIZofWV68tVua4qY0&aCwV2bHyXmk=E1Sd!JU?md){$ zbokSbV{{0DV(v!07K>R?QZ`XcUdOu+D*HXu zSmK(JzBgn?JysEY$-lOtw}+#!p%vdmrBVKFL&-II;XkzapP)V>noHCnHMkxP$+ z;Ae~=BCH?zSn+kZx^pAwif|=`v+*}1nrYhk;YfBwa8a{(|Hvhy4)2<)uo#n8L8n=f zgbEUs{(K6UpnXZ>C*bjuS0^cs@CTa%to@A$v25xG>k5jBd~Ju{I-*9a)U&Tf)f^HE z;1ftSR^sV;HK5JbI-4j&%WAQC!Z7+i{7b28`fbbGgGtYrwz1Zo1=q8KCN&Rfcn3u` zrOmmeSyYVmbQ|G9yR^SmuZ}~AA$n__TnjqFwjd*~g_v@`t!9qy>NVvyZ~gT;l5&^# zXGpJbP)fw+Qqo2VM&EktYNYSLEzP1!RZwcPOs*AQzh-H_*O)9EP*vjp8Ejx0faX}w zKhi_bZc4Z5BqaS;5+O@2TE)6P2a1})XG}BdYX1@*dJHS(Q17H=K6z4D>z2(U6{MSI zr&Gmh@VQE~5U(oFQctAXE-A-NH;h$VS(6`CD!;x%#bYy8^ICY@B2wpcu;6vK7_XoQ zSNU+jZqi9Zog-n(Ri>WIWVJ8yWk6-ReuUjDmGP*DBsrnSV}N%}^AnT=+7rPsBxyTgHa0|xPv}YUYC#sLA!DM%LyQSG)|PvJ zmAs9e_>)Qa>4aIF&CfK(WoFj{(^scpHA69|h;K+@8MC0&wLe_jb zrfljFFUa&WC;l#!G#cFyu0n@TDi}M+z}f=QRn(fEYst*sLBsoW*dl9d#3W{*DI)TIQ=8=RQYt~?>P@8V8}ni`jAgG)U-yUlMV3E6dn0T_ zhvzq*?@oUR!z7oWY4>a7?>#`ENDZFIo()P7rK1=Or(p{_z#p%Mq4`QhQAeD-EIx-}=@z)e)gM1kra6Ecxy9Nlq`xtP7TnyVc7+Xm zTv6=XKY@TkX{o!^*xBD6Ak9{?s2$u(1m!eWOrDiLcL50f;xe-Mj$ad+`u7etCZ7&qtu85R z3z{|EYu)6GYau6h<50bAY(~7qLU`Jg>qy<&dCQ)|=f91Kt1Ua<9AS6}7G=qcJS!vk z!Zh}l$#D=3ZESd>D?jmN6Y~v7f>pw2cq3OILYW4}Z`j)vyukD+pI>Y{R>(6oE;)`! z9|dd->}KjhciPyVe!N3{L*mbl^A98^Kq@f4!34HXh7O-g` zfyM!4kAIXj|66@ZD7{7=$L*$fUY}(f$`0@DqM_NG7d=2sdu7V{)OF{pz&4v$hO$Dt zAK!@74`^Iqd@4W7p%doMqkjE0HP@cL$C$=YiQL^4b^KN~r>F;_Gu%}qUI6S44 zba;P@&V(HNEw6O`x&PeHhE(#o_C7u_V|UfrR8Rj}VhO$9ogXZZQ?7FbC{6Jwbe2%v z36GWjinTX-MD*NN(nx;J|^C#2gUEF!07S`fLU)cGc(saPACJT z^`~v%K9LK>B)SR2@sNNQe9!U+WEbjILezgYuq>pKULKyvqNV76`1KlOgckusIn^># zDL3laIhQV~a)&8CpqJU5Jb(9&=LMfb%I@Zzk>cGmcW;o)ytW%JW*nKDz6-IS76)Z$ zooG>dm93J#Jqol=U zH^2K<62g9VymMXxpuZ2fuw}tgCXek%H=~--vS~3CuPs0ovz@q2T}kuPfM|6DV}wFisiZ21&z9Pk0K%J%}DH7$G_M6SvG-<4<=8+Q5< zz&-QRbgkPJLD4U6VrRQ*wP58N0>KZxvr*d-Mj-d5@{iMgCgw6}L)|gBCvflZ9MIyU ze@21avsn&;Q-p!YiQ0L}IjbMNx}=%dW(ZDLEL&*{n+v$}rZZ~VJFolEX2f;neGlK! z_@@~#-mdY)v)d=HO%}tp_hxjLn=QKLgl}$rg41J%mqROmHUFp{*7mTmR;CUsK6f-? zzD57wW65LxXCEz?Q&+hvxL%*7ZdkZfcLb@^3|*8D{cHC>+bx2htuJHT_uihzkDx2p zdLB`<-B~KWA$Hhe|E;y2io%jSvldn?GO`>?WoJXm54%n~37Im7*NVSJLPIgizmcmSt<(LHk+ zTrL=K8-AdR!qFtTFhT&VS2DalL{VjEYyipF6!FCe1ihHYYMIOQ-)h0kUHZ@ubVA(H z!qF|zTWH>nZUdc-%`r7Pqk3>R81?g+V}XiUbjvt?%ax4~qbN0tH($px-l#__f61bA zf>qir=g%5Z(QC#&DYNTL*%{x}r|-4n<Z zW@^6H0I|%G(x=4~{$frIk=bn*vPsjNqtmakH!M!(rgq?y*IbJd{9-9kzvwyEcJ$l@ zVuO2fR67G-LRE zy5DWCJgCiO$`0CG$SQ65*Zd^zmOi}efBKNXI}{&*6x}@!`o2<-f{1=K%aQdotM~g| z;_WioI4M6kujI7D=$mKYJtgcqtiZqcT{P?EVDSZqk@9*X0rLkoq`aIQbXc;9!5R1n zA^hI7f5D&2dd}~-J0hqVIvq~^QLVXIXrFSH-m1wtH^(AZF6r1HdXZbqD`i}6cI{34 zg=xl9*!@rJh0A{sGKqgCEOh%FG69gMdgZ;?fdkjvx?4FbmTA9JCb;=fPIkG)gRrIt z4?u4H`a46CE6968`Z#5Joth3|2Fszc>GWB9dx=?_E!kWa_ia{&^AguTKfCSl`R0pe z3clze!L|Hc-fpgDGLDyt?mv8|KhQRxFCJi<_`hekRl`Op<~uQQJm<4k)Oio)wdKX0 zaAsxrL2P5Nwkv<`+#G)cyH7l@KY589e1%8u)G;n9z_A z@LwycE|;1G=5#HRZ!}M%*z07;d8~~?#(?^4k?j7$OgfLv(+KxA2|oMyxyOyp#azHr zV-^}A1x4Fpz{k$ZQ^;kaLPbTz1_3K;@ynQQsCcvlA_vRPt0{?&vX0TWeZ-gDRA-q7 z1uvFIU#At3G6dan@!oF`GE8}5<>?|~0>tM>1w?a2BB z@nhC@FVmjvkfLx9pV1XQo&gcTO%O`Q;N{TOk>nf_1**g^1wF@N$CXnc(s&_tP5<4X zAiK$>p%a>oZG0L9bb@L7^91vsG`Jc$n14|7nQnq_r9Dv=+m*QQ<4iAvDx*_ybGlhd za>&0PEN5~9#yOMUCc_5=-k|G@$6o;vFwwk=%)iF#ApUOJP3g~sh?gCqk`ziWbf@F{ z7J8+g;_wlx9RF@wu4%bb7vePI6`*I{pKJ0{@IhHv=*VTt;h)H-urOX(H#kj?I^dhW zQ~K(o>vYY}Hmu&$An%EKL*~i!a0G{8RCJvR?+TRU<)=kI!2WT+IwuYlm0rsj}A<%j) zk)o=iKSM-^7M0&YJ_O(Uyiw!b@!EP0p?H32U}`JNxS*?Fd&N6fa+T_ZpT7WiZk<-d%ugWN6+5AV)vUmeNsabKYYDCPsJ=*m!v;9yr$=&1Z^-=362TbPapYjR z$EN0sNt4{f+bX%V3T#i^HjXzJs-}=l{ya6gCC=@HOn*hgk8CP>@TKZ=*y{*tE4n~U|lF!^;g;> z#Q4w$N_&9w{!JfYUJCk`qn$V)Ve4F#e!(+C=oYzD9yjE5fJ|hY?dINSH~zHFhOvz? z7U(bR-v!m9>T?vLd?nuWt1*2@60i*WSPhW4OX;Gf?daTdZMRXfegX}E+sI>Y5;wLb zj6}fwpM&3^_dv;tFGI$3u)x3ppCqro_PxCfQu9Py1?moCpDaDSCHg%1qER(LCMnSI zk4Dwk2y|`qC*6{32DrS~L4+#pxIUmfCDh7y3_i@bO<7rAR>QvWXpt3pTgT6nWU&+1 z?|ecQ0h+#h#ZvG^307%pvjwp59o?M|A)AuhX35c1v^3tRbK+?r)T^S9!jhxUC3E)K z0f(Yq{jFxNwyOkcpmS_PGs00igaq#LR$;dJ!6-tvG^iz(sZ3n(RV-lUNd|%syt>s& zVW{qfJhuaiIF--Gu14nXRWdIF;+;mJ=<|VJx&iYNo)YwZHe%VezWY;Fs$#hf?lGIp zcMK0qTO3$F50^wVRXA&b%6y>icGnx_NAjTyq(o0E+!F?o7cT&KEX@hEp-ub zfL~@XDy{w<*kI6K1UBqah(3WIfFbN%niy7!bv1vE88IQjZVWfM=i3o10=MM|d2;<8 zl}c0TT93m@#GGksz+|~an8C|5=M6w;1x&+M?GP9jsRQP_Ln4ev1yU8UnUHj>jSZ|h z{?V`669Re7CsY_uQ^g+D%BiQ7+j*xL#bWRqTb7MLh_d~@>#rhBQt3jv-lNOXlqO5l z9rTv&Yn0&fbMOjSlS^fK(?w5`KVUSNJeIjB4R_Jk4=H;TM#W>Fm7V=dWo@~<4nvl| z%sR-Xwa$a=Sa+ugefa>pb(L(e3D*SAJ1Y1HxtOGOZU;?}WYejKX7kI=oK=U+zt1gwXF1KGHL|ALx)4*lVt?3)AgNm`lrn5GCu*x`>hQ zAOQvi6JuJ`R?wF-XmxWA=7YTlR^Db#S!Ah=GhuXv@}mrTl54SED`R?6*JgGOxcd>F zpZ^V-=cGjafH4s|!r%Sl2=9GY?L6c)HI@%LpXNGsgC29cI(m+-OxpYdq+(?{iJh7x zK8N)gVV#ZLYQia3W*ZiQPYi^87!vKkpvhyU4w3q+`10$An?%M>k=;1OlX?4llJLsGE z#l6hRL=W2p9|nVYmF3$@(SVKQPFBA6mNnp#E=>y1EWawe*q!;F&CnS2Vsm$B>s1&`<5q}vj!6}^N*gYs zOqQI2!p;_z9_9sz0J&F-EpUV4?~~iSq+6E=l!}>x?jvAeW2Pv%VaS?TqF+0N7zMx_ z{@XctG12IA#B93B`ziq>2hc`{+&!FoWE(FVfw?8cj`p(zwlwOUtbAMy>@s3M3HNbe zyhE*gJYJ;7h|vBqUXqFD??V0g$8>E4B#43H6fkUXh~;&fo&H&B%LOARQ|Xf>ib?4} zWJxQSz_G1(g%!VCd4&{jT63rKY5*8iom$68SnK(Zq(=`%R`5l79%1I9t>A63zh4a+Ivm8qStdHZ}=<81^G0cjiy>Ot_ zXM(##aSR)m3j{k=A>2h z%kQ}ZgY?6@UH?zyb1Pl(-dd+1zb?%E=Efq zRcJzG@}NwluOfB9zwDr->k4yJFo@hZ2NTgGhx(uZA&?Aa?jdbAv^{!{n_lxK1 z4`YrnWX$>g+nCdMdGE#vq%%kIA#6dAdB~bx9qIl5?IU5f_+HijU5xvTPBZ|_?^N8! z7nY1{^k;^KZ~nEBRTuWgiB7Mc}WY za^2>}cLZ|h1m`vWlLwbx&u)H66`vSKTKaP7Vf|mG07w`Q!5Doh;qM-g|MK72>2UW^ zO7(`L>lThay733cf8!x_Sg6ewbHx4I3sc~=T;J^u=k4C!O=ZQdnB^0O7Qz8vq00$U zeyI9%NN!t0em5*>sqdZkGdnLV34+&q&@S(tJ`C`*Y`wgASx%GJ7n*&ao?R-m`nr&s zI`=9qhP;1YrX^-vy?^@op`hz2 zBHE5m@w2)ULAQg1>vc5axrrOpB1|?mHmbnM@+2C^DMc8(tK7O`v@Q!pp9BtL0LCBn zUH^uj%)3U+TE(nWRSpTDMIr;P<1W%>&b!}L$T&?yDDV2~1F<_R^ik`&`0)d{Xx{>< zNrgiWjXxOsn}gbcC9(*xt3$*$(7pPgkNXQ;@68W?el7RevmL!HEH{`XwFs3ZpwI=B zBW^EeJSw)i(FL%Ctbi$#)ZHzcd8Q;M7Y~g&z-?^-n!f|Ez8rAlIZL1GlHAcLhx_aa zd1AQzxeKs*3!RNsZR`9n$2p|gtmy6)*oaATI*D#6&ph4v>NN%+Rx<4+k zpJW5V_7?wzs`r!9HJ~Hwx={&Lp;G*osX!GflTjX*iZpQR-lfwoclva)5)y-V!MxO5+ELGBjNX_R^BSq+xn0FbhPoct zZUFAXGRhfAsRtu|f)p<|Lrl@gG+Z0QuBYK#GF6xGWIWeSNxC z4YHwn?+(gH@;Nq?U3{AUm#=B4!c=Md?48q`q5s*Q)@|+5mpTYX&^EE3C~akxU+&!B zoO5dLr55!uXE&7m?)$U#nugIdD;Q!YfqVI|I~WB=Cm+UQ#@5`m2b*)`*2l@>@{Qjj zS$gJZCp_226bAT0Oc6D>Di0EwO!^+5fl0%X)gb}Gz;n_Pw8qegEQHg*M<2$YY?2&(ryoTA*zl}`@2P4+j)X6o;1hRo+h;|$=EU+HGD_2b zttW1+byAoJBwqaTq<{bN03i%tPOrz2F3OAbd2l@1;y7~i{mC{91-BKlm7&#i&GORu zHu01jD}q22Z+0G>d;&Zxvf$TX4s9|+0-tK9Ih$1APS?wp#-Tqo^*;uRo!-to5QQm% zQ}+V+>n8!^(8qMIS)0xr?J`qKdVFk(G$4$3T*8=u@Fz>}f#-)IXTB>nQxW>^!Mx=3 zfQ;{aQAJ1iQwe((o&sJVJ{6UNv>iCcUW6@a*G&K!X%XT8s?_PwyOeQ&-?K)Lcx3lX z^{meWz~HL~&I+a4UWiFPWC}Yb3A1Lth+59W@|ocesD>{Xd?UpT+xH6$>Z=;g_NN3J zM>db3{iCdHkO;+l&w@URV~A0yR67^y#tB_v1_xY>k%8fUJWMM1bJ9Bbj^4cL3)`B? zWiF_G)Sb);(|D6Ml-SG{R!qvAtr^F)T=Jt_mt5W6*q^$=zSO;;JbQ#ykGtP**XuF# zeJyaj)MIraj!lxS+g*O`x--R}%8(K9NIHy{($fFje3`L)K9ed>3S=xL6@H2}SS{Vw z$ghYgJUFaqAD}I9p||RA>jtg?iL!zw798WfDsPM!pPEU6+5?5mIB)Dp4#)ZpK46$S zzbzRw7ax-acmYeB6S8}NRhklWpT`Oa1J(<-j4x+k(rRBcgtArug^;I!m9G3bo8B0> zXy3#lWHMI02lb8sz3dMC2+WT&L~R1R!>zJ3csH`bn}IyG@Z!OJcPUaYT)wSs=o*47pS zGZrxd3Hy~N;3t$@_L5g<$5oa6j1qevz`AYbLW6a#sa^qmKhL#)HqXZjFM#=ukOI4DSPP-9D_(GI!2Z5V5>`MEx4I)pL&wznPKrwz{DInkKAWi zNcgY%MrB8ju8+f`6FV*?b;Rt(f?f zv-Z;nu54zoM{G63*8BMB4x^pALx_LUu*F~&A(1Bi-iZNxnP719E9Yb#ufp&W$-uiK zxs=IQ`Dp?EAZ6+5;WhGm_GU*Srw@CeI)(~Qr{2sV= z#WvRFgLnIZ8I7ml7i8q&wgSuLA9;d~Y(B_;*8@jeUt0{)t5By z{`5&)riMkrSh(;>1fqWR1Xo(=mUa{#+wlu7UcOvZhc$frTN;2twda(BN)PxUEF&9a zH6l73a^ApgmbP*@-M4+f|LfBis3r&m;t`W}XML~l z19Sa#od+XECC$Rx|8))$qQHS{_Sa)eLU;1;x0_VSdlMmr- zH_5^5*h5(N^~D+A?e<4Ao|az||D>T6LCirs$TKPQCF|?gJoop-I0&_h=1hl>H#28m zpFWG)Ee@1P4pl0S8`mey??V@az9D`qvEPy?)GxQ^s|FzR0Ag+zX6;+8)22`|+t0BXFYM`u6Z-$?BhpPU2*Z+k9%I zf^Y6&PbEhWOZU~S0m&O=_a>Mn1CNkW^EeKS9rdg1U%c2fPQE4+O-ct+5nh#6fqo(4 zZREais+UM*z(Og;59Bljlx1FC8&H5@NeIUGxCTDWK`E!mCuFQ!BE(_5 zI9+fI+CH#C&%x!#Ba0$@(S&Nu`p|5Pe9z~twXO-A#tLAnhA?>X?;d`+LNB3*!U1!n ztMflvOpLRxjhH7*cZTf2!Rx{t2{fBm_MGkpAG%Y3L7f4<)%l`TN%A#1E6>2 z%X;;mve}fkK~mZ6?(nVMTtVPT&fGFSaGHJKa?maJr-*uCmdc;El9Bjcs6TOJ{W`Uh zbgW3O1?p2?ZYdX_26CEp(Wx#@mhQ^^?sY&}WI^+K?#E-@aIq!Aabb6+{8UeoEL+c| zH7W@P^fii@ZM5#=z+TnaFa_z+HyYe?zg|g(rw9_w1?Zmusbrd~5UL>@*^K>OCysrc zggPf5MkDy5&CL*965GYd;^xEqI?MDT5J&k?n2iVAox{U~H!l~AdtV5~hxkcYzsp5n zaN_TImz9DXzga0$%;5PQBY$!wcnj<)Nu^H(IdLi76H^mPiIQqMOiY{XfRhb=`cBvz zTMC$BqkYZTD=9c@yE3b%RT2uhirR&8>SL&Ov`}aMCv>oLuaZBBKv=*R+i>GOpzip0 z6FBn}P)j9zy$fG04Ex*!oiF7+M0B&GFN5?MAI|^2{4KJ*!6qA$UVw}`@8>{^y({rO zt$fWe6V<2RuOkh@IUm3R1Dfnm<~sHHF0FU6tqCta&?c`kO^((V9pV9Hn7zvP9Y9Qz#I7(}cta){D#LU} zo1bZdG7K7)Dk#GQ-@Nrq{p;}jUi~KZIQo}t-MH!;OV92n+lx1B@1L8ds27`q_fvR@7rhP4$T>{8+AVaygUj`Gsz2*rk|AgNwVm(eCd3F3vfeM%_XkD4NKBp4Qx~a`{)PwFI|-qfiNj2 zcs;a1#en}1+_3VZ@0I5gO7pP6EpvcrD3ZxE=f1ShVqsXm0bGi%my1}p0<`gP^uh5u zhW1h42-ZHa;vhp-2%aF?dp~9{%7Rl}bGR*XcDWMycXPV&NFqOO%HDQ=Fs(>b=n2DELlj-9jyx9t9rVNPTijwsfTjZ*p|KgMr0f zSK@@DM@gXnGq(9Nvt$wP@&d28d2Xvdo*jmBDNk%&Yv>n<<2C#2(k-X$6bK@gqud#Q z>u!RumPo`8(L%h6$)4)xRO5=B*rxz zWM92T?`IKK+*v)O{$AEA!n4pP3@Z4_Wk$FGeV-%`(K+Dji@Ax}C+9MR{ftBy?s|Z^ zplerTod}Rvv1772zgREPO+n|PbI-@y1R2+Z$I&dzGg- z!Pu;0GwziAHP*B1IXV|n3cG=j#9B>PikRox^Zb>IDCHj6T`?Vg^joP2!%yG7#eUCC zmla(SY?g_G7rmu;eG5~Bj1^cQpDp#qluu(OdrsdzEBLEb&uiRZm0^Ftnp@h0_~kH{IBHQ!&ZeU>0x-&*&mX=t zUOD|EUQr3h^?0OGLi~q|NVCMy0l0{seXema17#9Aiug8gUmtN#bxKtSWs>-?Nv=Q2 zBtS!2fESIJ2HQ0+bi<$DLzQN>VU32kazaBl@1E@rtLDm+xslr*nBw^X@_}?AAgVUV z{ZS>c9&CGe*Ku0FO)00RJy;Oc;@#u@Cz=G~e^p7^hvXyOrl6U>Th zB?ucC0k+bDX|FjyhRVEZ8clPTQp3VwxJ1lP%}PU_9$lX1f@Lf817=6kL9Nh-X1b4b zuIaveVj+&g!A@3T8BG|)&M;FV)~IP&diudeI0%uWxKW>8^5;F`p(m{1z=PtzG4Zf+ zi|ZtIGKgm-86p@y+Rp(*736gKzQN7!f+^B>b-5LDQb+n&G;`jF>rSAzm7bk&zY}xJ za@>v>sr^cs5dBiG`a7#zgtcb`JcfGzZ?T8QD?Zic4`p?7a?NJ`J>$Y5#}KSm=w~-y zP_JaNurXr0!;A7Yfib{cDm+ML+*0UDLwT$m9V4%$?-Kf=nwCM2ch!Zm;3a3CNt2N8 zVQJ3m*DuyMlfD{4IS55kX#oarFsIe9gd~{nTi5IqUp_q_hpvyyyiEL6&46gEKwoE= zJ(`kiZI<)Ku);E?fQ6ETWcgvz6(Wo?LHuYierEn_{JbTOYP`HZ8_<9HI`GFx!Ar{r z1JgZLAKs`(45)w1P~V@Ne9j)Mb-7oVI(Ha3CQQDpGnfYB1c3P}Yl;u7* z>rLTR!086qqLkgVug1T#7^n~Oj}Ry$6ZMP6TUB0B|6qS^dY)VUh5BCUzuxs&xs6Pp zUQbtub!;X%~IJ-0vDS-lv@p!MGi$2JpbUx^V{QdEbmt!R!TJbw`X;tsVpp;HY zC!SwEB!-msVi+b5Xh~rv93XaR`M-@FT2i4$B7hzVkp2FjJktMEfC0qPRxP|B<0vOoS-u@a6!=Z>2*-w`J^!#bMESJsvO|p0PPbd||>_68QY%2`a8#>t-6jk2* zU(CIASk>FU_6>;A$^@kw1wl%>Bqx(@QBpv?r0{RdQJxj+9IM4eftJEW)7nqUAF8dYRldQ_5pFsaI!MUHYvg_sMkY+N7#|wV zJv@nOmk^OCj?8;|%wxBF zK!i)K*4b3eU;9aZV>B+(0E8&HL|$dhN^9~W%IeK$6%gz8u$S6y1szL0$;PuTk~f2v zmof06Xi|m~oH-Ad6dTgM(7jK&>ml^bpqF^oy>35u`FOm9&W0m!RMGZ>s8Gsq}^rCOq+*VY#)gwOnB ze-#mvIR^a`U%`>)6)?r$(aJjSoi5V%{Z_Dg4@^CV6~C3UyX+d~s$>S4nOvNovD|m{qegZIF4

*0*nbD_j!f*H9`NiJ9uuFV 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 z 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 FFa)_B0nF#tgfx>7M9K8Nt9F4e|dHP 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%0D#Ivl+oXkM)_kbd4dJKmPkE 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

  • _U=*Qg47|X)Ev_y3_^0mZRmre| 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

    3nug})G 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%0D3?gR>nk@>uYTiTep zlL~S$7QQY*&d)Y^G5;*spJw{h56~z7L>-pAjN~N6AIiPn7wIZYLA&r+~ZpmhosbvT$dhl3_Z-t|Tze0JfhI zi8!dhX3D544+;1X|{=-^1x%46a~{FKd!j5yuf7NOqHU;D@A2%2hPIZ##H z)lSe->n*Q;%~Z|6TNPtE*41?sK4Kp+PW&kOgZHzq0#(whE-B2>$55w&$8@##7er-0 zPvG>T)h6A*1yyI%_{-gxG^N z&h+2}XDQ?L4X@421fB#eT9@KE9fjn9DUzWHqMc6bV9?^PoeBU=55W4WB->Ty^(YaNIl9n$qX1`HXza}Y#l>`ew+k-@>7vkWNDO-b4 z&Yr(lL)^bdB#O!~%^B_b4Yu15vihkeJK&=9Dz|sOWzz_SL_01N&8!ZFNKM zF2C6JkgfY1na?3rsuKUpMx~>smMPVL5d8m9!Cxyl6VjM^8uYGIvJo5nP?pvJa~y$v^_uyW%6!mktvxc=rD*cHbHuX!F5T^+`jBrV`*M$;lpN-^URiQ11q})rWc(uy^`y)>WaBIiL_i z#Ws-i!t#^fbyaHjxdx^PFA$1*b+Rx0?IS!;qT&t;l!$z|r8|O_dlMD+T0m4Znvi)f)|q0t^zMrC z+t6?L;>8vvIm!PpI*{Tg!}?p-ty#;Bn^GvC$+AS&UwyP8d?Eq!5saS^jodP&yj%>t z`6UXwl@K~IzT{JjhD?0Y!)zNQRI%`yZ}P~IV-{oe zL;wuNp(5c1DoZ(@EruOHXz_kNgi^EwzDQL{-q?0nePkfnphh}CdU7n6@waOHNh7sh zt=vMh?Apihl`UeiQoF&sXzt@hn0QA7@uO;wW7#u&@2FvN-cBcM7B&uKeYMl~>b8(Z z>WBJ*ghBOV=aPFL>o>9n)s?~RszWWzCvSZ<{ncD!=*Ag?Cxm%y^gNa0&Fh>#_PjND zmHjfM0y^A#`bx9a#);uE;ncji?lz)r_XL+UUJ$h=Jp)~4SLvoCO_6`Xse?d|Z9X=^wKoryC<1HB=+sN~ z<~H5BsJQ_soB$2DT>4?i{jH2f$`oX-6-c%o6`u+jw4uo1O@kz4GTsj#ZSorM=r-eS zwwbE9`K!`CX9`4sU?$mbI_iJ zXq-%Mc65O4r+7<6^Eo;CCI~?%dUoVd+mPoeGYc?(L-UuR+_+E7>UmcsJLH?WDa-q~ zDVRQKXSn1S$!4SCcVB}Of*ylfgqzA38Ckx~MVlgPCh4g&Iosr+&L?X~V?6?MF^;uE ztqgZeP(|UoT_~Ah(!QuVH=TsRK<+gYCSIrKic2r*K=P*U8k+sj3yi9q`fuNHZMNrm zNX3ROQ{Ck{<^=ds zND_MHl9Y+VX79%e+}vH0v+CT`DmE-}X<>gUx&vdBQ*)4w#5EZw$1+Uw#l=_@5l6@T zC)M&#f9nY9a29E#-v>G+{Yt+_e>``d5c@@v1^krLYRWLlV6e8isE%wTTh{G^pDp&#&`ddQ3q_`#VT~z5~q0fvlWi1vnTT zgZG0h@JNbq1*vgGN)Y+n2;zSah_P%y&^vC7-cIB)4f#4-uX-<@ja6A$*>U{?<5bO) zWKi>~!UTnW20NlJ!Q`KUk&%(fLW_^%(RV`+PAO_R3q1NUIVYStw}c@Ai}u88x!!!yl(ID_d?^bi5Q6 z&kBTn7u=WeJU}`2X8^*!dTiIM4#MYxpe3cwubmcT)N~u1qd{Z*4Qa8&>Pj%e>H&7V zRzQDCY+*^mJ)|UCzc+Hf@*Fo(510K%60o^Shj(Nz)m<3;?;_6&O;%$pU#6=IX$0&g z-gb0+CJ4U@Viff@vvtZLl5fOZ7cLG!!_rFf5<~&Gc`TRbfU&(vpb1Axq_@y^Zl%McFDbB5bD9#)bdn8QGj88$Q zJZLPW{j?RuD7^ygiCBPQQoljQrG;ujTMx`7uLp93TdW}0b!|>SHPWk9YuLoo*SCWi zQQVCYD4QR1BhNsn78ppcoE58V=d@K+RTcjNvcs_d1hTV}-g%_J4A3Zx9LpHsUEBc> z-$Bca+=T*(qT$F$8 z(I3J&vfM|f(iq0-IL!h+-YD?#cF$2oa`}Rfcjc9aUNjgc=yrg@v`x&8Ky3?6I^**z zt1E}|UP^SJ+zFf!`lo{~*I|;yREA7w z(q7_k((`1I@26nq{uv~KPUtt3B516_Y8*qGynmVSJQ)?F1PLJ&4BPt%CWVvhSFeRz zym+Wnpmv+MU0Bb0>a810VEF{R!s&h2fyIVXa?AcfqQ_<;NpukgAt0#ysyx$>lQSa+ zEG-Ke@3uiqao?bxYqvgaR!9@kvKq~EP?mGe0Z7(`RVz&O4VCK8Jq*1?eX}Q>>4^9c zZkBtF+7-^lQ)5})T|>HLF3|*ymeT?2dp>6Rg zIV+_6c7=yi>}Ub$?`-;g6p~BXbooB3B4$meRVLPR-@tXQn2by=4-n{jEsu0pA>kU-@8yDdK)de;LUW4_AE#YC<0{dsXylnXWvau0og zaZ(6iD>()$4B>4!OGluvc=$(|Ha$=*s;y+#zs)t)N}~i)gyJ~^v>Y%bZkT^a%}L>j zl$|Ds1~6nz3WH?gUk9Zwh?RFvjC{VpN9?*pY*s(2dl&}W1N_<3y+hRBmO;U0l4YjI@J`+!;lb(<-Jr*Z*2ovXm7)Ey-m*22EK zQOoizgQXcXJtA5j4uAjdjQe+-IsN-J{NH*(I{u}ktmsB#835jnlq_x@IVIs`{6kVM zfu%MANx5-wV-`rt8h@6Qjf|!D3=|6pW0QG$*+1r{k4tma2sQsEDHqRq8P4gMb7_SW z>&zgja-*L)$+ldzpE&Tiq#3GxfxRF~=BGO&`B-!LrUe=LsAo5oUx#v{=#`A^8%bRB z*Sr>m$6++i|7Mw!8XAY*D(G)f3{iv)O9{wivG9#u!>75GH?#R4#N;P%I9v#j#mkdf zLF>W47r1PN^UquS&WKCdyzmRXrI+<8Fe()B8T29KG}2zM>o%w%&11P0&dvps;wRLU zl$I)d&<#N-Dur?vFiRVoe&NL7+#xOXR2k0*$8e&lhxJ@hDb6L)sX7^VJy}UBJO+4n^N6B^^l!VjD&P#sX#J|Flhw41>e%FFR zAI{JcHkb9M`S+7(tQ%4uy?Cy6B==qrBygP~SRdc~>)X>GFIN6d50E`*Hm*=@vcRe# zM41mj55T77g7SNEqr$>>U0qg59|R-^bTle+{Q?EBrB`f$Xo;-R`%O@Wf3t~v?ZW>$ z<-CIz{yxmJ2~tRytq!Pf5KGg0C{2+sLHH(AySXF~p_Ano2;a1_AU-r$rXSXa6Ndar zP|nOjo-Mf*P{R>Cu)y|s&?eN*VKGxvEDyEfx9>bJVRC(N;cv=PcKt?h8VclF0=&^R z!$Vib$zeuC>ZitY$`;cbBa2BnrF^fdTT5RNy|@Rj)t*~9rcNK~we^_g^ZBLl^!l&u zr%D)$4$CijLip7Qx=8rI*nP;GAA2A9+H3Wi(Ni0LY|fgV(vneo>8zEY3AvGuUg7TL za{qo?(M?|gWAS<_KaS=23t0Wv3W#E}{s&|I%B06Hou5*PxR>=7JK|+;g<5yWv?szQ8Q(-~N8G7;5CQK4mlABXjX4 z{2Y2~3LH`2Wxa*r=}jVGiH)s4%3U7D5I(!hiU}Mk_z2%xT#2r; zpnoEbsJ2@bCb*0F0b&5Isi#iObKi9^JK#fMLT&I}8>NrI2xAzvamQ285mo^VK%BGZ zdEx7(FxM&T-D!5K+>A9K8!H5G@m(-#LRlziQtG@c zM3U?`V;J)cUVdTpGwSM>>~W?notC4?KtzUzk}*+P<_<2K_`#*aSH}?cKK@;bN}Ww^ zZcTS;S!>3O=SO{GbaV$FwN6=qvrH4}FLl09zaYH(qdjBZvMXTsbw`-%ExWGOZv`-e zx`aY*pC^*)GYC7ndAy|Ru-`0=6lo>g#D{ZL`%e_#`BZ1#5vZ20FFq<3Zi3kf8~sR*1%6O{)!*R?%+LfarLuX0c^6){Z;SOMfztQD$6KkjIV*Z)lVF_4BugUp z``(w2ib7U25*eRyff+B@@v8VzbQ=XL?;@LeXbp`rz~>67W$+HcGd3GQtEm(|VukuK zy(|D`mv-$A6>)pW`c2S09nKAV|0jgI>P<+%VP zyYTkyV6ObY7l+S}5US$pyyP#Q&SQ+4kGt6_VAzRL8a&;D_1_nbXL*%gco$T!R+KMv zrEJA@1Nt&j`FLN-@$k-rNb2{$%E;k1c$dq_Za_vZOc>NXcHROq@@CecuCkEZln&*; zEh9rgWr$8hJ*gI{!7t?YCpS@%=N|Oc?oM!f*y5kJMfDn8 zoE@*ejw}=uhpI0vF^p!($Ml=&@TIdj(n1dya3$aZ&g)TxIgAh}(KH(uyLMI2D7kE^K_i3Dm+W{? zu^(slpMR&d)&2#oeezB_bc&dhpjP3}g)s-x6Czg6TD$^!x5=X$7ot5!4b0H&-^UrU zXa@dK7ju$U@aYTIZ5@Ghx~Sk$xOVbe90&6JGzS9o#fx(sOskXWC;v(}w%E9^Pkq2d z^Q>HWjr#`}JKHh40F{>WSfPQ z{BIrNjn>!})=iDy^Fa@VBTk3G;d3l!J3_M?iUv_?5XCEmF5bP2k*fZ=|2rD&hQJiAgV|~zaCICJWM_FVYZd{2?I{=zf5_^}K= zEjI1~y$5V%SngwMd<3n`ysx-@9lh9Hkb`FOIzWt;vU9oHZyhw>BaLqMVn2Iq^+Cd< zBQVV8@PeJad%GX34uU-H%L3oWAT`#%)AAiv5co6pgZ8F{f0#gjt!)DTynxYide+Gw z_pQejm(~8n3b3S-ua^Jv>twlf1dSjQcsL&vcqQ}OJ;Jm7Z&jUVYft>GkgbW4q@liO z4YE)*K4)v`z9wM96e+UyAQ@c^U6)s9$jUt2HtwfqJ93mf7EvI@Q@F*g2?j^6gC^1M zpsz!G1(0YQV%@*i%4CDalBt9C4QehT&6g@Kv!;uz966R=6Z$OEBjP`Jzrojt-_~P8 zLM}>Go^QQZA7yEkNo1KT&G_(IAtt7OCU`;T3v zq+m~f>aM)J57RF}govmVCG_C1Pj;4nw@*eCEZ@;M-BK`{6^QPQdEx_l(Yr+J{e{ok z7P3MjzI^>wE7Rce{(P1*ds8QiIG|^JxTXV#qOsniiJaxSN(QXUSLsN&?&k$4C`5|m zqTM@nXMnbJ1P$nYPD7&1goK3Td*>0tTOTUvbXVdY+d6npfG)&Jx^^I5+phkQGKdd0 z9mOB_m)nby29R_X$nQopmfvizz3+T6m3i%2!NyWNc%47t8``n0MOtq5f99F~>93LX zLxg@BmL#UXk=zB*FOtJ|fT8goptu9F_53xa@5%BtO4DF+ayU=fG)hu36Vq7mrTkcb z?N7Ie)dn5+VGLmSYw`y;!(#J&^&MLu08)7$2nMheYLq^jE2~Kn^U|F-f-+MEH|&$V3|bDfE1H{{lj?&|KDo?dHW{hIgCVbf6kf?etM z+NnocF!5*5T3_o~2O$wV{mM=3S#B>5^oS{NoMZe(KqsP!Y&k!j0hKr=6G0NRc1ubq zKF+xdC6+@N$|o)*B*~FbV1xq7sR5K#7QmZrjK#YC43<)8=LPb8hs8|fTsezVAG>X zK?!rp?4_Luaw1!ZH0;3ld7FJNI8TDUayxA1v5k&jR7tX`+GpVvI-{CxdhbOW$MqQv zXAZ}cqUGG#r;U}2Qr%N$uA_mcE(c-@8onT_VD5wxFk$Dc+6yXC?;so9Mb5r=1f^Vn z5OMNR=nmkoTGg+KcI`g6)`e=r_4bJVmUs2@aH#}x&^*9iX*Tc@G?Rn0mIkEjEHDo^ zM=kf*3;lIySHch=V?yJQWfOJjaS6VN;vYchhitqh)@Q5%MWmy)$Y$1<2A9q0)`w_p z+5*l?M=vZ+{XSkJfeTkJpqRlenPD+bCZDV@l#B*d_jqM8XA;!qgHz!K%=#3dK zkj+7;46&2IAWM>dZxuI@tH!Uqw9+QJ?3rHRjyRP&ZIzM`gg}D9HE=td!R(#K5ph7x z*C{4-IgMAkl#N+qSj8soV-N0GoHhTPz2GW7uSyXnxW$s+R>B^MXeb`bVCJ$-Sw@!) zS%t&W#U3PmN#d1xGMmwep-;G7I3M8GC1N z($^jjntiJ;yyY=Tf#E-;iXz)MnGk?WjsQan1#IGy^xJAwg#tOD>(%x)F_6OLz6MLyPO!CL%-&B{0Ls&XnA?}r!O zDE3YYJ2xsC6>F%e%AdNq_Q=tNl*O$YF5E4hqB5-KR3dv-rrIi^aX4Ja1;*-8Hb;9# zt@6NH+sTPu8ZmCpva$GRpWjW+gy%GZs#mu$MC3TDXR|a^dlY=v4u`{E8*}Ez+CMFF zOJLj5s*ZlL^9`MHyV}ot-kc)|$=4VnREy@)!4RF0r>g{yY1!=DV*~G$71AT zR9x;((4)ahiuQH-nG>9HUT+=wOWa1a!L|Y^g9wzc<116wy3O=_C~8Dbn8LK)*mul*8mmEGQxxnvYz zhH8h}L!cmBWIFL;@(lQE+P?g@vld^9mU`YUd^nun2zd_h_Zd>ZbhT)_bD51bq<=UP zl2N+83?8xO>5LC|$)9mp5ofXr4B4~WV|$G!_OH3I84X+`(ro#8=p|2`e)DwS_x!;& zvy$Fkmd=kKH@F(#+sLyxe=wyEgJ%*Pyk}b6q<;Ti- z09*QyOdV6ciLlG+3;)uRX?q6-pNo29r8SRXFl$~_muXg>Goy~7%;Ve8L8FB+ zUP7wgY7{Sga%~l}iQPQ)#z;}3s+@MWK-PG~7q_n6$1kX6+%G2WQTZzaOItQSlt_Ig z8$*N^*lS7QooJ0T9lM@~WF|QT^69&nA^>?$*b1 zlE(evxUm7rDaR4{8J=Wm%Hr^}tWt?MtiFLH(&*vL!=8^y!Y-ae0>+KD3Ac-?y$DKY zHa&3K%WR8p&)e01j-w%G>#{cql<+jGvlXRnv!IsZ=&~Ml31SeTP4R}=ep@8bN8{jA zc$3n$D>TS!H?Ko>SM#+zR?5yuu}7riwMmPB<=G)`*Jr-{uK)z4L%4(TH)cKr>v}8- z?o}`@UqO;=kF-3_rS1kAmroa4uU9naZr+!QdS?z!k}cT@X&`=w7Z+Li){B~94@y&;L8=GGhf0_8eu z!0`wR!!4ZJ#BM9D3cNf0j2gFu^X@E^0mVxQ)a^)11UmIAs)sjpLZXNjQM%5hzx$Za z39E2rXZ6<^1>Rj~(g{p;ve2C{fKk;;Z(<^HnVVBz3^tf-zK8^+syW;qFAqxt1#Qs*l9Km z+t8=FsvuK9Li^rrLo=yp*~?)LRw>uLVU(0;7>U)cm`pbK1xM%I9DsJ|7#xl9so;9}FtwxbH`hZOIuS_KWbn^cVAdrpmZb_fWMH)&(N=pi z)_BTkYbWJk(XvC7n>$oNk(~V&pY5zBcg!Qcc2eFT#&xD@ZrGf%z10cU(8UrYE3-v5 zH49P*=9k!ju=v5TtdXFQF-+~XW|*9i`S$l$Xw$nC;MtSzQ#jb=xk2Piz6GvAtHX2z z+V^MsI4fuQ5oP+ft6zFg9p2AZDd=OQa3Z$s7sQG$5vp`jk%VS%-6=i#Y4)WH&FNc% zzh}ip-yrX3bTNB|h2+ENn~M12I{fqrQ9){*Ni0HUr!Dqx)@`pY)P_3uorr=%!|A6I z%PI98qUv=VzAK$J3(<;g#co^JZ4DkWqzc0#J#n@oW~W=dy8KO=zPw)k^?n4fGPLg> z-hA2kG%!*MmnZfs)KGfF`H|3@nt#4zaEd93?%06pu&V0G$^PAfQX5W>-2q&eiLIA- z)O`ggDJ9f)A)7ggb1KE!FLUPE<2E%Wcl{)aKJvcf)oGgaRy~ur=h4qRx%XVC6(NBJ zUcY2-m;`@+aE11l@3x=c{)h?suE}H9xuENIBY z(iARzWL$^*awvIT&Bj7gZ`*bwRH()N7&L~X4=N@Nl7`MBTC37nHnv>1=jUcy;fY_b zT5(B5z4%BT!7Pw5tC|0xt&*pjg$5Wd4|J*`Ye36)YGuN9FAW+GO_Tk@C3k*%T}+VV z9pdLF9eJX2YVkV@Ad(r#i56j87jB;aq1JuJ=otOkpuhboc?e3_%_v!tLDRYy#9Am_ z&Ev@rl^&fp- z{Rq)!BYCBdT*KpYv3t+2X55=?_mUW}RrD&X_cgBF7BbUJUqY8HBihGn|X_ zt=H`mcAYwnmN%1GHW8qsYaluj>>gIMaet5nKzQ-fGB*P;>>OHsG<)9S`w`PEc+`AV zW^-KFJ@z}HwgK&HlT86dlt;d?ECvA&fK0Le)&1t>%#efu8Wt2K(~Rjt@`Fs#Fi*36 zgVcIJOhLo=mWb**>QS~cC0ZZNCRr-;Q9Mux*@(=&+*}z1eA__0;#bWS98?N?-607d z*yz|V)%_E1>oswMlF5wN&~T3G=&XKZ41RZGxn;yi8`_ds!1G$ko<+Jz*3+_z8w|kZ zKYa77KK|5lLu>ST02Ifk(?|r}0x@tzS?zttip5BW*p_R1z0k!7BylsRlSAz2{7Etm zK0d<8Fpd-**RinoeD`=|!)%n=)9fAh$mzFvuG~$U`ntHBhX>fLPb6U0)1!nVqc?29 zM9wWDJePTgTNw}T(iFc57(b8YG=9w|XmmTkVD37K|M19x)QZeK2TaeC2h$7DDq8$E z>b8~>zBTekGN+Y|_C9(~YE&lMe?U7#oe?)q$WN$38yy!&VRYs%w8S~%<~O!ofzOhG zomuH2soJu+c(cGjd*ge;R^#csgm?ELZhoOCQxuAbtqzvUP|o@)S@&n0!|k1JX01N+ zI=AjH2NenM7MD|HStB6FWTmA=|zth2e^+JV7H50VJEEbzDRm9g_xzpae7Uh4wHG0%-uu|U{Zlhscc`sS+-8zv zrYT@RMqqGY)bH53lw~U6F{H;9zytW{&x*{2ZBHR7OANAjhC`c1szg>(nQNZe z-rOcVQ7L<)3CRpZ#u0}9_T?lElhN&z-AD+q#?Fr@7nsYwPYx}6_;JK&*b@vsj8vH3 zCpL-{T%{c@|FQIxX4On~{sFb+Ql+2&G@ zREULu_0AM4%igPpoR%da@VW=AiZ^iA$Y$R`l90Iq%k)3i0HzfY9}sIiq%1UjkQ4_c z`$)$9Jtzxi#setX`mmkAyIF~o2Q;ClFW@NrJSqyy4fbTxB3EPZX@xXdtWpS;1k;!( zP~DYQ=`4k^^Y3m~>b%6szcO~myT(5$1@eL6$ZA8C7)|}Ia`xP@u+1|}QVX8$y7emq z!ZoCKV6S|0bJ%qv8ssJQ8I&Kt`8d8hFj&1r6nI5*L92dGWjLODO&eS`c2w=yZRKsW zU(y&~Z>$njhDe=tuVP114RQ|A=Ev;leM)WjVZd`v<~vX`YT2G#^xH=3)Td1rfkvT# zO&>$S;}sKHs9`^QhPIobRyossjE}USQGs!+P1VKQnM4oK2;UELVn8|kqN;Z2L{s&n zL_fWl+TlR!o&|qbei zA}=0eHsvkoX{dS|S3>v*ss+C*IN+})ijQ%Izq~fT#EOy`i^_N15Px$xGibmmAqE1! z?US1$)GY`kj#?W+Ff$QG4!E33k7A%6vOHt2t?yRUPd!A9GI#f-m;ak6iXS?YJb1NP zgi9Gd-jQUWKozJJ4u(q1+_%olb;Z5Ca7MQiFb^2*e?g|e(p&X|V3B%~L1?RpWZ zG7#5sJEJgv@AzDN=|-MJEb{IB$Cbs;(##Mn{~JV40-j!5O6_e4>SiCU>=jjWTuNPw z^s0A!Y&u<~=JIuGT&;I%N%uN|Ids5zrshIs&Hbs;4?q8)KuPc;OYzS~Pa{5jTdAi!5FP4aazv|_LpM&N4(8w5 z8D9_)honLHfB|C&HM#OP()Cl&B(z#cSc}fYSO&`ow?H*n$ONOky`mIoJ7;O=PQD^H zy}`dx$KNl|dLxTc_@TB~FewA@%?+dVw8#a4DO@iO^iRj4SgRNA3P(UL4I28}5nAvk z5sotW{ZC?O`rrAJ+(Ox#@qLo}I&Wvj|6wuiyc@d_QTKllot)r->+BYOvy{(h1d z3$*bpk?EkF9&XnrcT0KZ5eD-~HM`cWm2WQ*;ePXWBnW?8Xa0`*(0$XcZYXGNE!FQd zV&z;R?eg^$@C{sGb^72Li2WDFaDxDp-STgb;YKl_f6_z2XWqAaCenfCLmdq-rwZoF z*oRCaFF-d(f3q<3W0X-qfGsB(9^!!K(;a{l0oRBNvyiNi(D^ z#DKtUcYqSOxsLv}t;x?0d2^X{vZC7ge~y3B3NO`aHfcY>a87Ni{2xOJ*e}8Roj}IyqW!1GE${P3SUnJ#FgIbqh8z z7j6YFETF%79d}4rX(dJpU(~msBHI5-YOCmJ5pWuqz$&KW*$&g;0{cjLrVq)kkJ~oO zo%<_iyD}~3k5;x@mov8yXQ7VU%|T-EAQwFE&Hc3Q=V@t=s#5UTQD%>2Zt$$TvCZLm zC$Y?UsrXr=^T`*c`|&4RUh4}@-s0RuXy3sW-HrRL;-HS$SrY)q56sMRia-XoFOKyN zs8rC=oLKDj06zc%+x_lW|K^xyk4|(Cg-+PDs6Rze^?|?=x)y*k&Olu@$WSya!rf`B zjox98EnY>|1A+1HWAKoEp8`cv`pCgu9mn1qj-YA&KG;z*0mj9T#peWlVCgbT>IJq+ zgR|vW!$sV7%jpBLiz8#?8UtAGc?eV@v3%|70-MP)$qRM=RV~t^L4oBkk;5HOi~mxN z&I3m0^_5d_x1T%Pup{sXuw;@S`dNd?h>4L>eetO#kID@({(E4f<^~kn;eG}ru^(d^ z`daB9M@CG5b~TcxoGEh1IL&-Sq&dRsm8YjT$Sls<0d-a?1}4BIq-I8r|W-p~evF}BvP zwZyOp(Git4F*$yIRX*hN^XYIq+}RI8$H?^B>6 zlO>}*G>7j2g#|^9;xebXOWljT745YB^U(LFxfA}Uyv&G-od$s;_fB;U-Rx5dAu!LT zyXuCEJ&NCT0U|2BzyM$bhSa{`h0<_1M?x!|@7d1xF2S^Kpj619h30R5Lk5{Ep znJG~4gB)p9gWfNf*#&x?MjY#7v(WW7onX5z+hMs2RL01(552mhF=&~S9P%7uP^gw~ zB(?QrL&X{(j93-D*E-`s;#;Q-^Jh#0KWO1M!!HDlIt8|q65xx<)E;@|IKVs61O6}Q z?j0&f_)Us{NO3*DUW@72&|e@U5CQXGt5*@Yq|ju(Cqh~0pilNah(Vb6dI2f^>j@-p zne`0obtIdI+EzkoMtoQQAou4VLf4MpGKy4;!3A?xI1fA|;`MSLFmam+XsX?fer!it zzxzOrCV-k}_91`17*F)0V*HvcmvF|dz7`**^rtK%4b{7pC;k@S47JGVrC1JwY8IVD2%%NxtJ;abcB^YKNqi< z$2<>-7NQUo9p6#4ZJnEfyjixnPE)<~)O6RerSxJDbd#?7ZOt`qroFUVnYJ!{MQvLr zN%!=~(E8-DORsVNmh)m`L^zCMS#%lb|NJ}T#7nIv62D!{u%Jt)Xu)*5B2pHvi)8>~2CUjud8qDS#5xPy>IdwxexYRe zx&lubr=PxNdU0n9%ndBSM!{{Lw2qxiqSL*#wzbbdB%KgQeGEEms%3tHsPRm<{nwWL z@y9n&0*F93r*bq^$udc!u5Q+=YhO%#2XYvB;QPYQk%56|8=16{><`)f&W!nFs#2yP zqJ*W9%T>ORSiARGVQTD$Bd?$J=cd}HmV$0{57kusb@k~8T^<+8D4EO(bYq2)3`8Tu zd{THm@>+*X*U7lyB($w_k7gHJMFK2+@m-BH@+j=iVHB_)%6{_l8as+yvT)}|^EAS_ zv8B4EcHP!B+fE)gMBc^`e=RQ`Hpy+ro=uWUpNYFzt3`(jx$}*+>kr6=NwDi%x1*25 zWb5$si_(V=H-xex#361QfkY;OM<7u4m0i?xuS`)UUe7b%)b%@l*qpKRnFlCaQk!Y* zE=8fqOJ&n-m|SI?F#Wn&vpvFdI5`?oR6$3$mt=#51|s#%Rv+lx(o&2+<$1s5 z`S?3qrW885L6%)fHm?DgGYH)$5LwK^M-I1PwR!R0;22?plJbzPG+$w2Es1QQDdp8! zlI_}OxC&iF4-}@rIb8=WMgl?6PfxHBK2-1tT*lg_5Fv)fXbvX?#Z@F z+%E{P4HHD8g#PLXiT>gUB}evoWOd0VqS{aZ&*+6d^1iPd57xH!=!s%P7WCc0^K%}_ zUDOqXY#l{TD_Wdl^(7ijjVPmh{hE|qe7%#k8bBhJ|K zs?{4Cx0$ld=v_38{7IRtg%zhx2Zgs2z6Tr6BZolT8EIO{y6Ve5Sf3}Gn zfPJ}&*>=DB!L5xenI%xNkt-O;)C#;Ei;&EP0jLOjV2HB>r~DXnT~%M$&ejc&XhGF^ zE&^K)A8F78SRrOhP|mXc4|{JJR`t5D`_c>=1O^}>As|Y3OM@ca-6bulG*Z$SfTYqW zAl)%&R6=n`H%O<%klxSGxz>7D=-K<-`+PXp+25wu{2(~u|2+5aj%cS*(HZA3|Ht6Z^-S5-n<)1qG{Y~i1ELSjTA#B zS`A0xU83Z=2Nt5vk4C6_c9awW6Me=icAE*l7pL98GwlO+4u=#|^J;T^Y(j}WjfMKa z*+;aS-_S=dtNEldy@gHG433#k4ZBRzSCwR^WeFNXBTTu^P zqvo8m9ohZrLpz}pHJx+ST|?!)+5gMfXk_b9fF7f>v8KSc4RlB?f$y+E2Q)O!9&5M@ z5*D%ZbGI@%Vhr=jmJ=+Y^z5}xye!$lyx-YY!s%m7ot~43b(K13eXXfVXO_I5RrXLU zIFP{@bqqkH1{CTzb#MCjW<6+TQa|cCkyk_IKip{&&5$QeEMz3tAX=r~o*~2XH8tLf zeu=`g=}`TDfk*)u8suw973Et<*u&(-3teOQ(UF7~LPcmU{9qoQmd8keu`-3`AmFMa z#EM~Dk6c$Ev=mNm+2F~!tP(innrbfFr(AGVP>A@t>4iC`YbXnKZfC=?(+8!9rPRd1 zfR_;mGthVHEEl{{FtKF+0isvvRL!tK0=Hs~+=ywj5_uOiJd9bNkrpOqt-Bv$Z`t;J zANXi9CK5T~HBd^>v?2xqGPq}Nh@Z$n4XPC2j9b^R@6X5td!TbFsC?WK;^m`FDUswF z7+8lS#9gI*R3CkGf))*}fz~+1OjJE4-Ou^#Q?JVK-0{RCMjdm`{$M&?tQGHO>Nwx$ zev}9M0~H@>sWGO~J{yvn42tyLp^Epx^Ll$|y09ED8pmc^BTuk~KL2iq{HBu*1D_7! zs_n3PRH&l?Ls+?h=@ zc?Vv>Z_tZaXnbOu5dXE?(|F2C#_dZ%xW@^ao_n3kNfvh0lzyj1Oq^mWo_{wm5jnZE z*T)@WhwdoFa$IePz+BR^w#;Wbek8C{y1W_;;G4b?ymyT{@}iJhiyIp$d5a11SX7Z3 zcl8;E_*wtYD}?41QFX=I)~FmzY56pMku$exe{&f+ zO%lg9tEpS39pO1mRQ|J^!)zOf8vr21G!@wBbt}VjT+>m3!>EsCZbZxn(|o!)=R=k~ zowc$M(#o(@Mr~Tsmev9@hG8@6qx!CX^7PuXUDM0U!-0K$%la`lK{V8Lv1jtDj*%Rl z|L(tIrkP)ui8AdEn2DwpU?y>ZnIIK?7$Nrv$B4r~GgdPMCOqSeO&tnWd<^KOqz`3nC2z8M^ZeBuy|G#0rnHKL}lum9-y z7Bc}O78Y_4)q~H;(@*pKjWD@MHiUG$Ln_@)I`%xP8ZZ7MV%qZHx%Qs`(=VvR^`D{A z)t^vF0@FN-q=+l_RK{5egQjziQfVrFgo0gR9gCrHA(%AHA#>!4&cO2bV49jMKQQO z6)rSU0K98;Apu$Hq)*PJHmjOwnF?QVb-hjrT$hF^sgO?dCpsaF|&nYq6`JGRvn zPc>pE9HOBNY)n%FkUlqVSJTa-zp*A!!k3GtTA!OpN>Iez=3F??)%)a30V!?EEdh5c z)%5_mQp3puFOJt{D~xD-fnVPk2^e`tg9t+o%X$YGh@QTW&Sju^b0s5RxoWBU%Tq79 z-ODY+s98TYu|*y;)~=WD577ZM zQYA`MN-q**T*xx6U@iO$xeV)+=GPkUm6tbXUU|<4t*>@22n<`~w9bP=gfrf(zI8TO z@=fDPAFB`sThTO)S$oX|b@C=AkUnBhcaDshZnt`e>2NRh%Ed=+`mcWyC&m}N&;ULi z2dV5i?FiqvgJF9+aKA+Md3tc=>N4Gz%vokU`570gpiIct_*j=yz}O=&&$1uiYRC#5 zoSvm`eTXp}6{=!H9u*Hp+dW>JfJAi3TF(d+5w|10@OVY0xBi#Fsrqg>#)%4e`-+sg8(Psh}bA>=d zc_S(vQcUQpEQ`-`A(gqCx+Ml%_c6dG*9iYS-u#MM*wc+vhnvI8_a0(8z?Hsr(Juo2 zm5xLSg-)m}Ow?M-(<5f_d-y5h$Ko^gZ+uftRz1ROuWnxmYfV&-zdjuJxNaIPBbsdM zNPCbeT9!Pb!Zp|(fq!T8YV)b}bR%yq5xOPU`UT-N(|cHi>;=qCRi0I9$*scx#{v%o zSI>74gq|3S(XVsKv<?G6g<#Ww{p2ZR{lDfafkZDYOe<&s5$G` z`_tNO8{~Q{3O)&W4Iy>0)s?{;d7?cFo++FrvC}dt$}#dA0GTR*5;~PAiRDzQlB{jo zv=MSI66Lp(_?!z!m-DfbJI*M%+|-DR^8mUUT5-~Rv=?oQ+kmAsoeM`^R74dtn<35? zhy2;{o2al2_^@_|n^(ID{_BUJh*dxS4O3($hfwc*0oI{1c77Y$d6^)aw1C%heTS4Nd7 z?>B*`vL7!(=?j~R&BN?(PmPsmi%jRM2;fU$!C38edR&SS?Z}LqTZ6L}q;f@&T#+96 zYxXm)7TvfS-)4)~@KSPdw@%QWOyFkL3c7li5u|X_z)l8%c{sW?Lu3@#A^g5TbW!3l zx0Mk1s5(MHsXAl}w*~cl;coE{x0Nzu5m$Ebx6vJ5O;%SFUfB=m#lrTdpubojTcQfV zn1gcQetgf$xnq`FF8s)GH7rP%vedSkL?meaYd`pVHBO zU!oJ6VpW@Y%a-Ben0885`YoMN@mi_8UxGUPT{g|`BLIJB7{V|wcmb0-yCsG4TXiwf z6@Z-;YD2+{*}urmS*u#mR@Hw8ytD#Nx19dJ3#0x|ARvGl2(MHAjp6D4WO)CAP%!6q z|DSdt{IRdZ{tbAP{C9wd6dE4PzaBFMc5!~XwOo-%cONi1^>?(}4>$elF=WNEr(_qQ z+Xj0*5;G^%+xzp!4_W70nI7JLX7?{ygn#-YII)F$?tRwyMEToS_1_{c?ke=#m~(C! z+3x2{V-J~#aUx9seH>Xd{|}IE>M@0+?4M?+-GoEJh=Ut~4Y|#>l;C5rfEeZs{Rd*G zk1p*0$E|ai5E3i#{cmC=qJw`^=Yd4vL2>8+;%6(L9Z}#b8w6!H#xR4$bo#= z`tBr~<~z%lqC}h7_Y&{8OmkZJ9=2REJ@mhhF$W4bSHX+kPeDN&*%AMxgbD0l6=Mea&Beq{M)U{HAsyn0NRH`fNC60}z@1 zpi=5-TH4KPz%o4rnv;;z!{g-^kIw+M`My~-^nuDQBWXqQ0&FjT2V)0)z@Woom-VoK z-)T%e@bcV;6xS^dU>`%EC9{IeQ!=${vj#2&Cp#4tRnMXj`CX*wByPqxqPojg4*HpJ zwU^ReGqzj5NB6zZ6TO{4&06^&zwbF)&WCsB@3WQo0@r-0cDGT)Y&XNLY@|q6?1T*4 z#taL5GC02}KTo&{J(3VzMY;nN3xyiYzRvo62YSc{Ag^;>p6w_6+-de*z+uzKkyCyA z&!ok7Z$XmlN0N&-6)5JRO%Umcdm%b#;Zm$ynihA6tl>9yYsWm=18~e!tzQKc2;5Bf zV^K-7_Mlws1Gw9N>E(X(Z$Cfk>d0fs8E9Qn0x5ZbLjseYKPNNdzm1skaIT;R#03NT znHuaIgVH4JX}5gsGGmd#mq4_CiDHz0mz?y0+U;{shhNC${d?~zV8!Ls@4s9t%+AxV zuzWD(-uoW3Ips?~#;Q~d|8PquwHeuZ1?rxN^8HxorJS;WfzuewT80|-{Vkm1+O#DI zMnU48CaTvGkFbg8*g+}2y3%ND{pR9YAi2x*RDNt6NaREGc6lvI~umAqhCoF~J zULfu;)uk6z3K~IcCjI^ij&R--4y*{iXve;`6xDQoiVz~H0nN!QjU8)vqZPL<8vjFb zrnBNSx!`&P3h`a1$yya8n?VmAU#)(X8Z?Jq&0*?M0t*bSu_yIm1DT2-u`dD~s6c1cRzpW%8 zS7mr<#&LgpCQ5|OBQ3%alWX8Bpq4*{t9dt6`;GSd`>eKhcFIYN^8F;Ipuy}tKo@M_ zo1}%_r21AD(mNP~8$X(oAVbD8E8jRSU zc63Nd!aYIu*u`?o85&;;5V`oVI1m@RA&sv93&-@~mNPiOk>SbcRJt9|O|Cb_qco4h zPzPq&SvF_#Yn;GZ654JU4k^aM0f40z#jjd0&GV?cL0t_&5=t-ZTdZdeG5wr%d?e%s zO71cj23gDPn53Ia>-+ohQqE2@6$Wn-iaDvqsfHU|?39mVv&C9RG=MKvb>Rl~DP1PE z)OJN@z(jQbFL3e<6eQ*>U*H=w@@qAEt0eJQ-9?5@sBQ-)*qSOmjias-;FBph+m)qy zDH)Jm&@(i`W3cJUqzE0AL%lQ6qe^bYXVV=$tohEgGQRWWaMcQ@$~)t`BV_}+ip~)Q zDub1qd(T+%*Y&sak`NT_aFibZP!YT6g8W{ZkXVwBDO@R_QR*WyX#%*yi(4y*tH26Q z;|~P;v_%9+3MM1RCW>M!F=r}({Z^SME>0_ICChKnxMS=_82eSLp4caYot*S~`6$Lx zbo{QrUoy)x`WyrS$)8-{Tx8z2=w2h(^Yixn#gMpj2db_JKG99Jf2L+chj^O_uW@GcKTvh={zL3=5_a7(W1p{?mnbX z!W#@LBQzA9Ka>5C7hn#;87NO=9!Pf`ErArXVAR=H$nv%Cj5ZT1%KP0KyI-Wjo_ z`?|h*x(i->%Fq1Wh1~b!`tmC$T9#S|!ARbx$;o+Zsa5yXT}DcxqKo{N)(SI4TkJ9_ zOc2RrBNHvy8%HOMPbd9CJq+tyIO?Vz#2AD4nuv-NMBxZ4&mn?dJmAE$4R($L8&krt zWg+io&q7NfI{2VfZKh_x0JxR}oB}%Wd`F zC|R5OP;QY^yDIB)t4=W4*_1_v#Zkf{ZhnO@ki$4?Zh|Z*P``%MgNl4$CBSHo~o8UPR~OtV;ZS-ZPOAuzP>SLG8H&FuiZPqvCgRa zg40CPlYO?>%AqoTr`wBkfR6TU%$jgRZ`fRc3f{_;Ffy+}Tf)2@qvW!KlhI0Sz(esP z8WRsXHWlhlZE)Q`{5Gfxi=2uj8_Nh2-J97bT_%EGRWP)#yN<%Em64Zj^NGtT&(d)9 zEMSxkWrfSE_V@WO%$LZ3A+f@IvON73A5E?PK?Ll{uX-z=y!?EJv`>3zBwxj*$UeED zFwIRlPt{j|W5qaz9-JoPRSbNP*h}$sPf7Of<~2fT(RIhNhMunVc`%ufvjIE{$c)Ab zOzAw zlqmZFm70zx%Uf2;=mP5+U+4%eoybB_2L9(hFW^`Kj4SC(qXhNV8od;pW^k<5&B~9~ zAW5nFm?Gq$x2S2d#m~p%lF_D;TImVCG*s0r&-th%v;M)iyCNGURsCQPVXjO5)ZVYA zfaa(sl?e4}%&t=Rlf`M67X$uK_U+lf))1KHgd-+FCA~pfqi2Obs0WNZvOGJVu$IuwBUA{g#u&^A6Hc0IoR~NF^4tdyE;&xmP8VG zSa)!5I zrC96_jD;PEcK=}b$FWz7gNl?p?#*^{!ckSJ31{J4sFb}{xmN_)8$yP$QWqON*DQk` zT^z3<{b3J2uoaH&)Jvjy1tle+ZCk(zFTjDt8T|@V5Kub?ua!By_^shWN$QZxLT_aF{*Q^*?7&uwT_=l$E0~Hcj$Lf zhr-!QnBE))ce+ z5ip%5qXM>duht0=SWuOCX#KPZRPYawr&<{^P#tb0?V$;T zCvhwSTR@F1Jy{TFtQ4tPM0)&#B4a4`N!B~~z5^%h+}ZpG-9Mm)D@rI4QPF8nz|ohN zf>V=L7R8HJ4UdA8U)t;ONVxNOWj;s2HIIHCT{Q$KfGGD&0Z}|b3Z8Ywg|pYPksl^% z996oUryCC$cJMTrJDE2`AI;~`76{nRx5`AXf_b|MJLI$Yt40R6tC(Q33D2*GHc{ds z^qmwXOrsi!UnIp-#T*p1LrAXff#2k%A6_WmHqJIrURI!7ct5ao!n^Das0XcuK>dSV z??NC0J?tx<1#cn_Ta4i|`;VmzG#h4#ofuG?A|jRQqJpB(t+SGQ z^5I0J0Xm=Rf``%T>I-0m3jLjIKxcS5EU&Db-P17oP*QVh48bIS@@XT{&&fUVXK;X= z{h3!RnaB4mA5)8gldOEpn_-`28rxZQdKDFaZ50TEt%7Vxc}#(TY5g`yqwt}C zu&*&gNwriV6|{?z%e-(8U=XWvhRB#N4ljW=57i&w_S#P}Rca*k5KJe%7-FtPeb1L@ zvw%PF)NR6{(7*u=(v`~8EOc9b~#=*BrS7@J?H;Sb5QT z{ja3JLu!WX!PdxF&Jxo1672pA*_(e)3Jm;cRTFf9i_R+Ep!0p@8~=7}lzH)3LPQ3F zcV=?~h2n?apEi7FkzZy)V8gfVFW3BWK=#Fi-A_HuD)Mycy`Mn%zKe=Sc214I*3xQj zjr|Tu^vU5fbW<)MH8X{k!^|Sk+(Lpd|FDPfJr4Xj{$LMbKmC^unKX;IgDPwo7GRdL zbI&tNvDrPL?m}Uu7`pjZ6NPhZDBDNvx4QN59l(MEhixX0@BRuO^o^$De-i$wCaZ3@ z6GyEeuBVp3ZEi#_xL1HH>7Ug< zpli>DU;r%=8R?M2yY=7sNx){sj#MZ~R2b|Eu(yZ5_z(7Wps;5%82zJZ^xyObC3DnN zqPn>&V{Jig)8f!!**M^EU$5zuNC+TGF}GiN=4U_EA#rP_zSk(IGeA=O_729B&-ER< z@A$v9ae=>WSB-w#5d;x_n+8Go*LSfnP(=1s{_unT)Bg&=U?4`Ixd|5skuFg|S0|(7 zqQ8QlyEGE^AC%ZsG|@l57ISWBI1DHrs5R!T6U3Jin91rhkC8tAlm8%l!}e)$+64Y2 z5KEz9BT>L4@&Bn@3Jpv7*-^R@Vw(||>vyw&FBcgF;N_FwZd6_>t&=a z^MAsx#u0QEi-Yp|B*LZ6+c5Lf-4mfTuC4XzXVX+oHt?q!M_i>cY4;q&J;zv=FHrOmhc#dy588{qu#qNIdf z1c1TL`;n|GalvhN8?`d1!mi>E`TzA5{fBHXwfjd`zrzpV2f(b4H12vsI(-|M`H_1H?8f!# zULUqKLD%>(XtqIaAZ$0R(6NC&qMFDdzk^kV+h@Cv&ydpZCs`t#?NWm(+anL~H0W$( z&4|5_01kg%pyd?n1H+{Aq%QrHxog{Xpf}xn0Gzk_8dkC#&u^JDR^!tMtAj>QMi3oN z0S5Ht11nHi1zb`>Zwnqh$-GRDuGp5i&dM4&ZDvOBgG~QulSE_@KgqS#UG?EN@}yhu zJOk;3R1Z*}fN|nCXA{|HPxu#8;!{v}2+OT{Ooer^_}v4&a}Q%mZ65WmX|{&#_veso z`tcX-XFehHx}3`Wnmtvvv2*%FBp>*MfW8ZL%uz`f{0>qK%lwf;ilBlTIO`)1wkGwi z3f%V`%jX{QTKzO%-gXJ})e*sk%Zr^$rwj!eFSv#v3k8?yS)xZ-L8ul1!9gXTkQ52j@YA#O8d1M1FO@P4UtCArP|Z{J0K z|A<3gAa9G={@*9bq1uwkAP%Fh%nzlR&4f;~3R%hEAOT~m-2lfZ2{GU^+U$TMB zN9sXBTn}_`ryQQZ2;w<~I+y9CBt<%&kf~ET#&NqkjyA%kcdb_(hULi0ZU`d_AHMn~ zIld!*DWH6S`pvV~jC$?mnx>bh&au$BnS*}uYk#kn+K2RkXFG~ir``Ib5xG?03uyHj zI1D7Hx;|)oGfQxFu{Zt4lL~T;V$FP-*JO*!m=wnJU;^vIOAmh&oQ_+|G>{qyxC*8= z`5!+xJ)d-Kdm-YntS<&}nrZjlrUJiT>ytLFmIF;>?+Y$(XE&{_Ad?)ISS}_pNLIO_5|KVfxA32@U#>+yc9Pnag$`Qu>&)~160W2McnvqcMwWh zU`TQJ`sPLcOxP*KUI!jmYU(;J><2ZpXFho%cUy-Y;@1m!ljF8|RPU%vSFCvkxUI1$ zNYyJyDFxG`)n1@EaOoT@}@qDfZ;2pw*zQ_J3_xyeKkU%g0iWPD@bt;pa;J06zu=!r?b zbUxN`Kn&_6I4M2Op0Y~t^L#}1<4x-fX+I_sLm7Jv2t4>KPqF6ax#|lCapZJrP=DQa z%UpH$-b!o(DkD4ZJ$mk5bEZM0Tt2!_Xk7@i%|^CDEprP8^IV!|9q)D$sXUiAUnCXO zvIvA3W1&)va}g7#x_%-%r3P!U7C%72)3XMTl?gjHqTC=PGdlwpRPT4hb<-tOg_+)l z@xhxreB9B67jtbAWpF1_A&2*<)*TSrMJmiW{j=ptwcm21L`tN}Zdz@hlo4<=UMoeA zM9# z=n0kF#yJo6qbN>$SHFPkxC3%nHS#BQ)fXJY4?A?e;SK;grYqlo9b=$U1{}3Up8aUVAPd&mr|9TSF%wPE4UrM^(-%Uksd(6HTP#`7 zXl-q$w9=T#@r^HV`-h<-u;eW|#n_hbe15I=m&(4bKK-`CD7sOF&l7*(d6|ip_7wYT zD%?uzvmX+o5zNS9r<>}w>%ztgRkWL075qjk*cEMYGzP|`nAaVs#dOa4;T3PIZRM3l z-1&d{_AQ;*O1uB=+fSAV9M01w|3NrgvUsNlTy6Hq(;ap%-Nt0hyHlT7@gU66KLbaS zHE=GmBzJs`;SsH?2YHc!niv(4R7Bzhm5cdv_F!1_F|tBlWMED|st%-Y`bdH+8nD^Y z7-l+nVuQ=YJy+G!g&6EDUE~{3FxDq6>0m9dhTQl8uMu6jnkweTxvY~BDbh~xTuSOF zrfN|1lr3=TZvIs5`v;=C^&xp>eMU&ZUSM9m z!;%A9owP74M(-Uzs-2~84g~qe{A$lHCXeXwBFQmkKoVgRLu(WjpG1(2?Y*Wp#Vy@_ zXpBY^3Erhr13oH+sug^J0B|BBiu0aO@%1|kfynkKuc$q~4E_3`15{2+8oUbB1++ow z52{gc@UhDkDRSqkF9R~^dDAaW5Ka#YS%{}wb{M$0Y|4AF$bvsd;gU9fi0?>dWX;4l zty~?T9rkx|_DmmFF}*mlVaw3g7o2IlT@+foo)|kukr2D2{>uZ8B?uK4M zpXXqQ(Ofl^eE&GkC{L8T}AOxdEt8=Q6y!%g+q?rpY@Zxk2D@O{-t`=#HHkq8&6 zP8U*pdcTDk>BsqCCaTbRSYJz>q5 zJ(qulz}UxHzGZFb3*O@E;&R6(!O)+S}-wh2Z~j}m3+ zF_`eMdORT=E@?r+UK+Y6YGRqohzHIvmDN7c-COi?+6sma z{rRa(4Bj#*Ug!b9?H&JF42>yZtL;5A)#QD78;k@K`Run6ZfQ~Sn3mWxbASy#-& zS9Rhq4QJ&ReRTm!dJi0}#+Pk|tt+1qdi`kVv^ku8`|a3!Ncnye{H#7-yykuD3XWbE zAqyhvb-$ME#m~Nh?qO}(&S-rx6QNq&?{JXP&5pK;NlGgUg-Zn)6ua=i}G zMfEgdoaH*?ZQl=+LQY=o`jD&5MI;HEgcoRoT29x$d(J+hi>bKAIR}r>3P?uo;?!|3Ye!`% zacp4;;lfPJeecK##an&ojVX@{7VC{@o*%{rze6EJ_Y`V#3Qb7RBAYMiD z<^IEUgzl&9(w#Ji87=e%jRGmFDnD>4Tg{Un-bY&d2Qr%Viw^PYBQ!ojIV~YAGa=n3 zd2vY3$iR6FS%QAw5g~h2ZVwlRhOkS(SCj}oyqatCay^Wqno2o6ZslM}TwOM-C#TY` z)baq+8L>4v8g^eee*P%@#%4j=kt*uecu+MpcB3dkZBp)uR~<-Lp|#$CkslCFH=n<)AL@%dDk z9eCd|7ij<62JBtAoJ`wHTxi@GR!WyR6<3S1=a=No+o=YP*P&~n~nugxXOVk_Oh ziIV%SetAG>Hp3%*?y+G!aca8&3x+wl&H-w4hEJ9~&%Gt*?m-j{{TpX&69yYW+>8So zZv_a}@e8xQ{{kG2hHI1%ATSYyOj*S=)d6=s{nU%_drODVpW7QlSth(IEXW$CwNz#M zM`w(ps?nk*b?XWlWNV)o!CLt_`zukS1;tGD(JD>}RnXRCWo{ zTjXBB(5w%r*z5Ir#+Z)TrJombL_Ss&rgCr0e5vKQSAvfERrzbk{?%ofA??rg(DiAn zvxvUfV@D8q*Ug58h&H=j@5J%XiqCg@cY(yYLvv?fwB#*LbLwr7YFdkiWkfoW{-Dn2 zAePv>Ol2ajrxTR0_>$N*L?76z71W$fWIO^E_Ucrui9;EptW*_Pu2>IJ^4a3k!ah^o z_0{>U%yfhJ=Sz)ibN2XEjFgEqoIY$9H;EL~6pHWP^Vshw#bYJagj!k9df^oULK3s6 zG>$J#-kYP!cp(UmHf!K}V-PO{)2%uNo~d6HITju6&VH0b>yvZ}+GRBn`mSQon1d)g zcv5tm#b=scrbH|<;P&^;c~{i!_jII0{x*aDCD2Ni%jKi(Gd8g9b2GkR(G0efrb29T zE_9y9K6*-w`H2I+MllTd6hhm!Hp8|N_v4Opzq7qNqO6J0}MJ%V6#}VNcyV2Rc zJ{VV|7rS>Yq+uo1D!$^F1dVn1UcdC1FJ?QX*Oq&mJ@z-UPlR&T{cr1o;Q7537n10O zzUxHBEnot(x`c{&nZeDs+TBB?9ae`u`>jhc7$cNEksC04 zRk&!EB`=MN+cx7N57dIhO~3*bn!^Hhs7Q_Pb`%cZsb3^~+Y;4nzz%23FQ6voXCStE z4HY<5A0ozEQd)^3OLmdMh}<@))I*Qg0-bG-IaKQ7!d zFEPRq>J`kekaG@hupMP0$Z6{23b%N8lACf3ICM>f-Z%r9*O&Sz4Ak4Ukn$oQ{0gcS z;PCH#HOR9~9<%i$D33;7!ZNDXjWf5cUICo>J+`sqdD)LT^TQss*ArzVbO#Fe(dRV< zxT`hJM^IxpaLo%IHDe3EnmU-0Zhj_x?LjIm2fzApj-cab|H;82;_aH{iYKi%O^u}1 zLX6Hvj2>SJcK=YsoSWzQd3df-x{H|1Xw{j5o0 z+pF_Bw2W4l9ujd6>mjLHlKNnVETCPcqq%XL`P2P=mhn3A6=a%Tw(%6r?MgfOC(;b*&)2s|T|Iw=F8n#0 zd*}D_Bss{;+rik%>5HTz(gm*j$~joq(HOZi+JvS(wOY+?w{iU<4oirD6USeDIKa*D zmtTLN;S@1zxN-`SPvMjo(7BXeDM#4+FGHb<&)k~4YT1(0VP<)WE)&(o^g15RO+nH^ zze=A*p4t8@CSuEA)OmA#Benc8$}1jimqa$RoFWG$qdXy5=nqK*Bx6}m2&M&M;q|b3 zpx58O{1deRM*mEzp}$Lv|NbA4c)*+Hg!hUl|H5Z-cm)3)D)WE&(EsH_|9|8|Voyz0 zYT}7Os6i3J&-MGSLd--d85|gJU%UW!tdV$C6y#%PZLY_1icOL=`3%MDR2yO$)$f1Y!7GN^&4|JJneyEQKd-k~v zsIdxI_>}ZOUwmHcJoy3qXj}iE$3aW`np~|va;5;R`3{PZl)ym867ZEJUSYmFR*@R{ zv)~0tX8r)g2@>g)86TH>{}UV<2V9f<=dH@F=*097aQgicleRz}koL?U=fYdUjwBv)Z4f zF!Lwb6#)6O$-1cQKQsn~-9=&o;G>m8?rO(;VPj)sk&>x522D0dsKv0?-thwSu>{I4LD7159ft3!cfm*Po>WQPkgXh(VGT~byVa9xfRwQLcq!D=-r>n^K+mD z9N#%X7KNMV9B{&_ZYPYea9{vVw~x)1kPipRi1$nh;+AL)2no5$As3@ST5q!e=Ha|2 zH;gsh7#k_y-EaO|Vj=iJ4*pduD7F03Ia!58BXS9*KoJrAt^^nR=8rF#Yt z(4A-~$9?{C6oUD$h!P+uWROYZI}W@9L-!-tHn*6JO#5 z65vxnu7RgE48qI}cic~W}hCaAH28ISMx01Kq&N|jGNv3Sj z>D+EKmAz9s`l4rqs#S7RtHwyI5L5-jbocRHg72qL^jZ)d!@k|nONUrJxUs7f(88LEHwf;p4ImP8?|R9+0G-#` zaQ8BnwLXL_6%UA*jTy4r&HJiI&NJXH>M(qLlKp^Ou)|)eubbsY>|WoeU@320rz2zu zloR1&bjp3AWvXg)4QNQ5+St8t51tfhSa@n|D#+428T>aOBnydv02&lD*&;LLU1gi$ zJ>ejNR@pWLyODLWD2XpleI|q^=LXtfe+*b>|Mn8~%A6P^=Y7Gt#Dk-8yGb+wIo+sK zeWyt3!oN5Wi?Imt{iK=t!1I%%=XU+649I!U{D-Ds+FR-#r)hJ2!?U@1+DLf2DYC{V z4R6frD%11zyOM&IasEJVSlfEsHkr*PKngY=jM+ATSY0|t=U$2+NK zJwV?!$-CdW5Phqp1q7nLLf2-8PwJF_O8Vj!zaJhHZn1X&LF&)~&7T#oPGQdIYEs@vNUHG!8{aA%DD zYp-@n>?Z!2aa~nDSR1D`+qh9x=9%IAw-2g!y;^#$8tofDfscOw0)-Zgl4Gy6DfX6M z2T55Y%n$cyBR|^LJ`Pyd9~e27{-@Z*Z9cEfo27&k*0hRz`F2AlH+zzY4V%X+?KL7w z3}4ucFS4rK)zLWI9T3g3_HSXOG^==tbxC9aMZ48=k0z!8n>s22pNbL8t8!P6v8C}S ztUxIryI+v0xDtgxt*XVc=Zs@ViM1mMsBKl+=kfMxLFPyV$g~K0dA=?q&?_O;PXp3s z1L?#`Jasw7C}=e?pE!CLe3XASh)F6LGsGo!7e8Lp>lJ=hyB9@(ruAAUNW9`H2(5 zT@NKk@XrY|+Of@vX;9!}s!T2W`+PWMU zBNa~naG4M^5Ni?Z;rIK?Gagy{;yWJ8A}v`%`{({P^Fnyc zEH@R7@MoCPk6fO1_7W*)$DCqJI!_K-%{t4zd>hdxp;zxDHbxB)6sO+yD;GFhfrm2A z^z&zB9(yF2YKw8iQ*XX%kY80Rrk1-?!>RfucK8Ol^fMhAFPx11m25bH==+MZV~m)wwS+HP&5MaNKSTM37%(kv0qMwuXM` z07>`(1txuDuyeY=Qwls<`XiVjT}ED{ctMo5=w%BrHN%9V3uXBOAVGvT zu<#-wlnoyDr4bd(t$#J=aJa(#!vuXbShlN5g6up6&u?lAs(fPdhqIq^FK?*+%?t3HY@e>zk362vm$eZO zR2om5W1YcCq~|KBLAkzokEJNIxdP@g zPHBW+P8rkf?C*2AY%+oQl(1n?^Y?ztu%m}`ymtn}+EPYFgoxg=>(8yz_(DO4GI7v&noC)1w#^i9Qk zFt^(KyELY;_EzpZ3>D~AcrT$S_wYe5*EabrI?W1x)0Og^<;F}==Cv~&xs`O^%-Lt2 zRw~a27db1A3eunEsb<<|7B2Mfh%(=m>5wKjTg-PH)vvj!s%aNxpZRgY)8nIiX{4!f zCV4zHL%qY7)P8q{xAlIAFEw2)1j2{K;{OO7GB^`UHgG6pc5yy$#=8)$NT zJHAc@9m_mtZNW__&A^?brHT5D6o#BIbkfd6$zavOr2az@f;t)rNTW@K**^)UkH%+$ zONXsS%~tG2KdQ+}N=>!reW)?}Ng`1o*08pZG2+t(l|DwK^MPyIxoy}zeQ`^MNxpLW z_*i;KPG9|@E;>jLci)us6nNREFQ-Ur1*as`Mu{L0kh5pM*))1n!R*sfFe-YidR(j( zySgk{?dCfPj#tyC3Etp)O&Gc*lNTHnBd8Hc1^u*b1@p3Ci@wJL8Gu+zWxDrJv7leY zTW$|C3z3(1o<>C>($e@!)jE-5I>)KJdRfxuJ|HERw#+4zLeS=%7*>z5rui=BUW?0p z?&+Fynxkp&JX8UtZB&cO^H)-sb0kcf{4qi%^7T&@P|7rz3_%8v`G=sBuUuI}L6ISS zQ=sB?7CK$UP|L=Ug8FFR;`LCsdx-ewI;g_(TU(3TN-D|szvfuOixwKLYS9njbQwV& z-(U^)A(J!L7coLD#OSX`t!lv(+%f07QW>RD3&X8OJ++N0EdL&fhe^Yw3r-Y*3YlIb z2FvO`sFb1X%MYwstw_nx0zzB(mpz<_WpsH3Aq?yv?~l>t68YAdU)1FQ)7-K#93`R? zgEz2rb-b#OZ6Npo`mb-0Yf+nXaRbH>HIS*wpA$!uywS-Gt{&j{d*Zmz{s%uq12ZuX z8u$7p<0%{$PSF)AQ0bqPIr&-^d%Vf#U9nY^R5ICSl12>icw0GdEgIe=v37-0+&%NR z@!5yxI5lJnJsfhj>|<6*GzNfYSv*;z>+_ZO{sheLv16+$C<;gH&;^YYlEuC_l-T|X zuo_QQadl)U85WIcXT5BRN{hEfj8;AtFIjJ7xT1@qVCFsm!b5h1r2gt3No2U{9|00e zG#A>vhfU`T%fQwphR|m$o|<>OgXQEz&qx8oBbi2$e1K5}pA;DsHz?YB#F&>j$@V>A zjdZ{l9kqv!m!%Kxkk`E6L}_mo^C0bOF?UDwqtNj~#$U+C_HBT6H6P&)E;CbJ4`R^0 zsq46O<$i*h_R5{l_eNzKNmzBOY^?+)1r(}0weC63#Zj98%C*1jIbDCnS%t|o1mk;# z6R37{lIl=khUE1fb@yBw!(p1U1&Z;=Kvqbciti*?l3J!sz!ktuyI(5+nkcb{EcZP^n&) zL7MmH1Ve@r+3-J;UUrM2g=|=SAr&MzJ|SH2sXtf&*>NG6R`Rh#EUbF2v9WLh6W`hS zOnlZWAK#=?!3O*PXl1}cegSmKP+iimGOFtl3qTl}WtQYJXF#ey)yXs}zRx<;2K-VQ zb#8+hBDU@{$pggN?(FN=7x>2PkG7}9_8-E~geStiSfT3`tMTD`xa2oey-Vb`LCpdc zHCULqXN6H2wo3&aa2H1td`0{&i6Evm2fFjnunKzKh4vlk+~RezAc^xRl_F4Jzd#O- zv){1lA7PZN%+^r5Le&ncT5aB%Z4(K~&F>H0o{gR43)H~-2Fkb79<}PvDVVbp2Tzwu z?j27xcn~l}t%KgfUX&0N@x;9d$=5^W81mB}%{vQWXieHRsUt5Cpw!GeeO1NhJYKY` zkq3n&O6ghPO_Td7CCo1tZoN+qGz#4++X9{TwM+y>(hrCr&$h6SKcZxbH-y>N_S`== z)Jx{740@}Vz?(eOH zJ7Q%&&lLN(dNy~(PXpm|u)1KF-cmnkv9^8$CO6G1M@SJg<#iWj#tp;$Ysnj^f+QAM zJv6bwRT#@ZCb`WV%+ZOK&EUDn4lt6a(nl~~SB5GCShD5s-JWXr0{2r&ID*md# zhyEHjymO=^m!%Wy8F)gkEGMWO! zx0jvj2x!cn<46gQrNHJ33x>E71M6NH5FSLjE=J`{6d@n=g(JPLSLRPtJ6HkOg|BQA zg-KkQG>wl6J&b1%Tr_6yTcm`G^ypWN#a}XN;T%RWOfY&-op%e+v*?G!@~|JNrE<5! z@p^>aB%!BC(pU`B>oHz~CO*^5i@ga#<2~C}!Eu6JcGajX#I)Ql)^=4;aE-ClC3;{7hnna^6Lcvb;K=H}daG48}0e;0;{#Wiu(MK5!koom#g1UL*vP zwApmN`hGgFAf$R#4aMc_O$B+l{d6!R%QM7>TUPw1{3hW8x$E)jazgE0jw8j&AgP4+ z)(+Vn6?ADSO3}otMbhMBx2ll#tmn!^G@F*{s(5;i;3;FvqwaN2O-3#5qpv=$=K;Da z4Dc7demI&GXQh(HM+y%CG)wknzy5LG1p3oa3GUmA{>_E-U6xfO zGp@uQ8jq)qd~spr&wFTy#O&bb-B=9Du|3DW@8)PRdvPEQMa)hwXoCUsl3eB6ET~xP zeT0yv?`b06v5U&-+pdvw3z`i#3S#d8UY%``DZV+uP>j%y{(2tU$D*_JtJ0CfuSKPPhLDdv6(5<(ja6 z1A;UX(jZ;Z4U*C-VABoK(kUQaQX;4{5&}vsy1S*My9DW!?)SQJ?`QU&y>aH5dA_{I z@&7o^K9t3}*SfF!jNggjY{RZH&WgUMS;5t>di(k0HdDC+Ynmcvy03nB`>owLorI}s zH5-#CMVl+1yzFO+&mQtF&ZI1P%`^T#%lB~=umT&>`qYpa^JO5|PfQ4?Uu{AiUm z`lIEOecnd!_{qAxfEdGJ=VzE!7=o2<)ixRbr2^QT2$0mByQ7p_X%HMxSR4w&WgFV_ zRQE0p(Qsu8sDosrnEdNAgHvRdaMxg9Fi&SJJpcBkxd}?obI{(JPr)umT*X#dHEv+? zxcE`y$FERfcXi*PoSo%Nf@)B=e#t?ahW;T@V%>YSzx`5MFMg?QBG?EsCvk{eqBrnv zfge2S*K;L+RfQo%1TTb00Imu&=8LO>VP71@XWJIH^}tDf5n5j9`d7;<+}OImzm}~3 z?2U90|%*r0EA)?lf~Z2$pq+b@NQYl{bO7 zH$nVkPI2868)adE_Vw0Q)K}E62)FEhNu#0^@(j4ZS_x1*4>(^(xX01$N&Z{_Y^FH+ zL1Q?Si1mkps0OaW^mYjA-ExcBc}SOEVeq&D3ZUSY=m(>Ft)O#w>KJ}QL~1ZgP$aEl z9k*;lG`x@}{9%gJJ61fC9*Mame<{#ustn}m6H8=kP{NF$VF-s2{afZjyBzE-h?LI@)j+Li7m)C;WkE#?sWm1$6WJX zpWq5$KD`HxkuM<1AD;-ksULw*p%9_7{n8eKI2A4SLxfF$f-qR>{rITBP+=rb-yecU zfxc1KYl{^yMP>kL{y*mK1crsZr;!b9RRyc8lKxn4qoSfZio@M*0sK7VjYL9cRxU1D zCZ;=}n1H%1qz6J#TrYNvRe{R694V3tlzPBz7n9S|OBM!wste*LS#{0n-q?5GVMT(X zf_efVc-9SrBb4EVGbN{A-?lilI#Td#y4Lg2r$=-qpyUE1xz>{gr}juD{hULf+~0wC zk>`M_%nH00z;faL08Cn^FF})BKRma_ zA->u;T<$$vP9np7f~wopw)4ijE7bEe+SHwqosSKskFRucMvN-F@eI)rQ|~d$Q*NY)c)X5iFUsBZV83(X)7hMzrnY;cQ~Hx^wWnA&gpFg20S&4WSbWi)Gsj!A zE$t9#=gL)#*FkLMts5UhSK=Ij&K&CKwJwXmNdnJqpW6U>ib=#}FVZZxicejr zWWpiVZn^)?Er5;fvpR6Q0r;A6$PY$nFa7F#?Lh^eoi-s)5MY|#0i)xop1%Hf$Ih$1 zR)Nx6Hs8M>*;jx~YYGz(Q&9DB->gGcAjN(GN-&C`P4q5I^hgeB6N%O=rNstEmC8Y` zQJ&R|gaVJ7oG1X~ludh~cNk%79s^vMF=@S(sp)4Nhw$&dv)I^IH@Ta=q58`lbOJ=+ z&UtRspQ(I*(-Pb=(ng?083^dl_1zbH`wE|#g!A;RvKFTo4??{J2nUA%-w14%ycvlH zaEo@}IhY~-I6+AycDU&zmm-sFC0!Q?(SJ$UdrNX#g*E~vKXj}gn$pm*N`J0?@DwYR z?Df^Rq^<8AO=HiSa@-x;QoHGib%)z@rs6?C0V$}0yQ=N*vnanYsGxxhgV&Zh8T=+d zeXFgbj6z}!q~Br=yV{oSLKZC!jZ9Rh5Vprw=x4wphY$`j#*^T=6DMGQV~V|}rzg5I zTP3ePpeDC!j|6Etj&h-AA6orjiT#C`5kPjaDH91?GcAz)Vqj9riYhCztlaX$(PG`= zE!nRC@ewfib1UNGO0`v}uY-yMNI+H5b2|Wk)=S@dTyP;S;yahJru|!x5RYBeZUj5d zrj1YT0gQGl?o04PB1LPcVDAM3o?O%_X#2QP>5UQrhcOR_hEjv(HSl%5f%7T9zSk}z zB0@k#KyLNX7lU_HvxLdO-Uz~UqLduLw4R|Nv0LMEPqLRas* z8a|n<8&vv3VZ1H58&z7s*m2Hly@R(jkojK2al(Ei4!7K4&2$peN(F@$h6-hx4E0~r!O?gVSzv;mCGSXsRdVey zngr~-nrAm`WC5DI-{3HWLzWmj(`SSm>yBjo#f_yDMN0lEM}B+`D8lI5qW)~+=-O)( z8b8!W!lc>;g*h$>*3}Tuys@OLJe-gH0Up{&V;4Y#8tk~2mI~+}2K(-|!LarMfWjWl zqQl%r7Z(Y(W8_SQ(y3Ri#yBL2mJueDWmnxx33tB%S_~r%BRJv4?hf?kNhzu8p3J4m;W< z_D4OCe8m0e<2F)!2vpA5kzsI74>H6RA_J!aevffBF+hZw2 zSWM_W1??Oxq$RFrU##OBk`1~OFh&ZQ6c%Q{_ZVnB3oZ`XwoaT;F zu43O|Nnts))Jo-B`YIQS$DGBHgWo#829G`&sTP?iZRw7}$?d`&;a@3@*xHNJdD&!0 zaze=aa)!lI5U=Iigg2&CnDCDPGLaYk0Yxz5X0kO_E78?G&cufA^&o4 z-+c+SIC3yxizRyFrPem@2W2e>K0hUZC$hNaG({Oiw80n97+eXRSvQ9BpIv%CW?V(2 z2KA^ApJ@Rwv8msVF;nDzerBjk9$iE(#2KI=BoJIPJ2|7;AO!By<|Ou?rD*HlMQ-7*Av)I zS!tMN14=pho`|s>RlM9f)eQQPf#vwa9~By9-k@U>HQN3DtAgOtt$nhdL!L>Lx@PPtqdskld-JT$6>E!-4sjew#~e}Oxo*etHQ`N<5qX2AG=*4sRrpBO+7ruX zaFRRHpFF|5R`fpoWMEVuu``qcoXmUHe%Z;9_Q5c!R3uz*Y?<4!L)mPoko=$t;7)h^ z!-(J~r)J4F*qVS+`J$q(2e8PSPrn#!OBC(^!<5kt>|M!MO{$qP2e0Z|0z{F?!|pA> z+TxSQqJwk)WN#WiQ>5E)l?D`KUIN^w;fxyyNyNDl=u6?1u`JJ13Y7a{`Ll$TG zcjJ*fcmIwx0p)K&<;~v>U>jXu8TP%Js`Q#9Z@z0@AyewN%X*wn8(;HkahxJ|+vSZ# zR$#9)u(%Rv?U$uigz=3+2bdn>;$nS1AYs?6XkPYvOKa~JFj&T-$X`M>gvs1ApgL2E z;}y#n(ncnb|Ej`KO!MA2X?R=$-cTe@F96eLB1owTh?RDSXOx7JY*{&4T@z5NeMzyw z)=>Z+xB1S+hoyBUrB9teUR($+F~x$TUK6f)BdVmkuagVgJukfFv-L&?dDsa6UWA^w zbl_Zi2k>}&@sY20FwZi(eZz}!xks;u6oKQV?1UOil#2{Fbhgb&XKU??4|14}==G3E zsK_{QBj`(l`o|mSgB+x#4scuqiUbP2-nqpYgr)7cM`A0MJ2cqgX@~8d z&l)UAX{p$5m-nwwKhBLc9m19{^>@35s{NHA!sY9t#H}7e$NTV3jRDs?T@{8v?^9_7@jV{f&EAcB zhkgI2X}~z7L0}BjW5^;(8@%-e6^JJ|L`q+kbh;YJf&|CV%qt=E>WKLjS#(Q;O^{`= z)L_``s+%WOk#+~)-1)%aDd0qV_Z8CnPfNiKw(}T6kB5wm=->Nn2Ezp(<*Q(qQ1kK* z7!*>s6ONQY%X^@mPf{U|Xxc9kyb6|V+s=I7=HaV&_3k(Qb8WAN-&+RYqJL2__c zb_9220_dIl`oW-6gH=yT3;e=r8gO17{&*AZouPRQ-YmL)#j=d9h-Bghe>)n*EVQJ& z-el=u!=<#S(OOdecVC3T>B){25Bo2Yf5-a^$=_@iW1MAL&a_0L3yyy)eO+hCrTpv zDb*9yY!RD|TuAis`jD1C1a+oDbB?8$fVu&2)l^;CPj0O_WR+oj|vSp?~Ifc1b1Ca zCN=3*n3(EG2{L=W_pLmUR&(M;?^E+mP*SmlO&(PMZXI{}ZzYxc`dBhLp^aqjr1Q*} zC}mOZ55rzI2NTOs?qwkdW6BJ}83@YMq9PDi4@Y_L-yq|dW`tjHUlB3b-OX=j?nHGcE2TNKauv5L{b%#yr*YoX`dci#svjG3MqRB3{ZV9TV z{V+^-nQ`^AV4w#|usqwaxFkw*vQU0LEJ_Qg1GX5;r@(Bu3*{>tO^2BqBuG>XGOl3Y z5Uv4~N{P8h)qCpS9GAtgiLsl<}Cc)A#tF2EBcEhIu^JW3N7nA{AgT_561HM;x1yL=#F@a8pq)diAi5OO5|SK-*l^ zk1s^_ZugaSw=-U)NZaAbR~nX;L)+r87tMm$9>@FaX|{Q0eOP+?>lpZ=_et&^BWwY#qx@BdmgXdhRD{=th{T=$+Xz@+IoM(ILjG=tm1 zhqQN&`3D^%>(KI(ka=%3ui3k{Ro@iEuHE9p=Erb;921$!?2i@UZA%wq62;f?!cgOY z?o_L~C3oooozin0Cjd-`J2tQh%hD7OBCG;VGLvj587FZ$jMNteK8Y`m<^fgL6ww-x zYyB=HPRJ-N^l(UX9LXgCs_kuEqNP(H+AcXp&C*<|&@TXi(IM0=L7VtDg`7nk2ir6J z&;?{{z8~&xAN{5<56$iji2g3o2C4eX*EQu|qOyuiI~@TZ7e-u?5n z{f}yXZ>l;^jr%l`OgPFNVe|3*re~vfU1)H-x&yf#OE)#&B3R8-ERbD3hcQP8H0VR= zn4!FQ4|0Sc^5?^%FgQ|!sVj)jwsq$$xWB^1qF-p|aF$oD6@-HiE~#!l(=XmA7Kl^j ziK71V7d3NT{BOio0NslJC3I_35mHBkVRSnFwR%9Z1;gd>7gOITo>ngv5s1OeHBi^5 zzy8aOhO5-UKVOyrpnv^UsD(C;S_v)U%6bXqg2!q^jj=7zGF#`>UdO(l8 z$Lry2d+7z`@z1wk4d}((`D?A`@BhRTg$jEQ!HRLP2FKCcYHz7g%t;4s4Fk|i8!9N1Wi zx-U753zO8z13wg8{zliu2)d6rFpWHe!Q42weykRMJvZ(MY^p;8A68Fug!YY^Ab`Kh zH|$*EoUni2>b4)4`Y|w=gf8DaS}ury`kDx>O#|jPh1BS?Lp$PP(&8Ocr=6K| zlQR2vTgu7l1bJ1#SF+_9osxW{;M#&*)!kh(-NmOmG2AV@lXC{jiKasY#J8S+l7>{8 zyftTQtJSIKi$b|*uB83biVZ2luIrG>?B){gu%_|6`Xs*Dm?=6AYTXwqi@VsMYZnQ&nEpOpR2Wg+i& zSB5ebMIJmS9D}5uCJ3?128M?6C60&`L)+tin56W8asQE6 z8?d9~r$AM~z6?ms9lO*%JwZ!6 z+`3zU|9rkEyeXdGo-b~W%e>UV^(X?i>r0ap10T1$9rJ2!?Y{Z6HW3D~XtCJL_$E23 zo)gSXx=1T!VMmLo&oz_YFF8EfruN4Q{H#pPUPYVlQnJ`Eiwj2K!3fae@$CBKdH@c! ze#lG!(8UPlMlAyGc(vx6nzQ z5mt}N-MJV3nf=MzD@@3#x4&Qg@jZTY-aT(+N|S4;;EoKD1J{Wm5rCMr##)w_r|Z4> ze4F~3*eY&|kOM~5Sb3Smd99SAT7YO)487aH5}$p6PnJ4EZ(7I-_s*5m+pA*?fO~r% zK5E>yl=rN(BJs%md;!;;-yB5_4$B36OnZt;rdKw$NjqE5#Hz$V1B*Y_2dGvZrvMd} zeO5LOEQPIsJf@f)aH(q+%%DCjvw2oPys+4l!UY=7r?&1Yj~+dmi!sXy2Z^TEou$5K z;M^($SH07FkM8EpFL6T>cm3yFJYPL(jalnY&w9UkW8)REd(AhjN_(7efXNAvKwW9o;VQo?xrLfm| zE1LQmQ!Z6Jxr5^;!ma~WOG-7d8Y&}xETh;5hvZ_-K?=w*Tj>?oHAcEy5feD5e3;AQ zO;J0@Z;2Dn-9-k;(9FvIZGD%prbWNgTcwnDb<|QW3Vs?6+_7h6MR;43fgz0S;;l z*Hvqk(l}Ss!biRnziUMkS{PLe8;FG)zq67|ZR-r)x_LW;vHCZ7$s9+o`-Um0b%Yli z0J!5O@IoJDD>U&@=reC?PbdTRgC!|^sRAUz%YZa9kmp#_#vv)jp){-|cD!1kHeaMk zUsL%)z}9pq7w%O|&CS;tgr75s0|r_>c2V4)uL_mlHEitSwHFvcxN-@veTDFne8ZqsBU- zu*d0R9Pp!j25xU`?ndKt6d$2wq0IP-7sWwmI6;a!@aVNO2bJt9R*wqQ?q{^SWYO=Z zFO$WjHG~bgVbS%kiDo!=zvRNqUo4BMfpN52Cx{^iwbt^TIEU)p>L#4) zOeyHF$}>BK&d`yO1)d0>?(~iDVb4??7t$Yq9VJ64-EJoU-0bjUBJ+0o{#F^0niCA) zR43{T`Gr&7*sr%jLz=F)dM_w*=@+w=9~2*|MV=ub&VoJjD-GyzUkrK{TOh{1bz!NziK?S?{X#yz*2dO3xHwDC41I z48LU#f|SFx27Oc7sY_^J+Mv*glCa55Gd(xF|Fk=+w>m1FGUz z>bJkU^!Wb)h8MsH8bP+8MPbuI?ieLM3@9H_O*_CqiT1TNkS{})QZe}QtpXeuMqTX> zHg%Z*-K%ZhS2~>?{s4^haPqZgjG!DV7*M$2d4y{QzX%0s`C=SH;A0t#Qa6}+4=(yR z1(DQq8+GxZZ(v(c)qFq5v#GSgPL#I4U?V#H>Op zw1&H+?}plW3hd@u!$Z&4=4dCsu-60>T5jOd;Vg3JKbW9S=PO*D=X&EVD zPfP+^x%X|J)2{|QF?_u08ji{VY1D=yHxjkos}?Pgq3E@00lh4^XM0ai7Np;s8^UnI zyNyyi)B2m^ky*QxFTCE*bZ2cP=${>r)V7tLqkwX*nTI*IsAfKh{@5z_r&3yrjOZVs zRO4@HG#OmAR?uPxx!B)Z7Yih+O%oM~Idto5*KU@8`CE$V6F7e~W)ePgW79@`n$VhB z*WgZhrBCof!-_F)P=+ae9MQO5WFPGu+}IZ4+Y#3({)RijVVhv_&hsEBFG5ospn@lwj-NkSMLPed(F06-rB#ybEOzgD%5Rg z;Z9YPv?E?zvDeiI=^)pAEq>{!EKTOxT+6Afmf4Nl{Ne^U9;7^014QdRS4`fHjQLkN z&o;B&*5YorU9Bht1z4#PSOz{zw`DwRvfWiq zREHM$-jQ6IA8C@O#zei#4yr)t*tJVc`*KaE{ zA7KG});G8VdNSBMT7|$f+ji)$wteaqflN9*qo#hH7du-{L4kL#t@Verg9Qj92jd%- z*?jMyayL_W)Zew1FI$W--y;q99_ruU+%#p@gsZolsyS7XO2kwca(K45yq$YvGDjH27{04-7KbHb1G0 z3-yRaB4g6oUS;Q7o+9PrI?SJM84u~u%hW7HiZv0?_|Oku|M@sbL2P){d*keD`3!jY zMfs-toyij%6Uk8Meo4r|fIh{#Nx|;eb~sa?23URWq2xlLolkvZAUFfn;OP66ec)dC z?sDokx5f$D20y@PpO?9b`%Q)A{RomcHnWJW^1T6-_#%uGAR-o>URz==)yhq#y!=y8Ntn5D|_oEzkb_mzh&Za zMy$ZYLZ^~NsoDI6(60;R2%B?lbUZU+O1*uWs@1J$*;*oZ7rJO8s)TgC+7Vu?jq>m! z3VdG2d}c2u0eLD^Yol~a^ohNuZ5!nbVZv{ci}x9xEp%}iZXh;l^`DZ9l$Q<~vgd3Y zmY0j9GLL5MHi~RyfTssrkxA~1L#%XEW{#R~r&f@cq9UI1l3i+)*mNo6@Ww_Fz;nbn zUNIe@ff1wHie?>AQR+8f@vTsD__M3P#Lp4W3$6}zZ(7s|VQr8w_u}8+lc+nR@GRa` z1TY4R*VmZuw?lEwIFv1yOV5jxo;s-D*&>)_1gw8WmseR^ThrU(6Ewq=WWW>nB+Kjb zWP4rkw>>B5>lT>BxSh87AUguBqP;h!4TXw;uS1FQ9+4LVf$76*IJ{m|`B;5w>C(DP zC)(nO;Je@a1J!E1!;uG?wTgW1j&|qM{$uiwyN`#AF`opK8)ahq`@S%sNx|aq(I^yq z=t~OODY~~YgB0EMB@MZOLwn2bYw$L#bi>Si5wFpte@EKAazv0OmN*%HSOxwzkryIj zfEV@%BEff^e66Cy<&w1{)v^GzNg0nPRFi-2gghN)p`3ZDQ$PGLk#~Sk4g)tdMRdJMF<+%8r*R?D7W!tHPVneR8D_JZ=3rVA5!W8=r!~n)pToFv z@dM!G*R?D{#MTr1k(uE9@g3J#5T}*0^`5|jm6VZbO9%%V&mlu)sL>H6OWICfv6B9F z#XtKg?Kp6GE{=X^i3}lhh4_!t;=W=^GMN^!n|f3H=BEr%yv{Wu+n}s8+QgE0KGmhB zKlVcQ0~C)P50%wf_Z7e>K@BJajmv$~@tZI~WG_}ds2sb6fWXlueUD(yhA{SB!A?m^kxY3S%5i{|Vf=j*^wVec zYw?d4Es5YS{YS)!pz47Pe~@P9-QV)?((O(dNHWK zu&4j@e_>N0)@#9GH68Iwtm`J-@FOS4bSRwZR{&|^zgSkRAO3~kl#dsH0w0B*;k(`A zcd)?*L)<1C?(uuPGva8}8X;7MEI}EU7$M%=qA$TPeHQF9N%E`d8cNST$n!DzzcS9j7*HJw=}PHNV}pO zOb7g_eh_f8=8x?I&DF7guYB;E%K&yrxX;VG6V;2&droiew}DALdlEAiNNTr*)d=L+ zPJ(A%a@x8r~$P8iSg(I*f|45Vv62qH*q#5+!YI{G#Q0YL8r;?i|205W3)4j$nrXsU#O zO(P>P?OGc+W-=0LSa}|r@2!sX=4y-G9>ex~{P^)lU?)5(HdnPJ`v!EUd81(Da6*0W z2NN(|$xom#fRhc?2JU z0l0V7;pfLS=Mggv{;>)Y@8C`VR4BF^n&a`z2-?T01|nPdUwE(p0K_GoutA4_g9* z0a@xLT?R{P(WM7B(AR*KmNO1j2y7kywn8AUdQlZ`^4%B-(2e)J9Ulhq>9a zZq#_L4J+1>&vMe7k4_al#5%lV*G^b5Lv*Qe(&_?VkqaHaTwXzxg&wmZq#D!~C zq@ung0dcdpC?z-HUKcb~*qujp4+8;F%47%Cp&J60LF+^Fah_L@N#G9}1M%qZ5i5Pg zE*F{IoN4gOX1As;mF3zjI6;%hI2=n2Y#q$bxypM_5ji^B`d_H^SbG!Eq~hyH{>NTO z48U^2TmEq)vkj2){nPH0Smbf(N}$^F$${nX(Do4{*|r1`;(U|GFSQ*c(Cld+BZ(_Q+H2eD~5=)7BpRlf$)Z3w1By-54hrx5%h?VtBE?H}*~ zTN#w1cICrM04z=hqYAif3Wlrb?3I+@1M6O_ekI)QOC(boy%kudOa=bRO>qN4q^TDx zte&;UU~-BiY2XW7bFv$#W#nZ*;4b+@QO(av**9gwZs4=jOE%hTf8FQhv%?r^S>$dU z2Y=^Ouzh!eNIvlHb0Iz5F%2$wMHrxP=P3@vhl@cbt~cXaFvh}|MMbA)OW!%2Z3jw! z*0ZuX+=q1Pb3jo?W{tU#@UbUubg{ayg5|_8sZpw_HKESMpl?#a=HNhg$<~^p#Tg{K z#}RDU1^y80zlHlhD)`^T`ulFJJmj)5$VY4X*hx9xE%u4j?#WF|RJ5B!f!Wc3!?<6KjS*FK5B4x+G7x=f+5vQiz_JE79?lYr@m^=GX~9 z9Y?7(o`tYW#I1{jjkX4G4QEH?D>;4UCB!oF?8YF5&rowhtyZbB10(}c8`_iN0t}i< zG0U*TW-R3TYeE_R)ld&%l(0a zhpb&>nQ7PFytaB!5O4tlir;wCPfV@0P%AKT-B!a7gDGbntp&iT3QgqaYr~(8R~;{@ zeVYvMp@y3k@!4;FLwB#^xRra_7=G+!WrbB1JN&S=&}4Om6n{rtdh9dGGd-HOkJquf zgmn+y!Kdx8J5HJQvPhk0y#$oy9OiFnE+?4NJr2HA431gcP}IIk{V!4bX^8_LK<5Et zI~>J5pz9e665PPCn|sl0oGlqdQiE;(kYZRJQ>Wj26(IE62Ah(_Sj7HGe9o51&CN>+ zTL=Gy|Lco8KXB&rnq@?usdy$=Z-9(Mp=-`yH>(cV;JtSTX9Av*%caq2XosX-GOvi@!+xH8|IoVa{p6N?p)uX=GB32`tMk zTA54`r%8B|d4mT3LEs4{T{t2Sk8)Bu+G9pjxG4E%moU1op0fLeUw&T`~O$_tli}ZXdNYA@NH>^rG|NN^N$D#YgU$AwqVAE`X zoMM*{V0vEaE2DwFGLFYXBSQ3VN~vjSXr>eY6q0WQaUs@>_^}k(YZ0gD=myLWkcpCS zF0)hPIe`$5Y64z=v-BW98_4`+Mc^QW%D4y#dZX-#^$!0J;iffUGB zxU=#gTm(NnH4G6MJ--%=;KV_n4KO;SfHV{mff`82VlI@JG0DE4x5 zoTq;covoPQu8~A$MQ8pE6=(1V{6$3mgPqgB=RZc|Nsv=7BJv4cjT4oEn(c^E>U{yq zlyzveAo%hYVtzS#@g}CQGE;U@-y1^f*dNY{0JN|9?T0Bc(YYr@vui?e-i}1e)hY8r zK7VB_jB8fP9;93p)N+z1R)jeC2D`zw{iS zPuu335RRY>Pgdwdbw|*t<}&Icqj9LuFAIO=BR~)|b$~(5ygaW45A@uiqdIKuJh&;X zY`?q*p$;s!?Z6~ujL2X&S&+F#qj{%XlhN`1Mz@9v#izl>pJDh@(C_R-5c{d=LJjKG zSk6hPZv;;g-R(H#Rzg`YJTwgE8ERV}I9x-yLd4u?4Zhh3F?6&;S-N)viroF_wLE7Tw3*`=O8?x zl?(6^w#*R8$RAGF*#=eNAnfgq-S0%2-ZJhsgAK)~>3k2Z3O)r)_|VT_g~48kF*#P9 zt8m@~|+Q)*?UTUJYW1GJ)c9&*5!5ZiVts$3idctg}0{H1;D>SNx*v@YM?d zlqU7thG3mW*gl47b%RMgTE~c0zA=b09int$0J1Wl;&s@!7T2)-7#AIHoKY)w;^|y+ z?I~Th7MToCj2`E42NjoC$GgA`i7%V+o&F4xbae{z*q2(bwNwy_h~^$t+)A@x=Xx4m zCIq5e`q{xMpxTZj?cP%k17R(`pe3U?Yd^}zL=G{q3KlTIfTO3|V2? z__>4uIiGpdEwl<#MQTa}NlNK779SmhW@={ipd~OCSQ<+7t1O&;X*F^ofo9~&C3y_&oS4jYzI;~>~>;C!-P zzQU$|hyhRJd3HNh#*l|4Ia4Xyv|7?HFM^jEilg5~ribF_K!ha*TNxW=Qrh@c3gSz* zi%Zqik*VirBDY9e?k(wk{OI1`^%y7Bt7m5v($mIB%-RtTf|uMpr6p5vSyA zEG?hFc@_m&bOb6pUU^@SZcV7v4J}olpEcRBiLU9v{!TOP%~Z}(WT4|h(%0s36=85f zo)PhO{7O5K1wCMHhXOFA@80RvPKiMtgOXa8D_x)y+A>d7s!-~m4!4?1j?z_~)1#t^ z%Lb+$$+g*OB+fydcZ3f`&~|}lAH1V9`;#^Xmme5;pzqT7t8FU_VxHo@0`4LODIq5m zWh<|KmoWd+q`62g8TC&&5yhJ5HrS#@4q;0LThz3!w-Z-`TqNqLRAH1_+zt@~p0`(A z7arFdmb)GIv0*2?#{}q#L~Mei_6KlmJ7I9YkX{pj^crVmJYuDVccJiwRNhF>-Mdhf zT-q4~hRRkZe9COE=(LY>x^R_VmgfY=## z-r+1Ai!w|F1A3K0Lz_MKs!LAzhz&y7m>1_zh!5$$)rw_~CCYu2Xz=*@8Ylm<^8)ne z6p(Dy^M55<{l5(PU$#Vl>Ye{DL;nAR40&sHgo_15rJReQjnLVNu&5Z)G~iCO0oXJ1 z?(#sy!NI`^8GSB30tkFk)y{sp^gB!(;U&~)zBJ%13x~d<-y9qs!EisuclR&g7F{vn z|08hA;-c}kDs33+FzMVM(JH(Z|3}&;0IQ%AvPD7z1rSc*aO(Vwp}?rS%k@2!UEa?e zXBaE795Ttu17|8p08#nA{Rk*GnZjVn7vlDBcL@OT?K@Zk<~vtVQ0TOoJUQI{4sy3! zhvbuYf=}oGOu*fF+w{_3^n<7i@eQ1>?k#l1BcXrG%gg&wVd!0KKJp0mK?~6FKCCZ+ z+93^iM12c?FY`G7A3W_`R$3QbHyLg zy8GYXQ-_cQ*5eCq%ZG1N<2{{~KH9@~ULfxwjdWJkex928QEq_n^B2#^E4?3Vt{nbQ ze7;>Xyt}~`y)!~fgCRr=ZgD$p;H>7D#xJNnFlL)?Ju4F*S{(t_pQF#Uz$P}AGJ}h`_?vGp!I9tVc?Hcw2 zPv0aYSme9o0Mg0lw*GuX9aldVT?1>~9t!mO1e`Yg_B9b}vB}(~&s+m`WV=yo{4CzAZr0hv4skrw@7{e!a&r)%~PV^U_Un84UGB0yNRcurOGH zP^T}1Do*BpF9_ta#7X!PlMb*3bQ2mK{CXU)P;@zqYbgd+WsmTE9&DG~!3)n; z*JKENO0_@ZU%>k-7Zfe+-Z+*U)8{onl+-J&04t{r zn@;VBv6tXB*5@q~d%EzIXK9dCiC&&D$ztPzWYXyr@~AswlLVql; z0E7%vIS>_p>e0%ER&Rrcuu-v5ZI)k|1(Kg`bqRPu`v7#nkA4U;C2xT#hW0ZSTnd>) zqaXmf@!Bm|R8j{bqI9Z+oA`C)S`n$ky4@5Jf(X0_fKnNb#~{@ubbrS$=q8ma+xy3) z6Ym|~`%bY$Mr9C zzrfb*y~I9RVADNo@Z-rYxIsrFOP~2bV|2&t>?ET6HiIhCWPZ6IBZOQ3u~zc$h?c&& z3y7o^|)9rMOE#-ioRWYPrm*+R`i&4P9tH+wY2u)gof&|SKQOhts**4if=3i zxir1<@1LO3nxJ?UvjV!1sn4qa5~_tTBJF+mTcY&`c5Xu)5lT{sBl5+5i0%`&RG|gs ztB95xLTr+L*OeW8XJt?DWX_lIv=n9FfHOgSPu zNZMWHC3R-|?*ZG8nAhv}uX;kj$BOY7H5K!14W{WD^87v5heB?B zvgsE29Skz}Dg9fak5m4WOai(T8T{@66$EF+2kAFR?RAjXZVZ3*?i6ym=7g>ysed)A zQS|pLz!jWHGo|TMgas7GOry$*2bMQBsJb`z$iI+`yKZ;RyZLb;4rw}S<}`PB+sXpA zY1wR3%B7l%2O7_|;t&^n&mhk?d^tdP zH|=YvcLyz^=;s~rLdqmO#yXRzgRY^)zM$nOT0cA_C@P!y(}DT<*=aQT3e7+a(a+qf z*x5l!-i#DjqCF;6FEH$!gN&J3O;B*f`4D~x^)X0=zIurkKS*%-qlo!m&^mn1ReFAu z(*qt&%|NE?(s;B%z9WOYm8y8IW^9@toa{hVQWhXvO7SB-ldEvJQ{I+dXxLv~e%wmK zq{e-ax;m~Zvw+;w$+MKUzOmTT#M@9@y3TM%xy0X&SXjVJ#Jaog#R@y$eyvg&sL{?_ zsj#M;u`f5!a2PeTB?AD;ykjJhO4W-Z>tv4!?s=EWp=m5ng}X2ZfHzK@j^71Q{<|7+ z%oW5N*IfPf1C5-Hv5EroaF!w1pFcR*9nQx;0`)`n4H{CR3qa}BUxW-QFEB3o2FlrL z&zAS};K`yZ0J4%}@C%B8%I)i?(kt~pIUOm6)La*Q>{T`}MFiG3hB?$dS#%+lv#DOh zl>5&rXTx0*zOUF`x`pOzD9B`+SdP?WsTHsY;TVp(dP2~E$8x4 zLe21l^Mf&$Rg^TB~&D(%# zK@sv_QY|(hakTBf6h}cP)rhkGH@Wt)%HPBbfz0u1ATmVg@I;~cOXL!zEtEL!Jxj2xI@2sNenh%_I&)aY zpd&(4CKh4zr@-bvUEUs+2)f!=qWIrm>W%*Mfv#5if)mXpc8KjG1~0_53PHc$Txk1$ zhJNc@{adQUiI|HKf|2d+*;Y#jQSzXe>=2~=jkxTe8{#EJb3F&~ws=9IqoV^Hgl@8`Qa z?&o+Q$_7!alO&}HSg;|AwI{OFXz|-PshB&7_uqKlyLz`boHjFkcPabh|3}_i#$}nV zZQp<(DIp~xtsoMLfKrNZ5sHAI(k%$mA>AQdN=XPxDxlIK(ny0ef^k68klhqIM3ra_G8<({l7UTk9K9NhzLcx$Tnos+&wf^P38WS^PI>2 zY_Gi^*O0<;$w{Y9!F#qthvd%gFR;Es-Y5bMZtZ=?AD>@wc;I>lnrFAOwFay{z3-Xa zlGY)m!YXrIp(>962&79EEOfPx`O5$N4gTAYbBgp1Srud)1Wj{hAQnf!WjRe@KTOvJC`; z#h`KLa8Y^13woTW+5joqi&Q(iW~v3C#B}8)FU;bTqjaCZ^uO>b;egC2D(2C`>FbGG zyT$!QG`#M#B_0mZaylibnRkh-(}5+U&&eNJIQj^G2)fYy-p(;y>>y!bX@%SjDu+9U zAmFIf!@xN+NCXLQgx#({^|b>y<`m({KHmj9;MJz3r4?3(aPVpcVCiFANxs4XPf_&!Gf%5k zTKzXk{`{tF1gcY!w@?*(3b%u)=SH=smWrfwpUmcs&Lda~&W_t*VrN`auD${+g|^0Q zrP0upA;a&+lkz7V-sUbL9M13cBhP!cJ=6P+(2}!XhrG_k7ss!Iohb#I3f7rUPn?E)}RUPMk?pYM?)UhqDVse7q>9XRg;yEtT<5K4NU%mu`0Wf1kQzT+gO zD*&Jx@x_Iu%pvVn02qwi0hZUzD zp&QIyT!guEspX2*=CeL#HX}69RUf{a`!WFp-Ofr5w2#Dt98CaU_p2d(WQ%+Tx*Byk z{w?mJ6}GjF%iJnY)BH8dcvOKl5$NCZ$iMpJmaMKlk&d96bT;k%zMT2e>oJMF!yXLp z44({Zt=vn~P4hU{MzX6@C}!g4obENe=Ewad7OUVk@$OaTbf!0(2HYlK-xzinvH&BC zs!NjXNa$jBT13_{M)&ow4wdb6V+bI!Me^&u1g-)(MJ@6?i$C))3k&Qc$Eeha!l=w> z{PZ&8NnhJw;7f25Ec=QFq76}tHPcv1SsaR@-~3u*FDhO>{BC!(jM9rt9^-Ek2eKkfaGQg~YDwst)$I$fF1qb%bqnOQ$ksKI%taU5D zxKgiPXEMdsLk(*=jX$I+!49L0?d)d@puAwtp^vjapOMoHH-`HX++0r=dNPcMbFc2h zH}bq~4P4|nK4uaUJ{B)n2OY68ee)y1WuQipE7El$>RCTVyGDZB>b1ZipZE)c@9d6y zK|97OtOb<%{2@dbeh%q;k7`VOD=YNL8TYT!<$eRe1;4#la=4kqZ;`EQHT+Uys&3ksz@Ai3XD_fWgTx*kkN^CFu3|QBeSBl=3 zk0`M|I>`g)94|aK5~vYFn!D3vfOW0o`y1;z)+$7m`Rz05?AI-Ij{*cdErS;O!-eD)=e6m1(sDR)_Bb2dQ6V3UH_FlDhX^E?A)Ri z*uBcp_d7t8%DnQ0SL+H>?nRT2RR?>Rhx^_IGy(Ob7Qq|zo5NoiarBI5j$eNI(~61! z3)ySGy=5A%aXB8_M@s3s{zacI6P+p5eOxeytSQh8;1lloFY4|s0#0a|%vs-g=LNw- z^i=gdZox)4f=12nz67W}C(n&{$IR7C!KgI-Mf3~%ijQm4FukT@?(2!^Z6E%uYL zhac0ZE9Kg~rboetU_a|bX`yJN0l%EElx4L|9Q)Pef?$t+&ZCOu{ya%27NS=6j^-Va zKxCae z#BAo6{d7NIORmVSY{yKeztVW9HssO=+$XLF;~|k_M$L)>M(M(0H&%2h-=yA((rOhN8rRb#L@TI<$(Z@M9KK4iKc7c~=D%eCy03%YI zh)e4gaq(2R++r0FvC)svHEn5Aw-tLAte=>G60+KTOL0Jzl$C6NQ0|`ErAb!`)E5c! z24d<|wUFwVH9RN0MGh1&lnH$NOwMqh{3|dG2Q3Mf2UrZgl3uad zZeD8dgb|AS00e-@ik=0>)C=K*N0?78)w|Z0RgU}9wYp=kkdt+zD;i2kzA}7By<7fYA_Z!t)pNF&49|`fp3GXNt(=m3e*<5!_mH9YY$YD|kNG1Ww{NKyQs! z5835B@Vm6LW32R0V%?}TorVwFW9Y-3xtx%VvR=95v=~LTmfWaX!?oqMRpqj1w!GXH zot~zeLJ`Tt;Wg?l0?N%awV2dpl80IPOGE5tF)I?nIc)Ra6Ebnl3?48z&YCLrmKWyH z+Q;hkrO)|Ba+j&r_n`{ThxC2vH3V38&k+>h@h z^DPd&O~;;n=05tQgaiebpW3A>RWEC_nIc(aMClpap0;inRuC`H^fIam+|`z>9%sUP z%OR_aL3ocoN}^iWpMEpf*k5+wl^k`;Az>bMN7XnReM0)pmp&(hTtEz4`gq*7chZY| zxmJVVJe}F`#g{g@_`O}|(+n`Ml+{Km(|Hti$#su-!j7!~H>~0_zKA(RkvOp`VW!!o zRDrtcNUI({3Y{)tsMyPQW9=i$2VRtRzw3-4 zW^i0^Kfg2^pWuRi&!h4nOH81Zek8{G*nhJy zNEx+K_1jd2?rTqV-V@IcgmrOZylF&};d5#+D3kF^`xA4=WQ5@IDKI^eIDrzz%v2)v z*2h`mu|`!fC&RsD&&^@Rg-;icj4Hq@H=!7&EfOsz*m{#8fTR(IJf@*XmoF(J%kH&7 zEaV+lOC1pLS=#%E;w5uzZ(5ahHBF`|gZMgT_DCd}l~{QECP|$<>U|9X?ZWY0e)(C0 zVlkM*>ef0B$vKVpbjPHWU6~>$_p2@Ga1JfJIzB3<#EMU?!}-n)ntVKdJtTZ>%+>|| zqIj^qh7=D|15!Lvj#n+!``KBWsg+O&?99Rx#zh)D(`|anck}KrbZn_olW*)7HnfqEnCWYAACO%EATPrE|wJe zt;hZ^tBWYvkDzGp^XEwWWgHgXp+n1Fuv!x>`F2cIVfvVuV52j8M%IJN97ws~jV$d< zEbFlfbT*eEif|Y|+V<#>JyUFJb zSDEz|vzRFLX36y(;mljU&nCm<9TWi*iv5^u^tXL_E+o0ze8sgBCK%=-Eg{s@*F9w? zw!EO@GIy#)a-p3$$R0Bwiu4YV(t!4pO^k&^5!;@9A$o46?-P3D#PfzcYI4k@EUQIi zGu=0ESXOYTwU~f}evWW16KCN#F>2ayZDpbC`)C3J`dQsAJ=DYsBHa(#dL#?vd$s6s zl#f;m7>bOrb1&S&PrUxqHZzWocsE{E?#+fPc%>X@lbWLfeyZkPtcq3nDl&F`3n)*kehhm1+pfuc4~LrQv9i8oUOo=~uTzc9>Tjm}>+ zJWH_3ShIP&kHvrhN9pFa`PTA?gBU@k0J9G3Jf+15T#9FsL|X=dJ)t_rbVBa}&AwFR z3G6$l%dF9CEP=3r=c*Gcp!FnEPH>^Z?2c0<9XwY3!QC!NW9~V;^HL>ww@bS+l!4oY zugZf6m2&M$6i?5GJJF9HQ5x;XFYH73oO?%M;<@e*VrY2Cj(An%rzt*p9XbJYTWW`8 zx5%{TM7&4@w~OPVS~Sl3W6Jxcc-G<%KX#d(*Oes!6(5c-m&P|K8mncy8y_Xl#9Y`; zH6PKqK8qXOA6Q;l>rdHZ(w`)(`YMAXhG&2GWTK+z*{5+0O~BnTv@0DN!3aQ~Q)T6( z#t9)-W7G={!pfs6Y-yCa;=F1|j?T;8$-uR{LVupLJ`k&#dX2MJW-7h@<>|~v)*r+l zdP3Q)l{GEza*L4rj<)IaRHrZ{jPET`ZsW7n6ho$ zG$V{-;G>2GF5wF1?iutpj%%hFbVlADzOLF0*&t7>1UXhO^*hX?1d$A=K(hxLOa=^= zH2L>}BDs{6UHBhNH@A|2h%&>CZ1%*MFk^FxQt56_&sDDQt)#$-?hP^Rct+yXr=HAW z&mvNl(s&+HPw-?W*pOgoUkOX zm`A)ET#URdHW#Qfub^9{D)i}dt2?Y?#owc^OL^m5Nea_n2@>G28+vjNL*hKKqP}*G z%QTPLiZv5KKqzg-kVN8T_YiVV8*%)A#N5-&TfF8;BlUfbVciVtxb7&ni_ch^X%4lO zOCQ{KoweTeV#Q7Js>TiLqwtDEl`;B2+_vWK(+p>CLh3{u15MN96gD&0*U*<3TAu@c<)rRMzCN9X3cV%P zOHwrnC7I&Axh#)DBuy~Evsf|S1+|1Gxwf_ZEvDt74(n}!`z!dI8}s$MZaQqC5#)Zk zRac;^;mwGJ{pV@KfBje=2`e%;QMW0^_mj}WmpVDV%#Ne?2527gk59!fAuS1Z?cS3rzkj=GB6G>MKfYZg{1825b6ob&N&YL+ zChB-1@C!|S>ISI&GSYR&@g7zke=Hn_)%fG7BIM>UQ3b3y#vJ?v=*E1edHaioA#_vd zk0?nqQDDh&%v%%emJUSx;RQH5gruD!xt6HaOZX|C<)@v1w&82sNc%Se(I46osMka& znm^R*%>PEcMjK#0<1PAp{1Qww*)!11Idi{EWzFdz-n?8Wrsm^Z1{Hk+cYhg6uxm=e z#s00@JwQ%~0dj(U<*)DFzsQg)*esWE&*}ajA}2zyf4aE-^0%RnW0CP<;NIP*JGGK4 z?#N0(m4U3a=&HYYD%>yr!>TS_h2{cRE_8 zt7k}>;a}?k;9?BdJC2GI|tHl*c*R@O9!?0_42 zVw2ZyUaVk#Uy-xx3@W*r~jST0}}zR@z({p4!~3 zJPi7kuH^SmXUB55k1k9ajNL0=zdyA*pv~hvef;?+kB~^-85d&(ioy~6d3q$WvVA0N zbK5nW7t;yI7<^7&^>)4_hnj2KL<7;g1>`EEKM>v!OxH5i6!8kUx2uq4cWt`)=_vt$ zjp7d=cYf*(Z>=9IP)pYF*fB~|$%;WjR0^fzAusWuw05Od9B}O?Uc9~jiv_?6H^v`9 zl}OAFFu|n|2syamBS6n25bTD0&xkjD`yk`X!FcH_q=^9rM9q^BRtd9BJK*~;LJ~`1 zgmLdXVgfn;4Mz6!XOmkK#55V4KL5L_Ptko${{-DGM2|&uy^n|?jSTLxa@BQsro&J z9r|XNq1eByw0~WM>iDQ&jPJmnXhyDjhz^?B8F#v5zC710(XwE790Ok1M*guAb0^KWnV zKoSwSyW4HBz5)qv3gqfdyc$Nguil8=8H@UHWF$ps1h%;4P@%jFu>YYY)Y5>A-s|K@ zq0Yx~R($WWe{qVNyNy_O{IfFHuzfvbGMRq&Rpg$U9owh@X*1+H z`t@4H*82HA9`Hz}VVmH8Nfp%$GaMI`5$^VPxLw~{D~Gr_@6RzXV@mf8y%~Q_UqUd+ zV(?uahn`~!V4cYZo)#d33RDOz0&Kcd92npa9c78`gV3rXPq4#dnJJ=wi090Yi9kF@ zY}Ioxrim~ycHUZ{osN>1GnSL%jdzHy1xY1O7j7R{bKzb-)sf>lnm#;imfy{zJCx*L z7L{>EHO~3rtWw2%zr9}cZ8}YPBsWqrp7`EQP~uRB1+SH(n@CaHv7HTb*T%4;x0y?D z{mx8LPuIEkW+u~~bVUg}1VtB(Df9^O%Uf0m=`@6JzjpXO2lcN$2sL3RMfePXwHF^C z*AyotW7L;Tq|I1&nNEoBs)Eod=>=Jps{-<~W8t)?=rRDu{9wuDrbUcgU|HffDt!>8a?^INBdo6_>Kl@Z{l3I zYgYApwP?$-B|#cKLv%TK_^>c(6sXmP8bVGkCJ_KD!bzt*Itxm+i4m4)Y%bX1f1q%#eMKJBK3I%&i&pq(n$;Xw$ zs?5K-2>6x9gyh`p=WNgXMd==c$&A2UTN#X6T3Uy=+*C-WO1%M0qx9QpEV#tCX}rT-4`j#;#z!n(}19a>$cK&DM|-$``z=rpgCbM zVJK61@~y+H#(<|&Uae`8qBn?BOYw)7ojFQ+3J6W93E|*Ij zlI_A~m4mF&UFD1CU0$${U{Bv`BUli&R)d@j1RxQ|CLdGRRBV$y_Wr3JjvhV6V5MiJ zcvYLmlNb!LTIj29vT$F)=qWL|WxeuWU%UKVG7NVyH~`Qru3s=GNty5pc@ zzcsH?lAqLCP12`Wj3CiqSkmRw3t2kvOQjfR*)Uj3w_nFvhW{Z-6A`vUYAod`l~|`h z`kGs>Z{!6#;uVqFT_CI)-SwB{Mtv%^qbL(WSB!zKzmsj%sQSne%j_1#I^%>8Dgaux zLaLsjAWY*`1QzmyPkgJN4yGG>(&6aNBdI|ov`lj_uU2XHoLsk7T6pQgKBIZURSPgCc%<9z1YrJHQUkZ6ig*7koE?{q|Ja!WQkt3-<@@MHs1}}UAT#dy3_Bp ztbQb65bf`6qO&ZnMvWir@3lD3#=l|NRzH0(!Sqz*!}~GZZ$6^P^eVe~`J1(1=BOJH&ujtmrOeAc3#3&wH(K`Lw7izpvo8bjR}QS zDMRBKODyXG(>z+Kh2w5?f;Yljc+PSqOP6>!wngmqJbHm6tpgXlh9cKPac&(P0XR}m~Nw&>{3bwRez5r{C@n7>y?uIMBj zsFk0qC>_b0WCwxQ8UrPEZw4Pm<(ZM-m^`q1du!p#k@N3Qrc7?qux)yPo zs*N!38zgiTh*mddiMVZBBST2|^||Jj-Kk;Pfo+J<8oDmo49`e;m3UWiCEe;9b_Dvg z?$S-C;+D88QE{p1sl*mjbry4=%WI6mUA1YRNkYR{S7(N*PRas++<7{McjP_=ITfI5 z-^ebV=UiBU!AW^9>8Uky48}b1zwJr$7fr*eeBc6s$({M#Qloz z>vF6(E=M|Ad8lTm+uSKM##WZu&3lk`IlJ`sjZBV(6|KYt2mghmg<@KU?tOC0JAoqD zpYh2br%ij7r@SdkawFT30zY) zo+w^}fW(c3mjTNB#$S~NN(&+ha*_h>cX6+*I6Fb^2c6dv zh6N&9gdL&%htGPGOqoc}!;c(?pcgw+UX7KHx>)lCPYR7SwN+nfrHsce><}9J*7~xl zPR|m-_@Pub1yyyS08UgV*ElmsJfd3aXMZZKKJk);C4~;xerxz>dP!bZHn(vE86qp- zYfitDaf4zX?E2F%gb>vf!9Mi*;&0-rLv${?KPe&IJ;$q&=TNuJyIB}nY!P!c)G8D_ zi_JohuppqdE7#kflxS!UG8_8u!EcCiiFT^2-hXd(x<$S_ORMCqx-2U#jZz+|tbAvmqK=6Sf~+3ShAFDct$fsaCq z#5t(NC|GeOZr!XdxoKV~gRP8fN&8Ph761I7b~d}y?Hrm+=gp#gd%dW_Xqu|mi$6-SmZg;P81$~u4M z8O^TOXQoHh?0U)SP8rE~V-V3DAfPSO7jcW%@ifOezuhLN>iotqK={*T*!aV|)E;U* z@cQdFH-OJ23eiJxD&e?ZZ6_}UlqV!9=hHHI#tX_>4M{}1c-fO!a*{6Gj zQ^dh=JB$4`bB_QceQ)ywr*iwG`T~@Ii_)=3F z1J$D+3UTGmS#3qQjuzv%s{Rm@kM4Omc`oA@e~?{XnL7E4+Yj64cyZxOg#V4Y`_b>ze|RfI zyi-ZNO1w4B1qjw1wqnWYG+YJc`SInyQJbHCko{Va_bc`K_;x7rX#CNqet$GLPyU-n zBZREHFtWVASf=Ox7cJAwf3Zw+V1IVs+q?!^OypVBWt3oihwxR<{1cfzx)J^K45ARn zQaXhZ%6LU*rX!ITSg57uqvh&=LSh^!wKuz&vjKcnJ}4xFT-H+|$?v+da(JA}d>Rr` z_b4!Mt^3&CIJJ(`RYA*Plh_R!8k+F9IId8!&1c4I9&qaLnfISlhc@ASq;?9V#jVzo zT#;QGESMe-V2pyJNYj1$00_9z+?s{5=H{91RLzhvyHwPB0M}>5!6GYO@a~2oL;qk_ zJq^Z{#MT%AIe|~EnTgvBvE66RoO$c8q=8J!8v#KTi^pUO?8Va{2H`)p(Xnb*(i3u1 zOR>2dmQ(3)XK&Dq<)lcdN5Z+Q>o|{YB=QWN*=vlIyik=Q30Kn(wXrL3D4xs_eEtnB{H3`u;XIIGfn8Qe7s@;BV%ab!dpjex96YqIO*wmlx8 z{6^vAo;i%r+JXs@VBY^`Tuh8}*;0tf@PdMwxN4u62aB-T-CQBz- zOTpd!T||;;x$M?5i&Z7}u8(Nwnu^SIjmNj0Uq4>FHo$s}Q{V~jN|*2<_t3$>>B%c} zRyDa1(5Qvj4>)7n-!&ZGdLJBNRk0&Y#jC>w@n&x&C7$ExxotsZ+>C%VNI1YoemnIh z^M?TEj9I_{3o2gO{_N{ujq76zmIg!c7Z!Sex*&gfXNo)x2!arUd27BehZm`R=>=EE zF6fYP!l@%E1tsM_dT#&rf#E4cw+0TzSpH6gwsu60zITm1u?xfiyzF{=a5OjAgx()1El_u2*`=Na&wb$+9Wc6e zke))mWQ%^VPQAZ%@9~g|_gNAqV78b7-$itOyKoDGGc1pm?zCGt61;VKs7*wS|3r_* zB?YTV9OGlfz&l3iJJ6+%3&1|l{ zIORJv<8o1M|N6$sdgwIyLUWAK(O6?@FRh{hpT+KcE@SUJ18_Yt{e(uQO{{P`Kd1baD| z7g;B^tAU!jgkct7obhvV4H~2`WxgQG+l5<2%uPZ$BUD)u;(@;BO%yx3G*m>0t*U0p z!bjLyL9TZ)?iCpJ8(=Up3~&m=ZBS=lS&datjVxqYf$6?WynhkvTvEGU{INij+$K&8Nxgt9j^>=o z15=ewYV8L~;u2Dq4z}G0sv36)F{K_7pJlz%*n=+4tXDl*M!XnqdN<>msdV~-)KAr1 ziQnw@N|vUVLTIloTI&zRJ7Xf<6KiRB{@Z*uIefvJ5Q4>>!7 z%EIJ{fjm}8?!`|J7MVQu@vR7L_wIX%cgx5PE$t|x0BGVuTVa8+_#*Rw zyJSqeZ|<7sRG5rtSe;rK={LeR0l?U4z@7y^@&GqDJ(6HR;seXWyu#|`#8Yl?zyySH zoBdQN_x4dh3}WT7ctuBWiTO3};pK?AtmmRNP`xaJh{Koachhi7D4xv*uw%B+<#4s+ zU%1iFSW8PzHw8z5RiRDS8%0J+>eGYLVq5|+wPTrN+Pex?7Yzn&^FkQu?gd?lR`~Sk z2Cno#DsI!wxZEi}cXmM}$gb;zK~_%1xCn|dxsCK$SReHd1=W10ko!Z0{nB6$D~9Ca zLkzEBaN9EZOEP(35M8DB!LGx=n?;x?14_v-e%zWZ8My(Cq=m+@Fh$H0+{))Qfo#E_ zqR!u{zWy-KKY+1M#nb-5PbJk@R`>SrHw#CetBNo01c)emM4!o5C7GuP>r4)udl~m2 zJ}~0JWqE#Pu$>&4$M(E2n>K+ElxNgK!Qln>$p(e{6#nv-# z2V&A%R8CRpAOY*{C3egcKAbFO2xyu7-U!u4UDE^&HOp+B_k(qsQ=|#tpSCEMEPnVb zRvlxr_oDeA>)=3qa{tKH^^>uCLL0|w@& zE4$btx1c7}@g1@fY&!9V-qT9Oal{MPn{`{fZFkRe@#46ee2*k!^6EcD*5@-7C$tq0 zT23X9hk>lLT#7(Rl&W$q9EOC9-9z9R;yOJ!j*07+`nB*Tw&1*?FN$QdxMa8Z0%z{7j3E6&NDrY~tF*mwO zB1G4`iuH=Mf{+*4cu(3b_Q2kUYC-a@czOSD>_U8*FpuK-!Etc&^RN?sX|?ER!lE@e zVtb^FkR_^`M^_r-O$s^zgY>zeJpb^qioqn#$1TTqbr-DGYZIRZn8kFM@F0zDBl2b> zn|r$CY@*%#%0}_*TTob!{z+kdU{>00Q!kH^t-`I6;L?nsd!MB!6+ATR=IC3=cDAj2 zu%d$^>7;=6MjEZN>rIb?l6OGv)SbcX&=3XwxffIIQ;Wou1AQs znT}!hK82%yi2h721CpC&i|q-gvBMX<`^PMc$B$}u=v_I68S_8hE2jqBCmykju3Qih z=vj;)n-2VTlQGF!D(@MBInc%f=dijjNZ{ z>J%yFi7ge#$3_ej`Hq(Txi5uOiwV0J^!9ztuzPcXai#8eZkQJUMUDk+JS(k)ycmi= zS;ElaEBhs_m-Y`@FAkZ!{X(z6IOPQA>bl_luDT>=vXOPDdNdOBV73CAA~TqoqV@-< zx0ovS2dH-y*gBa{e^XW;es&4gICeLgexu5O#;Do{hgQttjdq}kR^)x!u*V$^E2B#T zYK%z;sW*(|goRWJmHDMk1-#yhT_C+)D49>s$gFIfB*df*`vK~m4q5NLSR^2@D&7mL zY3OV1S{SY~{KVvbC0VmM@{&G$)?yfPsk zO@3={b|#(?Me->{b979<_OYquW|B(+oAwAp*DKx1$+btuuO`gm^s+w)`^K$U$B29T z)`5>eEQCNU*}6X!JQ$n%U@{S4w7H349e47#H!8e)_)RJe_GoG_g@L7Vy-J|Oi|A?y$*Z7c`&p@=!t8*=`(RiO~#qV zdCA0Kh+EhaZx2I2c>bMxo7OF@%{6o{Ddv|Uo%3v11sBqql{pn?^ z1`#Q@Y1Z)dS$>nc{L)-KGK_}ySqNHirWmL)JF=YECx1=hN3#NYwUx5@>GCLkWqvTIJEjUlaZ%h5(=&W?} zzw4|V&^V3=3L?6upb+(e!L`*xMjfc=MBo~LYUq`)5%n3ctAKfwM7hkt!WmS(S8hA2 z4ks%hW@8A@QQXJr=*$uyzO_R53k8QTk{bb&+;Y$PjF2R(a4<48xo?fI!>ovM+d9Jn zd&P&-_SdgJ&eSeb;Q`tu4fI^S2nXL=k4p%F@6N{{t}oV(LXDV_>i)3W)IyGSPsL`8 z?1zx-MD`n`?pIkpy)oNdkk|~n7^ikLB`^!9=77cQV(%Fe4)8VQ-VM0r@vO5OZ zjx#9GL|(L?pCqzh8ICs%t(@IG?iIbj{IuE^7fG)+T(~~tQ(_Nfzg58X%Yub(zda|w zzCA;?vI5~(0PVu)&Ju`s3`iT6+Kg#F?M_CNd%(iEN~^(l*WNTY@WHH28rXI!m%r|v zL!_vqshQzF-5q7C@DP(E_!#Bju$ltyMHs}%?Z_uzg)aDgm}|MTrhIU)XLWz@U7AG# zglz1q;P{P#&MCK1|8FK#0ZRIBZjl4|#%3?(j;wl`3k17LP4IDI%i}}c$zmEIH9gYsj71?>qS@P&l{KW9GT>b%3A96S)JP0lROa6tJF?#UI{Tj%aj! z`o#S&@@lTqA;_yk{-T0@`BB#EOBR$8LlE6Xm24buA0@U5T5?p{tv3XII_PRNLo9#` z-UyLaGOID!3SFT{q{?W%U7MxdcKZ*sMCr-C2mb*rQIUM2-@*86gzLfN@{K^ZD?NRe zcHm-R?g91_$NBE2-lM3axXPa|hI_m8D1yhj{JtXEGK)0C1Rw ze)$e)iALbN=-1@#ox8=C@g4Bfs}uhG_bKjxIH^2Wo7nFu2BF!}nMlgSIHgMK zLqcjnx*MoW=>H_1?yga$>CEOpT&wC#wKL9O0>-KqfB`VUro6n%n7!5N*P*M;MbLlp zK2h0ylmpl?FYlyCX#oltWPc%os$6yHNGicqr3%13kn1oLBp*B2JxYf8C%>xHmJ2Aa zUU7h*h_4o=qw3U)xP#$eHCpNEnXv`#a)FF5fjp(MF~AT^WS(&D%hql<>ClP3Ap-2~ z+D*sVTNu*qy6?t%PT0vgV4{mVxoL*GNcFF$m=Bk5CFq=a$ z;=aPLh1NDi#ij?Sgrv5(mbc$Wa?YCCE`G?6cRz3Msu=xYYTT#BP0dIvRY5!NxNVb->90d;l>E1yV%}KlgYa5 z6M4is)(Oxwp&4f2AGU?es=?|rkw8LFf}YJ?#MG*{)p7hX(!u`_CGc}Q!Buu-3|oiI zZwTNM8f@f#eGFnQYA9|NGqR;plTMbvsd@o8(khq;2q!oN>ql6uzz%G9BiLiG+UH(Ia<%I4^IOm=8{)Q`v4tuX~ z9qzB9B%L2jE@0oA+K|$9TXD!KFG2_`Hs{Y>|)r z2vgi4$inwzg5R1C@RboO^&-Q?>MDpUiPb=|%KvLH-lVk@(H@0Yrz~auG=!r`#z@u1 zN$D1wIBnbHH0qv=pLL8H7;B9xes*b~(<&fyq(o(tag=wYeQ9QUxVlheji6EN&|0Q> zh0kbn{%Sl6pUZ>uVv!Nqb~fSdZyue-E;6+jf7o$XSdlWiC*u=;hf7fVt$+s!ocH6O z39Y66_Hh>EZ2{(C1LMY-HYrPP z1;c+2OY4O7lbLWip1dP+vSPVcN%DZNb8+Zy?tz}X_jVu!*763Hebq9Jv;PQ=C1olu zt{opWJ)h71;Vnfmqu(@INl_D#UR0(X*Eljy=4P&b;irq9;sMg=oiwt9!*IEHk~q+B zsXs5-;`QB6bYbOip}M^6F6k$g!c|cQAfF`>bAQQP6hAME-h2G2#+TdQ*E(X`?%4xq zc-;m>BpA%?t=Q<*Jl$H#{i3p4v;h580-NeTh_d??d&}^&NfSoMs?Y}rjvx*OLrzcC z4AP!5!~O~cAbsc4Zxj=k_0=GC(HT-Q7cakKoY)~(6xAP-6y?z@%v8T#+sjX1pGeAn z<&ev^O(2Q)(}ojeYLC@k@$2o3yZhN2T_))>Cr(ah@PYEk7^*D1X&89gOC@A!n@T!oIo@!(brC0gjn>3$o-S7ALwfrPsoBR3F zgzwREqHjWwM|>jC_kwk*bu{>4HA0*&i5l`)zY`~R$<$WM=Ocs{etgPHQg|7QnVPIx z&1x8DOW#7`veOoG{MvdIkusL}_xh`xgA%i*=$Tyuf~pef2D-nL^?&{piw#-i*dMl? z`us)B6Z7y7Y6y9s{U+Y()6J;MffmmlPF>=1ff{v;npbBy3C+BIj~j_#8!}O2X5FRU zZ0Uc{q2Yg@L1SwBVJe|(2Uue}o?rNYQbw`dm1J;;BQ+R71jCmnNnenFnxU0o@U9lj z>DmfZAD<5;MBwnVybh!5*Cx#)a)5O5+e{ix-Kk0mE8o5^kCYjczd1r5>%qHrrtZ~0 zMBS!SZUs{BtF)s&9%^__Vjk3qYJK`w$1F#O_DcY03rj@s;*-&Ec9TT-w{|FF%vIHdd`>dv(P**0qj z{jgvkJfgEEj@92ENlIIrSX0yQ(ty-+vd}wO3J?GRQF#PhFT}2yn=^bH6;uLHn!!Ng)Y?y3lA_HzQ;-59|zdH$YjE&FHCWEch1eA>6 zu;zfFY5u(P&@<_*YFxwnMzP=cn|Ib$AMwskU6J+{_j0Sr&ED)SD#xoz-7^kOms-At zJ_`MEl(KINC`e)>G87jwGxTrKhD_W--_kU9_fER@Sn3DS_!2@iPIlJ!O;`HJ;f;1) z6YPkf8?&CiJ^JykZ=B=X!RxcWFa*4I{P!ocwd5+xs!I60G4>8d!-}<^ZgH;DYiHBS z_FMJvR5I;izmyj$l1$WPkkayUYt*ILh(De_s+0fPZ#Kbxp-VtsJkyo7iA)ySS9pc! z&H8G_);SLAeDMc7GfIx$mjXGo9jo0!%imjTed)_d%tDIZc=w}4xRHcB#Z|;KCEW44 z09Fuboowd~626)14_7q>gv4i8xee1}J%VNB7kJAtM4w_=V>&f0vix-0yo5s9mujSw zjM&-~Q{t#m6kbmMlyt)AY55p6eqOeZI-ta+`;sg z#VWh3N`q#D#q*rte4ew%?}Bjg#Sv;QwHKXt9R~~0{!-6hlL6EihzJS6_EYT-or2w} zOcr3?&D@u9$xm-7!-|yXhtrl9uqNWHt2E9`Wa_}Uu{1NC!pH{adf|A$EGr2gOVcn; zl5kQjlR>g}BQ-vu3HlhwgCE6*&T?_mI&_f^fl4_cl$l+t1P+W`xraSz(zjikf76C@ zex?oYT0c0YX#aM}xrS<8eu{y=M)b~S@Z8q;8PI-Z~ySqda>?HJ`zSL(1+b<5QR!oBPh>^6d1;>H#sG z%5A%R>Yg>Wx%tf}*#-;WcIxsSn)@z6n4A4kp|NrPaUSajRlC-NGiSN2Rm2sXrjipy zo!{cusjp#9dXddri%3^}!z?o#SB5~t*%!%MR-E}w0~iO@)yFEGcuKUF3B(&8gO)D`1tr#B}4hfii!sV z;2e3*@ffc+khh{=@ROqO99tlTfBb1cAV+cCm*7GW2ud{w0wK^1ojc^$C=6j9`P~nw z(N(#U{>S+J^vr8mu?S=5AOz%H%M(wVFCSmN{XswolZ37e01z1T@JdoWAv%2X#+1Gv zj(~ZJ`^GVYvwzWu`#m9bwx1;$;{R6iFzdxgoxTaxVND(PSHrNuWZ^x*3=j=>=A&ak zt7{;-fk5_3Lcm3BgmrE(sTP6fJ0$6 z?SZ|ASCxh=$qbt*MW)>N!(u|<#~r~emI-AMRxDvLQYy6SxH-O-sxDCm7&e*ps+*5B zmIB+IzX``vAO>IIiLCc(zUPb$j`_$Ay_Cf5pv{B8T+PrYfz-W+q`F}u3^)eo>hxRN zp3A{5J+=>qs7<2GfJ=TyY^Yhj;xfAFg%DZWG-~Av3aCV5YxxSDv^#){x`i2u+&1F1 zV$|%t@pHi@9_b9=>`PJA9pG}-?HG{5K)gZ6zhMrXNK}ekzO5vx{T)e^aeGI`veX!>{;e zcUa#ht}EjZ16OtVh~l#IB-NsJSc6#CAl>5L_a!yPBiVum;3(o zAwu0)PLAHD2XXoryWU^^6XFyXI{xR9^H(1;UB^R}W6%d}SVflCVvPjfRLk^-?u8E4 z-#m$TUjKnU{3jOjv2R!MtHPsgNMSW5{k9ta1y3P9bN;xS#ji}{Uf2h4S$dYtZ16jJ zLjlw9zwmGWldEiw)nZlo=)oKd?A)I2yJLrtwjsmDEpPbcW*813O5+`=^JmPkLW@)X zx5xrU0!*i|3U`RG;sFg<fZ@C*PHZxGJ z`=51Z6~_NP-P!!+4M}^u5UiH*T9#nCK)3yZh4X&}CMU(e4K07fPu?dVd3j~SCeP}E z&Mv?0{vuCwx$UFY`&VR|sqNlhU?&(_#KMatYF3&07(_I=t34*DZif6q=<^UUP| zx@wb0W#H@0DSjPbyzZTy*!s(g{qv{JKMbm%oOAsNtYGn}96ADTJ@#FOP#tpBGj@Mw zDo~QTKm-s$l=;Q6|Bt)3j;cC)`~Cp| z=@gJI0fUh4P9+3E1!*{d(jnbQN{J{Pf=Wmoy1ONgB5@Agozm%VA7|zp^Bv~CfA{^Y z^{n-*#UHa~IcMa2_Gj;Xy|35xem7191^^d{ZeUJonw|=LxLIkcdSaLrRZ#r2Q|W=d zm%Kdw^FgI+g|%iA z3b=Vw?yv^1)WMO?a*nja%a4$54l~PRW48k`hEtH2O}Td=k3-g|Iyv8K-A&^@R74{gY`X(~eNBA|Ji)-b37O2qVgB%a8hv zpVw|b_j&4c>i+eOw4+mf@+Y59Cs8IwW2wy#Hjkrgc{zTZYZ=a=&$2C!Xj)#ZpSLqo|NVx;#3jJyr(r+2uxni|GYjw{N>;Px#QPg~JXVjl`o5Qaq{MK6^PP>u#Ocr+X04^jG~eXFfW|G3Ef$K6cs>OZ(~zj#Bi*2!E`pg!BjXF@x9DPS~Lj|7_EE&K^+j#T3K z18B~vWoV%^xgyj`=P}qxDsVs_bk@dEftzY5u3*^3aKp zg3Ef>SK-^LOEV8a;JHR>CC`gVl7B&(AIYhHKd$`vD(&xx=0|P4e<=|G;v5X3^V zlGGM_oO$eD?l995Q~`L#vaZn}v>po@FPXR8ZL6RO(Pf>k0p)CQq|*3OMRE20_!@OX z=To;an@SzYdT-ZB_a%8%Py1(hzndvnR|~BeoA# zzALr|g;n_DEB7t-B`4=3mDe3FCdVmKByZS^RRC2T8XVlt@~>3%5-3%lF>wk+G7f`b z&xTf3vC#-sXSh{nk*Lf1Yw#Z}z$<|jf(N=$Xgv|iYf;MN0isq$A}N$$1_Eicm`0-h zpTKm!^n-#w#>#6(S+V33qT38Fm@|*$&G)rP4gnU!CRTLrvD+v zr%p%bQp-8$)QhO@=65dFIV&v{ycvcj@_DeRm5P0DZmn>6j41esg#aaiteVm>l-P(HYM zau-B=@mpEF%_nXG9{eHTHU%d&4nB}!55d2Q(`F*~+4uvs%X_xWBhuOVrF3~R93*NT zg)_Wb>8Nqg`yPKRH{75$o?At^A2=raz_~vd^)UO*RV%KieBfMbI_C^Vw-A%h|1A9rbRebwPy-prcjPF`x5nR$mIJWZ z=a1Sk#eQ5_0zS)FT%lQ^a>0Lswtu%--X0e8ijT#3u~>opqoL2|F%_iIDKfu<#_vKk zK5PxlH3@Kw==my11PPV143VNRCEd|%otVz!_?%hwo9lAzS(tlO)^WsQ$;rsjLxGI^ z7x`lvz^kU(-uc#({gRF97P6A?ZgI#>r$;e@n>rX^&-K)+ z30gzP9g??{b#5^kT|vjkc|~-i8BGIfwchM!)Q01tqS6*>G$N<*oLp`_r#ReKdGO{d zzW@##Z3ax`ujm?Iz6_9GOl?KDQpP1tAX0VAEe_AqLOLfBJz?TYu3KqqPLsR!=@V|I zD%%^wHi?~XExIxene_-G4hq@o6d|Ftuchv==rl~MfH5bJj=!)I6aN;!3%*23p+0ViabsKb} z^^gzNTG#V+N?GA-u?x!N#E1fROS|%+$Ed_E9qgR3Gjbgy{3IWYq^UICt!wl67dJ)_ z=5uz}$U{0LNF5SYbjfSGBVG~a3v^F=fE1Acc!Cm2RK6gwCZ*y%)T*-L7>%GHzTxDU zcDC?7_JP=pch=Tq#D0_`Xt2*_#Pr4}1P}pve?LEb!9=5E=KEx`Vq;(I-n$#$-{s@; z(nU}j4NsK1i!+a(SISao67SNbpH`)AYv*VEsC_wEE?()RyKsP7-4^T3fgD3ro1gGfloZ9!nMG=X8@?2eXpHz{D%kvO_Us+rUKj z8q5yWz1 zmEUTG4fpg@WPxHdoiTUf&cjX$)TG`er+#6!!6+4hims$2k=Nk2JY^*m9myv6@$p{l zt43L^&KgqUqfnjM5BhY`%Gxy=JSew|S^%h*5N z7Z;pl=^! z^@;hsgn0_dtM8_|C%Ky3;E@D(hW4$T91a?~F0BRH>-5$sCYww8en!;vb-2e7hp18H zEc&<7+-9+1AL-~;aqMb0DyUO+M_nU0;!j&oQ(bvvMD|m=-*#~7l7D6SX}MR673z1% zk5m?x7By-DyN)I6!%B)fDm<>htWqy!h|hU-5Q?IVxrTa`hKT&Tj-SFH(kbm_IZJpc z`=CiH4Mz9`ds(S^xEV8l0I^Q7Q$$fuSBv1|0rpwu^%7_Uz`tsd^9kUZogut>UUGB} zPJRrHO3)24&PcO{@K_Q%KKI>Q{x*{|=-d`SMZGf6(P1Kr#$O&qoFq($DvE#;h3CSM zR6$6unI(rpxv%h5|9BX2dM-;uxq!$_^SX-9QRIWyTF$#7CbM343#r(jZ)bABY)ut9Md^`=u19MMuWu?XQ=1U ztQw~M)}-_JXjMh6h<4Zf#!y~VZ39Jh!mFm5AiLh~!~DU7mhh_ZA>Jhh6hbO3u(!jr zXlHj}Bgf`RL(L>2uN>wc9|vd1P^kA|67=q_d^9dLN{LV?SqgL|+M=A4HuWmSNi3;j zzNyi)$RIGk%_;R>{#j%|uYQAt?V`BMft}a1n{+T&vLjIpv0tuebR=J+q6z!15Wh$F zK)X$VOZR;iXn2-2+ChKaOK5l$+RpWi>&8jdX%Y&}r&0JC))J#V6Xad@qbPjcm!QXC zhq&dwa~uV~cKRhS2Pu#uVL#7+dtCxzpp4Srua}wk>e4l#$^f?d=_LD7zK%%jkGI?2 zb#Rc{K-L;^wh)Y5n~%ahA*kZM7b32Y?UN7tuCb+Q!&0dPusT_|lEY!x&R*SjCq32* z1T&7(Ml_b3);}s^3JhVjSxenc+(%a6$-EY7JB#^8PRgfIbDx!c--y2<@e}+`pU263 z>EXlw+7Er2%I$kz&ud;rC?qq|dPi%jRMucTkNnWQFRrTHp+T3Rr~(AyUR#wd!vOxuS{>P@18fYaLf*la z(&%zhm;5krgOBpyag38mJy>+jHN!S4dx@q)5n?Uw$!QVnEe~N%1qk#`b3c%LF&?B#rjREazq}QP;xKjdwdM z347Q|C~D~$PyhO``gMZ6M#;B$pG5rImtPX}$QwrB?m%&c+9aEc+tjJ<5Fa^7-aP+y zyud~z&b%P0Y4JB78Y<<8rh7DNsv@oVcYo^N-=%pz@N9&=PY2yEIiUaJ)P_qjEMZK) z$oJi6n3wQZ(atvqYdq$+HQp{xhE{!+@{vb^HdX>P5&H4(zXt33@1J5dJ(Vg*j24*n zt!sK1v%~7v09s0(RzF@OkD=sDCmJX>mVxjO1T z0V_2XrLnpL$hnyBiow3Lx-ZJY6d#nSafq4)Wt?zsE_iQ$9^=)V+_CGQ(DIvZ!mJH_%ytsYP9x z?HI^Sd4|k51pbbrKX!L*KwM)*D}g8+IR*w!&0DtAr!yeTeFB+tH3l|98({13SY6%d ziJ`aiQECDhNk&e9W~rsFiY(k42KwMBuoNf&)6gy;g;5)b;H?f`zF%%-!+}a`4y@SJ zMt>p`LiAlH%#c>UAls|Owt9hlZKTNX>0G3m53rzI2aYDi7`Wu{_tGz|L9*fjfOE${ z{GD+Ky-$^D5??ox%LfKl8|$Dc0o8XwwEO%#of_L)`M!a4khnr1^uCIoP;6UD=s<}= z&$zlzU@VaPL7EuC=VCYgNmU~@M%=qQeFvjG>#c;Q8xm(w;kR&@X=ld)3*4m;(+(Pmj{YsWQ{h)HHzm91R(3=A?XK5aAh7nusR#FaAt4@)n~2p1 zIwPtFhuxx|zy#$1aD546B@kV|>p2rd(E_WJ1VFWf)mTMAUz)gRon(S3X**zY>_+sQ zBEjf^>p}9=S%*S2oegNK;DvyGL9NR-c?yK&&*KMcVDeQQ+-`?~Kic*LC{(;2^kN8D z^wXr@J}lXp>l_2dDq6$#d)_QWuTk`{)rUS_x)MUAew~8=GM+d&*suat)1MX=77)H- z)GxqlAPk?-wJCoTWGjff1}dv)e4u4q9Cb*zr?O_;r=0i0u z8D_KT$Tq&_Z#z~>2|_|15>g@X=(4jAKT zh3&L}a_>rjdW4%AgAxs}GL_aUdUm4^dOCfjbaSF_CdsC;9??mkoVR11oo;*3%eyF; zbM&Tr^roKfGe8g7gyT}^#@p1uuUfb#OSYeFEsZ5qcA^^#C4*a2NCUElLaeAFo~YJH zn~n>uea(=C=g2`B%>lJs2D&BMAe$^;yXO=|BOy{Dv#6IB!41saB(+Y%MuiWk&`hbfqFXi^THxt&oL~ux{S8&4;H|4v$|qH zuxH!WlmOVCSN71oj_MKun-rzuXH5Caj!P+YA0}i0TViNev%-2h(s%(9*@kdiJ@>vT zzTBn?D_W>u%T9Gkst2YajLL!%r13!>?4ra<-Qz5z;ikg2V47lbndd5<+j}xHvY>Ut zfOXCiPiE8vSl17x*l-MY^1vQy&-G%(u8%C=1!AQYxH5l$YD#l_9lUkqf% zs#{AS_KauXD^LW9?tK9He=`Z8)cF@b;v3O3m^C#%w}0l{f3XJtq-XCsZO*KilwD)< z;&@>6`oZemTH96UnWNlnwemC@kKlAJ;LyI-sOY;^r@Ewq|4C*eXN#;Q?%>{Rnm`K< z|7(yq7(`VR7)!Dr?}}=&4*EwMq0CY6o4au;dU`h`jIM-tKCLXU*d&((Bf0VC`4;1q#H|nOGxw!3 zSYyFkl&>gz$sGkejQ1tT0^_*8-NjwRlmCbW7?P-)iP+h6!PY)^o%(&)SpPf1r* zOFv~ZUku7PfP!CFi#aX!+FyW|fI?17&iF(s?(W82)((F+hAuImQpgP;;`e<%RvIU(wdISAi%gbT?7vsLj5V3#}n zqPf-vAiIca1poYJ5?VFM?wek1`Ld)Aw|2>Xp2KC4x!sVwR#2OD7+z04sy#iZm(l+oUFK#=~{QcZ^U~ z`DV5>w-zF|bngQM!z%^Q>iY`!FwxL&^f@lftTQ z&1`j9Zv579{m^5{BZX8C2}yxHRbhDv3a;H_K1rC*SMhm}UQv%4l7Q#6{_&==^$S5G{RK25k=@ zcyjF4vpCl++O8i$G)A3TJYOCTJ$j;V2DEuA__ILxs}JbOZ<#1?+4mD;g)7R0mfyc@ z@j72K{8@8!chX@n1vGVvT1A6|>mg9$P}i17!O81#QyUXJ>3Ak5{T*zJHu4L^;7E11 z9xA!?NF98Eyj(4s_b2kQX`3SF1Jb??aShI-a+@k>8?o))mLM{IAT$%WJpqQ6Xc|no z>j3k>$V;xf03HJWHKfv^UgXMFNyd6A6oaDTvSH_Ys_VI$n;n2fi`@hnXR3MQA2h9k zKLdyXUiLazx};=i9@rkhJ>V`uz6f@|w7q!-o#FQk^c3mtjJ78xy%;=H ziD5Ssoi&g!NE8vFJS69ctE!c4z)j)qnUnCwsp~x?m#|noJu{f5wz51Hqa(G7mTYKp zL42x!$>X>dYKuZzj)ZvUPT|~y960&h+tM10gOh%gbt>FO$XKkdsE$XWPk&j+8@}}A zf6q#qBY<`{eB#@zz~lD8l=lAXGjFGIRh3mo-$-M!C)N$FMiQ0;gA6@J(KdCIr7I#3Iyee%V8A6GYY~({tm?P?ZE=ZD_ z`z->4Pr8D4{EjLLCp+I1s?p-`NMXucp3No(U1{J&_erwPN2Y3W7mb?!D<3FQwMk>3DaW*V?3hsuWMY+ z_lu{(qG;o5L}kP)O$)cEormGoOBc^@$@!d7tG;rqQ&%z6wt)Fiv(}Iiu8}59ceMmh z;%B$mq>Sbw^d+MRt^1qB(Xw#_wr{+WNne6Tw3$;0tlYqvr08va%Q#(6f^qQO+UM2J z2p8fUfeeQ#dgS7!a~3fB}0{9hu!E#QLPWD zj43e7=rIsxgH!e3qh%+$fVCrL3{`N{921$4}~h%n|s`3F^fCZ(PP-rsYFq}u3u{_mRxM_=wrxu!}?W; z4nMcoe?$?3bm74CCjL$C55M}Y;rwBxw(TJ*xMa5!1jnZcj1_MNg*|gAFev-*lV{eq#{m#OveRRQ5=5YMRw5^wOvG zngwkLI4;Q~`eN0zfl`8|B#X#EXFkiEBY+K2hm{Qsjg6ozSrxOOl%tbVmwU*bTwANu zRm|?QOX-r5o#tV=!yyy;Nk3myN8MuQ>{%t1c}9v0k!Tp0lof%yJF+Kspd<9XDnMrR zY>>0H6tO|~@+Y9@8@Jw*)PXCeWO0JTZ@qivZZoNVJ7F4ozNa?K z)A*@R#OZO+Y4Qr`(4h*cYJs@JgGkM+=-Yj09_#SnwC(hz@_tjD2FTCND$@d^W0ix= z91U*Vb&7S5vfeuzMAtP59`m^wr+Y-t*d^4N#m}Tiq&S~UoJabI=?qJIRmwVAKyaWeV`-*QXgHiMnUTz6X z4xS7NJ;lq>CI0SqF^s)>_dz;43|X5_EBW(cP`||D33V5g67^I_~OBIn#gCU?|KmcXki)LXvc}| zodA>YSBc*yh&WqnKQo+mHYOCB_Jbz$w}>RRfT2(aXlgrt+>B#pgqGg9Yh8H|3FQ0{9SHa{$bVATH=Mp50Y0tr}A>?VjUE_I$ zMO}g8jENGFlWQYZQBZA~=__24z5WYDB( zhrhX10YJ;ZVsG&MNJFyI?7dRJ)la~2zN^Xp$9#9Q`3sO#>+jl~zoJFou8K|$+jc3R z6zdxuw-Y_!Z8>*>waXb&Ypd__T~l;?<=Nk zqs=U+qofJyerdYD)QR-nk zD1%*>oFLGID8flq&uV3~7QS7cE%dheH_7fLPD^=Pk62KiOnK(Tg#Eh?`A@}Cssg#? z3ym>2?VOZazz)_c5~cH5#;)gCvfm>{1))v)3n6bm6FnJ~;`ydfA(i`2r5|W09O@>d6Z;Z*v)xEFU2d*@PL2f%ecwIZ5t9GVHh-6W{gdRu z!PHkXMIA{VbI4cp?o@O=M!XBBmF_Lf6>c1I`$1M6nsO$p8Bjj`AO1<*7i~bQ``aQ@ z$+rsYE2JGBJ2)rn3Xrx?`BH-Y^MaTN*3-^!x7~avF%8H{RkNG*Z;(qxLc!<$Ln1*SQ_KN%+xGy+y`eC={0fUFa7vHS@ziCJi`Ol*}Hef<+3ok8Z z{`q$O_SQ*7_@Nt#V_&)&{?tNISH+sILrIC+x8tu4;rFq9&_Ms(7-pPM2k+{U93Y)ZQ7H_1RPJgwu?-| zqXc%A!-jLsvh(k1O|{q85gIsqntu_!=yUh_jJ6FDM>Z^g?7z64RQO09boUCG1Z5^J zect|-O7EXyH<@-s6a&R$U=&z;0CBDySRPCQXfl4-<`j_98(?~@awzYKu8&Ux@FVYa zfg4|~1x@h+HQ>@|V=9S^G8_Zsza7XPD=z@{!8kZL>%g;vppg`r@&xkP;lO@bKU=ID z1hzo{8ItP^VxSZgZI;SMO-(nk>S)}rZ&(N2%bDTp=|9i10l?Ny z2f%wP(D%^MA3jV@L>@$Vdhw)}9z;}fNIC{d%dM;EE;Pe^Dk5O_V0@S1_74&xhDxUSHKBzO7233PeAaAU!s`qTRj$4+tyJ zbvmMS5PAhdMA0*@@1#h*76OWSK#svTr6l8}mN4fnTY?em(~Ulf3%FjSpy>IFQj0Y1 zM(Or=m0^XMQ5h?5Co5gODtL|c_jU=Pp0TrAi@uUm9d+WYSgi;=&<5UXueWr7so8yL zupGdrn(NR3(+MpKECKl3y0+D3Zk2bl8vsWv%>azzi(W!&LG|!Z5DhdeoCScRzitWS z9+6)>m!U1_p46X%cfX>gMFy0_vep1Wsu10*`mnCH7TR}T3T@lGy&(MZdrRbBsrG_9 z-xTTbTdZz0#2xmhfq18b4r;qV_K71EJ@V1wbvXtWr$g{41)~C zQTA;?*~%22*ScPlI}$XPohCBmQL#el(=h)|IsYf!dBLtgDlh+AobnG1Pq1`H*}^Az4eP7*1Ub^1Z(5^;Yy4`EtK^B;-R;y1MPaZ*g zduPj&ueXR!1r{dzMk|ZFtKySP}6l^?> zjQoc}Z+fVLISO32sZT;x!T9wY(jh4zh;NqLo3SfSp=vq}Bq_9ZS;|^-a@;2i%sEyb zW%Cg@l7gmyEQ zwcr5%X5RRMI4t&b-Lq$&>Pz2;@0v$ktbIyG1_x|HNB zG4gMEy@9uL0jx2yKr{P41bZ=F*T}v^&1>Uxozbwvx8*PyJFabYbnuH;XUY1t~XFR>3g^--0=7A6xH#BwzPeUH=yE) zbZ6u4EOEaVLksS{rLFpZg9;`|AveQu_Wz+s&)&iu7>9?hDyMFVR+=ygX5J|n1jsPb z0i7m0Z6-~x!AIh!Q&t4HFKAAoVWSUpsqKLDv>){FI)m{jAJ)Bx1&HGwYu_Zzu6?(I zTxwrgHR4braK4kQ-e3#o;YHJj z6pJ77aT!@J3Lt!1`@XjdS{DADbZ>PaPYQNM%`)V&czZT!nMd#SK}|fJp86y!g(*Ee z{@5#tK5%-nKK>LlXIr`;pic@0ClS~0rjf=>In>m+6A>6BHGSwrQ=s7N~6(|V>|(k=YSCr|X9-%S9d z!1x1kvjUSP8nCz<1JasgV5CTQz#-w*wKhY6EAOuPxp!(frQw-O-s)Z1s@qi~icE}0 zX!Ctr%TOHY@7FItJb8zrSGv`xz;&s{@a`V+KIE6gYY~;|&_S72zaMAuVjnm06Xb14 zm+ImpFNT&h`xfk(+Lwe9LS8{qua=d}*#%O%(WgOQX9OvXs25RCKPZVN1+x6e#X)6b zIZ&c*hkgaBeFsP88VFzr_(P}18s1%k5zbncy`TD}(+8pkI1#0EC$vXZv!f4}63_9)>4u2Gt^c)=(1-`i(r|}m=pRk(-OV7Z$Nh_z{ z@rr@o48_Sd?{PuEwm(WQoOtp$je#`T%7_DLpUvuh(L*w8-HcWWwyVa(VgWsfOXEi5 z=$*Vs9b5~YLu`WwaMQL6X6wz&YL~6z!>2wIuSPi4MBY34WHiK+Y6lZg9OC)2Tkv*Q zRX!_jo1p!nKOLb%cetWC4IbRKFz?jTA=;F-X3x@2&SOu17=O8U;q&e9dZrR1XVXrq z4KRLp+aA5?-RCyxMN~&(RRdP3Bd(R9@1(INEz(8W#aZ**n*8v~+eq<0S9SVk+a6gUSk89rnGO$`xiWB5L zEhU*yVp&x5l}f6+rkS9{lfYs^_TX;f7c=Z8tnvu@7!iq_jau+hhvY*6xqvZK2gXSm zb>o$^t_WS64FIiJmL_{b>0_1xFZow=M8Ew^xy8XBEPx_N>XKVsD{5@0a^J+I>T!|xOK*9Kv>;ZX8K963Gk;f% zgJZ06U}WV0wgTZm~2QVLXE*H9#7Xg zPG?>921+a=a6KGh@Z*VcLrviR%Bs_%9YCTN((Wl|(eQv3MUm1FtM+avg?9JrtP4&Z zbGRR%9t1-N??wdf{lIC8c&Soxl=KeDJa(OtdNB<2aiGQ`?my;D`myM=KbklsvEL`t z&aqlKgyG^R-x)uuDB=C5#Lt)fN@@3KymKS4Qw^)LQFK{<%t^HJT_GBh;AKS;yao?Z z=y)JO7Uj0Ya+7b+?l#V0NxJ`tb8zZ=m~KUNqNh1haDYfDX%n2CuO5?5)1CdNz>n{; z$7?|j?z5xc_}&mH-G*WFBM?}v3M`Yr=FE6b<(d%lw(Tod8KcQ5GUd~BG-)7@wm0+p zSGyi<&m`|%_52A!efVfP7a7^l-MOIHq3*i>?V}ft^^4NC!WlCSeA4#Fa+t~OO=!i#fHYawy9FNPPTH?-`B?aT zH*M5ZMs%uxM%%Rlu98%REeOZ1?r1)*1!R{nmqc{Pk*6?Dm4eqFz=9qE0CFD1dNIRB~dH;ybGz~nPFw?c{c>jgZ$ z(?i0?H!`}~ha=a*;y=Dw7Ip_A?X4+MPFI>)Gm%pZkc&d?VkS5*?-q9@Pe^RBa=pPM zeeZ(y-mXD7p}_T-$HedOrW=Jcq1>VGhsC!rExYCdq#Fs4qC4Z&&a0D7uhsz{lR~>$ z^ZC--_aOSO+qcufyC(+N&YrnXlovS#;x!frfmYBebBb1k+cPT|z5?DR$ooi!Gh`dOep`BryD&F>8U%yp0e zow|=?@Qaf~s@Mlhi5>)V@jLyF-~;#&pL`JOOPQ=EvZQGh4y_1nhHSs_R$;x%AGJb? z)&zD~I-ZtEKuEmS7lm}aW>|Eju}KGpv5dHQ29Pt``u*V<(ZDBeUlj{gA5)z#Pc`~F z9Pm+EVl8aTK|iVSBw9vnfP@unCei)CxjAG4Dj4I(42GOMRCYt^_kv<8)Xr~!t3NHe zQ6YZ%fC;I8JIv`fA%BDq2>JE6H>LNS{YB946Yd8C^B@-PXiWt*`sa~r{1ws@0tKCk z1z}8Nj1RqGXA{JSy}YWQ+6OFAfUeysKRDXZ-6q3oS7hKkzF*&!N*`A%^o!|tWefNd z)1UM^(~pRKP)HE>RU?AB@{1rIS&fpFgx$jNivg(iUA5suxpVnIvxfQlz#jBudm`Tt zM!a~`F7~QT*a4B^8XF!y=DS3@-d=C7`7QM(lG1Py0h}MUNawTU-ONg>cL!8&UPh&) z$??|^j6m-d9d~|o>6x5^jXaX|NNpcybqWDX1(Zw0qKWkRmH%*8DkhAX`iRuw~T)$-nD-zrJh4G62>jJEA0)8v(wXlC-d-Jo|5?KeH~%(Bb-P3Ri~*K~kKOY`GB+ zIzK)DpK^jX^fywhlnL@vApgrxK?>7Xh9dru`}6-wV*alN4&GDYHq}(~$2XnqueDC= zC>1>e0`n^a(TUx`!xz|(*S#Eyu2;T*ec|7%9-ex!72VGz>Ay^Q>t~|K-{65#=x<27 z+;N{x=w12_{8_a1zm9BykX*Wq{?t8rpG4H6i^)h z@ifT4uJCH%{*8j4Op-&61|?UwTKo`sM9&4)niodCdznSQ-o0?o+vtwR!uQO)L|DDi zc3?^;1-XAC+M^P~!L1yc7M#NJ$MD4azku}r%i#$n738Nxq_9B4ntr7JOaMtF2&*ES z>)#O;$@=#Gh|zNM){tcJ^D>0bY2x|H19L^X=V5Y5qLbCF!3{ivaRpDwM}?si{w@ZG zyX$a*&e2!=cdS8^bjGlgoYrRc8)<=NkD88gPD8k-JAK{iLGN4Fv*g_)EsW{o-K8;@ z&p~NfZCtL)z-B0w5>kDAtFa<=`Q!9=B*}SfE#Efm@|Aw z+T9U?^xAd-XYttTP#%Y*

    l^G#6cmzSQ^HX@3l;;@OwQ^bMe5*Z@#?WkKcSC`g8} zKw>NVLr+4c!ft71!9$6etw9_}p=KH+l8V0sT+aqYT-KjG(Q^pm2jP@7orl>ej;}x` z+2S!k7CxREmYPRS081SgF!`Url3)>1TX;E=!0(SNJb(d^^V(QtkvDjBaq;mMKXNSpe$`I9zTLh<>qEMK0sLC_r#_X;-h1jZaxHq3aX zN>d*c39UdDsZf;E^=XTa*!zHxEgUYldg2Mf2_FiJEtvL;Zi#sUhyD#Pkb%Ec2ejY9 zf=x4DKs9b;hI5uw*o-|bGN@k%q9pzlv%!nC;l8I8)|5U9G*Ko^eyGwn6~tg#fR}fg zX{&J+46&*>KQO2FwJz*PPW7ol@WK+N-p_L0u=-$clTqGKUCzO&XRTkcVnUy?U~_S8 zw=vz$bdruVaK<_qywxYj>e3=x(9Dp31vAoNE+0@A#ve$E!K?)wtToC>j^13LI-3)P zg6vhRwejjwU@>xYM&Z4~z0t(G#xg{HzB}QD+MvK+ejSg&*I@4i^69@Z)G5qbxo;gk z&rUT5#_kGT1Cg*ckUxJ9iqzG^SO2@ZI{ZG&z)ZTT4iMd*aL`e5Vs5?ji;L$8kiG`= zAzdOD;>NK`J9=~@^sBR=lVj0k@PQtSf`-)L<&Ysj;u&5*Zr?B0cFsz(rLBF7yGbx^ zJ+HL8Hy6oi_>{WUfYy9OwVsnka(^&)xKtIky~|RhXL5eHY?oTOl9HRDl|#E-k_Q1v?Oq)~Z0g=tOhF4aR`p zS*!YWXkb*Q&ds5C4ZYI@KQg=(pz$@|ZX&MlProF*k5U-unQj?N;-|^-Y3^@MqA$uw zaTTHp$oEDZm&DL~$fIJVC^9E767+I`C42(F^u90E!}a-EZtZ{u1OiFd8|_B)aho{4 z#KaF+;6*f;787t1!_D7d(3nw~3Z8?;hm9i*q6ADu+=DtP+yzDX;mUV52qz3Q0aAW~ zm5f15rja1=nngu4BFuq-ZVJ%vj8+Ls@+hpkM}LCf;gL*OMy9l8{6O_EzK6MG=d(-A ze99h!67jWf2`>H<*|)JOsu$QJP6n<~S{<>gvU;Bx0Fd%<)pr6NSs+fUSEo1uS)3#$`nvBgZ)$lc(y74fNZv8KJq#bJak6E zr>)m6lVAMViIBkSI*~2tlu@Cpplg<-X&bSWB0EdvOKF~*kdKbN-~n9cc}yJj6DXo& z;dO&0@>OjTvFwk@XNYB#F#}kcZu0vVZ-D$%3+Q)t$_HXQfsETF@1t*0VK-^Zn!>`! zEIONy{eo+M~Vtc))qj@ z%#N-)$wj)MR^{(}JaJVwS9l-JUa^$6h!N2@&N^mSRZUW&v1?Y&J>89Z@KupeC-tfG zdN^()l+q9e{d6aO^tt{6^-gbpB{{Ua)j^4D*YVynBW4_`+bJ$-} z?!BA7MfGvVlW#->JYM`Ie_XvddFF| z^JMSVHqVsqQA*<0uBX3Ue(u7qn^s=^KcM#F|31`i{|D4g98;1O3xE4U2OfCs9ahsP z{}MFxPZ;(PBW6tMj3iw z`WD19KJ2=PEHOBa5@~|eBCRnQNs&hHQ_I3S3vn%w?@TZylXE}rhTrMDs#6Pr zo0RsN*nz(g9s>BC)!cOO&Y_^;LgB?6y`g+vSv>&R#bRY2*!AWCg9XsH3h*G*4Mpi- zzH+~Ao@611OhA`hCVmg1{QjohhF0aw3VzLh!sQf1J@wcHGr{@L+5m=iND$Nmgi$ex zLkH2BV$znKEdq~`gYkZwPkBi%?do7nZ!I@^q9(zD7{-kEf3P_%yt+?D-Bm& zdhsVR8w+(ek}dGKb|Qt`IRh7~S$t?=1OMh?13-u0Tx`BL$*8&rFcfQq9THHR!-YsO zSg_p$i=}hQLhaZtg!E|bi{Gb6cPl|q`$SDa(hPx4S4t;q2H>MCmV!t8kmn<+ppNX{ zoR7rF^O5|^ne11VuB4WO>oa5y?~=-~(jan-DM&|}=C}lr2#5}20Mi>2#Q21~OqAJ9 zG7LmxnExxqo;wvjvGdKAzgI?hgTaLaRCX_*4;Hm~BExFMnBTzwDWz2hjq+w|xkFjM zw+~WxaRpNLV&y&1QAU}1aP!Ppe>9w|=Gp3sFqR>}Tp9z7N)lggRWxLji7Eoj%+Yl6 zckyj51OSLZ!V=hG;p)K3B9)>xoV%O;tb4PR_8rmrU~OVGnMJYq+1~f*}2B zo~^nz@;0s%Pvw4EH)VZD{QT801w!qEYf0QOhs|(e>B9|!PxRRhPef(|DUjm{{|$xP zS=Mi1bMot8Dt5)Ts`Of&g1f)nkLT-gXT=Ws9?vsio_Qb)j8#H1VN8-DsHTxwVeoKt zeczjo)3GvyX==FyX;z~}BF^?FiaoG*3Rug-!SFSa01Z;+oa~Sr?-hAwX;KT4tN2GE`Q)v0<@RgY+JT zObjg^3q$vXcj}e#9_5ft0y?oOAty^vtQ%)|`;P>PgHpN0L`2{V1ji86`^}pqRwjYk z)(Ib^%H$Xpk<7ZnT}ov2^zY1i@9g<(dw8pf2XgY6dvKFh!mFzOVAM)F-xiQz(ATWI zad?K7ivt(S-#)bR=eCAo@CWd0e4XU-J?^n5$mB4&OIZh@kHrR)U?+jjdq~0Cavv!& zr0rCE2?}SF?p+WXl~{PIxsI$Q>$;9u*21?4B+s^+UP?IHlng8@{=7I3FU{^&m%SOn zcF+%b6_eWmmjLZGhLTu!a(Xb$UlBH*7ZXwFz~=}Ov>DmQAvzo^__3OjYuxIa2s-!>Q%wqFzxq@+X%X%J9BQo5v7Qc&qG=?3W#kw!oXnSdf8 z-Q6|miFCJgcf+|K*LvT*T;J>3-`Qu6an2ZL|Fu9DGUt5ix_+6dOzz~)V!QZm-g3Sc zO0W5^NcZfYNO$>GIiHHC6r1Jv{VCSxOElRdb>7ZG@ei2@gCq9^pLtqs0cCnb7jKzN z9tPSMPE4-vdAevrC@`wwVS<62MPn{pwyEd=ob?$lZ^o-}u-P}qakf`G+p5rpr+vQ% zBL%YxT2I$)$vrkAk8iK;WlIMZLD+2ua=PCt4`>uTpxu=D^1A~Z%)x?{7DjkxZG?>( zw;7*_dx6wAW#>ofm^LZccc8G54?poTh_@~BLdb1$Rht56^~GCVhs}2=(<>hDIE8)- zM72@?9C1WHai5WPCt;!3*7KcU0a|Riiq8)3%j6e=?0@9U*!-eIKX4q5+9WMTT5$Wpyxoye;DQJp6@uTQ@F|H#q*eVfU&eWCO( zEx^D35Pb3fkyxAmBTdKu|F<+<<}Rx&jF@yY@K(N1v6YqMcC!(PW#O{a2(GVi$e)r5 zW;N@*b6(?lmOm2j^eJ1z#Bs03=p7}6+3rSVmu1b!n)W68n2l7SSq|H3AA=j+#>ZB{ zimwt9Mrf4g2R%|oL4+^lH#6=1zsNIO6|1pT^MR_#84;KQO3%l?++ylNT-yCFdW7 z`Y5~NxN+CF&+nzd^njZ`b^y%Sofoy>M`!qedcFk8vjI*D zAVo1Gns#i!U>F8CyAhO&4rwCz?3Z*vh>aJJ=y(6jw*iVsJrFh?3Z(#eW6hBWytXF3 z6epq`qkZ&J@y<;ZJZh5CFzTj8+_?Q!qCchWlWaFz|9f#Z{>jLFVz{x`#CWT{mX*ya zTV#M07%a{_4&huK=RIdWo$>*S?vbfWOUEHiBPsIYFI{n#>~^|spSUilCcSh zB!z+4{bROjq0v_@wyB+($ApaTh}AXEZlI9gIVZ~xK?SQ%u_g$uKG;pX6sWoy8yQ>q zl?SM=8;S$6OGeu-=HiTRKYXPS@UY*W2Du$+(2n{ap2w=tCVU2D-s+%QVja8+`}lh- zOs{}B;zIWs40R*0=}%N&UPa(?j`EWD)1xIp5c{s7bo%`Q=;l=#{jeJse}>=`Q~VKv zQ;v7Y(EZRIL>HNZI3HY4^eZ|7a&SzFLKHgnJi{miH5klphtfh00U(yY#~8%|tgTnY z^~I5zygZm+uwIgk&V)Se9F`qa5jd!zZyoxDC+kV=sCZ9qz1WLN0lBcbzXYZggCp(;Q1Ajq!7fv`PN@X9LMNxc{NuD zt1I0;JW@*Z6r#V7i;Idtg6)p?c_wj8iWbz$FMMA-ztFI4qtlI4xPv4g!%E#bUwhQd zk_C9EFT$tg>R0Ss!J&^h*yOA2_HQ%Tkwmt3O1vDtX%Es?{G9ZFOw|4M8IMNL>gCks zdE(_0_ys-bsb4Tyl?>d@O!Lgaj@@CDO#2T&_I*ic$u1qY4Vw6&`tH)UQnf%S0CX-t zM9&RBQqvNLqH|VNtWfGXpyZr`#Pc;{kso*drNZYy={b5N(5w}?racQBu~;M3;Ygjv zO#Rw(2W9@HKz`5A$}j0FMZho0e71p2bPV9yBT<*K$C zuprbP2kNjq-R5yD8mgVYxX z^O$7xFJzZzTqn5%fkq?+b|5hXMmlQ|1I3U5NS~dIA_8^yvNM*WF*W%yk|e89f)VYr zABy#EU2s}1j_r&3?3ugW!^WY?24R3nUCST(_*==s=L#rc!TLk~Q#b+5D%Y4ffv<9w zKLCtK%~_!;ic?_sA@x;TOQNmcW9wEp1AHX8d4jN0rdpH18f#mWo~}F7tZD$y_$rL1 zLNXRUEE}o%g8kxTsMb%0Wet`uCIvAR=9$2bxb%smpQ88OR@ z;FP(x6{@BEk;xeDO)Nu24-(0Q(XR)8yZ~w-buOS1(pi;pn~p6&Z&s0~wZ}a?$-|En zN8VD){aP7sY!#tP#zx(DU4&TV&2f})aCo_hg`YPNt-e=A8;C>8w|ay)?FrJ&(42y5Q5+AJzu0=@NP}t_m#Nw zrFxx*`Z%LCsp5>B`{KoUmu2<9+ICA9L*56}X$`kY23a)=0{W~S-g`d<|7V4R?-CbJ z$!=GSxrRqqYb~o57msJ_{EMa7@TwUl=ovabt#2?M(j2OzoKl;V^bX24bHA`KkLMdW zIJV7>cUcLu{5akUEKTv%#|yXPIMVKxwS-Y7ZrWKc$2qh!B1OB=SijWa=tJ$_lf&z5 z`M^+T=yNQ5!wV$ol23AM$Jyq+Ul8DyUr0Iwj5aRtWwx-_J{ z-!B|fV1sk!CeZiHFq;Mcb_sb;4sBT1C>z#+YV6Ge4xf7?N=$h)eiW-ErTzJIkRSlmUV3ha-X%8oIG&pDM0Rjn zMT)Eslcu;Pdrj+8NuEj2chl%(K+i$ZWX%40#>;^Nq=%NfT_Y%H#H+){@drZZM5WE> zPSb+m{F^BY>^@hAsIQ*ldLD^=3#$S^`pXjn%~Yg7K{g*A(L0X)9<`d!M!sqPGf|Pb zxBbzVwh` zyKQ#Q&Yd@Sja`K*kt@*V;peyd_?CK{8^*L;)yl~h$3E>w$Go-~>UF20J*!tU9#){(0zWZcbbEXzw;0k!jTuhkgvXV|!BS}(cFs0Yc+ht}?^IcKw2$1;Ku{KpaX@(`S zP7I9MaMq&!2=Yk?*6_*74ie~#IB1(q5n^*pGQgJF5Bgf)Xjm||17*WGg4hDTFnrH8 zyr7k5;Me98r7+XYeWA2I0%-*|*aJYvCSKDr@Jd=lNma;P=|9z%q9iAv3+P}DGW-IU zP_^h(US46Cut1dgZoI&7 zCn54)hz{x7DRmaf>h0}>dmEM4JDpf#Hf7LBs=ste1a&$o#|Yz*Qg$!aUKAf&q7`aY zcYaJ~N7b>(MLLX>4-GgIwz!$@j|2-ES1(eTbtT);+|40Ps086aZf`n%4F?)9W!d_% zKYHO0XP>#JJdrhmd(pahO5rEa?f+owxUj^E%2Y>LtGsuy|77EH9y@yd>6%j7QTe}} z1?M6uAlR%_zbE)r++AxQozTUJW`0I3B+0e-)i~|h?63H?ZRkb_5U5iXiFyV$foo~k z$?klc2tDeM%=iX(k4mdBb#=z58#ov=)%pGH#sRwBNY>rS{8)DoE3pOeGePvUGY>HN zy+hrN=*ib_dEX|TJ$XcB7Q>`g;15{~XzrHuXuI#fz|+rHG3u!{2;Sl=>OYd`PZ6@F z!FpAYE4O$3DSJ46P`bX%pMgM?&CDbn!|DXXDv`R<2dt{?J!Qu@ajV`5^8x6HV*E7a zES3Cc*!rPgg;)o>_Z~dEL*UhRgO(QC2DU1+!BvR92GM0Yp-0yXyYN#mKfisuz>n0q zQ4u8Cd}JEONS1FtkZ4NR*YaGv|G#o60#{2g#bezM7u%|vyPOEj^L+f;8gUsmtE~dj zRV$y>bxWLw_|&2iU2xyUDCx zQ&XBiy;AuigYGZ_c`Hx%Z9=p9kFb#_5hTm8l9GS74H#Dq7O&<`>Aal;bc|=yDsRO} zO}=4>@Tl;KQB*2364A-E*lQc1c~HR6JmK+v$G&o6C{iasTBhg1Rzy8na0fD}m9^E~ zdq{;Q0kS;Xv)gSoyhz?ovrPeUMJ;{|8q~wD#8ux+oh@+BxchNFoXtzxfq-5CkjDB~ zu;rJpP5Hb{X_1tSqfxi-wi;Q?I>@)}(D5I}=!ZfbHGIQ{H&pH_QAUGAp-U|Q0yi%z zqJdy22|IRgP@;4mk`M`*5R5DgN`uQ}=m|Lq)Qeu__v9O_M`%ifXcD?Yexj>R>!Sk_ z0jpxw)Bmy|3^NjFq=D>A-SC8y8aE2VjUB-`5j;;IM0!*GkgGfVb@1y)@md8R+pf8u z?+MqKQthkA{{+EtlNED?lsd(?&Ap&gnp$;{JgnTx_hGF81TOC_OGe<)Go6rh3Li$hmRu{)fVXs@P@pIy7>71?xneH}Y*dlMK?_m<#q~ zRCw0Fh~2PN!;diY+$ACPN9S6~Yx|a*!V&j%*u06KCF3;6t_f`J_&MEf2uW&*c_41r z;MExTy|~@qOIoaEsZuCfL>%jz%3a9l@cEh^L+;yvt-!LU@sl9vliy&sz)LQb$-yU` z)D0Z3cb#_$5&7mD8#L4{1xH=RjT(>n_xqKC*r>~Tp+*7~k=I4WTm=ep{5?thC9VB~ z^M6o3Un9B+%XtVMWN9x9Hu(=3?DYySfjC}eP4KV33|T# zvKAgc3?qsrx%x7RwIQ`=Uf!|6;6`8CQAOm(a}By%DzJdev4wjBq!oDDSVTb@;!ne# z`?eCV7EB0585B(_&#wuc&5uKcDIQzF6(=s zpL&|>N$D}Aw{v*EN>sja7Fv)=Dca$?cJp`SotK|GFJtsdnreEe+l2@ZF@0D zFX0eHSf8?MTyBfPK#XAUydQNz(+-3XzTE_#uu_G&YQXB;a#L|oQw1n_w8Z17px^7O zpMQWPhxq*I#;pxbV6zfk*Z}=6VuJ)C>uSF8EBzGKbyq}Kn|fzOH2jcO zw2yuk*#-<*zNnsX^h~p=9LA9bYtWZq(Eml|roksL5M>-OmO&DbW|I0_?o=Iilk~_z zVVnllF60J>W1;84)|=;;$jMmS)Cw-GgomHnz|9B7ZhP|BOd~fRd!@vAEn8{keconp z{7Dshje&?#?$86R^O<0GxjJ6UBsY}TE61j+anK)}$A@4mQAnqsR!kyv5rvz;*HK)DVQ{~q-#kdZs zwrG%*u6c7gLV3wGx`hhQ)hVvT=-;LGs`g~ZS_zaT=3~T%B;m~egkJ2FaiXPbZxVlZ!(=9NtF5h!+pMICUbg)(c;ePZ-Lyjuw~`JA5LuFHP(9V+ z0%8AMzIkwM0M~?gqM-auxc--K?}q>^;Hg-qA7k7fzw6n^oXp@Kf$mxkW%4n3?GIqe zpamgeY=_&L@$CP&AAZf|`QPAv_}{@ODTJWvOpJe$)&Uwm-7ThM<%b|}N+LIY!+FKE z0)^2LBx(n%R~XOVKGayXsyLKdj81&C7yRK;CjKAbSt{fcsxbyJPRUu`p&p@`3uy>E{*D`GH$s68)x;kw9GDLnEgMYaf zQSm|dCl19ZsQnL%S--kkmRohcms>}5BKEK*33WNe^CJTfKlM=FoxJ~i_!_l8nUTG zV7EK~A>k^q?1q@;mq6q=x2cr*@&S~)WC02{LEhhENb2uBwD4dH{264hFamj^g&@7S z15#nYXaK!b0LY2)YG;vh8q(~ep}a77~&_u*&iNnG?f=Q?2<=H_`#J9Iu=^O z@;e!OWCo=~H7Mo72=d z-XV${JS+T(@(8aYK0DM7%wpxA0^(&OUTxTCc-PdlCzgec*1 z5;j2jPBelWfVCO>#BBwf_6~(W(>^-nJ?#u~R{7kw?OXw3lC9Sqc(JP_$J-nfAkSYP zeo7!Oxc`CUla@Xdi8GL^J>|*ec4S>S?SmCuf$ukzqiF_w3R|=H=Fyv!JW_>Gn?Yuz zImj|PNZJNazgZ>>X|x_A0aCvdgX+-F9bY}d9(^yf(a(JL)sF}ZWN5vE*@A?J0&v7S zf~NDPDT0Vt4jNoRTYy_RL;>2gkT0T!_Q~;QKeq5+Oo~AcBH+w=LSSdz$L(n~k9H$r4T z-p;U!S>S>qgJ`CWnWEI`O1O(W@Z)2}vFiHlZ%m9?-3X*dss*RM))|yOsgGHgzj6#@ z8}1WOCqW`^Ol?^UU?i7X*7zJ&hJk@;llyvCqVQBVsrhJtapAN2>X!ix(2hi`cAxRL zAR3JVF?8T+K-|;6g$=ak#UhEn4EtQE7$u-jhOYrI;gb(%aZG4N}Q_=S-l;= zPD(c>DnU6pfxN&>hoU98jK-F@Al`Is&3yBM4yqyF+`vZB5o)Y<1;h1mvkRdw76Ez@ z8kw~hQ8Fo)`4Y=HNSe|}og-SO>7^v17CK$y*u-nx4&w3pPQI5YGzC8S5&-1$i>>Qa zf=KvkC6XbB4Pe{y>(i{=6ScRIsJZu&T*&k+;H7O@UE#FC1U(1Q? z@?wWPuTx-g)TurIb#=R`*%dX7{fu=R-KQ?pHu8MEW%p%@KeQhgN3%KB zo*x9=N20}qpnwCAdvak~EyN>CcwUUkIZ!58d%3V3 ziKz8PFrkeg-mRxGU{vzO&p`gI?g!7C809ID_I_OkMFWZQh5@Zl@9X(0E3!pDP#;Y5 zfy?d#s`B-hDEl67ofF_x9tD@?be{ltMTdSd8ec?FYrR6ph`w-Gk%1h0EqiPjJUI>? z{*ikF0P~x0(K{3RVS-7Rbv)J9%(S0wB(VZ1jOO+R+#J6yfJYkF&-VyNy@sq|^}3TlHo z0!MI_p1OdpkQr2+(YHLotK4{{y9eade5I~DBc5-MF-2j=V_C7hDYUj@9&)V?=dGm2 z1Nk~5$eDJaET_^VyEu1hG7UI19QDUWq{(5CJUYPu4U#9@(-=4MJw`-8Hafu&B$;sEYzx| zeM7be+PU+Ec)(}gdV+*FwTIeq`UDDj19dhUwoidp_|)0g94GmJ;qhWOJ~Dc9rv-XX z;4Gx#J{rz2`t6|}?#1|U`$`O2fHjcBu_Q*3)EAiz`)LK z5g&eNqVqy5S-2Be*Y?DEjcWN=eBM$E;=^%Jbn&FZ8eazWe z(P_hcayCwDq{!QR4<2--eUtnKVidl~w*`Fepb-##AUAjaMaD2N6&kO?K0jG8oE3;} zk9nBb|AeZJW+j5}_B-YVHXKc4WA<~APIrJ*3%moNfNg2%^e-MJ*83LqqfZwB^SDVP zcrLD8*5k}j;d$W?l%p*^51p2oz)N~0^_d@S^xmvdrgGeRaddfTY~eer{$8JzrH46@ zg8R)%Q3+9&!kQP6vWdbIQCVtwng^RVM8mjiQbs8dw0MURjq$X#;HeNk_Du;95_W4M z6=u#&$l@?(l1k*GUaYpj_1)ZhgsP+@U1_Mii`fLEnKQ;KXpA`N^?&2Ee1mw(u=Uab zI5H}A^#ZyQG@Ii)5*E1j3|vLZC4vepDO3!@1a3SzoGMyYEG@k=aSbQuPba&i0}(37tc#40`dG_;Vj$%f+?`Ao3H}iZUKzt;shVycdV~abmu{CGS4A&k zIuZuL6OWm50AcU@SWqF&6{JuyjS^_QneG&IpU!J82AT`y;}e_hh>}fu5+^-!NCQ#4yHH~$>;$`8~LSb#*j_d z{goh1$9FQ(=U=jn`*J31OY038xs8k}w%yCeR3aDP+tXPG^T5MnI8OYsKH8x%p+hgP zwcMX$J(z=id}O|3;z$)9Vs~pC9{s{n=D{ZW-K-r^5Gu0FyJmCCX=QIpb+(7%sV=Gx zTt`vpkXGG0$N;^r)3{R@Trn^(yKo`dQ2NYaQMfEo*Qy3my=l_2EWAF;LYnTwu|eRn zY;Pk2Hs*cXUstnV92hr=ycKDY3SWn2exzFGkW(Qn!IwLZ=di$+*p&nUh*go%g)Vkz zIl5#yOu@8!3n5}SyiI8#7eJm=MI4lA${gA!&@&V-)VThK7b%B+hpZ_1Z(G4pvi2o7Vl6YiWM&PkV3a{0ozrnvP+2v4=`e0vCjHI?k1 z0jR9KA7+pq{yBdfsMmBgw3t>gfJkP z)%FN&OxWXfPf)&lvO79r-;{q1i0d;FyLtSkL2e7<^TZcr*3gv}8vXPi(6=V}&;96i zutHKErDY+@m%R*gJI(Q~U`QGR$*bq8wZio!i9eFhU#Ka-RgL+H`y7dNuR8`%-M!4=rAm+$ zH3gH5Y{Yo6*R$TZ^%z`P3+YhFP#QD1ln4dqm`S~oP~#k0pVwl@2b<=9-1;Ay@m&8LsRhF@vsEn%vQEGQ2k zz_GNyQ5DNKeNR$D+`ic)Ewx9TWgj< zV5a8!_xZOaTlqDY+00eF4`w`>4PrTP=Lh{XZc{eAv|BXqcRAK2kl-RPe!QF0c>dUB z$$&JP8T0*2mi$%nh%TOUSzK3D17AtUMg~@4flxf3%AQbd-uNQrvB+dt%I4)S)!8xm z-l7s`e8ALTFfW#5>DDgh2yf$1jwp4*5#>jz#amJ}!{-O-0%f;~U_A zNPl;Nhgx>cm}7PqWUjiMKACD07244BMQx|;q*s5?8&LkAj50_YY@6unHF1p)`T zSm)|tV>BkFw>zB4k-`4 zw&OChJC>ytrXA$?K5@#1AmOCH9=wdyDqUanG%eZ_5Soof^Hj5%B3*8 zM*_g1U&}p$auX5BQtbqi9$gZ%UFd&1H0cuDX zJ+aKdptwiuC{YIe&&JP#U)26Y_gGZNGhe8if0Z(>=)^MFsM_yxN)l=GGaPp=XO^-L zemsA82gXn}Kk)*2E9$UwK>xS*vtbQzj$1MJR>=2a+!51xB1!&aQw4SlteHMfZP{$( z*}wB-2EpBj^9GpT?mh+Q-u39HS|4eVOYQrMJedzl^wQ4~Zj#=7QT3Bbp#JOY|J&Dr zLE!Do(qy^>#sB$s*2qI_t`-ZDL9Msjc+hK3xJZ|o1uuvJp}_eM^Nu)x4ppoq+iyJf ztBVNcYe4>1@(z?5Hw#iAgO}6PC;agV4E(Ytl8kG=edBl#w21bU#M=O!sqGsrQY9WS0CB>H=Z_HU;zRSHHj2Tiz+dKQnp{oA-nv|Qk!wsVcUu?R^db7&tWoBT zx9;0d$M}_oFRTzd+n9Az9;eys01n4T6YbX?gkX^tgxpP#G(P?0G;*Kl>$a$F`LK@UkP^gc9bV zBpcaS_U7de@!4QmJOHmu9V{VhP-F_wt|5k64k2@aJ1CcYnJN>DJa!3$YDcI28813K z&bFo0%dEcuzhCbsE(^8k;(W}eF{_-#i!i~17|1?RQw=h2OCkIf^v`K)pMyeS6R;uH z{xmiKOjH$$c_^Lo*bUaH1fSfo?KlA;6cByPREr~iOXX!Y`;ZNA5QJ%*fXZZYK5-Aw zK0AJuos_KswzDc6NY{HkmaWO9YOpby#D0xxwdc-`9iEhcjcYXCN%;I4dy+kjN&ZTluPqd zMBie@jWgG}7$IQG2h|#;pmlS5w+>7P<^aPr^FBNR&!2T5+Aak^_G$StgnI*}`O)fN zx$ML9)5B7*ULBVggVF@3-)o_t*JbaOC-&~B4=UDLPUS`cz>iNhV~L=QRL?Hp06ceV zc6;{SDZM`dsR&w_RBlmm7`ma7(d3k;OOCFRy`B*u%RT5DhhC-mG=qdug9lAgfH( zE<)>}q_yTe%6A;OEdh{ylnr2TR85Ng(}ulMa6Rlc9D*^;7+OVhaeJzPsp9~oL>-mj z@q7WvA-EtYdvUE_Nq#?3)28_rlpAq6^NzCW)guAmEUlUFUq_XYc{h=k_=(d*4<~0N zlt1ZFoYGtug1>t$CAw4aGb}@YAiS8l!*oKugV5+fkt8SSNE%TE-(`r^&J`+ou(ISkS^9b|nFLmazMxX{2LBR( z+wRe@?oNY>M{^J~k^;yi6OXgS1ph>FkV15J?d}2+8T{ua!m>-I$9;GNK-e?C43(*r zloZwb#qT@{@iRb@_yL%6)FDZ!+Y_*^`aeef+jIJ_-v&O0)>ZUyAhZaB3Zy5$i2oa1 zSCQ1Lu;0cSEBj>2Z=?F1-q84PW1`ybFn}R}wf$efI+IRh1HmDSHx{Oo6&2Dh3DznA z+~c&fj77>=>u1ldppi|ZE(53fiL}j7&5|Oyw)n{$jd<0$4$Zv*RU#Ig z9wWf8{$oPB992hrRZN3#AzdlWh3!jTxK-c_Cr<#TKVL?1LK`=)L$c#43$cvUCU>7) z);~|(+nrB?@i(gtS}uET25W_n_ zqp2mWGIKE-_j}!0P@uRsuP5QLA56jl*QPX2as~iERR?hkD`}M8#G7L*-A~w$(Th=r zsK4V_>obIEa-B|_(m@@}!U>+BBH0m6V*Hvqjx7-YWw>Y8m==-%qcf;|c#qUhWBQJf z5@B4*@V8s5{9M;l6kYK)p)T=6d|GQ+qCKsrNX-84Yl!~Js{Z=*-TM&gGgo#Dngtf) zrTw#*BnuzQebVh!pb?*CJ_oYXDh26^rAMrW-nWVFnjHk54oN-7 z@1EmE=)}qH@NEb?toKt2E*dBs_c)#>q7AuglC(=8?Bn`_5y@_W1-U&-HGCHF(Qrts zvTe65Hx#vlP$m9!b$E2&EZhD3KnQdYl#-4iv{t5JP1NrIPJ0!?Y2EjhI6qYVV*SKB${INbYK=zehYjuK(7Z+Q{t zkW|e;Ci^{IiNRC+is;=~Iy}XD9c~gQ#wagf`RGlZSIs}S0bU`pl!??F0qV|cdGFV{ z%EYkNhk_58>`RObab+y&la6kUJ&=iV;)owSU{2WH-o7)(Imcy^h_TR2#eq6haOHl? z)KNk?9zM(iegfj&UyO3t%!*G@a&d<5>qo^oftB&c<*E1Oh0cXxA+ajok=3nUyFOuz zx|v|Qip<|mT;>?i9lx_tv`j*wY2H@{JcyKQ>jH@b%>tUuU{xQSfd#Wi8-WfAzH zZ$2b3eea_r9Dh=cf!3tb`#drswp*t`R2ccSwWF25Is6G+^&@L5X)>;aN)5>Gt#Soi zmkC2KJ}n;GV|+}0l)(urB$8o>%g=67BX4k#31&T6W*CWY&!sk+H zHt}oeEC~gBMfRu5JBj8eXUio912+W z=UtjHMpiV5O(3n2F?)Z5Y3E_-7ltvc_6KSo9CqvOm&VdXY}A_crO0i`lzLyKt!)WB znY^4Nq9P(uRwtBgQ#+Z@`>Y^pWJ5!S0Lq@n3;O zMd%gf6jE{CZ;U%ak6Ucf|#wm1*YE*#bq z5k5H|Gdx*fQJC(ty@8&?G^iwuFhVda1nX)v)*m;EOwIT(u7aVl6wD42p20^!eKD>r zW1CO`L(o;$4$`s@Hv2RNk%SNNyq*wsHE;(_qmTJx`lHnIMwh|y#3N{s_>J?G?((Q` z^j59rGE5yv%07798CR~8%1N?-AaLwC{9eO#m|K3J64%01XkKr8ljsmVsf37oW@$eN z-~w9JCwkEn)P07YcUMUVf5$giUVTckSdqQ8S!RsTt%T?X&D(R=7cDh6;N9$&SD&F) z9xwcjZXj=YF`nM%X&fL$tN7jZ21!KDVcdHkT4dXyH<>p}AEd|Ggf9@~ujrZ^T~NQU zvqrdh9O_W$+u<$8;@{(U+F0wplz6RTtotu5z}h^8xt!ka%{fleuROWL`OzG!BhyU| zohe|;+}*{oG~(h4Z;zFgbU)eKw&R$++pr0&s3g1m3x&^3al8HJs2;zQMM37ZqqgIU z%a;r#Tb8gxC>nkJME2jh3k7?%HE@cI8pHBn5Bx!!0#g-D;6jMY{)#gLi}C&fjz(kI zD;s>kW?+v?^Ta(?2XzX8QsP}zKZy+IGW1M9WIRB9h{Hk{Vnb7?62>3J;fL>KgE5z^ z*Au@th=R5ID~kc=eT$B$#!piehOnWmlZFd0Rm45e6D&x%@zKL3>xrve| zm}2ffFT}y-8@}2is6Ye1_IDm*_CN6$<)$4V?Js;Pz-2$Gj4cBO(6h=AKC}2;$G6hb z+5;GMs+Mk<)4m-asm zcVBPCV6__bR5{xv-gguukH9?@)-S*)m5RdiRSGMyzYS1QW-0;s8(RQ zQl{W3cmMaaBaOmiNWifG(?lp{x;DwkPyF|IWNS-M9XJa!;)wxq>s0UCIZ{*Opd01U`$0(=--VjWNE1JglQD* z*|3LQ6g$=!I+8Q0dIIXbOkk{MWWkXl@G58Neq;X?eOw$=YcOP#p}pGBd1}Y?@UQHL z(%|{|EWSxX+$k*n!2HMf4^>U$kt_V-2vr>Z{sZd-FGw-tj5^)H+^AXpSMsA2vD`%A z%4B2W%E*Uirplnee(ixHsSP_!nzJ$Go}3e6h{=;{tH|V|ZB8s3?HDU(5$&{*kIGwLLeBOsfO%U3ah2KRLHKFJWTeOoOPrTtpo{0{TH5Y9s?@aM8 zGJnCIwy8L`2Gj-tFm=fHr>h_#yR(DY1N zu*?xdku>rkqJSqAT|>d`0OT1Q@1V%3p(v467wrQ#yN&U)jrp;FN9{iB4l_FqvJ#(U z$x4z(#E}vNT}#5%Vw(*Jr4D5k=TYKv79GR>0Nqev_ZsSlp5@>zH@a zqtB7Jm%`Ve$rRc6;hD}@zP{9@>ifalHD$HviZGg&eQ1d1^wubm$hV`Pi$MIyKCiw7mvattFah8>XD>X2YFWMuh!YT?f^pH6sdE_O#IE zi0_4lo3nKNl4K#Yd!Jc*ytZ;JVqw8|9_)pe=ixWMZ`M>I=ulJ^;NLQs-7j8RcB*e8 z$h9}%we8Gwp2^xnn$h!!X-)mzg%>t+Z+Lr{#}ZFLIIQ!c--Au~j5$M~(b#;nm0QAV zt@}Nb1YGm1sdjLIdY-P=RiG5>^%n;K81crL!~ma)_%&1?wi<~bLJzHuT#ELH7e1YM zWv?+p@9Q9_)FnI)(N7+cASmJK?PM|h!#vG!`d%K|;RT!pQ6YV1>aP-$odjT=t+G>` znjRA+3>psyw}=HX#8@T0|3AgbbK?g4LCg_BWh@>ECc@Q)eNiVyj z$GJEWL4Sjr9Y?!KZH1D@`g83fa79#81$~wg?0@&FgOeu?KM~Y;Pmk3Cr~T_vVoN;~ z^Y+3cgs8wQ=OPuYs1n00Q@wMjf5#sF%jDeaWO~~NaV~hY)_D+icA=q9X6BFNy?b3G z?zG|E0j(&N7p)8}o;KKZE^1)X!QUQXnk9&7aXU;3xBg^U(gx!SRpUBJ$&X29E(Vlo zlX3}W-9PV56FO}a{mQUxsOiB`!IMOa8ZhGg$kv%Jm*vDC%)!}r~s448-mKDGmLXYkTyn(VWdH{agP3*wc49pomt!WzPur3Hz*!kiW?Aa-QO$7xpiq;DHQY)7J4GA*E z(t@VeW%BhLwkHKkoVP97u6&eqNaBBLAlDC+7gJYxQm| zes@9fQja&bV0p7P+=WY+ZOZn*YU9J;v3vB>b#GL6*nB9-v}*oxz$Nnx%r$}6j)OG8 z`bwiQc-DMCB10%7RsL4qSw|=W-H6ni`V<+sY4CFKqA5!Z`tb+#pN%zAvp^z($(!G2 ziY)soQ)gX8>CwpGV}KN+CqEgE|B6_wTr23HpUPiG^Nx{~bk?keG`zfa3qQ;e?d~=n zQ_q+`jw*dPl*5@$Qt0FStx}i@c^jx1$#CgD-V6Vi9(wv4q=!C?Xs%W(Ze|{^OqJ%X zg2!`iAdV+xY);p2*=jWRSjM(*wi$_*HBU(*ZxLQ%qW=oy{uSfBNeby){a)T8;{Jos z_*!;KlIii2TmkwtT+))!6k4riL|d1&@v#xlyA1v!Ck_cf80}PR13h*e#tfk+DMp?8 z8RI{NaG3)borqNJg~s@wZ)0{N4P`nHU8**BGS)glD#J#;_`q-XdFfi^Q>4j)#9Ei% zH>EW{0UZuDy)P!3pHh(^OS7-s9h6&8D*q4K^&4IU#@}xL6_)zj*GZs)B8!{W@J|9u z_sa91$99$i*ZaAL{OodK`yDy(%l?^c096mwS5t!jpr-H%U;eM~Qb6*~uh5SE2al$! z`{IA$Wjwk^=(TTMs(}oYrd#pG)Yad@gZTnoHpO$5#t7(CidLJeUya|WzCTcwrshiE zE>uyoh2rCsyrsN?`P(}w5bFEOQq6ZG4L1HmwE5rU{QlsS&EozCasIE&&r=NV4@6!B zPtMh!Cd?2{gcu~N$V!sy3Zndn&+!8?-#_dAb(D}(M3DxOSE7zhX)hKDRRVV?AQQn- z=6^L2ygwy>QpNR8)&?r%OOT$IRZ9K;>;!pa56Q5Ml9{}#kUP4iJxZ8a9P$IE$)$|7iDVfnHE^0#- z787yyrChG1`5(=cN4-q0p4GYxtd96cN~*lMjV-GCtt7}*SG%hB0CBVAGOp0=$qg?e z7A^CUk&zNWq7Y(&7_3$Ei?d^>)}?~?@< zhq2?6qYIcFA|FWN;ou>zq;on2qIx|O)rw6=K&b62EF$J2&~Ky$3<_9PTra&}pLXq! zUxFn3LUPC9`ck6$X#k3q03dou`4Y^Oqd*C16(+Fb5B^s7Wvz!hQ20&>&<<|^0;q=U z(6<@LitL0saK{89OQ-iCX}dN-1zNIEzF+TB-)|K+I4XrEW}y4^h6Sah)_+?Dq*6bCrks>aTBqD~bYgHfJE3N&>|icyee%+#j(R-TL3qq#^|8ACfcJZi z)k(DyRZnoP^NVo{f=!e0K-&NRP@ku7gA7$oq~5amdrLj2NukHkkB^a zsa$Srn5k7=!KS?jR?wX41GNqyaTM2suYknd6I*lp3NTREE>r@pP7TV)-N<@+GXN+R zXmtA|{$YHu!2?b=)yf%NH3?>t;;iifhl zF3|WfQQ@??5nl-<;XjMAtpxWBNe75mN}FstmlgmL+Q|u0^g1^`*FzAZy*v8=tKlsM zS<7Ec4$YdUKrc2bL8SRSCd0NJK4#^swQ&q8(p~F$oxU?@)P4~8d<3*-Znt~Jky&R^ zY2cuEZ5^;2%=YT~7)(JgAMDJo2NpBBoh$?xODKx&Iv-+8SnS>VYPaz*Q98Gq-#u&U zgGbHU2fH+tj?o9_-PH^SC85~-qcxngIE#5eGXzSxq6L7#;0@sT>sCl_C2GLzb zM5=%qUw*6Hd%bWt1TP?N1>Cx}L?0|CU9H~(m+wCF^Kp6b1J%^@k@pFV2`#7U-=JCT z?1ch#BTL0KIsIPQxr%mD(6625;`0_Jbi$gMH?PtM$U0n(=Yz1-0t+73ZOigs}~i zmNgFFY3(N;qvc|fO)55|+7e14_b7X*ciVXE zJ#{9`j;kv~cy;0^9}&{{!n`wv(^5ut6Ml0yaer00-f^4_;$tu}e)2K5AKsmVcQ`n1 zlrw7Fo_~5Upu7r-jfO^H0EZuED_y4R3n@Rg8oZZ*6f73q#Sa=_+VQ=1Z`6Xol5@#4 zX_jjH$anQB0fmPkv3f^}kj!b^#zUxW_2z<`b`H>4#+@HYzhCxYiz>zW8n!vQ1tMv80BxNhBuJmm^&~y``_qissvc0*!@zuf8*7cpztnuB z7XvRY(5I{n@3ktE@Qg2kEsBmJu&PJi96&Elp8j!N8)X8Vqy1RLJRzCS)Afclo#OLV zJi&jCjbPxEyO3$sxkBN@mc*R?)rO9i%nC$~)i7CVoxC|Z1G)ug9RK{}bb3LK#Cnu) z!YcwimD~v)b2sLKpAi4RCNo3tfN=&?{z0qQnA*v4m?Y^+O&f`+{9nXFL?-)yT0*$8&tT1X?Qn2eaQyqppn1n<>Jfu0#t&C?VC>^V zfC!iAFWWw2;uarexj6-tY~o%OPCFD1g`~%5qFM}_#7qhmHH6TqRY@amOhremv_`zQ zkj~uXWic7L#hI3Eqxbk(8TX5tNw}hB!@k^wUP?J@m{Va*@>Ghr3MY2Cu!d!4-5 z|H_@0aN-xDSfK~ZmYP0>h`6x0XvLVivG3Mjgi*#JCWBKFc`c*KkxJnz7g$TLh(DwJ z`kGNdi?|0*)D9FP1z=U4to$|=8P*AE?DoiHIbIXJTg=5H7xC^GGICtxL`qGz_=_oP{G0K?E)^h zc(w0~(R!4<&vJzyv=CP{VeuaK;i%)PW!^SoTg3}!y*X-W>1OrCu^dFa&$wM(*h7WG z7i|G`Tp<RM#XTv`^!}t5O0xrLQv{(7L(mLDQiLi@gvizUlJ+Obc?MK z=vSe1D*z#$ihj4&8gYF!@;`W#)nJX~)}cK{@5XyfNSrSd69=u-TM~H0d!63k`{H{L zdp|mnjzpx4gzGMsGg$@bWy=9Mjcoi^jrvq4ECoSpCXV@h;Q*E-X@Z9F1L05IbR@?0 z$I?oEAVqcHwn2Ruic4?nr$#aroaf$U$s#vA%98zaa(|6i7}7j3LDD8D_C_`v5Lona z1yPjMfc~J84E>(+VkQGj)AoC>lwNMvvj+ze5VDB8oSEBH9gqkwC1Q!Z*%c7$h!};x zI$zk{o8nk}^9xrI&I2n-DuN>BKH?_Sdamqy&vQ3PyF8_W{%~>h)>z8Ln)WV=BdyK^ z3<8zO)Yt2J69H8izY!o-tCZw}iGWcydy3u2EbWhddz%y@Ko)H#fz#1d4WYF>*^vyj z9zuV5*%eZ*HSDJdh;4cKl!MJtF_oma&qZtuySY-CN~z+f1P&7;VcRF=%k7aI2T_?y zIU?*EUy{A;@uGYnGadSZW?}g%zQ@`3j#rE`W@Qvcrc7|7nToC3wYZGfi!@d?WP)6SOkH-#}S?7@2zggCGu6YU#!p@OtqHB z&&TmP5Ts_)Xs|6;?@gLaoReo)PEnTxklfr?>?NC-T33ELWlcI zdn@=JC)1d87Se&K?X*CL6$n#&Xr(^#X~O8b>L$m6{#a(Z;TVN~YE?wP%B9(y@!-8> zbv8YTQeK+m;K^jXIC03#LD$+vj-$>UbP1-(UgFy)+W}Oe-(u*-&hg~(;nA(492r#K zO2ih#S5Usphd25**Kld((3@#AqZ5w1PkJS%gdyG!q`Qnfyc%@B+$B-I75t%|d9v`6 zpil)_IMpCssgt_~820yN6@3&5^0;Y-+)q>AjjJl$Z@O00hrr2YD1ROv#iZbO0{ zmKH20_25`HL=O=Bt1gk4I?Yxg|~**IsuE2bSO^AT>=8lurXJT9+C@YAK{ zYDpG1;S)|RGy4U4QPXl#`$8oHV3!4p7kkKukK3Ma9`lFJF6B`q@)UCFPv#=pm)weB zH(Nnwlj@F60jK#cbebjMK;J})b)R80@8L+5i`CV3p;T-fUL@!qzBrOp5CUTr4`&*^ zHCSai)6AAzBM!jiw%r=h39g0j8`(SVr5czC79M22hbl51=J$coxfpVFV5FtW|3*E)*i9nj zN`i5uZmp18qEWpoe4rNYHXl$Xzb}Icgzl=a8st0D`)A5%I2LqYql`1(%+c z<2;Roax$MTOA6iZ>;nSAE(mRKvWgLCTn9V4F782=88=02Sv>{w@XDJy1nJ`-fNZ|S z457daVj#j*!5NBHQdWzBg#GyU}D2p|Rkvk~W{MWj{c#vR_qnj+9u9-q<(F{^N?V7```sIG!F1 z>+0rp#O9@+7P#b^3`|DNR;vi%j_G{_lXt+ie{|5zj#{r#6=|)v>#j8OH!1>8v`C%D z)p}9U4^R633TkV?i)JUeXm6s~Xz#Ieuen%GUjbVQ5J^Z5d_F6&Qwo1bxdf;pAEJF zFxFXxk~{?V1@+24|K&pMfx7g=`s4IPjm*=*xBR>vLMYpRAd~>s=YNU*)l#)=O+)d7 zpN{Ujlrt|#<~pR!zWimVypRJx*Ztcx?PcHo2118vbG~+|n9$U>LDRUqjW&OOuce^; zc~b$1;mVAXuZ_{@D%)C2lu^ce4%ZUHtxd@(KSZ$SBld-5W`!{+lpDG~p(e4Q)}^wsyy$8&c()-%gK1lQG4kuP%vS#4iMX%({Rh6_ zUzdODw(;NQA60ssq;KNB25{r0*iHLSpQ z{093(-|s0BfI?ZX!K;xqmy6Ku&m}xcv6A}!`RQV!$(GFbldq?Zc&IaBjar%a|9lnv z{WUpbs>Rhzj&+vYH?J>-ztpN(KQL>4 zM3pTZa_s~2)5(^ad?rm}XCw5BM<@O}-jsnrC|acjjH){qL{Nf?P;o2*QL{Eu z`Q$%hkw6quZ;tN&wF%@fk^F6`@n9=Pol74{L;NlnuwZ)J2pd5AZmOc9Vh4OdCssCJ zzkHB?>6hUI$}Mksy&@mDh8$PEiyd|VX1GIZT~Nh#Awj~yQgGtu7{;rBEAkvD&f zS+W$KA3_HqOL{t_goMAb4+N{&Tyt`@ozG!tKTm>->?~11iGKv5P*x#uK035_# z0B&mL;ys82DHdq{q?ZWVatQIzVJB(Iwnz4M8xP;hTH4q5T)WOZX*>GgGlc8`a?bfV z1D47ZNW9(k5B&Hzf6UYV5exr{siJ!mW-R7zb zyW6f{1$tFZLnO@%(Y-?Cxq<;Sc7hSbJW4Tiqm9HmnDB)$BIFk#*Tw_Lv;XZr!PBo) zP!Dc4unxI((*n{Du?{|{;w!`{jJkHVk`QtQR&X|Q!b)^q+x$L&J6L{37|eMe(oFxp zDF2C@U!VYZ(j1UG&t8He3&+(Pl=p-BQS(xX4L^`lyldG8wu2^&lGGq9Bt?P@s}Jv1 zP9Pg}^AbA#J%_TJfV@b>>cva#5&IF?)O-#&Ar3lwkW=PlbaO3UYK}DP9=_4 zveN1$PpRF7s;O38joe9h-&SjBQ4|jstyMdOWxzGpELq;>cM8D-S{Z{|?Ut15|B>T_ zqteg)yvV%$?K4JEkyx1fNY$=>0?a>aESkl1il}HNgk?n#d;%}2n{QXvmA41R^Q;$N z8qhjLS}iW~(B|jnm(6_E*K#eH0f7fOJu%^1MQwuTmT55S{n>21EqnC;j&Ljh*nhXIl?J`+ZvDF_s)pq8=f@vmJxI+JE* zx)wuM9*Oy+;k@;z+t=(?BRt6l?@HlQhgvFpQ9UfHA=6!2zL1=|vL)>S4GE6kBSje} zLji9zj0@DchVh!+?=aeZ$eBsJggM|(NpGD(qbBXxOd}7 zWd5=0{EMHqk%|zW<*8%ke)G-_yTuL#&O}2eit=Y!2C~OfbA`fYTdbJb)_MxDFg>M8 zmbAi`qZ#thwKfpK@@#q~`M@Gtc|igHxz%c6dIcu`xaJd!{*>%E6s3wD`Y@X-nK(vU zFQZC4Rme4>yo1(A->d4Q#4$(WxD*C^)-ctqvKznHrCy(wR^1P*N_E25a0!HCo_6ai zkoU0d<6j9H52VI-MH6yqMVorH--j!rcmc+$Bbcw({vvT5_hN!Ho*9=eqt4}>=s{VY zwL5}x6f3!Qi}d?w4SY&~1D_Q{(q}cuKe^Z5+Yd4elP)}aqzY<3_5x$TK5twK7SC7m zopr-~B5RlGoreRLPo9STdiUpn%7yUhG2BYvkGc#H8C@3;QXlv+Li{Cxp2~wh(jQz1 zA$=ng@V*3vlsg^)U4JyfH^@{;=!mOfZ)@ypbsOlnt&kEx9K+#n1`iI&*5;KKPR%PJ7<{l9Z2JVrU18*p?>giw3p|^(ky_He@ zA_PaHVUwklQ+*tiAClqmP)LP{94lP)!3#Xs+Z<-maxAf&=r13ACFjf2TfBa3G=QkLaVHnN_qAkq4NjqZSpDbB!mJF%~Xb+Z-dQ z6;^y)S*{f@z0Pu$w8lEU;EJ0EK~qHGYpv0Lc95*r{!8ZL!amaB0cF7tuMzsnT~^Wj zUF3dd)K*=N_IyYGT_R3%%UqWyD-bB#hRK|GL*HTU`XP&6>oH5r?)xijFH9-azHU)A-I|e(4B@#CftTL}&Q63g@qX^&fjNQHU;RHw~c6FIth2WNXRuo#zR!G$g%*-g? zv&98Jd@fVRjY2jbWiwV#t0y4!>5#m!h&YIf!hyqV^WN8oDBS-g;c&G0zIIrAaUWMA zmm1D|#H=J_K|2c(Yl^ILiqF!$*SZtJLbRxrI^$xD(N z0DE^|X3%QWfupz?`qKU8iobYCmJ!~h`dl7mFClCkm*F!=mKJB$Ntc-5e^&9oM!M;_ zNOl)jPgGdsPRP^A@T-hw{uAlNOcsKpY6Qz90hQjCxGk}foEkXwbXnr6v+aPn$?{zV z&ejN9J?SO;6wMlHi(tCd*62NpkG-l@OYiV4b{;;Xg)^$y&GEuxe9nXW0HRTD%duH^ zikUL4Z9n?Zy$i2ztBp7SdCbq>+6Nn|8+c<=vg`|QliNOk1w@Z}X}jq(VIC}8Z{39< zEpwymGzZ{vCyC>EaI<<85FN4naGmgse=F8$y5{}>J~N&;3inkE?f8xm zEETTya}NiZIxbbu3Xf8Du(L2~AxA`6#aKPk09NLcO0ccebda3tb>^@xj*>*M{BW82 zRQcDSMKTWLY?S^ySI_!Mqi2(HLpG0W1Pr!Sz)uV^B>$(j55#O(X3E;7|rp*7YgK z{BavxEe$CCW-=*%`>=~RppAZ^$m0znCMQwQq4*Z35#1t(1f0jq?KzdVg|Xjz0-Auq zt#hC6A?NG*5F!M%sSe?{m9axJeHDNBO=2g}v`3mN93Od~zBK7|Xs%ve z5im;UhjDW{Dvhex)nkQOM>b)BCk5@#khJ5%E+roLS3l{Qgy3(BZITL0cp!$eIfMm& znn-a3EneKbtlNM-X|b(iYLSzY1wgLF=942vzNiW~pj55FEgV;N zjywge9=MN4Jim3d(r{2LW34DOtHsyJ5Gh(CQ!*WiUTtX~MxSHIOZ>^nx!fs_+ z2AGI?U&%5rP_7=%2aDX5=++mG`@!hYV*kPD=#a_3FT$}JQjp94Dr=%Qps7I6cGDB% z_22oN#sTAnG|C&zp^#m%!G0rs%JZ zlT^}AJLU1X6)Hoks}5%}lR6KbaVT-fP~-c*d7HO|l3o}ItC}7!Tv9?*bBq0{2ea_0 zG?I00+lhoTq$HZ3Hq;9#lK3g~BTa|XM#o!QPF|rzhAE!+*&y4{jeP62(kKRiCR6{FWtMPA6 zl=Wq{Rtr|uC0lkNY2ELA!_B|xy>;EXB~^HC|Ht#o=r_=1Nd9N1$&uDsmr1kr0QUKwOByG zUXM&WDEWWzKQ51Z$d!+2-aoLQ^U)ZPU97KMj#PU!Kvi_yw{VpDD7;#^2GnhyA-hkt zbGhJ}X1dSSdtN4bqhKF;(R;BTJh`31Fgj-@;gSdfmR}0Ws*q@x2jb?_^)2vX?4n}D zdk3S+B%mTAt#VT`4oWHmp{+T$5dl!_tv47;e>RUdLoMOTz=g*tLPIj&#<)Ep*J*}? zA%=sr0Aj!SBp=-7wad0|vy!zWf7nE)YDU>yQOi>@6W=qTUc1%ahkBG(dkfb!0cQvC zlfSiJ0xts@%Nwa{(lG7!UC&B$L#iU9t%O0qm;4_AUt2|T#GH{a_IqS@%9UNGiCe6A z^wyc@Wv^h?tO@toQ@&Adzgv$n#qp@JV_0onD2|tPy}EEJ(=iN@LnCblDzIt8DEcVb zS@qW!*E!>#cH;)?^#>dz=A#AP`~pPBecVN4o{{?-9jP90!PYlDBWDqD-`_kjBWu)n z%$&xSMv2a*RCrD(W=lf-?K4bjoUf(2*##eIpA?odrY$Cc!ts5Hz@2zw{Jhyk%1M7f3x#A1N?0>1R_hj&dwn=3^{+|Raq@lpD8RX-qYQb_6S4~do z5cnM>u`P`L^<|yL4o779gPk}!ppl918v2%G8Glro*&Zv6#T5*tRm*J&CBBwF&P8UKV1G=jiGE)ozwbK|FL z;nCN}VV|E&2Kg||2Q~BS_=tZdCpa=0Ca8Ma5yQ9-NmV_E#Xmq|^IJ~Szg}=3^8+H~ z(J-OfD~{7;41xQxcQA;;#qjl*ka`;)uq+&sqxKL`}9SdXwQp1YCS6cq=A?Y-FWalPSfV8e{=D{D)A9 zz$3}e=)YVugpe+&LAX<%$p0)*?0+?7>VL!y{Vz~dPhKNy^G`8E)q`*rmsORAOeTQd zOqt>B-xxX+LnGL7vSPYbCYJY@eLHhxMl9(~E)$>U94X!T`^tX|3)97Wc)|t@F8^>Y z{)S~y{@{z6Pcoy(4}Ommqs;uz{Ei37za#GAZrsI3$R~JG*8QB9*vJg(%J^4?l4Q33 zmwuzaHe2x5{BJf}6#lK*g7zL|B z{1*bnq886U3r1Tlh(^5+Qa3%f+yOj!?g}!43;?+KkwLxu3rHU@1}%3C-zKV&ad5v* zn&#CQ0{wlFdFgm7Sj16G`%`=&HMDV7_$EL&e{`rr00MEgM%9S*3&lxm6%m8 z;J_irpNZ}3nDEHQM@y^Zp$-eEutAGp^XDvk-HoUv{MXl=j2b_X#W^c)(S5BwL8}k` z_|s8hiq{aiYhCXFe+Xb%H9!FDk%|ISi4mme&xT@sdr^HBfGBbN*>ep8u;j(Cn+&xl zy6io=ng%lYwW}l+Ui)CkcJkLbPeC$_fI3unkOF^p561~q--)C%xmmodyC{8@t=#YK)=8J{z_M#h%k|2A0r)pw zNer590wlBe^kCzx&ky^y1);j7r#xpPGsbQ}R(bVZNqW`d_A6<3^w%IW<^a9jtJ&F=+F#uOmWFbB6J*dCJU`RY;_J}mWvPRJJLiFj_08)60>du21uCT5 zfIS2vXsVaQ1~|+oj=z5dH49OB@S{u%4S*zp{0jRASAYQHE};shGMqD+QHSEX+J?q+ zsAR0Xst_%Dm5fR^a$)RD|E~L@XLvZ{2nSioGaJc$s~fugzSp zJBgrjcF1gFayHeCt{*&nC7bYhha_v}bKPNGOU;6noZOq&?j}~VXfYM#R5uAcK%vV} zKF3>Pb@io{6+c8lK&_$2G$SM0`vF~`G9auQ^Q`g%3SV3K2awPmPePAba1*nr-?mtdWsP&-3B$xD6I|YR^dYEliPAPiheWh+QA3b?#rF9?{y!o@0 z97L?4ay{V!D?>_KyD~sQwXcdWR<;E%26Fnm0JmiX3MOki`_H(Pnw1_ERkS+-z9Q+6XKa zVA2)V*3SM8c$^uG1%~k&B)cBe3aFS|Ymxnx&J8&@8Y)aRbNZCCqn)}iI6k09ArGL6 zpt}ABJSutYHi=mKI`6;6_sBfyDw;-TZ`LM!#ZQ%Md2_VY>k~%y$(NNk%WD9{8UoCK8fw5ZXYHZ zQAuQf3m&}=qzXAQaiy)R^L`vUjrYp(wKg`qeP=Pr;+G}hiDx82F+P~OT$<07*q9!> zRJ0jSAHPttaOxY;+oEqUY;xj^Y#tJ?!=* z8z}|Gue4Qz=i%v(;c{u1RGWT%2|U2bU`1fw#IeX!41&tVV`R)gx%j*OQvg{bdA>8% z1fG*8w{ho*FnS&?O#|A@%a(>9MqintSkr0k6RhTz*cT9_;S*aAIs1V34`sgCk`GjX zeu!io>1ZRhSFeQ&W`95sZ#F|UR2U|Qsl{I$rE*gZwNatx9a zciI^xhFSz};=;|BYt}f;zx=IPeEqah2V_Pxq}|GT;f8`|mWf-B+eZa-l2J}=L(e40 zg|sD(4L84sZL)c7vidB6C5XFNoP&5Y%+s|IjW%M^NFy7rTTvt5PJD{be4Ow7__=Rf z7Afp|dMbw#-*gk%$r5f>jQrq=25VnhPm*EKbNbSmv+s;$R@4*ur-^qnhcs!oGnZpt znC_M^^wC2UW40k9{`y zr9LNP8|iZdTsJV@m_{amF^6Ij-!r_&hNH7%$zZTr`$soN8IZfMo(DRWjS+?S1c@8T zBUskCT|lKsXek@L7WbtOt@z-H`Xe^SjS?Mc0`kI;AB>mjI}{kd5t7232L>bm5PLIj zTr(>8=!xLqMW8{za$O=rGU8Z=y05h(JXc}e z6Dl}!ZqVxIb})Qw{_-1U#GREMW#*=d&|T0N?u|vNU*w)>j&0}orO?zM-F5rP?BG6n zbB(Um%K`ncpikqBmaX(}s_c4p5gFr7;$ybg>`6O68kxve56rN?lf0F*#{GKUE?F@ z@b$hI8F2wvk`tOLOp)D`_qarWR2LqF3AR*xtq zPCa zR&Dw!dw_Gxf~GPY8JA^+(eBELaHJDx_B_SUo>5A0h9M$It>`@HQ)FEF zJ{Y16bCy^r0p+ylBZTo(l)S57kFp6#7Cu}Twh8dBE6A0X^{}Nx@4OZ7ve%)*FB%Ls zDb|^-*+Ei3^=G-}ux9ehn-Isd84aAHXr3zI@ix6|?=Wl;hye}3*0_`fjj2kEp1!OH zR$zVp{`NvDr1|ccha{IlIH?Y>Z^giHG}a;;^+zP^y388G#ijk8&EEx&O{YPy+)CHj1QO%EPUE#j* zrr;!Xgqe~lrWs_{OuU#f!1XZpiR}t5QcRa^=;g^l$TzAv!Fa$VW(Klek4s~dkeE$3 z#;X%?w>zDP>?w6;!i$oM6%zx7WiFHZP)c_=3V6EKunze7UkXj#Cpca?vIG@TIVuouVHWv z*F0I*xdSTZFrj!C_L@8pYRpE&=4009r-*+?CzYVhF#;V-7_Xff&g%j*iw#PO(ZZ9S zooiSm(ONr^rMT+GQKt=N8Q$L<%5E8cjJIo_pw0*iVrLzFXDmInL!5aY>QvF+dOB<& z6YL-(!Q@J+n*&-MTaWfPSBJY~>2UERnEgWp-qgCDO#o@bZJ)1RETBH4o`hiN zT{FTd7}x2``m!E+B3C^nEaU&=bW!Ad_`rRwASv_HCJJJJSaWr?tz+qaenO71onoBT zcJM2hoH0ykR!WMVeKg3~ge$W2eM&hM902$=K-Kkk(YrsZu34H!ed6EN@Y=lSMmXIn z8!e}(SFnHiVo9X{JYvg6Hr}rupO4nFndtFXu76(EWOI1$dSW1&bh{h7d&#%5&imT% z?)6C?0qoU^Nzp`&R~>!_%@}Xe%XfS#5^eorcjRmAw%b&^4nENCzegeXGPEO}Y7i<( zZWtN0Knz+qMqdX8@Sx75K8J0%zna58a&-|}eJ!`a^q z9fnFeIviTA-O?ePG+y5;jF|yqJ4;OBvQc&G5MZfQ6V6VPWrQ8*Q-#k5DNCJ!#6*m~ zR4gh8&foe%mcnrKc0BkP5>xqIDzZgiXD$rHB`7B=Ad)Y8o~QW%>gg~q+?6Az&!6uj z((%3c8qaMl(xW{=ofT8rh-@yZ<$5q|$v{#-OD#$qWSl5v$RdK2U4Yy2`c|TEQHs>X zdjhK_2~dbVJnXdpz|^{KYpl+76G$Ie`bT|_aqjZ#2c3=Gz}+u5Xdj{&Nw!1W7)+D< zT$yCUyY4)I+BF1n>d@2%IPq!W?AMCMLw9QU;z6%!%;=Ai)PpNwN#5*ZS|r0 z*XvBywEL8%I4BMv#3Zs#;z?B0NxW)xITv}Y0&k+wbqNwfO`7OI6>A*dm{sm`pBKEq zaQ_xL7!Ksm;p|&Cu)=Z4GaG@n840)<06R2R%cyuZ9)5XLC&Zo))li(?{Tqh(=N~(R zgx=$NbU}^QfwV$zNWRyMkSM`kR`>_&c6YQRy>ZP<7};oY)=IbbozUDL)n7_0la|Puz}f3-oIRaf6{tFf1dmT;eGA3e9hcnKMwyEBPJ9Kvaejx{=xF{ zm%n-MKZWqSWtUh?@Gx8-wzp#1@_#;D8#55yAWJC}ImqFB_~Q*g({G*h zdI_UiX*U!{qgG<_-oVIc5>!W;0SLM1er|cA$w+q0EXQFJ(9q}g#B&dpj_G2kRoUe% zFD*euAVh97Gj3<*Fi;pG1LQfjor5``_2UrO7u0}GeXDXKw+N&uvZ}Yu_JKTeC^RNp zBIFkJ;T6DqulJ4X_>-DJbO5N3o&ZH;n*c(*yF1fJ=mMG|bQM6Kn=`mg@$&8(~{bBa2;75x$XkyyP@Zkns3Z24?# zXqw+YAU2BEaX%eQdVDMNQWFbYsZoee+5f?#j05cq9R^Y#0brK%44^X%Y;0@+VZd>d z(G$%=6%cI@2!cpjfSfWpAMGlt?wtC8=ND&SFR7?KzU>T}3bH}K)BF)g`&PigyKUPL zwu%SEWzoi74r{s|JTnFPMaR=nh!!MY@8@V_UZ7jJr=qDYNv~ecd>*$OaTCM}VUFtr zw1PT~^c+k0;wp?pfFYzMfN)sqX|kgoP+p#z@T!vzm@<;aL2#lWXrV5xIh^Q%IylZo z>n`zIff%C?YB%I8zv{f7R}7T5?C0A_SLa3!ZaP*UrAhAr-3&4TA$zvDnsvD$V1NX0 ztl4KaH;Z}_oqNxbm&=r&!n#K3%Sg8;8r(E4v$jfxH4pn8XI6H0hhJ)qe{;viZnWeP z1#6(IRi5(H;9%UlB-J5%P*0OI1_GU4bVrfgxW^^QdPLQFdD7?Jt7W~wALuO#$}7+s znfi2cbhdQdXaEW1pMO}u$iHem1G1-JZhfc2faY)pxO$T(#fs%f2n1z)Xp*3Qqxw9; z4=geRUj|D4@?89DhR`R9Ck9A!bypWVc7TnV0F}vFS>W2%{st8CDD&($w4@OIOd*y6 z*qvnC2N;=;m~sMI{{wg+Yy?XqmTrM8-n!gz|>&rQudMX-nMgkV|<3A(j9l*Io!s?8H zQ4cyYO_X8n*BKcBdT9V`V@8&`8PBpJYd|r!9fLx{4k?uo8d@vpO2N;X@0q&XAmKM4u+GK7^Ltgxlx#oqf$0ul0{yv+tPiF z+b-J7=L#?~!Wk`$JU671z-6m#9o(}I)ZOL*9l(x5!4_mTT2+9>cvIPgvQi?ZbxbCF z{23Rxl1tyN`6gI{NV5g>dS!<23O<14Tb=>i&00aKs~G_3kk7oEmeRfod>aH+Q?qMQ5z_1;X|oQrb2L#_ z0%8c9PiTwa#U;Ys_zk4i<>MZ_ISJ4mDnVu25h6gpl zbMLBUroxewTPGK-ZVS4-zb&n@mWvW2@G|F++a@HzPBjgaRCRQEX5Xwi0Dt@KTb=!t zoC8OrkiI5N^G2U%0)#mS743~X*RXqEee}5glB#XS#X6*~4l~Y^WCfAh zEOt}&LH77ChpCdL<(u2=_a;}T7O*!W0AjN>57!TR1#d>NR!P^po)zBEm600fM+mSH*) z6)cT`PX_)ed({BC6Sc3sv6M$?pTG*LcBh?Uq3tT0UJlPpvfE9G>!)>Fg_q$iXhT~EtR~UqATYxR@BhHlz zc6{ZL-TJNG$I=>FT-|Y;Ok+>=@OyT&y%^XLxE37mz)>AiVm*0&k`ly-j=;76uLm|8 zfP3mA&$>>*U5NXMhUF)|j>NkGs6t_1q^p*81FO27!9t-6}8+aP}^~JidwEKi7cQ{7YtFff+)hAuS{Egx-jwWa3tf)&^^ct?4^0scEIbY|odE0a8Sjs=PEZmj* zUSq@}eN*6o-{7v)@Z0hz^yi(7jIW);X@b=0d+d(;mHRARmRL-&Q(kJ6~cPIpz07~cjbMO&^ zKZf#j0$Xw9x#65FjkS(d<%8Sy1tL>>%PX{S-P?7u>fCM5C#Nv@4ACx}bMzCRy^C&R z-)buQ5(EQ~m>$?+bnK3f`gO_S=rVCWZ>ZrUBEY_(rt8;Jn)L!e&3i}xlNx%s3T&LA$V!fYg&nUWnt>=x zoR-~gd^3a=E*w)jK@v%!RsIQ_;q~H2k<4}pNPWiOtB$48vIWnESHO@Lg>l@0ro*e| z0Y_h$LvRmmi65?G$DPCn#sd$7u=_MIfk?{CZ(1O_5Xu zcxciE;}xM+{6h`r`D{%t&Yjcb`u17j*;9<~Fun!srZRu{R#(IA6>~3dJ}w33=LFYBNW|3R zsZpoM^Ea5jqBrb-Uzlx9(k}co6v6)5h+sU0vYKTmxhT<55HM&`kla*=zy{0la?`V% zUy@xOsO6W-Uck$JopM5`#W4Dc;_D6l2Vs9f>GvsrN9j8}Zv7jKe&}Cd^t+G$!034n ztZ?%>zJAIZbJT5mBsgAgWSv+#V^0yjnG4p9A>=?#Z(l&V$7n(Ho-WO}_P<2wF{_@m z%0{wLaw2eFg_>mArePYoAbpS#I%=4=xNn(Q z#lJL89c890SN+W+=u9?xL&YfLglyP!)h(V{`L+|QmLvIy!b{S0lobag-4$i5ohRN2 z6$$K~-Ls)?W5|-P+kHK4(RPXa1HUF?THv6zbk}6#mFvxM>_WPQIJc2lm_<1SU!1hg z56qrnc}D@W6%|BeME!Ng^p`dHi6%7E2alZq3$}k{4K%4+6MkU*%);xqw?yuuo8Sn_ zK7D&^%py8&)`ECouW4$fF4TfCW=Y{lW=c9($&hHO1hdGx2R!1GJeQL7JME%`;OAz^ zxOU^p>5NQqYd{T%Iht?m-orjR2DYU5%_i$hg*tK^ti&LHsaO!GSiVWGGgG!x-W|l+ zqL_Gv9n%xg$5eZ)`&E#*#B3>CCOE(T02MJH2NiipSi&bwrr8`p#}m`N74`n6e zo>`1>RJP$dx@3uag+EWYI)>!tqmCyMPv7PZo%ZUGv?9qz)p!zKP!xs1g$4n zFb2R)y9Jf1FB1*Tw_n~mD|<6N91{I?L&OC&f@~)Wn~?%O8nD5nx|k-M`2yy;C9L;F z?of(--pO=VTu5|E3oKTShnvb&1m#zz$LfX@;bnSlvD>GKtG(E$*>NWg@n*cobJ3vx zA!wNGh#c-{O>uH{VeA9x!baX`<+qA^$|901y3LOTnTw}ZdG;L{2GheUPrR(;U70@D zbtiNOWebzctpP0J@|N&5rhV=b2P-Qfmrr(lo%DX=x!@}VSe60^Lo5% zu#l*mjK=Z&=22@1;rQ|Hc;aql=St5$&urXXi(2mcf>~TMRQLDo3j=YK&e|Tr>bF2;xhIz`5UDC=O2?%!8;xpKUMw73{=8>-dO`h8ViZ2 zo`5mA!z!Q=&IeY34z{Nlf4QUodb96B897n%#y=178bZd8FCFAei3IT!?Z-AUd*D3K z_B~3{6s7RSr@&hByW>JJ(ApU=d< zdaVng-%@`E#eXR}yeE=8fKlI}e5Dj-ubkr_h8{Hhv^Xp`D*0a=NPYMOKGBlDp2feM z;CvR(dlYb{h$T*L69HGq$dQFEDA29>{a+9)LJcqPoQw>4{qn*ECp{YwLdsgApQzuW zdr|{R03-QdPy(Q|`=37*P7*|J5WkPCmq6$`nvF|vs|2;oIkyK-R^v2m!p39S4M)}W z4mXQH8+7!=L7rh7snM=j?Ac6R-?eIi`p9hc8x!0v=}lXWrG%*_F8+lR+m zT{QoPxwnqWs$JK<0YSP%=|<^BN?Jk@1Q8XGZfOwdl12dqgOo4<2?^=$1_N)p1*E&{ zJ*Q8sXRoz<_S)~e$N0YgP{v@uJ+C?Eb)Cm?{0<(wg;mpRm#-)*Wm@hu?T92Dg-RKe-zCyS?%T(=K!LOg72%~0dev?8<$ zGvmQjxj@^s@2xqS$@Y+*Dh6Nv(Cs2yD+CQ~2j_|L3rD^v9m{?SLvLd+kF)0;Lp_6q zdl&GPjF4t|J^G20B}IEN zNH;){Q7r~o`3;S7p|Y=L*NegkaYtX5DaaCSfFABFeuk2Mzaui6tVZ@SH4=cWd8XV@%D*0IWAy>R_wD*MC1rX#vWQerw|vNE+?p82K`oeLLz)UjQB zgl1nFoZr5;nf7LeoDEIrF%hlUCj+n{=jM^K#13^YTaSJTkokMrp-q0@tt%K zoYM6d?tZ;0ssn?RI&-8`95yMnTQIBR7u{YQ?1czj@k%jLej6VbZVP*U<48(CJR(&N z;|_qx{fN+g6NGL4oOi29t~MN88igV37R-(YLKhx0b(bHvMw zNP&gl!6d`2%v(I=8(&lqlQh?sP&As}7ii-y|Md+atAltLeis9ZbH$V5J zo-2N=)qNg(1X|g!n;myUTGW$Z%&#Og_0=D3e((!kMY5Q3X6%$W*obw?ivD>|p&}l4 z*eAQegnHpYSKW30xXe`x%M?4Pdzj{9KQ2`)%=7NNJ2;+0x6nIPJz$`_XwHySY|wW! zSNy?tr#ckdSS;x!JfEscw78dMXRo%Z^UO&ANmqTLk;0JRB3Eb-GrD_6oPaU!DBMNd zEG#UNse$EZ_={oI;vR^77cDKj+X*R2*S^&Bn85)tx~n@#S9`385@8+As{7&DnCx#Y z)_ZsPvnIEX)1mNCBFV?ge#a6+&7O@flXdM&8?Ta~w80!0;rn?6pRd9Qa+*aD2@SH* zX-4L=jQ3&+WhBeftJaF!dKmgvjIE*U%GLonLDIJ8TyDg7wbxAA-ExZqiFENuoTz%~K5q=kbvn6Rr zYcv(=ZG#SF9N0_?!bVJNEJeN_Zhm0PQY5C4Z?lqAzpiad0h3+=D(X1mM5fQ8^XA(N`%co0kFmkf=LC5o_qvhixKEr#yNYgsvV6EeSCB%DLl2{{V zY>X^4L#(gic1UW3JZ3EuBZ^XwjYOvX3j^l&S9@(t@7lgF5P3)R*`kC0}<^n0fw|uHBg+t*p2_(}t7lAakW5 zoT^{y55`Yl{H{L$5=xas|Fx>=!n@W5PFmZeCr*FWAKnW8sXz4jGUI*4&JVH*6%YX8 zbNNykml@$x^a?0058<|K@~2c~WCdn68xBFl^CQqmz2qv+mB-fPP%*_`bq%s#kVH)T zNASDR+7^;h?)}BKf9c{bHiI`wjuk-cb0d{Dq@gE7bITWETOg@71NcnV~KabE` zB5mwfjQgi`txy6eSyVK8Zj=R`$3kAS$eo9_BLJgkp?&dC0fPD`38{nT9kWueqOPJS z2O_7PFs)JNQNfuxW$#rF#ex47zQAS2{6s6}=(O*pOY|OQMuP>G-ML41wFzR0j{MGy zaM%=Lj%{?D^L+oyC;1I*qzlUic{ZBJ6$R%t5{>w^!#doS|nXFUb- zScx|}rHzVUPHwtV`r9IAVQMAEiLvzLMh>Y(sNzG*A2OTg^+1l(sYiqz&NrdVx_Zh))b(| zb?dG4@(btIBZ_{|#OsI6;^2nOYb)1#f}>Hr-%qO%uST*l7E%&VlXTdJMsMZY; zcVA_@4fnE8skK&?TSBkjb(WhYUrm(hB>$joTe+>1GW$Fq{dqpqX63V*>-S1a(s0Z; z5+5`tJsE|1&rig2JzKkZISg&B>!t1wy3_jQaF%+kGVoL8hX`LK>r#9`oc{KmiSrko zRL8vkVf5#{oAZa*;L`u!iVe|OXsRbUZq?DQaL{&qc!rZI?Qh84u*tKM$;xP8yo&F=bS%}Kxfrb zui(}Yc)^Cm6{wj(wpt>O^DNB1CaR9mOL^MLhIDENX&xyR5!G6Vi8Pt5Kk>Qo3{91= z5#H-;zm_LVx|L6oWAF$E0XdRRBZ+4GWB~hEV<#Cbmw|97s+Ek*VPn^(u@L z7-1S=n&roUAzkcUbwwci7=9W6xz8QB#5kHOUwq;9G$AcBzPdwO#o+1Z!y?f;g>OVG zxZ{lNnj03bVbfh`u{f3-q+eJ|HScXx>lbSqh}tu_b+>hxZK-vYYkpYqXEdN(!mNB> zKKs+X-W+k?8grqPzlz`Z7AF zKcWHpeusD|n)5r}Ma($0*mO69s^`tlZ2!osigB+HILCq}RLnBXJkW&SV1Rlq7u{KD z*ifPF%4e!biffnJUB=uWS_TVfMBvJ@4p z$ynzD#9v|34B&hQYx*$bV8l%A!?Ng%hbF;d-7RZmXzphn|yMjjj;xP--8{(22-N- zYk0=cytUiw%pX>-{<)SOa{{uDm|EfKF%t8vcKNL1O0|0d{8z_TY7&%oF^CkNzm*tWd2jf#P`WuqF*!aQ_PT#P;3noOKn79jwu|m{Jo0JiU?J63y6xe%h+OJ zUY~#j5L%6r5UIoTvXQ2$kDfKllO#{b1kQ}MH;L47Bu?Wb3R!jyp{-mgKFwMnlCNv= z^hM;oIrOIjy8Pg2mk6US$H4$0Cf~m`2tkrutQ-r#;5SXZnjgdm)u*4%cN-Tle2%x( z^;Ms?KOKQBcK}KazK(LA{SAGpWFGYrpychkC;ttKX-Y z6N7Gv+DTLQko2D@r2oRb#tFv4`B=;E7BH@nli%N^y0r6vY<`OPm120Kfplt)?ndw0 zg4Vif@6RlPnzZ=W0)3k@r<%2EH12afd%N4JDakYD7}g43FY7V3;?!KCby9Fl8N07u zk($gMz!U!#(}qBJe3vf1G%Vu4kcfn|XJ9IdG}J8&_CcSv!1tBAM3RNyM_GUZG?jRD zjN}xyH0(WD$Vy&!zs2ePd_iG)8HlUon3kyS{Eg78saJbfG6G@WFII=aMqHw((~~>3 zLS`dk!>4u@ii5LyGw9zFjBTj??FIoKxtW_T#v|fLkL+2NGjdO^+Rts!yN~%ZB~pw( zBcPkZ)D(@o@X$<&>9lG85K8f4&LLDGgD>Ov1VcYsn!fb_b8dcZdy^Pd;YTvNGEEAK z@uxPB(OTM$xB-U%fnGALa$$i9VXDfFP4G#r+)aEP^$Kq48wv{a|9I`rjhlg zNp?qwkZb%;eI!28Li<{CZ0EiFHhHZ-y#TNHO2z{CMdnroUGsr#MB1|JW~O_!-0aSo zN04TK5EEn>_{$l6c zkkaQD)@b)?R|D3tvIxV9IyQSgT1s0=)jDDHhNZ{wnG#%nJS6_~I)Q@nB#SK|i&eyE##6r!%AUA!-q{*F<>(0E*|h0@ zp%~T}B950I)Zb(NIwrxV=c-vCt;8h}kJqx_8?GcQXa(tu__fxQLAhKO;JC*H1?^iS zeBgBuz+VQt%Fqr*LG#uX#jLl7kS7hc1a!l&u_nD-yz3p}&oN#tz%TLz=b8L*-e^PH zQ(KcDtei{SNRX1fSdl?@PG6w<=#YsGkwU zkFS6tjE#sMNjG0vqu~zXX)`Z!Th(#Jp~ks*FA``d%2;%E;?|5o;tsw>7B_Q)9+@xr@7;MY!UImL=kDHppLR8~!k zHrF~HKN`3hD2(@++BjZbM#IA&o<0`gb6kFz+=u=%z!W@#+6wTe!M0)TAF9ywwMbHs zoQZn&pPfx|i1<`YhoWR(UDR_L0{4H}Nchjut3h4~MbUjV^<@!XM1tVNtA9U2j9YW_ zkkH2azl?(aIwg*h2EpKKvw^zW6Io8o7?>}A=WhdMyMe_$i>V`mrVA7#I3QV2)WIOFYVU!^4Z~q_wDPD z)r=L*cKW4!UGolx((Ye{ddV~uevdMIcDyniv1edy#!)Iaq#2Oc6M5rjG~%rb+;x!ThvF@a^x0 z?l3ApaWmqNpON+d)z6SU10~pZGx_|%;}u+65N&|EtVm<-0=K*YXv zIg z7ZIBdXFNi`c~WNNYF|~Pnf1i|cONAAr~gJHqajN_g^??AEpsLwwR5l6dQ6cYC_ z{2BM5*jB)~0qZt;bvEHU?&$-iCk|KtPAdzmLA1b4;r}(|&h~7s_i<(aY+51&-u48N z{Hpq);UZhd6zR0+mbO8?4D2^NwsswIB3FM?x_r2ATQh&cwzcit%cOd@3q!oNUN2qx zv%{xyx(b;zLxYYBZNGeJqL)G47PU(v51A`3iQTHtv>sKpYOdz^pss*sP-GkL10o5k z%*Cd?t7|0H%f`Da0h)af;tjC>_pkQ5NZF8qq+0Pnc3$9@3*j0eV)1j|SsCAg$=o0W z56xhPgZu!5E7ShQfQx1W_~Y5grrq`vLKOxqkp$8~jDXp9?M!97frT;95ievH&Qp|I zXw!RJP3_UJ`()&}#pw)wS+j+tl=Mgvx z6iOB!9q#Lbdv5{8%jGW1BT^ZwilWufX5m_kMbQW8@^t3h%^d6%l>*v)9ft$|N6 z8)^K8A%&2{d{%)7bd@@X5Kx&QG^WkPLD8ibtrrk~zC#c0z%b-P>Mm?N_B*Ig5Otu( zv_LUUFV%f6uvDKPD9lW9tiwG=d|B(w3vk>&W4Rgl%d5(WQB8&n&4H$v1yqKnlkOH4 z?|hc~Q-2Rj)I-8#U9fWHpYjqP|I@q#i55g>&iIDjhf&H5wH*rq%UqF7FRz)0lRk6a zd`|g*^!|b=5FRdnUkmzBiqvUC{(zwF#A+=zLrIM1eFVzr3Zp%2ftTRz-U16mNHvQf zq(++(MC_=K^sgEH01yMoL(=vKelVMLg<=T%XHzkbGZT8+Z)(;)U$Xc^F@brKkk({p zm-HaiT67p*^R@Z6lF5wS5xwEz)^oz+?G@M=34v|w6UCpGNzsR`4SPNd-E)EEf1F$BUnr(m14*f?G_i*9yQAxeI`+D9YRVmBWy~Si2ZizPd*kuSgGgX z6hO%3*v1rj z<i!w;>xZ~9ZToDkgGGTMd_gsG{HQR*eR#HZqZgY-X?XZ7h z+PC<{3g&YpPlXJ9}KP17M&6nOTQ&gi4-YN^V%QGfvut4 zHL@f&Qa9i2oJq!u1)=L6eicX4z!56V2miN-<5*23y&KGNLkiKgf+r>*pwQ_SGj@T9 zoJTvCQA`yOUYsQw-VJh;#942|F&oFv>QUhgafA@jSp$~nhITz9P}e%yMnG_G(3!pR zOTC%I|I1Hp32EjDrM-K(CHbORqbue38LsKuh1OVHcLWhgdKzPo2}NYo70@)vw!m+U znP_SInDi-D} zH!a;HTTP0&1W~c5PQ|m#Xe>C0%U%0C1Dt5(j4TS`r3DQd&=t^w0@%Y#bI}MS1l{wf z=>$v^^w24d6P=j24;CH#3Sb5-zCoG@bYDte$mP^tq+X4ydc*nfOi((og(Snp5w=jJ zU-0V^5pr&Qqs~x~;%_!uy2ZDK1Ez$Im-gJXymHDdPo;??4obA2d09l7xPGgw-Rm9O z_J=h;3P_AsbR0ZR$`} z+9Z9D>u>o9mAgHnJ9%+YkivA{i)W;8YpFcb4wY3gMlWN1qo_NjkpcB!J4q6BCVK_P zBIrl)sZBD`bz>jPC5So7lA>jVV11@7@bO+Ypy^bWNIg4^ObmwMl_96cIvDFAep|gH zR(!8RsQV-0@;~2LIOFBB0emJqXfKdyFn__TJxKE4KQy_+sEgu(ql8h-ea1V?sn^?M z2yY46l;4{*L3nO0*QOF;4SmJUa+zsO8>t>t^b{$!3?Wf#iwkvJb$7;P#}rP#W#vb; z0QJ`m-NaNQihv7q#P4w4Q0^>fj9D-9CKWK#Vdh7InLd1(5iP1PI9Sl%=zb%c9mzS| z8twBezRsf)jp2bMHI#XDZ^`*|I>Ycmym;*bWRnQu@fXJ`F_bjNeX=ZLYpM;HO_Y2m z;;Qw%R~x}L-Wz&cOX*aRigo~b!I07D=%hB)f>S~ml|&yG%RhL?nFQbJJg_DVoc>A^GW<6*A>n!N zrHr36p$qd=yaCf?Vgrl>6XT&;yXZ-J6z(*;dWA>@%g2?USLf}lcZ}0tblG73%@{1fOpcg&ImL@;;QPsDkF z!_bRH{ONgug6l=%Wl!2K4HB&E8x%+K!tLR=q1~ty!V4K@o?SNE4Mu` zMxRS!(HWU9YWeFE=;k3sV=^DRuKozy_+X5~R>^Lh zktOC2vJk0iE3?uM9$GU^W17fHfeCJ!UE47VB5T3xliNsGh2|In3H=9YTP!+dW^E#O zJ~5iHKYgwe)f#-chE*oM6)q-DVFZOnnNifHVn{EtSHQu?nF1q@mT!y}P>HaX`P9&+ zFEls~L@HQY3!0)|jT$DHxf+9B;a$3mi}uhofopcUD(82sPM1#({dZ-y^-6^sv zXn1tteT*(+voGuIBE1EB+(N0rqDKrpI?z(bQ&8$mQ;JqG#IsnSce%6BqEiqO-E+^Z z$5yMJ{uG1{jC~&kxS&&Dp=h%9@&X=VP+(7gOH1)BYq4~$3EO-m%z-zMN`R(z3Wj~b z7|r2Y1|H{VBkBfH*tyX(QD}K_n*;)7;GcR+UBJsr2e;$f$+ww*~CQPfp#TH7b+@jyQnh}QtWc&Klwsy5gF|0ar5bP4|3b% ztoZQqYtpO3JAd@$nS$hLFZV1&=j;pMEWI1mmNmTFdTzJd|4e^VpKiUF9fqSr@tv*h znc&dQGY;Om;#5XU&##QDuM>qxvoTLgiSH{*Og+%7+ho|-t=SrGvU|%Vi#%&_Cy*f$ z`F*}Bv0fo9QG8|xWAwNbr=S$EJcA=fB)EWTaT$J99fSXl_Lk1~96}_xP?moCYvhTT z(19AwG*oxB<=%#*OoS#&g3<&Ayigt4Eg%{t0*y5XUbz9&+a+hC79mUf>KgfdBi`m{ zjQMHzTDfyX0s^syL^8f~)- z;UcYU;f|A$xsXZgZpiEqh5wc@>$ijJ=$Tqt)rm7L2@(aCi2yRm_nre)5?b!0l zMWe@%M17ohUm7-hnp+tZ91X^?b4C5h*DH^7q`VTUH((fl%k|{HnZ>v5rP#{PdF8|2 zw)(fd?U_b8^qr;hc~1+QcfHb&&3B(1mQOySs$%^fv@rZq-jw{4Lv>{nA$m-impqFb zXI}>~R<=uTFs;n@uQfu>rcxDv7Lq2;$>*!K{jnZcdgyGBzAtg-8eMl!_T>6qB&o1l z8%sF!@F>A12X`Ku_f)Vc0$;Mh!hVxZ)4d1TebJzH#K0Bh(c$@;odKpL z?V*{se@S#lCv`k*Z)|sYPNneC|H||N01oKqw(_IZrtL?od;;08AY~@JC1V)HTQ6*& zj8Yq3t@1Ba#{s#(+^26+89@^M*5Y(n98QB|sApIY4y(KyV1Ad_X*0!@p{dvu!U_ST zW(eXl_jkNdp?80TA2M&(zS=}V{>7~A$*KyWKE|Nh(xk7*kJ6K$$pzvF4DuseG2gut z@R7a2_&VZtC6YIls<$)GJ+0U=bz#pBv3i2(jdCYyRV9YPul{br>Q}afoL1j=N0YE# zVp4b_u{i3)4szXCg^oOyqdg3JQKWRgyxureX&qdb*#ru<|s5PN4I?r>O z9&=3E$9i9nR^p?)_u=Mk3TZ7Yl^^U%5!$oZA;410*_Di${i;0dU0aggMe)th`b)tr z#_5SGwJ*;#+zPm`+|k@K@iq&6f~#;6x522vc>0)K>`whCzV5s;+QWLKEC;i7C6^)m z?ZR9%)d%SCSA`*F+}HI|xRvbs&-meCj{Evc@ZZcL-XgKWvFne@ZyTt^^l!|54b)a4 zKac8x9WkLxu!PIpjoG-focGB^b73CN>-hVCdV*d@*3eZahoQzPar^3NGb*qt?#asr zGbH9Ln*r(=>P52->aQi@gwkuCM3yJo)#5*`A^-ZtSp^vQUW|L+q!?CFSt(*~#&_kN zfXL?qUkJBn-V0RyjUI%h_8UD&dx%EV;JfQi|B}VEkCcgz=(S+DNLTTGQV53P&BZwa zzuZdJyaPC!`&Y*t5_Jy{coxBzxG@l87?SX$=Uml~SK+p>_|r)ax$M|}W3qhNlDOHM zxtzhQQ|8)Gd9UKSi;LtRSqF*z1!Oj#PtJqV6;GQhHMdKH@wGW!!4lVh^bUpmg43gEbHd}sgJH(~y_tZzGta=0UmBX72 zw>hF;&mz!C*%N9ks&*+gKb`)Yo9Umv^*llLEyew(tp`~>4r)onnAf9?V-fz)g@4B% z>KZ%u_Yo3X)zm9EH3PEQ$tkX!*0%2e8T47}-ynnDqyMKtgFn=h{}%=3pTY{W|EpmI zrp*5uR@hU(90T%tKWuKTVcS;(6|ID2#s6~czm8AA~5TJ&$hDN0`QT6%E~OH`y=q z+_Ww~KHAR)#0Kh(GTA;P0_=y&-PEnUKX)R%m`GAV#BE7${%hLfY`xMiRY!X^NbG+h z&h$~<>SXgElmM6v+7?6(L%^~K*uH&lV-2j~DGtB4S0^MSau0kZVf;8gFsWx0JdAjM zo5Y+Z6c9MQ<`+Zi2VA*X+QzOm=oZJj>I>qJrLBoLwwBA6Mf~I}Oq=gI|My7;^5d@S zB7I_n8Ou}3#XpJ=LY=z0!xdj^CyW*NByB{8?>!Z^L3MOpn9m}_G(f$87jz%I-|s*; zmFI4kH<(-(0*R$_p~fR*b18(zK3C>ooS4QX%d$HeRcNCnF&;!#H>&*_4(JrghtM1Bssrr=5s{l69jf~y1#)0(x|S$l8e#_k zI&;r)00@WE-TNeGOm@WQx2tmJ#LI2SQaJmp%4{{!IA}v@ME$b*h1oZZtkQDC92cg^@G8C$o=*q zLw<5zJ<5hYnd9B=T^qFuHYdk)04~YxOo?X+XGtCJ^;V0N96(bd?gZaD9|r$C#rh61 zxP@gG2sH8)O&fPaxuwm1XrgFOSGAS=e8LVS0Su@)-jAUy_dwy<5?Qf{TVBG zfP9x}lIzs{T{@jQv%u_?g_|NlDi0w6!eSO2ZI#%@_?kjv7q~es4z4h@C9dN&aRV74 z08J7agIBg;sfw9B`An>Une#xbb{eJYPzZscxB1~TA8-E7B! z(%*sTW9?Jy(0R7)1lz^LLgM49wN0+Yk5Xy{QpE!WLrpQ4>l-6MBn>j^&mrB;cT(BP zQQ&_5)JKVP`El>)(9jUS))sVqfLE&I^Q0P(TyjOm-e1$JfOVo|u^fPfpLHwycE~3$ zz!UB4lFN*(d5y^m-1~9O3&!(x7vSLZ6I4_;PLCqVG3JrS;r($Z`U;VC<{d;|b@|tQ z*q{INjKZIj1?}nQdo4_%K?@uTw`@a64f0GZ0%^JK#ML#E3{FI|7y#Mb9SV>zn8;;+1a8Q}eseW)gu zT)9s}`oa#@r=eq7ABql7j63kHj14h%SWej-r*7FjD-ttO4<|2nT3{6c+Uzl*>*qeP zg07Da3=(fH!n=mYwW?QkxhF%j>M!7;U~&3(-+-e-P;Z$u;|dAUbu@et=o^D>A@?sM zCEt>eNQp-@PVtG81ULb#7@Qy;8=Wg4FYf>_7?WB0T|%lG|1y}r_>P?BJI?Fi6aHix z&k}01t@Bq6`1d)>k{7rz4MYY>m4VT3^CKc6f)N9LNj4k|Z78=zv(c+*xEL?XzXJkX zti!U-6SN3Lp*qfO9)k+8F#HJ8K@IEGC*LAUav@p*^a#4T9g?oy>b|i2)yIVAF?bJ^ zzMDs^3f|uxgk+E{(wMx%5J5_bhgX9n2zThH`psS%yC4y>8T=755*7o{%-MPr)y`k( zz`5sjW6;fTJ)p_LK5_9kDABZv_3P%ZQVY@Q^mz$X!geF))@=t4tcu(lP39}rmleu& z?0exg7*f<10M(qx1cE3~A znRG!3c`vnYmZr&3Hq;Y;SSw}gok{)!|G)TEon}umemvCt@A3ccqqwLYTK92T0*oc3 zvHUP$f_F0oiw$=!*I5kd!o|UkVV9CEvIm-{sAmVl2}8g{EptdFZn1^saYuEC<=A&w zD-6u3e!&iVFVruk6U;Gy&~W0MG$Xm> z1aDGo2@7j#7D~n-7Qt(Qr^aJs(cTgFu(O^>aEd-u@e2cbV#A62&n+evwm2&qC;7MS zs}HwC?tX7!L=(CdYGs$JeWvk@!G6V~a>akw3Q(~eBp%B>3W0@ST@q6e zhUbkc)ujxH>c_5;VhN+-Upr;7)6!-ccN%Bc8wUgm!~EMXPMy@-=_Vr_oW$f;+%P^< zQQ#1%knZpKQ(1Sg9NmrLyc>GCo94rw`g1hB&Cxt1_Fp~{W|@)Eut=qlkSWcYHic-DP8rS280x~{zzA(YkBo0%=%!ZUH#emPYk!n@xZU}!rmzCr?*;ybVkbT5Zd)Hf z)q_b>lj|KfyE#y4@7cuFv0s!%{yFU`Wv* zte`c(IdaLga{=BcV4H#s&6&SU5iKK5L78h!6&UFXMGn4Qi}q{|IxzkyDW- z!6j4eo$6?DrDux%>r~%E?H5yhvPF|p1Gt`CBg{02OQA9sP114fZnu4>v(rZdlKY9G zAB^3GNXfhhKk7_4tMjCInaGgw=<;rr0)b4*1VoA80JP!X>-m1X>~R&g+AZ!HMjOr(@Dwx z54NbMxRT(2C9Hb-+@3?#m4{h~X3KW^sbYkSpldr8Oa6}r*Z9s6cerf}Y`?IC2@(x3 za#4Dz1-L@dExE`Pm8J$<7Y&+I#<2nvr?p#8y*}clG6d^MAs|7q^3W`z9SwlZ?`w)q z_wDhU54p^PlwLNJ&1CmUxs2ch)8Kt0j9A;<^l8$a(_9UkuHhDbeg^J+daF&v&!3`O z*hwY!3e{Bxjtl%rDVliZc!=#Io$FKVq&tg80wXPh03@Otj0Fb%uFZ~bodGSn+Gx|3 zwBu}QSz1O*It$L~`YB$(C~7l)uDCQ1HGA>SJAg>to4h~uQe>qkV}5Zq4G=~3V!t7Z z;0YXR61NRqOV9j>Z+$wTkHyUQf&J;}HVl%EDIgY!{)1S=MB=?$Ev9Ca#(=dr{-dU% z!lT-T4%2c(9Daak|>g1Rqh`e0oT9zdSWjGI2|Cx&bjxH z#NuafLC@2p9UOJx4khtLM&DCC=4X=xdnX*v(K}w^`~a#?<{i@{&k~$GG4ENf#MPm2 z&Da~AJyYj~**Km&fWx`8?S$qfK|H;#k}zeSHkXeN3Q7tPF~JT}M2_NLMP9ip7rH9j zbQW%8zq!w}s9_psq=!>e@?tV@dpx*?9=As9u`)Ucy_Z70NSd6kO_D3cHSb2aM@aB~ zyUgAY&HL@EMfqD#7frSl+oQM5zG+4ILX6i**YUK-Z)ZyA>O2i#71_;d&2art_d#=% zi`MA@1LM;3a0!f+Tw@o#nym4{Zc|>vq3X^=tyN)TU&m!4s#7ZHu*GWkS&E-=R+mrl z5?Lv=4DOa%_gTtVc2>95)6y?&nW=pX`QZ~#SMXJaBBZSP#L1q!Y4$uRvG`Jh@-G>@ zbqbQ*ojA`)v4!Q)^1jO9a~5>wu_0X2SGX;xk}Lh9JOr~#7JEI6O?^qXK0`8vwiTXvcU?=*55q3_59s6+n z{jFanJGxjOcJ`b(i9?^()bxCdOsV|Dxm$@!d zi+okijL<9rATiVMxr|s+6Q^s6{$USfJ7%sCM^o2|-P_-spP>pi6=uWbe=-qw{u55E zZPqdDNt-M@5pP3XG9|pBOI3}lt_H^bBX-F$RCcY@Lg3#n~td^JE?n^ zu$k>vuASY{Mv{ROJ?AxD&EeE7`Sr$a)do8B5|vnMUhP|(@@(WUDv~6$*0Yv_c|E(< zd)jDrYF}Wu)ij+pXwbhdxI7~4v-E&&fT`-pGZ;TbMgGbU_7Gyj3G5K^()-rZ zkH4+VzEO)ddXc{TU{B?$Ckn4YZ(5p&hpFh4n0x%=j7Alm6AfC{&17Ma8elS(j~Y+DQN^bJ z6e+IFDERXHujluF`r4c&N)*GfKcv#vAhO*SNYQdxjaZey-cYx>z+}6}(lCAd4QInS z8ZFj=7IM)|DGBH}xa-81jB!DtQg>g|c~?Axn_wO3I9NaY+l~V-IJj6oKD=;jrZDmq z#Dr%Cr_%(iUU?*aOf4mkC(#!CtW;EzvD^Svly%>n)-N6^GR6) z9E4s9+YNkNa}f!qH@|4qszAeWuka$T#wZu2O-AHHuZ%Fx?*UIr9#iHuXo~TD6zWPJ zpIuP4tF|~C#G7q-ujDq6Vg04MeQM?nb7{unH-wsF^*7XF$;2__8$->Ljnak%5}u;@aE!NSiTgkV`-8MX{C`@aDN!*TDwGy6-O z@K9nT!%#sM2gnn!IP`}!nWEael{o>pKMN527t(*r{DJ5~w`?+LOHj>|2O{~wH+{N^ zJe(-DZ{U1ibAHkW5T`x(Xw&|F0{=Y^Q2TC&=W_2(weh=)d}*hNzw^2xC27fL&Z`Ww z-3_GW$GT;1Q`Fmf^A2UBkC*r){C`k!>?f7U|KdIRGh=aztgl9t!4xmyZ~KV<9HEioXd~{qxVj#61}0T`FDUV=G+7TA4w64tNd|+p>pGYeu1wE z!dmncyc<(<8>9XB$kO$TG7PSB=)a23#Ob@g>|dMuiBCFMxA0m<{LL1jbQb3xoZqhU z`mjm!wR@U3o@SuGc&f_PcYl2`eerRAa69?H7;a#FH7ZhfFz}M(9lL~&t$6aA`a|t| zV^f1dnyA$e?em(X_bGt3;lJbwT6@(*1;tbox?LB;0cB!1#eGb}$4L;NGfEP+DS{Ci>RTS`d8)pj3t6aTtL> zv<33IM{F`%P*D|nEZE(Qz0NVOxatnuK6#p-qkgZ2JOq4y8?Xj-<`6qb)(4vnz@8X% zpv)KCy!*O$%H5GBHl*4>Vy%UxUbkakOV3I1M=xS@tVD({h0^qC;xQY140*E@F4zJ=qo@QO2do7$PVM zC^i+z{27uyd2t!a4;J?(nzs<#%bof|5RY(8Cdhcj)^;%y$79RCo_2BpPB_5_rmL~)rjor#tp+r8HJn0j6WEe8_NBWw$~1OA4=ogJhjqQS6X{4$zF<%AL0Hs5v@ zZpZRQW@UF8vKN9{@)k(EFeDh$4I)tyxzubv*m*R!#gohawP z@k3y9FHJ4U`}Pqx?fWZR$O4dr*hgnB{ayY!kQR6j&GHdZ`S=!%h|1s~K zoDTDgpHFhy_dzvsXVu;u7a~eho}&4L^C5cYHp(d(=Jmz}6r!3?q7iQ2jQ$Z?zi0wD zy7XUY>$ST;%0)0@`2Jhc(X4fbg`nf z>x@9wv%wpqno7?<<2OpZ7Spune*UbDL$rv9mph{xpMsab*&OgLS)iHPY#>1do;LDY zny+c<#Ql^AS*_5sU5+_lNWs6a-32MHATezv@t1#I^Y#iWzFwwARFX+c6cYgTxzkp0MjB%er;kruMl-^m92j1}h8M=M_GL>xEn_l~iQ@lOAE2p?3v}>I7B>5=}zs=?f zAN}D45G!$UntYOE;@o|$#+V9oaKgW&#rPe5hOxmF{^fjEsmq@GB{hxhhoI&TQ>XaX zQ>+%j@lO$hAKOz*JIGxZx@;?0cF^Zq6m z4hEt`7w4~bHc4?j!^J!?C$B`)_7=D1%^jtKX=#ylQVL2It4kT85t;GlQ=r?Km_vz* zp-%j`aW**pD)k*qJ!!J&Sb>=DXw#M9yk+b-1P6fv6YdpgdIRolD-}6TRvC|EDOhcb zhuLkdrmYGN5fW2dk5c!H=fGr&r2V(|HwqkhkD6G0Wj;@HC!3}%dwP15C*|#5p{d?W z7U=P`;GA7oYh5N3Js1WA)5dQ8BZfAPjZ*iV?ldewFnuvk#*gHZqEXOS*RL3&dwX+X zE|a3{8ZDU^gO_av!zY~|7!L9j;#xcB1)B9U3B8lECPK~e0#hq`4Ziu%Y1?j(GGu-j zd|9t2qkFy6W~s?n{q(s*pC{A|Y1|x7oT3cCcg*xwa5n07#~BT;XAF!iC)V#-pi22?iP>OcD(Z?uNB?DjuCw#E`qA(ndM@bpvJXRV?YDL2S7FU zy42eWZ`IZ z?t|tzyi~QnIxk!`5OnC3fG+zbKuWfyZjROukK+#g}S zE+tK3+&?s335!*xqS3+yrgs6Fj?A0v%lE9;>^`hIy)6{*m^QPKVU8hksgXWmJC~KQ)uQoOTW&L8 z%~iq_(%Dq+q}qVySKxb^Bw>0<@H0Ot7lT0 zO-&XBnmdZ^inHgOH5XUP6E%H&_lNZxups^@EO~R)JH;?_@8IU(Ok<;Tvf1wh89|C=RLl>vRfE;lir!os&gTI$0nfXZ!xtO|m zO~b$`1~CVY2eKX*LuIrJFdkO!SA{W5SY=oVt@J}oBO?AhUnVqX*;!y^;)I6aT)*{H zFu}7Si%u_ej23JDw7oIvhF;xjMwU3JU2)y&8wO`NfdZ#c_?XI28H3+M8bkaX)6OID zzMHp|vA?15F3zI%|7le7*MCl(gRu>N;;^uFgUEMf{fPRojV7Fo1GVhi);;9Jw0UA4 z84i>TB_X7$PNdK}K`c_MOmm0`?@lq1-Xi(o*fbM8JLV^nuZ};tE?cnc2WiohvAjz< zUmPahKcv-tGpca5h9^P@mICF=m{sO0&Dc47*B>!ceuT&>&XnC?5uv^Qt2fj&tJ`d3 z_e+TcUbwPECnR*_^4UpF`MT?KKfa>juk zz`i?o61_w*{JlY@FvK%#M0<(EQp<+jO&8o=xy*|v^Spf5Tb@0I?Gn@PF~hS`z(S~x zX7HV3(PrO2E*P@JXUeA&Zkto9D<4WtJ=3g%rh*xEZHksxBq?+8!q}m96{)wsgz~L< zJgUF!HteD$_EGbCF0_p z0-k-{NLs_%@Zab={-W;_2*}{BI-P>~!R8ZJxW24i( zq=~L{kDPf@1?^4ddr!YK{`Cs~)7R#V$OU(Cb$X#B=OZVQmh z>9}CG%G8OuT|nhrQ`_!@4+X{QTRauOe4R4BG5h{nQsZ~rhy6TxA2 za6*q8ZN)jB2zLoTnb#@eT;VNCr~cV+c=*G#S}%Bwv&Z|1txE4otx+*g;!P{v}z+jMSYZhzX|xqPu?PAy}w6Z#jv z;FzkWAK%k?0=QkIF}f~bEFZFws5oR5@tCbnejl5DnJuBjgU()wI;&BsHA=~GRn5%G;bm=3)}=ParMOs zeRW*6Qr~1WG}XnS$f^-w+B|9^^!;@IW-AQG&~J)PysWbcZ@JkROJ(v)Vg1*QGWbny;e?>VR#r-fLW)k;>D=NgP5!aa^*GPp?BN1xScS+6W9^BXA$ zt#Yxx=CIVfo8i)4$E*M7A;Q5%0pqa`%s!v9sHlCL#jL-VlEbj?soUqQdR`knjr#SE z;sO{9pb|uMa)F8CoO8~rEktj>KK$LW>PrdO8#TqT15XIKmDHuU)shvKh03!2vf6MW zl!f`Zsr#(el*?|xyDBB-GS?J-1MhIDb6rR#iG#kG2}h1{ zw;EPpe=cl5K9`EBqKc85(Jtq{}rtu=G=Rsre+piWT46g!6g(0!nWB;RLk z$VEdeA#hmHp>`Z5Q2N|DVX^RZfmTCAGs{ge?Wa=FAg(%2){;d21`>KHR5a+$rgVVv zFM!?4Tcr;0-~2+Il8d?A#-7n+JAQVZ>__Aup%|w^T$pXsXl>{IUHdWFg0!D)s~6Z$ zgQ%8YkzNXdz|l<*WO2*I>cXOQKw^&nsT`}@nOL>ypwm-%Y$N5x`_yHuz*F+*ZV;=RT)8UHgEvKxnV8TfX0zMKWTt{P>N!EV0H+az~jT+U@N`UEL-Cyn@ zmm?_hEpLAn!RJ_Uynl^$p)KcGqpo+8ah@S3wF(Kg(tamV0KbC;4pYm$u6e5Pk8%%4 zP&Uj;RcpzL<`MU@POqn3XJlVfeSm4x39KX^NbN@7WfK;QMQC`oNbPwNbk9*PyDw`_ zHtaRI$Zcsq#-UiHf>{t+D#U0gal;Lthhw7qfc08xMP^FtDO+04T*C9F@kXLYj_^L} z@cr2uK04?O)vB;Bk0gYnC$M;{j-@NpJ{cz{=Th9pj1QhfT ztlW+vDZ>kr>1t4Tz{y++b9f9Rx5TJ5@~?Ko|N0`vAG)iS2rtg;Fv328mR*D*yg0&_ zJP@CnV;;D_qindI-ky&_dx&GMkD3fBK;NMX5WYNYO3HNJWeyN1p5ghOLeQtvtAB(( z@dLr6q{A)6orP*=O_P}O)$6&QyRvKrmY~|YQ7gCxLTKP)WlAHrxw@Pi&NMY&tpSqf z+8%&D1XgmIuuUkE;5)P*f7n(#rdndC2T%=kq{h-;&~UGX>iKVGX>k_pMudr zOfx%Q3V+U4o$(G&P>S8h#Do1;r`)QN$Rp?BkubH>f^cwuWL*9E^=$wRvhscRyydp+ z&)R$Tsx^(t-<9$Iqc##F0}LRkA<1_mejX{5fdH-v!*&kl=cSc9Zvgw}0B9C+Y5!%Ux%$IVgyEW8zRc-CTi zlzCRW34pMTJveE{RB!M&(VzXz9~JXDB;!BDX8)8xKdb(JfkCPZB<22ZwasB{m8)aH zl4v=Qzif9H-^bmt*^Js7%g9-?OjNRx#yR0^S<=nO$-Bw)Kq{l^c*;3%Cf<$1zH{>)L{Q^XrB; zk7s&`*jYenyo6G;N3HypWw0}MRe$o!qb$L;dS$nK#g5J8q~4o1mE6M%8Z5vRYnWs~ zRAadMW%M{Ee6suaAV0e1elT#5uhc_{8laMI46*^1i1g%-rg=O|Q{4mLXAdu6zwG|9 zOz;*CW$_IR-;i$@kevG1Gh;b`FA(@zX3T&+;pNk8YAR?}X`&?DGlp*_?l<@=ox{q-O59+0~SG8>fdwG(Fz zjQ|e|ed$E$OGU`10d*-KfqDwik4T?ZH=KwAPe2hwwSs~m0GeX~lywTq0TpBnYB&O7 zP@Sn%xGLx;(y%{^4kcu5?*lz4HGp6OhjccRC7;GLjili+iKt^jDjo=j+DuL2B14(# z(7fq`qbrC(YN#x|b_GVH} z?;+yEJO2JftMs#3R!WcC)tFfy$-baliBewA)rn*Y=S)c1NguD9u8vj-?+zR9!mSbx zH!htPG|+I@0`!iHMNP8UjoDOvxLp;&jOGh~>?-iHy&JUCa6Jud1*`5NH9lp*Rd2ZC zwargA00fO*t+WuVM%i*mkM$S2vaVtd#HFCB zc)&kY#Z}}{7DHh!{7^}N3915Y4TepIvURR)I9DNhRWz-<-DL|x#4Grueo|h$TS+Ux z{;O&X`wlD`#lBtxfzzVV1}U|Jxq}3!^$o51!Tf$;heklnWJ)GvGS*p6BnFO0KuZa$uI+Mpka zydr>~cEyU|10F-eG?(vEqeHa7cR)O0@+of(tV&nb($mXzf^HYH? zx^^lONqs=Si=QAZr2}~+5W{+}_AvGZ@9ZPpdxuH4EmfcBPtL)6`FcN^d>Kb$QzW^L zZ=#U@;7dGa_-HUi2oniE65p{TNo2$1SLgHxi`!!EX+1e01Fal#gp*(g;d@M+*ZLMZ zL%Gjoxxi#5;OdGu9LT}2Onp(TR0|Tb=P(C>F1lFl_NMIYx`ub><$}ZY)%&ss)%V7n zdoD}6>qs7s1J0QDZU}`;1D=y1teEz26VSoGGE^-_SsAa&x=$1I!?VCT9PFFHglqvK zUGbQk_8o;8?k8`|)K3S~#4zIFXK$W%51+YpuMw04pqTihd zyzraNrg!RN4~Ye*+VD8av4lR&zg53&W^4)QfWil@Rp%g-qng3SsS@3jO<=T<;o-wu z+gfl)BfxX6bO&aih2X_yvYK|`TAIp%~Su=1Ixuzm}F*g^HKPfUw>($y`YE&JlxZ~W8 zWnsP8j@n4Fu2V1mHndopY3G%807XlyKZ(U&V`z614LS+wa?WOO2Qa4*3=@#F=hSzc z`A)?5OX}0a?_e2QV=r)IVo2uk2tkoXW32sr3pCgEq5Tv3(XuX1fxV32Nw-sxR7pxb z^1c^%)+d}Nwi78!rF9m)su~TWKH%|$C-3g*i?rOZg^R`&{@~3`w1?CYn=Bn}}zl zlW{t`$|WmkIrTo{D3!+cupXa3N@RQaw34&}|Ckx^tXJX+%zN`ROLTk2z6bZ zXrnDqV81+5WyFl;&M5hmBzVKZ6a1ie0$N2wi~w z`_Li@+4|e;&28Bsdy>Y$X+87qxGO8;kQUwCgbVjKsC9C@3(+vifo+e> z|FSs#>*(7znMADj(!@90|MX7M1PFQxZA}T)1_FVOl-l4W=>J>Hm?5x3L zh6N2hy9h%;lSim4yycl_3>dk14&AJuE-X^rrelxAx_?4KGLivv*I+d>$)dXNy7}>K zA?q}%2*vZ*gP|+e8h)2hx7gu-(B9Vjx*kftbj6smnd^`jXmvXKOuZbWVCWR;ozo$8qthY>ha82wai?;m6J_l+^B5VShd+xPm@RW!kqlj z&4>R)`HVzqq&-|~+sW}Zz6^eKgqonX(`M0!FpGDnwP=@CUv8$+EITAFA%;~2k+0I- z^7^jn{QTHfyJ*VY{o$0mKf28&bN=$a_U5sef)Z?eRV;VxS)&3|L&FNv{d<-k9-m<| z@3n~Y7UV$*MgF#o0um=Pcgz*Mv_ZiV6)Ek}4Ow2COH0N9=Unc9RuYn+^-itzoP`{2 z`DGMzilXvDH|$(VNe4CSR#~6by8`{i^_a;0Al?oGDGW0L=a5u~cfh$cf$?&Vm(rYL z9MRd@80c*vpLdwZ(h4)`92Q9Gy6%Dd`%znO`-T!%+Z)lNnd~dhYEZgqljnA+zw^ z5-~J}j!2?Yiq|Z9Q!R9oCaabA@%~Dd0NdFsy?M(G#{{KJfL~bg+yG7 zmp!ou?W)xG=$;4Q9%EOwj9}Qn=g+v4^Y$>+Pi=quy%)gbS%~u;BC1*(a3{(ybk7J2 z2<$*AVMk%(#&GrdB& zYPJf)j{wdK(C<#;UVkQ;T$^cdSD6U|PGySJV)RxdB(F!ENdO7zRF2O9x z?PVL%B9aj+kmUdf@UVK-dl!~7X zDGB?K)aX^Q^^&x^iaR&kA=p(R3?!>{kvs!KpE2d&#vfNxe|f!z4H^yzgrh@Ey-NGd zG8JE7QoflPa}d8nPnI{O;2#~QR=4MAN}x>7pzAX|?|Cn%WDQutQRg4h#f{Z6lHI69 zr)PHq+b^=gSFtg0PBFn;Lr+=*WlUZsE1DHY_a$mmlljwI=%{xNa5-Yw%pvs9~dMR}YFZA$| zUW7+PKPJ`T`Ii0}h>~k(Pa#{^UuYn<3^m~_#u-o6wkMs}HM|?}^nANN8iX?{Z>~T4 z!ekvuqjT~u;K>8-nq8_btDb&_^SkC6+fU3dDi*&? zZKFixT8Xz$B(s-caOP=jy`>O()namYI;X)@*@(Wvrpg+2^!haX>>UZv6;JdAKm6qu z`Quvyn%{KAObO4LGS3nIwx!_U)kpY3qeGc?48o5MIO43i=2WTydo^g=K$M8`O|N}& zV@5*=##4>?($GQ1lDV+p_+E=-g+0&UxWu5LNpZ}3QZVgkG9SB%HDvTiN}Jkw*WRFv zxB2>h4v`KXpQlrbSdmnetbZp zfg}o=SGus^ke|v>dqfjepTu`x;KuIzWx!?Edxz8 zl0)@TYrkj6XtOd)&o*XeW6Omj_?t$b-JPxTthB@z2;QssL9tXY)u{CFIjtJV_w6ey z7fs@;cqHn-tFUH}wTD)B&Ak}nC^N}H3bA@&<7;_#USzA-h0%lunR0E9oVX zf3My_-n&kjWcM|*gx^#YO;Wj~g#4M!%0@a!n`!oO5H zyoM43Mj%s}F57XG0M0S)OLi&L$7-_hv+^2~V2nC%US>|(3PEEA*xt~kY$e9#hYZFh z0xYp$%H$8Z-NBH~k#v#~O7r|4!}6m$;rMZD$1HBGNiV( zL=#rv4UV7_waSV~T{jkr+UOt(rOM(jYExrfiMVVT0%4IPOhR;lel=EVQ>9OL% z_qNN4TF2X3ILk=K+YyvSxL*ny>L>Sl_FEpHO$F3@_Ip0y+h}%4!`N_sd_~auDPL`o z-8&9c{Lq@mP+B$Duh0pebWatQxo9%HRw(_#Q18&|G~d=Rpr4ztk)SA*M)J*)RuLfq zFMfgdyy^C`naKd_j3iRr$*uJ+tpy~ec=z|?8~PP*>AP-W>St@GP`0rM-!vZNj25OE za~>eblucTeTf5<<_=cTHfQzfGiRS4O>d|&2Q_6y(@`!q`I7a+v|y7bPx808M*Ts6eB}&T9K;?JF&a@iQ4KhLxTg z&)29ygniR%liciDCwD)Gek>UZnyFJL91At>lAxy}&cO;Pe9R;H)JCGIofBPk@+oqS z+49075to&Aq;b%VxKL*?#nyFtjY>*iHVb`{hJXtAbcSPV!F2kO*=BJwkb(Dll@Wb1 zPs6x{KO~~@(5$>3Ym3}n>Dqr^fM?o$hH$l^RpitK za+NKtIo-2+$eZJ519qjyU*i`}rjkit*LDpMxQ0{~V0U&mPbqHuiK3<2aUyS6dz}&W zp3JF@76v!)<|%9p9|c!#3y&}dQnBb0BTj7p z=sNr|VJD;EI?|JK&D$|}+I=g#xc&j@hd~vpJ6xD;p6}69&0#xU)t)5%Hs?i5CzU0d zkyd)lmE@6s21&@VC{ITIfgB&>3#pg}gr)ht7;rg3s+|%^kWWVOhfk(Jeeyl-m#mw^&4RF<69mdD!QI zk(S^w1Gry5n>+-^_965ER3SMBsf-Hp#pD0Lf&8Jb8KL~9uYo9gNYGJc*bXJ?Esvx| z^|ImALYUpe9LZ8*gDh>bDqFv1>77Xn!R?-%Ppw>hW~FR300uG7p9Zl97{^%Du?{@* zzNz=C{IZq`wsQ7xcwdd!7622U>PYVJNPjd;ZN1w*QN=IysAqi8=l83mJrVxRes+^c zGpG0C&IhWG5vZ+oB89Qz#`)I$WmmCh2&-NpkO9m(!{o^?i$h}Cw;@#z_f_ogsve-8 z{m)gsxB5VUJk(!&_`9JE=In zojB+*dHOeYvc>G{GYZ{lkRE@EZ#PeU*j!io!X}DF5>G-QkQT5jCOq*V| zACy!{FZQ-P0}cYiw9Bh6`;uc6&;8hEXVI^Ib-e>KGZZr zZ{A!8*XtG7^BF^-ZT+|NtiY{K*nuwc5v$9fRn6=h)Mj>33^Eh^((p@?Hn;F?qxaRJ z#i1J+M=5XYLpryC>EFv_%{<6?E#&@ukUGvYoWo;a8~b5B`;l=Eq*w?sTFPU)4zCY1 ztE2t<_~S8jip?%=Gp@(Jjuj4teb$zHC&2R8QoTFvyfX$d`v7}Bvdny9`0A*lVGKxT zgbYTZx^>3Gxe2Z(bN+T+bXlW7x+0in6Z_;opn3Qmnu3I$2Zwd)>liZ= zOvCY&qd>?q107%}*Ccmflv`!qas0!x3^k1I5?j{l0I80XqtW!=LLCmr5IDw`SFRIg z0`{Au1K>C6{ZQ&|z{be#gllMD^t)dvmRh^_Fn7Q+@1fw6oVv_|pcec0YfDF&TNh#KTWB&uS?j0C(>Y=%HY)y78O>NMonS`7aMi-5{ zWhKLgPr3<&m6!=$UzBKAx81e_^*CS06kC5$N#IlJQzN$vHG&dtvhP;n7af6J2m3Ix z&-jCa+Ce-(xkDnc^4KcsAhQEzML%v5tfRb&>6;>Z;9e&m#zNnFmZ$a&`af2cD8ljH z;=mMUu7YzyA~xZRitktc(g?ufN~Ia9?)02O?5kB?q`&~T%QN2_PoQ386-KbW$MMk` zu7W7>E{OANNFTv|@5AFa$!i!$?`C`LI|u?-_$T0z27snk?t>8wKRb9G_S*NCGkJi} zDKe09U4X67Cv+H~Ebnv01OR@*{U7c$B{9JAbQ&FP|JJ(ffcsN}v%5N7L0Vx5W5{3P zArahb@^kuWOsjkg60k}^yYR@UN(WYZrXX>1r&sR@&{ye^zkr`8RvrL94{}m3GRhJP z$Go-A+==)tq0zARZUW2dHJVR=6K};?GmrlL)@eK3?}b^HPnARcC82tX zXZSY$Bx&W?Y}2w`HG6ejZs=9PVTJGlqVGn>A(2r^qU}vVE#~E$8%2s36OPd-Bj27# zUyuN^@=06Wck6z+@F;f^&;*R+@i_()A)S(t6w^^Ml*j-almn(~AmppF`yz})sCtje z-|98_yjhH@*NAbPH46koyNCnA zna&AJw!_Qmq8nJN1bM3kPEQynnZL>u1g({9@EagX=eBEw{^=@+Fj6Mjjkwvgo_cx)%h(mMusj@9ldBegn z!LeUbPqC)MzZ42YWvHYuJ7|HkCK$22V~9`wFzIq{doJh-N9sO|;{J$+W&Z2dYDjP+ zSKfOx+}`8Jn%5SAS8mqEvQe*h9PvFNt%m)RGKk&_Wl_ zhsa`EYuRS?)yBYkKh#Lu$tpEtuwyw2L3zHJWT`aT8rbbhW-%+W@f2T5`2>XWlnHyA zIH!BupKf=-*NdAt-x>LXAeKthkm`DMdegp_VSlLSPlDKex=#s4sy1YI=v|8l1l?R7 z^@lLMP>XOPH)61P?Ltu=m3RV@i%`>j=^MdbK~Y1>7zr4k`~b{sA)y>0>PA; z?ppN*l#d><!`ij-zWxWKdxGTc7n2^TU*B;2ozW2aV|aY!rkYZ2k{z^UsPk9}}S z$ZFU_G^yHRKdOV|ZXtl-pQ94a{jmMGK!L0Y|8z;}(q1i>LDQ zu_8ikt}TcU=I`a-fqC4GNf zhF10-oxn?P?G_RR{46|ljmZ|S*C-r|Yl6g^8RPnsz;rA7NLu!zv8FdH@j3GJ0WCH_ z+GE{3L3-fh^$12nY=!j^t6G$b!ZZ?7%K78lDtwojJH<)#s=A=DWBCSqg@3_b z{i@WX6WZ_>W%s{rCIvSX1vlX9uHt(w826BKYe> zXLE0F3&{5DJ!?a&WpKVN_(hQbeyQ&0k5l!g9AraCw*SWl-5+24i9}qE5$ZQ|jUy{oRkMzch$YvH9mT)h+ zMOncP{W1D%$P$xc`mr%<+!;B>E`{_Q8Ta7Kq;iY%s<&pqSNT+r!vPhIQDb93hR z9b|I(m*Y=0N6J6;zbtFn5kNb0Ij^Y+K;;XyMzgQzJ3cM_*za6+NztR5rf2FX;oAo6 zkE2Cu1C7?Vk2kBTV;!W#9y`lDN|CWcS>By*;%TiG4l-Dt(igsOfR0_H)P`ikx2=PY zAe$z@U-^m~xz&?GOc~@vXJ{`M;x_TLvzG=wk|NSuzot6U+}fuVVQFTu(Dm7X{L8|d zAIh1Lk}Jc@UbhBd>5%G%keE@GvH6E(12tU$HLb_j{)kkyrrY!8lUhtg!>i-?(odS*F`2(vl0 zTuF`=AyrP}{7Wf~yiBglswj)pk#BtX4iE1hd>ro#dB+y%XUfAr)Y`oog_z8Bi8hX0a>nwLcIg+DoTU3@##0GOOjZc1|&{{Se~?uo@)2a42JOo3;$ z9}q;CH#E}KN^;42mSQO1@;}9)UM(hz^hzXZ8nUD{g})20vSWp&*b>(wrSJE)fCN2V zj?dp)g%j(QDlPY-SS{$yoO_F73O`SiuPkOXOf{&km=)iH2X*ABGOO5UGbV%L?7I8` z|K2sHc3=z7nT3wOO=8&r=&wR=t^o_jRI@t9Upq@8&^>FhJaS5ixu3&&)qpt@k#dQO zA)Pv$kHySHkvERw14~jjSF+W^$RnrIyvu-iQWd>H9dcE_Y$lz zz8BlQ2EY;hoO@(k{%e-c1}UyC^>>yYyWe}@Nqkf+YKsb>VTaj?+ZkGg)t~*(h&GSLmO$!LAWTTfDwrrxlRC`GSvgvbTlF|%33(Gf zHlh693y{>0+*$b+Y@8;Ue$#-IS%E+PDFsCVKlsCc1%EBkXpx{pXQ>#MSf$)|N^3;f@*-Pej{EUVfs^o35CZ!;HI8N4g2 zE_uUFXRI6DpQs)wdS7v3-8sR^U{lw+pP-9{J*EftH|eIZxjDWY|JZVW`MF4!(PWLN zU+YsLu)=;NkId9x!pU}UYI-B>hB9PJ6CfWxj=3n>R=52|RX|uflqqXE3&M(wl?nbT z-eC0Ps>;`%Xk#D7aT6ecesW7Piv)nnzWm^>e)-P^*7=oqW<8N9%|V9w$q(pSizY;z7V4uODRZ_upeO)P zgkv7=_gMDXU!xzq-21xA|34Zh!f7W>PC4SR*=xD|&JL-a0yM9VM#?n)I z90xhff$_3W8nCPrn41vsiF8@ujsZxAtaT5;cLF8XVU$@M=rCUg_|BKKU7 zljjn1nOJYL^hcRf-CTAu>5iVG3ZhfY^qB$F@NlB$3$nl>lA}2$Ec2(-@pjf9urq=) z&EVEjRF5CwlOoJBi!l3VVP?EP3_AXU9Aj@&d(!>x4!U5`^waY=wgH7Z&WvDf8S2lD z>g-f$GL_%WSU6VHD_1;@EI5=kiu%H^ZmA(|yfWd*e z+!N>Mx(-{gwE50w4|0!0Wsm=|nEm713=v?=xgYad_QRduZBt>tTiJf|mJ#$#sg~6C z9rFa?$mhPCFpsNTb_C?S4dgkeYi4YZk#k8Qn1AohfAHk~{q}7$@*|jhrc#s2^xrg} z+x&fETc3Wy5B<*ru%!7&_e6LXLWndc%0FfeX;k&`(84;Tyz865h=NJ3(8@!k`Q-$y z3Ynlbv^;s9XaY0NJm4xio~Qi-3lHco21c2@|319G9IX)iQ(%PSVwbD_h>iU_s88Z= zM1cRl%xIo`cpisK`3>+&`Ras-{Sr=&)Hvob$0c9uALpwtq?%sJ z9-j|f8qi|$QyVlW+W+xh`|E2VT{v#78!B4)zuvR|g?K3x0&)6K{xo&}*-!YVA4Smq zMjW(Eb@AUgWMYZbWd|0<4e2L;gOU8;@gJOlf6#TzTdy5FKk)SnLoi6!zhMOixJwLL z%F_S!jQ@B#jV6$e$M%2J@q{`d9%m;oqqQN#TCTX5W;Iwe+Xq{^K_N{6Hf-u*46j8UEV#=S3ltad&6w9(i%`0X;lF=W)pA`3IRZG0)h}t0Et3zeFH3&@Wuh^ zFsC=3xy9}BP}zC)oqw*VKRVr%)}VM!ShVx$g(R6HSpAx@eo`y@=n8h|c4G!{V?a|O zNxT9!BQwD7vIF0J0ft|5P+%?vA`m5$=Mu;%#?D`0B|Hb8s&b&Fiufd|vDo;OYQk=` z{OEFW$9t7`e=tGG*88J)Z&)hFIJ6k9^Wq+33N7e%p6x^ zK>oO=CpA1%q}QQ#eRa77ne8_o;{wU29F?*5OQuW$_VPZ!zVt)o)@ivTO>4hg(OeW@ zNh<-KkuP%GOSrrsY&)1iZ=00Qp%B6o4};Fg^wSCeKsf?}NWs7)6m|sCKZHJNMdv@b z0ga^|AEf_5mFa>y(`Nz9uBF<3#{yJ-^1eZcKv4V`1DX&HM=zwzum}e-T!DIcF2Jqp zc$0WW3$5~>ZEeR>d z@{6N?VF+dDT4`HrykrL1Ewe)+ViHywwGKroR?R4OAdzMqh+`V#TX*ZVVy&kEX;OIA z4UhuOfe{34i?VnJQZxWq%eNjA5Zo#NRI)wQahZ@8h-fXQ5LFVC4#-L%`Kxejf;bA&fFtck2vU$t z5Cbo$@q2#>l#UDCzh~H=Y7VM;Wsvc#>4%YtXyg?X_Epy2u?afclvGp*CL3C{uFsT# zVDc5;2|~u?RQ(C^s)B^+2B`Bv~N|q zRb_&Zi6bCm!DCTr!bp??{j$#d;$*KJY>#6<73^`|#a40Cx^Tv{#DDk#bC5Hf`)(|D z;z&QaYker6p}qoZr@GUn)`q2bJKD{WunqP;9`+4fw|d>4+rxTUWaaxb%pEr6B0tw* zE|Vo+-!G;mZgQW3;(^x&hb9aeyU8<5HEQ7#a58aFUKgbzoGLbU9X_c@kW^n*%fn1F__NSFqaI*LsKe>+A3) z7FsD*rd*wL2qGHc{LbhbLz=Qn+&|ueQAK&fW2SzdTfKD@q z60GnE`_V!jQ&&$Uau+L19cqZuXKi;oJjt@2yRy0-Bs$Fo&`ZH=gE7*IK_0^Nh5f|z z8J1juJpl%T4oM?KRLeI!3nh@DARB>rY&SzfuWG@T!EQhtA3+jd`2LgMY({{R4*3p0 z@W~BwVvulIq3!VyF*2~LH)goDbj@VT5=0f|ZL(Tk}{YdtVB?U(_-CZ#OfaV&cj z%EOgVf&T4O7klGZ>yCODDJcW#f&9C}-s=z9%gJXpqqVt~*aM zoXCyfLl|nDFNe#CZh!ofww3p{IjrYjrTG(&W-CaWFZcWl?+5IX&uc?ZQ>Wdk>aN{f zO}}RT%RLk`yw6khU{ax`N0Al(jFNO;lnFrqiB>RIQ3`&!<^`J8n)k_>(C2h3IJfDIT(F3Hdw9TXTbdQE*EYO{8{|i{k{3Q z;$OaqBm+b4+TPcxKRug&zFh(#iK7P-%L0qQT8#4T(e@NCmkE|+IM4b$=hLM)@8A4D zL<|po7Jm4F7Qr<#-|Bi$PzpueQJT{vtzfvlCH(@X z$hBs%18%OAxh%`PG$hXkO7S>TQ0H*3iY$uApwBE?Y^*2l+iw&S1!oot1ZhrxK61#ud*AV zv>($6CpTnFJxPB)_V)3B(HkY@(iI#2tvz|N3X|s_$2jrb^>7-}jBW7xi@w_P*Y#ZX z9-yr|X9i{tr&eaQ(|uKb(>j%9hp+2??9Iat(vlYZU)^+dOW4?dDU9h=^EzP#$wcXl zL~(=_pZGi=l0QD*wn^Pvl^s&YupR za5Ve%uk*`y#f_+RVt7K$yr`SYLEPX^T|-8}bngduPmdaj$wGZnxw3ZDILnV|Tb08{ z>YYr(SR-vE;=pT=zYb8%NxmbP>R2ycV$iZ421v~WnsR+qCPBkP&%nF{D~&A>yok(5 zeKpUPsbu+aVH4n;FwJ$I@mbL=thZUq++TeJL!AU;Y<)P}RG$2}w2pUQqsD3H)5xmROWofTOw8Kg%Ad#R3(8PJeo{ z70~`ICmqUB6A)4_-#M+SR9Ng^Hg+Ql_~V^i2+Uv%KihNU`}hsK%6L|mWD)d%?dau~ zm5CV*0{Y#d&+MBKqRZzlYTqz0zm;#~zu2@fqwmiy#Famv%CA>8jU&zj z$7J(x1Cj3Fz0=yj3Md{_`<=#phljs=Gkc=X^PZ3PdSNsIb&%cGxG&Fvepmp;W7-Hh zs>i6I5j}I%<1OMnO&|c=(V(YhVa<>{%#RjFgdVM7a~Ra{ApMgM@$RfK_+;uyqx*dE_gU#BXF{gowt~ z$Ji$W1B5MR#F{*a&=@vG(joAJmXTHupu72X+8Pk74`I7(Jg^n*3W(>H5WQrRyJ-mik|b7A6bd*v(&5q%PPf z$qI5Q{w`X~zFa4+hN=C$QZt@Puk()GR0)_`M(%%Y{EFql-P+Q0$K)6P6t{RgS?2Kobn%h#eDY%mj z&@3@fXBI}C5p{-5y9?&?Ld5I4(y{Pa<}q%B)(O2%>#&l2!>fquwWxRxk>&1lI78aw z4KOG>1&4TZSRpJ_QW;kOMzgSf`-irTA=)rVcZg0URK|OmO1)b-|FIn%a&ax1`l zOH_3Pn%=4a2E}U; zRIN{!alme?qZ?^x54YnR|Dk}*AS5;v>V@a&IPYlmDoQZkEc2w5$yR>d|5I-Gm?b3F zlU@tA3v?M>uw9}5*xgM+#%&I|s}Fq+QI#3fEpRjDj6xS0DqXQ`R39LtW6ZH+`iS5H zucTP@ZZm4I=6gB*4NU(qm7NntReIbdP*$qE*nFM!>%xT4s~@mBkpu`2nNsaBcF8)jW4Msx5J~WYJy}crOMPs)nJbwf`LMR9mM3d`Yy27iqm8(eklR3 zz0MP*me8wbg78B!SO7hXY$2qa_#!MntRi?OoGeP}y#eFM^B2kMTx$<{Rxw0a;CMZ8 zh%^f~2i{9Mpmng?2FyvJ>Ff3o*e_PA^b%yhlbJ=PK>(x)a*gGNZ_j)xk*4jZ8B+|d zSNAY@UnhxxB<@YMJLP08U^s#`seP~C3VS#2OmD<=s1Bix{S&?u_cTMBJh+=moOLRf{KXtybE z255f>2nf=J#l?h0xJ@iB3@>i>HYVap)Na~Ne#xDrsZB$Bj_4_u6-Sq=&F!8P=NZE7 zi~h^)Q*<%JA!dp8F#sD|?o&Aj^M0>w(~V1iaSnJ(jZro6^B8ctg5seZ7`P4VYGzug@ltELT1K4b1FGb8nrPx!=syAuFw10sP0T+iZX zo=B7JM1Tbx(Mka5gv za#R!)eO$%v2-5mCg^%oRQ3!F|5rX^W7v_D~n~m?V7f-{m3PrVx-lJu~6z=pz&>p9^ z)rt7>v)C9$)gF!OTh z?6)u^5|w5=weXvmDx1dCweJt6c+R(PIlf}#naq;q&A{thW6>6>9sf?7&3?uFz{tqS zaq}bi0IuHrO7%22E9^$Muri_QVWWT)7jm zw-^5fI+PU37yoc5Z((|jD7uhGDGNsj{1jEj?2SH0^Hw2=P(-Cg3$=IXiO>qca=rF5 z^Mrro@vAR5rZmrc)W4mJj=}%pTs-gLc{thxGkO9Y1-y0D$aen0Gvf8jxl;sMZGLJ5!Dypj-O$kYJuKm{v~I+6#{KHR|I7Cq#leM1 zga3y=`k#IjfDH#g$NsvP#CMMiRWMr6gP-$`TdmXlxV!CNVfYAvN5nHEyu(M%1MkZ_ zR(;f8J|jYKjwoWjFg*xE^QXq57yWdF@caLdz4riWdfWd+ArwQ?08&De5GiWty-G)< zC|CeNY5?h7dhZehM3Jrn0t(WL^bSFq(mP1+h$u+YyW-yaoW0NgxZip2|L)wmckYbi zL}z47@>^?t*QYY!zLGEh<|~Qag_G0?SNzSAlZA9Zuj4HZz>0rc5~^qV!v4?#v|I?- zs1aP~Oq(P?z&iU>S?A~ZUr>W3B%$zkKXMj4lEyM{N;TG)#?KQDY`#YiP)99jD{;mXk-oBI^I^G@5GMpn}2wzKeh^xF-|vc9r`s{5AkNz)?NHzT+D zW3sxw-J0+5zwksG?e%oEzsOlZg}!8a!SMYl-tqLLpoa~7F}xQcj@iAwDI#`{Kw(uU zm|kxtLOr-I;~soU#J}APe*PttE-;rWfKxM-3ls`H9WS@(0_4I1i1UpD091JE7AOf6 zu;`{2_xVaKRZkB09m2d+xds2#_!vu>ZO?WDW{= zO1$^&lR)TO8OQ*BzFWt9c16sIrvRih^IipYChQ_2w?P{q!hPB^N63D1RH)8rUO5S% zty18+-d}8{V)g!cAP$WUBhkgxpe%_QP@5TnxVod7Ao9k%M(0n@xu9_l4Q|51-W690 z4GS7LHK^+3*amWhQVyU@ijJUIpsqub3 z>pbZf-972++IuW2TYI0$%gQs@a>M$KYM%kvJv|3EdEhWy)P zeTl+02~vkEnM=&?-{^~a0>!&aT|8gI!*iDn0cv~(E_5%}`yozzvG`DOD;5a#l|k?j z8&J=`)~BB?w|R;I*IHa6+O&qwUAHG?z%F9IApg1L%w^ldNOv31v$O#2@s92`;L5+m zR6BBiYw`jZjuRhqX*C}|+@Dk9twZ-7fX}7ph-~|ee}j^?Kg5^EnMDO(jNV!*{J*U1 ze{5c?Fo+fskJqT)z-w>gg6@@=n3$(CLX2gAwJEv3dFO&ry$>tuGgENeG5|7D+FYQi zP-va*m+!ZU+GAu6uTW7__v`})ND?KrW!`MWI}dz?CfgM7v&r&l#X8A+9lW8u@*PZ%3nA2+ zd{2Y1(*P9(NQ$Mp5lp|rHV!<4?`l1FCxbe`pu+(Z^!t8biKJp>m3ck`8zEzmA$n2R zKx_3u{%ip@l2bm8_SU=-F*(fh$nFEO90;JNsQlF~Tebp#KvMJC0P@9}n$WxAEfqV6s(YUL8Jv!ojUSICw-9Yf<0 z0oxV;mbl??xHBl@O0Mz-aWB~?y=jsuJsM(kj8U4>UvDC(Ga6ua0|Ns+2OeiYO@uP& zufAUeFy)>jV<5r|@o)peBvOYST z{}GAxCM23Q&fQ`9%TE256EIK~stA+JGHq z+Tn9vD+uJ0shn6tqp1%dBct)Aa45tP%Jl@CA4p*DAEG-c(pq<3Gy|7AjE+aVG&7_(hqIcHZgBO{9TWv#m-z?m1bM{ z#apizdb>lB!A~w=_H_UgN;tb|hZ(mmFA`jnC)JyOPUpOY{O#kj#|#_4jTjZN3*#sB7L z1QQJd{Q!e@F;;KxB=6*}UWl zs^KC0;s`_&`X$?hJ5_$L^jr`b42oStQM4EYI_P@>rgbEZAfBEt zsSAWc@-HJV(Jz~juZYrq#ziBRa>bDIppHR%^GO&zCcwks_00?MZlT35F6)Mz1Lb#} z@8ym0S>*Zivk|sPMnFnwl6j=U$XGmP0}bZNg=cY*rRYaZdvJK~G~w*v;LUhAahG-k z3@G068b!{Ed=R4x%(sd-`_?^Ar!c{3zFqa?@N1n+*8yo`?m?8u(AHo`MW&U5=Xhsf zblQ>o)i)&N3s?3iSI3^`6#KN#NH6WhR(e};6t^^i1a|^#-HPKg@!cYeUY7pu5f6>6 z%NZ{BvcGIG7s{hEED9`Ct=HswUPpg8;L=}?S5FJ?dY395?)I>ASX{Z=eZHMNS4$RC z5tnUhlkM~MR>_0(VhMkXs||jqZYpwT3cHpr4qS`D9)8tpm-bs5Jf9Z4JCjcxVg6N# z?k-xun)~QD6@3nL#+4?m(hlgAQww=iW*6s&g!Y@*0w{$A0B{%A49|*G7lnLd$>P0 zf2P_?Ec)1*Aw@f6a(4r+5Js-$gcw2@n>AGeD(<4}0u2$MUnl|_quPwomU!!M)cgWu9@`dL{sdJ+dNbk3D!yrvh9)G=IF;J-RXfF!qBcQKn2l7iGsnN|FRfW)%f2`S1;`W9B{G&9w$Y9)ua zxfzf0*1wOh2sXrYAKE9hwzYQd=~s5GG3S|YH`Vq3zLshAmkODN#X0USCpuS)bLr+>&xNQ^Pu@aV!LUL8w>C4X$oN{xC>e^~B@AAFq z(cU?5tw!dE)W45p=>x6xt(b!z{pZJxptaE1{BTL?bPC#-kz$`{bO*^;2>|b<8W056 zX`3w$6aYQ#oZY**CsDSBgwy_5i7=1jX5f8{zA?&57)Q?-p6~TJv5)^+izkFJ_LF_n z5q03c7T^RhZGx?n3KD&DCqV(9Qd3iHMVRDd!)_3Z80l>>0kwmmJ#4glVO_Kgu6ojR z#GI04+;IYsqU0X4geUH-eG$Gtv`49ad65K{k_g2oAe*e(@5HMLh}pZ@Lulk|!d+A}29T!BDqm8L6;Nr@2R+*^tT-2NWT`(&? zM}@uosuCToHur6kdvl7b1G(e`&CaYb>0f20In980>$Wbo4~@MwnbTK%XKp%dX~w%`hdTUkL{IZR#sM`y5Znj4;;&&e4D!@ z0`bL*xa4W<7$KusL}`&h7&)j?>T5#2#fkDvc>d5v*aci(wOOP!(bk#q-LvI8-t~|uQe-s&o|1?b zR(o*d)*#uWImwC9Cc44ycqH<^;CSadBb}?EA*B6zCcK_Y&6W>ZAJ1JgmggLEKXRa{ zn&=aXr6r&VP9yN`kQBY&V2brb1L)b}KB4v1%m^zs+&N@Wm9CYY1t025u2XYjquK2f7aUVj7kS8G}EiH`lZZ@?AE)L9z5j z7Q#acV~zU|<<6{VtShGS6U2^t1oDI4bZa%r-nRkq&qR9l zShk?X2qnA0UZqBDcvKhGQNEpOjrC3-krnh6;LyrD3Byjzdjp2p1?;$w%u#QVQS?z$ zw=MGAq)I%rZcyso(cSpUfu}#50+ZoCT^1PXj#@#!=P4;-6+i})&1AA<(yUx2bQ~2# zu0usq6Fe|V-l$QeAbC=&Zq}LmsaP(B3Vzz-CPB*pX;hwxC8^VB3La*@>D*oh>@6i2 zY|&=H+$B%m1UwPWuZz381V11}C68r`UN7T&d5?j?N55E5cF=_;^s-W&xQ5GjMFu88 zhZd=-V>cb7c}y!*LWnE0e0aYFd0Sb-bW4ufCIMzq*|Rp2Bn+JCq03-6b!di|eT|Z6l2r#@HG`A9RO9+H&j>$NM=qzIo^^7p@0qIIa>>zZzz4Vi^($*C%lSe?8Trr z9E7vrQfFxV2GeGSsxY&KWg=LNTt6sTY+%0x#bQwR27_C5jVT`#v*p1-*X_=Z`}284 zqbBl`z*zD?=0Np(pCDb+b>1o4MU7{6Xr5gk(3ks#DmwBS&{U#??G>#;9e4} z`vXf!|NF~m#mvH@u08T+5HefMTN}fV*UWNqhjOP~M=WVxyIBSt2*UVz*Y70^dR9NY zsredZQ)rZub57G2Ouq{0xaR`e7|+3O-Rxg`PtPEJF=}HbS=j7LTC7EhJEyv%o-D6^ z!Yh|l$O~x2kqt9!FD`RA@!3y`37)TYNdce= zXjXf-e~ygE*m8-=@X0Tsj|T*Sxs(A2KY3$C>4}gK!uYDFHl4itD1po(t{RQ?W?Wyg zvTPefNFX$vg3%(MJ8qE>K|7p!+qjr9;{vU9@$AFHO4#l2Gv^8(HWwtvLs330@94+0 zVfRfWqb2G9Cm%4u1BbuWJvOX%eMOn4^@BEQ2dk{y&fBU_sCYLud>1i3M~@azu=N8| zsk%R+pt*#4tOb_uBt<(>{ONQtgIf$jLV-RYF(3dB&k1e@VH^#)BTP!b%sDQX&7WVM zcPq~#L=UZQ_Tk)|Fr=BNfQ)73GO7gOp^z9R>jT6u$?I$bbZih*eiO5Si8-kWp<6I_ zAVX@c5(`4JqrkfEUUGTvOvSnbbf1i_TG5DRPD6H8F3qGzlT5L@<-)v9^wWh$odQK; zjckIv0K=Umb>_V@iNJGTJIncXy<=^XgCoAutV7Jrw@*7K=)`)_Kh?flwLkyn(`GU! zy4!tXry!pi1KHhp?u$cME9`rQDTKnK*~@5Ny$W~TRSO$mkLuOgkw`mVO=M;y^x0dJ zPX#GCIG~De*TfFlt+uS-Q8b9C#`1*nMMbM7UQQ8puunZ}JZ4K|4V{<%0IDPAPX|iW zyq!M$y51vvNj=!u43Nn_1GRNG@6;>xJrf^tU8;LQ{;s8GWv*DyIq7J zWqdgMDS$#oyv?ZlWb`;>pL-+DgxXHY4~Lq8J!8JW9n+%^F2ZjQey|-7{b$cnR7=ks zy$dz;W(1ilzDz&u{3d&xqLgUEjHAK%ubhdec>AZt zn=o<9I7I&!zr+**AVq?cp0^l(Co(7$NM4idNpsmEo+)l2kmRrNjV3SM9L*GISG5-R z(Y1-ON!ylxP;5p$sn<5m0|y{D0)g6l`U1~j;~YNZFJRH1QRcuRN&u6Kl-Y_+{?0T_ z&VLz_`7_gWzxDqzP5&Nw`@c-nAF~^dN&7#RY5L!XUCO~TNGwC{-Z>k9+^sJj`6d1c zBO%PViihh??|ydK$a#7>`hCS5X9F;BLFLouWKgQAswECHGOupG zNhW6$QJPZ4P3gpVws}ClD-`^RS6;2I~fSq}?Oux>{ZLGpBWn;Qd-=aGa0X#3{D?SdVh$J*q zqt+X~%|&UKTi=R|j(!5%>sWw&T>ybRA{q{pZ?!no6Ip@vH`R4xREt6A9xH(8YfK;s zxZI-mC*7VII)RI`a#}F98NYQ2*FD=f!#V^1Ysu%mf)%r`(cSXv(WzHV9u$5huyBG{ zN{pmae~jQZ@Yi?R>$2=hWpP>f*4nt0#7(ewFU0rEsarqn9@Y3Oe-vZuC%oldVngy9k6TI}gAluJ;*e;*;HFfy8$K;L3epHJfYB zY}3@*@VuRcxHEdFeDnoMeToBM%UJ~efdpV);AN`B*c~Ed@e^a9zdRRWW#8hE{#u^{ z=hd;&96%@VQk^@;+h8Sf4+zh?gS-wtF9y$5f}&olsp@ia1|jTEwg>o1g4d#E-hmjd z^O2E}OGjNiHQf=BrMDbgzf$TxZ%`A|paUsZiq{EgR|^}yd&y0}!eW@j*?@NJ3E(M{ z=8xOHpByb_fl4kmfmVVDXx+`(+NES03>2n*7M*%c`s-uLYEW=bE&eftx_gmTsLXok zD$Xi0K-ZeUt)FE-RV@HQf>wcazk6$>Td}wKevy{lR-m-C~LzV8_ zjHZM0$u4YGDmla+_1BMMvE8w2*KR+Zg4euMeZukiE5-PdfAQioZh@WMNM-u_0;BGh zEAieR=C;%wj*W(%;Yoo>5-#qXwJ}!O0c`~I)l&>Tzq~z2))Fk7uM5^t0lcYadK6&f z-r1Hl)yDjg-t89b$!419DL7gx0MC-)fMV(djgw>0zJJC_dM#NHPkPijy>!4Y+gUlZDI8NmBAiGG_Hye89DwZ7~0Y>PKZ z)m!v1lqO-R0+zdzkWUSqBPo3;ffwvWD%fWr?!-2kac)Z8g~B$&uI_j#X+>izrsd^* z@X_NhU_De58J9gtO+^8w_N9|)fEv-XIV{LU;?7y6^bez)q>Udubi_ISc_>rXv9bN3 z1^Aayhl_zQ1H=j|4*-|aWixYR5Xb8L zm1{w@ngxQch+t_*LNd(cjk?*WhChJAJRb%tah6nr3NDp+%5@FAtq+;uod#j70kXIG zdRyq1G7M!rDuZkpOTkM`PQC~tmqZg@KDl^HAcsxO z3p`LuhHnh(?!?mQH29qae0N*8gqOKgxTo^uw2uCG!KANy`h7sJEq_nbwvp!+f8?v^ zC9-0LdbZ;pQzgByX_&0K;fT8$;Nhf2mc3G_fox_R&(h;6{RhvIqD3{dDXpe`sT{dKFG7134Se(viUZOO#R8 zi4%t~*`E*5hhne^K>-o~t%}zoa{|5Q1tpFj+vR z@{6Rw>~qwUOi|*LK>83Pd)@>1<+_*gt?!b1UoQ)k72#K$^8ax%@(-d!6uq1A1C}xa z@-+qRBZ`Y&hDmeP6A(m{!D`=(*9Bszle(hlctyo*Z};;vV2uF}?h%vk+cRlQXh zEwg)s&EK|AHBe8rZE&l}pDw<$$1-{8q;F;W+a!*BBg2tz|Bt-L5Jg6r#2NG&6HTUz zW_7Q4rv(Hs)iurK-RjbF+cb{7cl$F>hpIRDt6y+-LEqU;B)s2ml$)BID>-r) zbAGnP9T}hV?7r_Fjf{=bx;Mc#B%*Y5a9$0sy|&(c+Yq_sMP{3f3%_uR4Pd@JNegC{ zwDs$NF%UV0DE$WdRGxx(y{X#EFqrSPn_WJ(Sh<+i-^by&*iG{#EdvH4FQtR!qaCM78q_T#|9~4FlF#9fm87UT+SCb17-`NJ}%e@Gg zEy4O0QrI$U!3xH{#N->InUFT!@9@Izx`NRI^Nq}eG3ZoDtP`r8-054K3X9V|iCK8A z)8Z4I!;{L@YY_uC&Ek0ODmrB6anq#S;_e(OXb>6RGPuN@Z3Rq|ADET9!Wu-eQFo0V zXHoH_+~y1hgu6@?9rxCgiT;?_)u(2mv}%+y|GHp?LiEA5$=S;R^n z9DNbLtv1O>>Ci{Q#LTBNpBC&n_!JK_^JzLDH^r##3kE|zzZ6gfcMFi7k((wo?(X5b z8z6fC8FcNixIoCnK1+(fL&x|^>P=2s)$RxHTi{&qb`Tf%=eh7NXMtm~>>$AIh2j<; z1Z)Zlm=zaMAZVUhb|;$9PD>-%+1t>cGj2Qd$`13DSQqo1ela3=y^FTu1CG_Ew2Zq& z6gMEKY{Ps9eNXP5lCQA??fcvlXcKi3wrE)~S{cpN(#wE9VU6}c=+o zq5B8X5JSVYMu1eH^Cbbm@^EMX=KIY8192TmSXk31Fd~ZnMl|Hn!!1_G5=Cr=)o~Pq zCy1Awvis;a>vN5AV&d{+pHMLxW!F;y_revQxM~^cXz@BeW&h$|9{(ZxGXI&5vXl>+ zx4&0wUp#*^){w%xQ;<$({!4?ti|^i4(uC}mQdCV2o|H2>%%alb75$xYXk)o`n>Fnl zwNG}#w$FOS*C$=)ZarkPOzSi12PacL@{4r>8w~jBh-G?uu{Z zirP=!GeBM+ehwXRC7oYFm|pOi%}T%zBV zz-_aJVw2qOSK}3qn%9M?0D|DFGZ<}bO8f!3>nDmD#1D&oa2SOpG_170%M%+us7;?# zk#Hi=YK|Jtw8*$MF)V?vR}11}_F>*v5K#e zPt0NK?dLyWjV68Ml2)Tq`g8oY(pviTNha9yhV?$4@8=aa(P&0w9$d|JlvX0hkSbfVl}zSE0xj{oR2OGMURYO1MNtd3`NH;edMe|>P)G9HwToG5H8PnMCHCa9gltRZ z%sr1Ju8qXKQ+;B-`PJscE$_XbY7VN8KHj+=fg9% zLxke%Bu#?4AYNl7>S-=}>!~+1ms96mdw~RoQ)4+5o#tXNU%i}8{s!)&E8@VDw;Q}d zoQ%4$@BU>)+uF(K>hdDW%^R!zLBw6!>DtBb>D0F5L0yWy42_P#0WCmA$gJ)Hv*zD7 zOK(q|sj$=EHB``W8x_=N$2T6s95#rH_RiK39^ESg#dGcv)oq7Q*D@tG)>y#( z6a~XV0ee(87xcwM8PA5EWtutdfJq)k-DK3cd5dbe3udb2{ecusq9D{J&rLgNGC^YE z2CDqlxHevkM>d*D=4Y7@P$1~Z*0Ed7rq$+8G2{klPwu&fqw5V06)f7RPB7Y+l4h`re+cQ zm0&g2I2Gf-lUEPECR=c?IjkKrHrG91RQ_@cF-`cGWsrH8;T_-*^UnPP)=$d2ZJ`AP zdwUITZR~c9{MWT+MEwr8PyD&a0+~@PyLM@#LpFohFkR4{fe3+y#zjOSDAn;mor} zDk!z&ICMecqgdFVv6*H%_iJP;js}v6BFF=A5{p`?oLQi$rb~tQ{mT&W=RZO*z?0A@ zwv)?trSWuN+e495`Ig@~w|!EYJ#2T9YI1Q(!D;e4%QdkOk%7C_OfG?+YHe{gk&vQM zqcDhLu|Fa7&nW0$UpFg*w>SE}9PShr{8GA=8rz-$|$GYp; z^WkqD`Kf8Ei^X}$pIzpJYUZ4MNgLZ1HChI^ATE`}dCe)CM23^w-D1N~XXW@>p3;Cw)b*#7nZ_!k#M<0*h^_z1Bj{ALRgBZ~d0x{UW` zC1eAiE80hj!xh}K6fCi{fBAQR{gJgmd*988G$r}ngn{>O6#xHwn=l;kds5VXd8PQ* z?`xI~pnBIJzee@`$^t2p1V+#WC=`E>e&ns2A8r!f_L|vF%#9ix{{O|wLbmevo|?c~ z!VG!5C5ZKoPZ{F-@>$&=&(j$li8G~O zBG_Y9j1M+NFoN{ z#u77)qs0?apo zf>8tu03#%zGEc8ou!uRz0`npg5XcExS?9+p9iH9HyR8AN85~YdPFocwm!&*EqxCB7 z)AaKDdV3Sf%7i>WHJzG@+6UunJaC+Lfr;v7&c-E>q8taXF*$8*?FA5f89yI$S>|~? zuHij<3beF$RoG3S_qV15%-YGV0PHNgyezc>F1?~=oNEmTrvG`x1gIph%s; zE>NTVOYSU3ET><8pE&RS1Jmpj!W?8RcDR_QVRYgPqBa&^gtI&XdQw&JMizkpFrl?o z(OnP((-fc#Ye#+BeK4LPK;67<&UYC=&;3j>`|&gYm>KfrtpxJi^&W4NwZT`~IhxG7 zE`AL(9On!#?H`3p{mm|PrBUJ$GJNyQdU)ieN z)f^xUnP#+qEBCd{VKFmC#+i502xMC+tEavRLKei}>>(V<)9g{S+>eMU7!tSB0g7A& zOa(o2mqSb=UcvOco?NngxJ!4mzx^~`Q=&5h3;2qJe>x=M01AE}IkmnGe6;aEHe(=S zKgk6wHSu6}yb6K_;Mt83=xaeD zvCbUUtc7QCa-iyU-=4@WBRt%PwdZXfI}Rp+|{YEhiL#~VgfxkVW*j` z$A5esF`DX8fQGLGpe%COfOWzA_3Cgz!K>MVMy2)`I*s72p{e6>`h%S-@JiEEaX+O7 zn*IW1$=&@3c4U@&=5+ttt7bW2_61$_lEKd=qgdQ6y&nI#RVU3kisw4zHd1x17JSo0 z4^P7^DLq6RP3AzhNgTNP954?9WuKV=oik}82!-cg)(`pw!gaZTDWKlTIzTPBaK_mJ zaa6~5rYICx*!1~ID1SLWvEuXMK4)BX$|6VzdzK1(S<2`)z|TNwXwqhop-5t;hd~Yf z3kp8U((=3G0G^PdE32}%eqQ&KcPkN{fw7|Qr2+c;16VB3(%wfft^=6%F);Ob(FB;( zVY(Lqpr1GpM}yhrBmTlT)(m31vO1}hi5-E|SmUa`qNg8sfU%6Sik5bi;&V5M2U*hXsk#CsxYS&RO zNpQL7&ba0Jk=$QA1-3su1wyv;dApX`U)J4aH=lH^EG60=d>KGmze+WqoX^qJ=oc6J z(IXM4dpm|%a=6w7;BV5?Iz|59fniSlRUp7Xt{ZwT(!9FLP7WdKfhY1e-6+OieLL!XXnNMm90IKEiveN=4vSBQ93H z+j2CdxtiLJHCBUM3#4}Z5N1P_goEZPJ3j>ufx|P!a5rE6Ef563sBf*SG%v{)Kp{-% z5V4qmM_x=fW|^CbIgEoPB3#Y#VZ`7Fuq+5v7l3vG$h^{u3~noS8a{%{M0z3J?guEu zqFV?$4KrE|yWjEc!{xujw~g-2e{n;AtCK#sI)zJK^?SpSMb^Fl z2P>f&PiUwhp$YoS;R9Jhpwu`;Ib9Rvcqqf_Mo>44%2qIjPwCBSa=M#KF6Q= z#y`IfoCD@4LgUG9khsPerSTKdW}XJIK`H7uul+*x49oP6OqTH<=a9SeZQzJOxE1k6}P;gq;DkZNtV*_`}aY*F!k#JUPH^ zliIP)6@S;t=$U2m?0}N68)byEb`y%#u5uxeah;su#$m?!Cs&+(wv1=es)%p~K%LiRDpSml z22Wmutm?+FSXF;q6iZWxclEnA5G~9v5mVDT-o>L9f8$#8(D)+BkDlO+-OYw%rPT8} zhVVkYN-K$H?Q6stgjGMj2TOD$Xsd({o^~$kqVei-BU=4{@ zd?>mcCPvm}uFK)we(#M!6hi}m9{Ilp)(zn)hm8Q2tCc`poN5a2fCxM`v5XF|`%1!@ zYFrW;_rx}ux}jBW`OP)3rW6^k) z=!h*m*oWkl*I7}A)el~C@u;o*u;w(w;Ka@Y_R5la2kTc~#a@^565e3%Gx(++mnaCX zG4=$%W0=@Dcye3HOGf>xzv%iyXTKneg4$)o8Wz|?m}zK_b587S1L5(u44p6>k;R6jm0t!2qq8*UpP}cHOba%FdoIK!9&t^f$u&Rq z>AwNb*R|$MZt&9Ev0lQp&xvZhm|_sNPE_(7+;7{*PL@MX!tv@oc1+DUDN-!eq{7~C zT9YX(C~@q7h`C*iAU!^PbmQx@^I%AhFD~TKh7{c~S*JM5t&X~Lle+%RD4exlzSL6~ zX>d|W5iZ+W>&dv(xmZ}U#^o>mNzLlc&@K0|Rov1cz%3nb(nf{wY@4MuC*_5&X9ITN z4?mI7zD4a)x~*>wea4Tp{$M2kW?yN!L^@fRu~7bAZJEQloOXP8w#cW~x6CJ(^Y!9i znnO(AShZe)8TFBfoNw}iGuq_uQ!ZICJri_f3em5P@lo=Fd;(#xTp+xif16gZ*T& zMCKd{G!S;$My;Gmke17lLMMMwz*38o-YvKT+}}XBsi-_ZDn&o{N`zVQx9Dx)YFRDt zkE%d4X51Y-6E;g4a(B?0o^0{nsd8V++<3A)G*gtiS?g|c+=K1wmq+gCHt4*GL>MCf z(3(?{MlFt&TBbVmVBh2jw#bN6543Go8{>1}EifIK)sjo=W)RWkb=IZ%cgQPV`GHFvUK~ds`tS zJY*{%+kOaU+)yq0_(tB*yzA-i+asYuX=mbx9?c8|dvA5VXQ&M~-(4z^xEx{syi>r< zUnPczT_HT7-&0&|ilt;>Sl?xYdViy#@Vn`0<+~o;NfBVW=mM2v-Py=vyDF|(=FlGH zT>O~EpQy6n@|{3;;%OaleR3ZO>~L^=5^zHiCu(}Zbt}Lfy5w!t@KM5JUkZfsE~SEL zAZ7mwu^2f z{>%bL&6@X0QM5^BO%xFPlGi5u(d%rb^ztI3%_3)S56&(p5pC{YApaa71&MlicgX95 zkd0P@-N?*4d0HOV$oh+|DFOY#woc48tfnlQ@CNJJ^H0?i0(*#w$Mlb`naylkGF*uQ zkuB^;F`d`&wgxX~5_RdOO|+sv-`}9mDcIJ#m@QBL{{l)j;Zj(Z`QXW8m=mv9X}n>R zHGLR$aBkPWw=wm>;Z|a4u{bov@e@yDJ4@basfP}rP4j?xR|w)Fu%utxRm7hQx*?bD z;$nF(21oUHp9i)Cf)}GB4%|cRFFbdbELg%l$h8>EiReEf0hs6m!YF;i()kFMazZxX>sLK+rU^ zzDwc11IO}A%I|YZx8*X)Ru!GkkQlw^Jeo6n(ae%0E~qMae_$w3Zrz7YyV0Ur?J1Q^ zA?^Q<@@xX*VJiIgLF<+eFG1T_g+kWbF`9DyvE4n+BqKgcJgegMO8<#J~Jp0tkHo_t&lR z--Lb}C2=UUz<(2k20$e|Lg0@qq1*q9vV>S45E)NT&Z*6Uj1`Mdx>wGKfHYwe4+b8xl^ zbHOk7kQs;la3MuCNu9#QI{{S!h~xTeywie@vb;ky_n&d1e|_D^4<5qcl2*LR5LWTY2p}v9}8G2*??#Fn57^uW+%B@sbWYO_n%9WXVHnpcLj04f4 z4e&11>#%p-BMp3tJ*cg+efX8ac;P%pr#A&RT??l4h%4z)ch}vX zd_k@X_zijN8eM&PHfh?tS}1?=J!RO2WEI_)rl<eZ`{e2?~2LAf3pWL{Iz(Jk9E z?zMoMMFKd9lG+Y8Hf&YZ)Z#%n~2C$dHrM=4Xb&KWQ-qmYotHTe#HVl%5lmH|s zBM$u41Zz0p$95bj536k_Dm3nIPjdsiZY)sy61)2K2G{@i?k$)A?)*le=Mu5l_4Fwa z-Rg~3*j)nhMICOpSCg&-8YM2vnm}KY(vt`fU(>hWvxC-w1e4o1gde3_B&!K(OCkG+ zQR-S!)TuKMf?x-G`Z}ehmQi2U77xAq&wpS%FW_69``M=cGkbqlf$9^)_8I;T^;+W$ za;uMr6Awy_Wb~K5BqBRFiSPFXF`M}<7jJ)jzSf}Oyx+&gq%w-g4a+pDAOA8m^VG;s zj|HThjDZv%(4=)2#1dJls;j$-x`23>cXMq~J(k@aiI&t4q?(6R^sl-*5>o)M6j=i8}xkO4RoVUZU(Y4?+@AbJg8 zn}`RJjL!Ej6f}--(zF^+=tr!hGHvONI0xnD0z00 z3!~59%hZrDLu#dynReja`iQc>M$5s<;AQa*1#aF z940xZefOszD&e@q7oTu<0wxZgss$>mq1R9P$Y#@m03fvtLMR5Uxc6)C1EFEEJLZY% z#u#jAi-ej3i|ZesHUWc@XAl>jWJ{XPFHft$IavUC%z`w?o47WNq4Dum=yzbZiqQrVutE@AQWRTN3v}r&5+y-SEbRe)W{4j^W-p}IjKwR^E6wh-R&GEL zBUxFVUcB`#qJ*CDaCgk|8GMI!tPVOVtbh&uU8GG%UQ5!5WeScKL1l!K!yl>Oh1p#o zbcD{s!Yq4JF92A;HHsGN7iK54)dcuEbI`h?-Qee||3hODC(h<2e9YV6diO>l@5Kra zWk0)($%Y%&8oBH$B{5g}h^33hp9UZ$BMziI>P`xG%Y27$lZzPf z+=%FXk!*dri_(O5E(Jc0r#2iS=1n zrd`%6`jiVszE4mTjO}a3Nf%BInXglpW9%PxCS1EL&9**b3E%(r>PEcl>0bX*P1b}V zz(EObr>gkBKFGua1FQXDDG#RdF_RaMuX$yhv8jy6IcG)Lo)D0+`Z zxB_QR;y#h>k;zw|cDUu+37m+rC+r2d0xwbp7=f$J4Q)I|pHKF|SGu9+z@+!ltSjNy zcJa5=IJ>wgRWtY6a7H>C;UGBHl8KxmGO><#-#WgaL^*YXQ;QXp21oO(`Clxo+e_A8 zkOnbiw>WF{lY!+Fm4K+72BH3*>C_P!MYFB)zQEIw1y+^vm9OMzUAfuNC!az0zy@uA z2?aAXwHfL)Vp20npl#4a(fA`v)FCdU?SMSxJy>jAzp1wGj{3-lDD4%QpG2yoznn7_ zT$3}M#HC$j0x603L@fA%j z5zuFBM_MPvL`$wnipZF3S%%=|p-;u;UB4WQuTPTTqG(d8KopHxapZ;$G+mdlBS@6C zJ&ym0AZs%yt^6&921E%XwAoVj0VTG70ng0oJ6Pj@nb;7G^WD(E3yXMQI}Yf#fr#P+ zBB2texTJFD#jD6sQ~vLuN>h+*8~aVZ0qlo91Ds3*fpD^204NF1Ak@}DDj?q`B8u*7 zgw_puy_R(0b4?~qK}5L804mT6gZal3M6P6XvUKk~Tnq0D$do_4A_a^+y-4<^d4A>&V7zv$wq8 zG^2pWx!ASnZuT|Wnf2g=8=uf0Mv0p;555y<+QF2hAQ~us&X1K+0$DV zjNLg9$1wXu)%QI-tJ;~$m^({PFTU3WmVE(Nzh(|L+hn;ae51ggD~^tzEC|wenIbwJ z{bltawd<^q7SeIj?z+)@LP~nZpxG}0pUwt2`2i6}&k;F@fc(!P^dkBS0ZpeHaZ`6H zZ1v<4cuQOm>YxC-<+pH`KWn%5O9Mh(fcQ5e^nDc&O&IibBFfJyXTLFTz!15kDgP~k zPEWQ2Q^#ez-)AVQ({Z9o<$?V{EU-3-!Yg!Icf$Tu*_N2dwdrgQJmSET21lgH5| zwRSz_?Gx-ZCNvg;A_>ElU8xh&n<;0Y|waLf1E;mTZ zr|HtV_Hu0$YDr)0^w;~QGMqvujyLAre&Y13)IuX6fh3|lo3c>W2M7mZ2?J?=hth2X zqlf4p29qghB1Y&Az&4abAvXGnFwYWN2aJBJNeDpv0qjPqOX&8Ezw@2n$t!3&DVe$+UoV03_EDiJvyK$ zFh14HV=ascbuJ4YuZIqHhTal*s6>pK^X$3O=AQe^hC9Edo_bDL;D2!U)=^P*d;c&g zD1wAABA|qT)KC)A4N8X+(%mr99RkvbprDj=N=VnxB{34xFf`KL^=|HS&idWwJjeSv zzvp@XdEd2MES9VVGjmqdQj!SrMokMkErW7!Mag|$asM>01Wna$58i^WU7&Ky zs?{$Ml}wqfeN>sBaLoETt%W-SA0ADG%Wt8L^{Kat&bnyhR*G06hf4XYCz+?CnT0jC zRt5?YIbRFN(DD6(-87|3Gx`RdGG42gXnI^|)z&*Hrw+1Ta5n|h53`NCm`$(UyZObCxMekbbmmP4tCtj-Z5gP zm+_dpHd>Iwg3>;Yu$AH$Qd!%@1}))Jv;}cgt!bu3#GQog{(>Zy%6AC3{HY3n-CRIj zM=H3nv(X>-Nq~;AU8({r$sjPOT7MS5v6-WsZoC5cz5=N!Z4DV3GE&k8d^-YsC)k6& z4m80?Q991nC4j9X_93L@op|DhY#3JLcS`OVT7ij6ZptXQFJ}>(oeUKf1?T)8(I_Pj z?wEeDiBxT;p_Gn6{vm6hW|?{PQ<6za3CjHYB!g8@jxZ|YH!RlT29mhmGn_z`qO zSAN*h>mD+}^~rLZhn%<>ZRh`1uid=lUA`-Pt=G2rm@hjUScQ{smWYn(I@9=`4^qp$ zaUH|*a(1t{B%p$t>)@U3z3)G&6&;hqMphp6v)nsdt*yK?yzHn;;AG2AgYz$02Um;+ zym3M0KGblUfeA=xpGUf#vL_+lrG_1m1sKJ$6}ReHY?P&pya5 zI{f?Vo)xkgrz*EsQ1>`>{kllTO3Y;0KP?t26=Aqnulv7|fXAQ}s|M8T#Ua8uk7x#} zq_upKs`J~<^6vVE9bGK{`t4DOGVvPLjDb$zG5rnt#9pJ^vq=2^vO@bB=f9B_{&%%` z;D`Uodr8v(KsXB=Bl3Zu<&CJoef^e5ZvT4c902#F65ihQe0?YKRgRhD{Uez*yPTu9 z%aBChgYdiOa>=5rG$OTHNBIiGT7KOH2gm8?(i$>jft>Hr?}2GNElDF>34{# z@$viFZ(Bcv1{IdalT7Txng+^s)t?E!hXUUV&sC<{^XL_wEZLUtxD*DR@E8x#hjr#2 zrnmSmn+2wUKMItzz5nom7HmGuJ?3MypZ}o+DBRNulmKKGmEV%dKV67FTNl3EBMfFl zb)9Ps;qbZi1Vxk;)}zIuAPN5ASe=`LOy$9UoU`9!=;iEOk&&6%_2!PyFWox53hPhd z4+OPd7HFjMndkwnT=;dh&inW8sX?AV3ONu)p&lFn-8c8f%OYJJAo!-Mb=mqz%4sSC zwBqP|!pounE~qE%2J%%_5bXR8s6M*EDU|s-q63i9`5$Z4Y-?8N#;P5%Cq4IiO?#vx z$=S7iRGSWfMi;uxwZZpimA8)R|1cFr$Ea@%?|-fGrb3wPT48OaUdwfXVT?9@eg~cd z{LmI44DMFUouUtC7vc|od(a28zCQhR@>?9M9#qidF!nmoe{O!hH_Z*`1&l$xkST#+ zd?T6{h|D(m@kR7CNN@j4N4Y<3--4UR>do}fYd_j!_VQadl+$p|nwT8s)morg`lNp! zdOZR>G5^u%c?7WiZlM0PBe|lwD=rr}ss*SShs1`_2A_sR$AM>361J07CFE*NrE#|s zuUm&4*M@tME4n@@Ja);~p$^|b=|Qe~QS$m!t@?FMK*W8n_dt2u5e}|4@;cCFfzJoT zz=Ph#C=4fgeuZ5IY|&WTzsKH(;>rC}2+Hoi3qk1!*krk~jt)ste9~MTbDb3k6viY# zVLbl_fZMY(e1o!1{Kl_D$Ml-J*S!W=O+ZM}*HaD}bOTQkLAnNrkofLUay~9PY!ASf zi0!bWTii$bF^FsJF*n=EDGME4`_&iMfUg+wsMbsh+)}?^FWG95|Tb`WsHvv zwc0QYrA7iMpI$E4b8$V9Ka%5|l0UkQ9D6JMtFXpv?dz+fO;zMYpIc_pfls;*?`4G1 zbn(W>n9%vfdGzvxLBa#m1TJKOQrrV?buZT2-Y{07&A=7qwuaA^iN&bD0D{dbymKA* z&cO#7kNIaghi`Dmt=At-S8P;FWL@}$j#q=iV{z_KUj7yVMIQv+V{ZBqcE%|e54Y!@ zZQp1qQC-J&hl@h~+_(Pc?;Cd|zO-XEf>MjD4bbWbB6?~uqssw}DC$Z}>;Mi(;@{`M z%7eT{=P^@1I`)_Nf;%cIsH`Ky?K($_iZ14LOe_#>Va4$AGB|_c5X$Cu1)~A^`RV6) zi8{O{z&~NmeS!za|{ASXHb0 zsK6a?0$?Q{1kdw3?)y|mAfTaZtyC=)MXpy529p@6b{6Bnpi6!DdTP?@k0`sUVJ+U`of*DLEekkG~)p zmwdESl>$*oC2s209zb|@IDyISzAupSHepo!PVY|aA&#e4@wVpGC9a^dNJu4nZ`-Kb z;pG`qjci2)B4uwq-YCn1Z;9B`p$E-lueTaFLC)U^UJk#K^};K3Emfdn$S|=HuJn$3b60_&ambe`N2CrA6FY+y z=Iwhl>um!YGSG{b+3*!TPeBCD{^!_=+;98Y@clw>4&6hI@0O^_v}HNCOP~ZS`V`vl zgVTAnQ-GqIQsZ?G5US&=7*dl9gNV!5D!~7({U}v&De9G;O~MfXTuS35uU1jo+)A3r=D8( z17@H)m%F%JID%vnMjmTl-QXvgtGWBJ4|x_;NJ#T*H*->908G}u$B+0s}W-j6*Q^2pw@ z_B7m7Ux@O>m^m+b(f!*B<>ES`9Az{%9tXf-QMJ)+s$(dwZi7*qkJruPV6}YoLMlK~ zX0cYsd5qRm`r_5V{rROS!!VYCTa9&z4S?H!gI$}PP2BF4_#8z_qD}q`G{f9r=O*!m z%@60Qc1VU)`s>T$&Vu!ZrOvfuN3sD-Jr7P>*|B@-;`NLoxSGwX%KAWB(vJsF-Bkir z)q5lM+C{u@4c^-ig(j~P#9A1nC_yuB`yx3`qx1te;~btYyX#tYs$Q<>brcZ&B+{M~ z1VWqR!F-74+8pSZaT59*^P?S{y^=~*gLBoNe^LN>XgHNy5aB{!Z}kefc@Q9Yx-oajYYu>%5uZ`_dIg#(%sC6Dy zwgi!L&#*}!ZA|d=bYqd*i{N`l@y-R8Axo0qDf@Gv?1x3Doh$!mSC<`)&7Tgc?q7!B zHOh4gX6tI$s#zdl(xlT`J<1mZf-cN)S($Q}GjK1nnlKl*owWry#tbkmOq7pE`P-cxs!qLl zHBwl^c*@gXv2hpiO$o`<_hdVQ&tb}qe+neX(L#L9PJ=!LK{NV_orW29Voz{CX4Mk+ zv2c2M8xr*c&*k0kxEVOyG|^2|I`@A$ZoG@|<7+a0{|lIwI>kiWahBFY;pqjahU{yk zWI!xOd_qHs%IjnO^V@H$RhhRiEW=UclCCX)HRs-Qwl)J9A+x(}Nnz;+z!ipF?r>9E zWvE*aEX!}sj=)sQBpe4>z|Q40B;XSUp^RW;e*@?4dGScVey|sc+H8>A*^^% z%gx>a+O04mq3pWMCCZ{rt>zE}uHOsn9R(M7_@Zgyhr9KvV_{SG)?z+0VON}^;DsC;;>gN+;_3SuZUMLQxrFRIxr*aa#}+nPS#T7tgxV!xFAGq z&24;vFPT^0GzV9}a_H9LG6=Fnc4G`hW=F@03`7udKZ>qMiQw9CZx!g>32A~E8|Vu@ zC;n6+9%{i&*+z>&IPv@(T6iW)cXP5iBj6GkRh!$XB)zd^Q2Oqum;b(3ntJ9mu3=wC zBT2NCRq0u3&qEBIIZ(KYV@r?my!8cGz=5HvsWe7pMbXGbZ`N!7K_%IXoMKaCqo&d~4%-eMhJ*S5jf=?574mIt5=*Q#T-t(;1V=7Fm0d#mh7 zR#1ie3pjuRtWqDaj)dluDwByOHgs6zS-8Z=b88y%Cc4grGC|sZ{2}S-HL?CQ@!bZK@iIP+LHGAW#)ecDZ(v72CNOc2;T9{r=r9=@DqK zQ)UE(GzrT$Q7?Dbahcrm&a{NEpxXsFgPua#{X9hyI-r^OlkOXr$cTr?)@7_c+$VeD zQ%LWN`=cw_Jlk$=a69);c4mnsu7W!YIL}A)mh{Q1hbCy-qaNCUso~YAV=Hp3K%!Wx zWGwjpHim;Y2+e9vl+CbutF;GX!zz9H_TUXOVMz2j1(~~s2NaAV_V=8oG^J(ezjoe1 zz1es&oA**u1ViFC|1963gdacal~_G|uR^p8ZKlor5W+Lbk!LJqW7S2Cqdh zT)%fGxGlIQ_-BTZlw;OM8bfZ_^=t?^*Cw*IPxS(@Mye^>#+)G?$cH(LbI|qNX|rdZ z#HY4DcyIU_*`^t8?-v%apH?`|(PWKKz6HGCx3rr<6@tQNWBFOhM#)cf#AjuKO~^MV)&eQOTKB-@k0Wud*;vja~)3pMDy?AlrRG+c_gBpHeoHh)@v*7 z!NdJe8%uH$SLt!M6tWbOEJ5D^6Y}PevUF$1A=whK+2< zKT=KVcxJGQsh>7BbG13mGUTJdn^ljXFRwl0 ztCsJX2lZyofsc+_~#qA=vG=KYW@7~J)M@NO{3ksP+#GVFcV!Aku4O|X9?r)vF0;r%<50(PYq>;*CXE=jV$<~%qgsIDr^ zgAOBakGE^#)KTsbe6(f=C6>SVaEJ6!HF#W3Xp2GBnEg(jOpztHGxIK;E0%M&#s~|> zPv&&FY{!ycOjW5@UYdINI9?8blXmAoN-pQ`*0t;Zrxf(ly4+<~`EmER*W$lirk|fh z$|1g`Fz=UZ{Mmh2Xw~+ki{L4l!uvPZ=!>B17^fP}U;J`e!W;s$V%;y$6mfnC7q>&d zRO+w%tw1W)&AH^8eyais9MwV;F@mT+|GQ6FMjl*mDXDVWe_Zb`|BLG_L!tps*iE81 z+b`jMJ=bZU8L`U!&7p$7Nx5@Ruu=D7=|!#n8BPIG;et6+#$h?hG&{+Z z+ek{Hz{#rA0l~$8=~_x9-UEe?S~vOsLSCGH;<8Y2`c}qi7%=ul)D(+c-+3-1cjB`! z(mGD3N9b~NeMGN?T@rZ&qVH;e(&+-GEUp{Rfz0Bp;EfN%`FEUPtOR!joZCO0Um9l=&CEg#lm@dJ2cU@Nj(DibFu1}D>vW|B0aTpU}^fOti`!sB7Pj+UodPj6W z$?@<}zD~aL2_o{IaP#!(B}?tMwGXqUWz@ascj6CLiId*mJ3wB2{(0zZir}7jEnE8b z0mp=O={j_I_*L%%@6q+2>gmq-_Xlq_dYyef*s`lw%_GKXEK_CnLYgK}@Y&JH>>At!NS;r81NiWXHYb2~Qr~6DDeh}&AKxJm`HzF- zPzx}tP7ogL2h&7iul2#P7ao8CDnZ9>@xyE#2nK9EPIjVup|(#3LL*AIV7z0x-X|tj z{b_+y0AR1Ujxry?@b%&OHJo@xZ*Lwal)j60)7QDZvF>M3$D65@!1x|o^wY_6*7$ipLog1ir6>kW>?niZs;Mzc5T~=Oz_RXT_ zaRbSNg*yE62yyI~2X$YrE$|xvzN+{-c`*XoYu6^LOQ#$Vg0mhHzK0tVSpD%0GE#sAsg#U3F-0}JEg0Lh9rl` zu_I)H@Q*hBY1q{+Ib~h#_6pJ0u|Y*?gyz$g2xIe4kHoMyOSXJ^_H59blzl5WH;@6n>LB3$%F zpugSHPiU2lF!U3jkJNTY#Qg;61$Tz7({Cn>W8|At@>&O>A~W`<;F-2*!R5Iv4@5>C z*R8rd{(X3cY=s)yrLb*(ukkXA3N$fwm2E@s7cTa5$9$Vr^LYcAWy{tpg=!cpSTGIu z8Q%7K53rPYw9kbJhQZb-Q3hS+K;+FW1kbyi?K6GfaHNGoW-xT58M=s zF_W(#LDw4HuO9q5Q8Q(|5Uu>&Tu9iYm4UmUqjH1x$` zYfo`qqTb5TqSRt9@bs_S`Ec^DWb|Oph#gVv40Tj9X-BKx&o*p!WwhK3&e`<8ZM*g? zre}3nXWbcMgVgh2d7Vw4^~gmOF-RG|lO)}LNMR;Lx!t1J?^A3i;DOW_=-@65mkd9umN- zxyf~MF=j@z@6I{2zQvgwdwxsV-*EuDasR}_1@FDs{TQt%Y^F^8k-=qF;WoI27h}_Bz|{!z#;anV(3Ty9>Ku6Y(h5mAJn2hId8qI z7>P54E{o>ZU-pP8wcaR~U7xUnxVnR8gUE&uvuE-1HJ50551BoO8+^nO zJxX&nat<(uWW)qW@Gsif+Y;bkieE{l^T9-7lr`!UIoM2Aod`LzKZ>j2)vAEe^ja&C zS_Mp96L2?f-&2C0+(;$vU?rtHPGr8Fu@LoUosj-S>K#<4CKjiWMnJp~G~tqBEJ#_a z?KF0Ef98H|Ty{cxy(}D$Ry!=;5GBp#P%zZ)j^)yy63sA0zx#<iuTx7MKHA6kIdsP{_ZAUi{lr8e#~M%I1;UxEm* z2addh6TwKASypncKvj4xNFjLRD=Vmru_%Wz1DF@?bD?JDgSRU@h3o+amkN4ScoMI) zTghud1Q-@-yaT>f?o&Am>BJwwqky`SVL};f04*EL=czh{Ov)(j8*OG)x$}>>C!1ME0+k!d@=PlE^*Z3J2Z=W=W}exy3A zpYNF+7i)JdZ($~{7=$89M3pv&atp&sO4lnUs9{bCHd&{p@qEtn5&aE= zl6=F~a@0gE#Om4x*SO}^hAZ>XS9*LE*cJyu)hfAH9Hyj~%z*}^4%mBM>nK?-*{)1m zesE`GAL$bjI`CM0iAhgG$_RWckJj3WRi@NH2ccP-g&V%;c-RTyITqoA@m%<@_+IIP zz~G_KP;mSj#wPgPi5``p6XJKD76siR5r-G7ke;rj3ObUy3VUEV zF!d+D^Tu86MENieD;A>fkou8GL((|=m@g?BjF;QavCmPQ3EFUMKj&-p zGrS=7#pyp<2+P3xnyqlhusBTG)}lu)m{|gun-0vA2TA0n{F~-N&m{1yTe%uOrcrQq zO?u5s73Zsn*D#0HZ0V8-4vii5(lz0RpT&I%DiOw7Ifai~`qYfo4K2eTzi>e$4|-1L zFFN?-B5N#k6)RgYCuIsY`i(x@?dEPo886IbW4H`v#azHx%Ej+|HS<_!?_E9^7sBG+ zmuD}ny6j&qtt=sTPZz9p(+W^hdbic4OUSClWV%n{0D7{A`lTE4yZgsafG`KJ zD6E}EB}7yo_$ulIq`@Dri_hw_d0l2RF5{XhjB=1HJYS3r-Z^ z=mhR(Ci1t;(?A%6pR&_yl)t{M`_J`BRpuqU8t&B| zWf_Ol)OB#R7@>~xJgd6Zserwg_^WN=NMaLCO1nQ&ijM)Y*SyQ(0ugFC{$g5YH(KJh z*W&M) z#Dx~Y%dSPH#+S$M2ue)hA3U1)5i)V7D?Kg+~*3^>G#tKZ7ucSUdVXwb}k z2}e5!X5hld^5=*&=9VCc#hT$978t(GVO4Bvk0(}wG4uUx82CcEg8dul58MELc?95E zUnllI)Xs+~HQ>`TwyDO3sr{YQsz?yhRKEuk;pfEjo2kG2z)Kx@YU~W zH_j~DW}&eixK>WPTUmk8QsyE&Cay6lj1vO;7A~qor;6Z=k(SsxtABF^xn7pChW*z zAUh5-A@shxmi3a=chW~U)<~={bK?nML|_XDPO3LXeDStFw;QG`3=Ah6I*1r~KCH@( z)eqq?qr6f2a+aJfy%p&895@7r7o;Acj4agVTM_;CQEvX@QFbCYdGkef=CkE;xxlm1 z5Z>|cYmv5V%|xsNxqhx7bM>uS#}H?$iR8FxfZ^&Hb?a+pAK^|bZ~_Q3ZMjf$@`}nS=Y-nt3Xg@~-u*l@Me9Y++PA{LsXL%B zZ@4+X;sC=Kln$`P7+?6}!(02yA#dgsgt)G225#NdYr#aV(rfSzqv$)zpp_(#!kpn6 z(dNwXRd9Sm>^v&fkQ~zZy5r1c^d=%vAMxO@U}MZ3L0gklfs4@?NkK#KLuZakAhU8g zO7cV0xU@EPeQ|TC(?d4^nR0> zht2n@L)K-=?cJx%(A=kPRFOotls`BhZ$&`Isi1rBQ)+_W2t+V5a6F5vcF;^xmM|dK zuCteZ*Zv|9MRv+i_tXJu_@qOrC|+pZdZ~f8JkUn?3A?d$srOr? zi*s2?eTUYD)@HJNXspd~J?`8?{~}I2>a3AKJf~+T4weO5%CQuo1`ic7cDE!H_`Zt_#GExBx+!c&a;vp$CqL5^=EKBb~{Bo`0r zIXrR8!pT{3Fc4&YHkqT%rf{^Ky~^6m>@@dDbxa`O&BxeYSh4No=0OYWkeXy3TcJ?r zp}b%iPUFx;<|OK-4!B9s+y0P0?e`Q|4DHAtk!3iVe*FY$H4Nh<7*~Owip|scZFZ>- z@coK4;bC^C5>n~bDy{RQ_K`W7I>bJY+F4~_|) z*x&}Dl~qYb$rHg{L)a{dipmFfH6u!0)z zMI!Kh573-W$j5`PLeOMiw2NL-onHTjMtjFA_03NHulT{>Mrv?7a^25k`5Vcbu7vXQ zsQDel1%?O^ae6@iNjoL7D;Ye@>!f*@zkT%Z{f4etUSqXaXkBRCE~@ZSqZFZGDFt%U z!d&GkDd#@tWsQ`try8XLrn7sf=~$!r$T~}iwU6JyL~csvU5m}S!S%Ai9@C!S(K1^b z=gn%zgilu(&y~8>@iR#7hy?H%vQkaGTW+_M!kc!~o-x4T&gQw*vUsP|(?U*yRnx7#5 z*_hj0$=Tpf{PuqJ{b!4utdQCQn^<2Kvb zDpTo4mfp(~#nNQK!6UDglsXesF36=S9^8ptJTE{+tvEyy`I^%ww0NqjBXf#STxB*EHnxT<6fq9-x(qq_9OmnVHI zJjP|39e6X=+sS$(`TMj*Iedb9bbY1@GBT>pKms>Gi^o<(;l?}hv@<0Vi@6UqeLy`Deb_;aZU?Q(-)O>xIv) zJ$F+Rv~6bOOvxt%)pcg)7L{gMNC4Lwkj<5Y4&=#eS^TaLd>Jte0w-*)T_`s2lO<M0Wb zeNYon3PPlZ-H$dmqMXh0RkI^|llVuDh_x4@+Uj3|$f)9=ViLyxSp9wM1o?<3bgU16 z&n<1v95dm|<3E_U*+srNn-_B>9S=&;?+E;eh)b#Vv!xkP%?f~QCD_*FUf1W&0=k(m z0I~z?arWEJ%P+jex=ml}uqO$L`32blc91cUEo^ZO`EP9bTzR~xi9IAI*E)B@HW)xh zyXNYphWS<+bsD>mG=4qLdC0mDlaSCja)L_)gBMbn0oE^{|YUt?IX__!-Pl_ ze!n>Ej>Op1G>p@sHu$s+n?>g)d_mAKtS5X*&hvT%~_bOs^s%f>>F|1e&V%89dnD3=DiwYZp%3h;U7ljBRwWNv`qXho$nZL zA_@x{fatCg?sXQ_%U6QZbHC~H&vfZKK5EGof=82_j_aVA`PSNZOrfjde)AC>mvV3y z4BJ*Oe%$urL0UHj(FRNcirKS#NFf3r78;Gq<|TBY{b_~!O2 zfJgz`f0rgofG}X1_ZO=_XEVpzZNqKAa02|TM0#_Ug`VX(imrlf8C3P3wzfa-jJHIt z4I|eEM4Sbp#58EY-s+kDi?*q*hu=zy^ak=*B57%s-j>W%a^Y-~ZR+(`U__|RkB4zX< zJg#GT?m&&_0A!2DMVj(@2VZ*gsV>vUKhb$AY5=#?bAW{*o*jjkhTl!YSjiypUD-R* zm5#kT5ZuAr7mPKz7($7vr=mN5dm{cxS2r&sp@zZ(*tet6IxfWcz)T zR;AC$*5IN?yU8yZ8ELaD>E!eI_x<7OUHdW1K@Va7WCC=cB$>xfSEdMY9`Pd~1SRp9 zEK%{q@0!30Zl;k6#};Fsv!zLvyrW%LU_tYV|Gj_N0IzqKA$#K*OU#O2*;Q~|tRf{R z#vHp9tr$nb7nL?>a=q_o;`IIFnH1uJ8$u#cQ?I(@@UAE**fdSKV5(@OfqtA%6SlzF(sk9Op?@hH7=P!&8lz zi9DH})43zof{k|-6+f;<%<_et2Osc^>E2m4X}LpTOI!Z@dqSQX{=5u?*Yilk5s#rP zijVOqPV%|^>QW6S8`z{UWXQ{h(C7r89EcEv63pqivYI265ujK|+v`=U|NbbPlyXR# z4);kkGfFLb^5;UyiKABjS1(X`Q;f2xH@ngaD|wBGd2BR4Pp2(!Y7&aoIJFb|(91Y@ z&V?{^+`fPGok`J|-o{Ju6|(b)q{rpWxteh16YM6Pn)AhSE6C~j&rtwVC!6U%-Z`-f zLg+;gdi?tFRLG}y`^1Vir2*oa^_D@XgB#Z372yT*|W)rB6ir^%ElvAw`A zc-&gZkY&AjFa1Bdy9j+zIr~(T9stYrtjRG|at(1MBlLxejmiW!yQ^kI?Z+*9PJ*Em z$xdbl1_p>P?CES-ngW#iF#~4^Fe3oZHMu1pxHpq#JqFCF>r5F@=3g$EoC@dce8$(t zn&U)ciG=FHX~?&?j%oSPP|B$YFzi`llHKhTyJZE9)2LD7AxFHO_)Y{w_y{8`wq=#0 zovZ}gTO*N_zA}wR7+w~u7N*Zwyv&(T7heaw{PEJnki>t>VLqj_{owvYI+l>75q(5? zm~)+Z2?>)G4f%RG*9QEo=S9ThOel1Ux7RlBlFFa%R(dgGK6=vbYkR@D0SS@C%DFEj zU-`dJy}y^KcIYwl(b?flUxrAh7(R%l5`SjuOBp`DnMuMnYsA6pZ?r?NiQ;UQ%47wY zo>up)G3>^Zdz>F&itDu_9}eb_%6vNkZbjxDa<3^gk&k9#RMdzP+y^!p6-SPKzC0Uz zYmkfZQm!9Q7R)}WQ}15BR7pW*pQNkKq1iqfKKupvy`pg;A4#Zp3j91ec|FQ17om5c zO`o!~=WdgNPIj6VuL;fI-VVQA>W@EJVwAKiO{5Mh((Rx83{^RRM1OERD|lMK1vnB; zq{@oq6{Tb#}<{wO7GBo+Lp~^Gn4X$LBQ^=X8ZaSSHnq8vgn{_;xylcP$ z@SOYd3qt>)1z^Cg4-t)UVVP|kq<0=d&&g{P z`hQ5l^Pi2$AU@ShF@7`mQ2jNkYgTrf-LEq;(_?$+j@ByfN6Y8359SNRmrvVKxDjj( z>XImt{Jx#t+VT}x!}mBOuA>l|Nb7(#G_VKX*oBfv;`O`2hX(OI1Q{3f6bEMT+(4ln zQZ)8CcF`cL@g^>EEIhsM4DU{b@wf@1HQzYB*~P%_CiG=`2nAovGHCuh0sqVQc~aK{ zaRybSPVSd@eivK&=DFQAia^({ZrFe=;qO?%A&Z57M+(lg@%3p3sOv5bLd(4@&VZ_s zd20`NDtWz50I-U(${-5iX>1ofO7wzg*T z-V|nM)>To0UY&!ojz!Jf_`Q?;6qYqA$3#0EaN9(u>Kff~80xgcP*(f$N~^e_KEzaP zYU&%3MFaVa)MKY@X*JpnKAMBTj?D0eI?&hNGC54Sim%@Za#PSPMaK)atfhALV3|+b z^zek_QKKw7^cXiM!RI%%9eQ(YpD?6*89kFpUvGBof4%&arv8NFRlFj20o&oXtR1m! z-4Uzra?y|X2Vp70x2WyDfro~D^3KC)UW3ceb9?GEJ_W0%=ih_kgg3stSv`68)r@~r zqeE2+al714I%3!Ty9v8#kEhQgt26CS-tDrRth6YAd287vik~?$5sN{KBDt}n{zW?cA}={DDMAuvdh^sb zhb;Sjmh<-YNqa!T!3$$V^sB3c(J&*2%?~^6=KoAlLW2_XIUaOdV?<^-Z@QjEg((H6 zgY41Wnuv)Tad&O$bgg4n@68fo-L*&{2+iFJ!|yIRPl}rx5|eP0$J1SMu{VhPgF}2c zV>kl5{%e^EKDeysCxW`aVyN$rkg)zxq_nZsJO^ztshiLhem9r`((R_=xP^9)*W`;3 z{xBhGN17jWSQjm0k}0Z~Bgiq;-03$sgXmD~#-SLw+wkm5_BmH(l%f?wLLfj`-&&MCfDq^Er`Z%Jh!-%3Jdgp&mybZ50zGKW$1DT-Tf^1s0*_}csDk8n%IOru45T{2{jV(W#J(u8VVmn&TN(uPuVTh&7S)Gj9Ba}N2COace4*aJh z{w>4!c2Q5r=j+0rI!j6e$?-WC*pi67E<-oB10j9;pPL-&=xk$(x6n)CfZhC*%bv#? zos8cZ9+tnSQ+BYUEvm*XET1AIXnp*w5Hn``i@1iZVo3|>Br({ z#M6nR|A|&Kj{A}fxu6fMr`?!&+U;-}!gJ%{3hONO$MbTQpunoOF(V0bu03FNy_uil5 z_OUa{T72w)gMPc&b9<&K6*>o!&ixZYKv-FgPU2af`cf-DI>mw{=qYL{=qZO zz%voN2`8*vkfXi3MZp#Om`5ZH{eu)AVKe(;cbCQqtg&w2!?!%1<30nL-ZzvFj%bCJ zGh!5WZ?}&G-c9E9A^j*k1#YDU^GOso)>|bn zYlr77%1?w$$h_@vD`~G;M_YA>G5(L{O={%Pl@O2dZwD+wnTyZjbicXXli1lIr@UmZ~jj*sJ8& zSXbd^0(0MAKKf2`c;-pC%6YceQGVA3nc~Gwn7`uink}pTqg(&s)LLJV*+wr94OTIt zU$=GAlLOlDJ{02*Qc|gaB8W<1x-V(1%2^mGf96x&snw0ytAen_XQ&IV&2V1=hUDq` zwX^ebbJbqpdGkc?OMFMj7YU*!&dvn}G1c~}i<5DRBEDnJJ4Sh%?5Q%M#-E%TxL9&x z0Z6ewHA`R(uY9A+uxY$0F-oMTVO|9_BOq(C2`Gdq{+W`*t}KurvZkLvH@RhxF+Wb* zx!I`o{H$liTG!A^VqH?hn>ba7sxx^fZ3N9shbkZAsvWZ@h;Eovvh5oF5BLj4Ya#6V z5Vwb!qcJYoY6FU0%$#)wf&J}1c}?B+a+}Bc5X(n6G~Zi|uGn}WO1mt&YinWt-htpl zH6}aNNhY({C>lmtR6&DgG(=4?0#uy#-X2-MaP< z2vUL|-6fzPAl+R`iU`u(-QC@(AT1%?-5{-$)S{&u79ic<O8h$i%y1C5!AGoXTwJ{rZe1iH)4DW@b~?uSPWxMlB%c7hMepOUUP&2kzo5L1dsv-4nMW`QHee|6f?+Km#a#zAn5SMfts1Q&;H^ zvt~Cx7Tknus)3y+4~;u`PpXXbasO>w_s=iQ%3+FAny#Oy)Z6IRyJ+RSXSW-XQ1a%T zJsLl=Kvv%Kuq`93vluS4nk!QGu4)nF@!mr2(l^)|9w+#Vwr0whbfKCu*y0rW-ySgj z{eNTJ4^HfV^W6RWxBdMa*aQCX;=R667lkg_c@i|dsz?StMMo?^x%qG6-&>*oi^=fC z>(3HM?QXt}9_W@`cVfO@=vK&qz!}#1ADncrh^eOQa{uZ*71P1I@B2oZNDyL#Ptd4V zc;@rRZP8S3Eb^HrI$ow!zSlq=+`OlcCj5S1I1)0u7dBaduxa4C*7ST~xlYQ~9vS+cXY1P4n&&Y$_32Uty)Y`W8d(y|-FgE9(rcN`aMyy6+7HV}I zyk{C!E76=pEM2?H;e)s@LT=~FGF0Pfl=RQn5*5_xi*+F7nbY|SMjL6yPCtaDYdO7J zrx}|*d0tmcm$e1$hqvx0YMFuT=y2_Rud5{f3xmTme(1@5Tgtp$_;diW5eT48^RTl$ z^Sn73q>@X*6rF+Df($38@0UC@H%ld@mna0BH?A6aOH9N^ZoqYTmWAOee~Jzi-3hY4cbg~ zcS@T|JukQNPC?`I)cN5`Q5O_MF53?7YfO@-*8%G83@CP409RIxBY053q|JkZHsczj;eD$g9_u^yIOTB9(_noV{-S4IEgN8@L*dFugK#JZwkm`+l z- z($+RzSfu;{#$LJN*fYh_Z?j&7@BH&LMKHGDSs?0QY2){6-%v4E4j7xeaMyuq3sXRC z+GcjWIavqw4EqKB=vT)#hmuw7lWgIf7;`TAQ!xr8@DpO^TbEZpf*E(0lWn`e)m8xl zB?Si-z+3-Z@FV-q+qTnxD2c-W?(v`rbd8q)^mEUpLtyyYz!tooMTUT9N3#E?DKBUd$dtGVDX8~#nr-{me*i^qu}+O z?^l0BrXCN^g&5yg>5NZd^2D>5{`o2TZ=YA*7f%*J?$7++wZ~$u7PnH0YZKnR>i8BQ zMhZ8VNb#Lc={qg@BF=!RVnk$F9V=@aJhPr+ZS_wABow6?1oQN#WbDCFFnw|L6?FY& z0M4-gPa z7k7XS@HZJ)(5LX-cWXHK*6-f6rx)b_*I$!eT4S$m_jPC`)IX#AhI6Lvn#Bg`Y#*|q zY~Ad3UM!-3ObgA9me^=iSr!^(tZ#p$i$!bB!R+C(Y9-cwv0c;$yPMU#Q2(l(|M-V^ zNi;rYXq$D*$0V46q(CU|km|y!4xVN;7xmoG#|CcH`Lj)m5U9VkACicH2=?BmL*r?y z)@h9qR(gg=x7~j={9$@0@GyzJOC!b<-405=-UgtW8q|_ zC0kCR1dts_F)6>>`I?|5fP5LBr=sx>>?5@yHCxE&`Hup}?P|1QsHV$OpcBYl52%T{ zYhANP82b6{Yh(4SRnrBwZOqLI*`3O6%=ekhvKvoEx1&MM&Kb;J@7p6XUeLwRnM=9M zx4_11Im6bpm77Ahdo^C5NZ(uvpzeV?Ic;rMsU7Ro5PEoB_ydCUFTN)Um-|55)|^W1 zP6qe$7-%ohCS*K-houd^66FJt9=cRBCl;-*u%7sgWsTtd#UoDjzKiz&jdKn|tJ-T# zk1&dS8MrlUJbsji~t>Dv0x^z+%>y1_x#o3rzZH1{3 znabZgBGN{ctwiyb(rHS$4<$gQ#ACcLg1;a}>1#;==;T_u;kn+h-W(6GlBEf8)q_W= z$O5N5?GCUg?>_A9TMF^<5p7_Gj#EZCh|I03#+P*a;Bt6E9d>H1IEh>hK0HYtmM5?c zL)&34zAmK0KAQ8y)o2_VC1hu*a~7A=5u35-M8K{KlPn?kYN#4M{W)s^dBM6cuvpu; z*+k~`vMtoe`zmGnHLW2d3|`}YNS?ru=2BSdXvjSBN(6Xr2`#9m}0pe5&Aw#w{;&R>H_`mj((y12;iQA zIDm6J#V&zooHKE;nEFao?}w52p2zOi#`M84SWP}O*{mFy#-9X5O2QLG*K@${NqS<* zHnvtN(9b&;s}`FgK`QdU*H8wmXc>(?*{GDjDps|aS#C^p^j0y(Tqa^Oc@u?==xn{v zTn+{&xB2n6Vf`8Zir|?14pyw7CCeMAVEC*0})=l&zrV(M6p?85jw^ zTsnc>|d|y|79r zu^({2lX`z3D}*|C!ZX{*Uu*az>Vn%&N#Z8q4v}f7?d2^vD^i@WnSN9ijH7BG@e0Qt zE9TvIO?KlDiv8wy@^L}WA2W#x3Di1J?5}NxonlJ&xqQYv&o~#3{b1x8w^Yys zG$dXE-IHl@---D#Y~pbm(s$6T-Q2!@=Gq{iEPokk{z&&z+ZbNygArUj=H6c-8F=TZ zozgaD=<#7sXxS(^N^=~5*$faS`a8&G)*AI-@uS9{Lw8P$UB3<0P`Vs7RrIBGPxW7p zhruT>dEIr)pqrYb-gtY~ZtHXI*~agkv}qT13>eY+@PNGqec|GhEK>E={a9c2I0l~J?H8} zxW9THR##d%KSgBXeJNtLm$m2q>+@3*KK(>lR14yRXP2!<9~sFbcAoxu$szwF+aqJh*}{*$G#`VUJZrX8>}HnywuS~W9YIyb)RO^$qR zphq5fcu&03C>k%3k1&A6H)epNG?z(T^25HZmsUMP;<))iLlnT3;K;~*u34$_CfLPz z;YWM!vr!?c&E?{fd=iKdgupA>oOjXZK?e=hjGiSW{X=uyua}aRI+uPrDW&`MnPZ;8 ziv#-=hbBa$Q1^1^q7aaQOLZV^=RD8*%cHGd>b9)S8O~>jLGCt)@XqgW45rC#UL4(F zVhlIP&q={>DT?3o^Y=6bjncC2={VH=c z9>MxypNE*XQf%vc&=)~J(WtCRQQ(L8D>u4Xv{wq-fWHV1DjEJNZvV{>8Nb6~M-noO zRLvEMp$EukZLXm*2U)}$Sm-8QMsup}?oztj6j(UO?aiNhOaq%Du(LxpxO`scMM@*n z)R!P>=mLZ{nHF zw+zI-_bM6BbR2me@-;-sI5jp2Lp7w8>TM#orzoA(XkCw-rP#B-+ag&d|6z+vAL0bI z$nl$hw?$r3z1z0e{!rKiaFGK06TceT#;xbs06OCzw#dm?(5#`px_nkJPPX;!wm!ja zX3?#6#4veyr^XZAVlze0$kmz9MIuO57zsKxqWR6x_nsDMVkL`*Q(;t^E64DMCsHjQ z9~j|?!e0ePJV;;Zc_v-GE|clJlBh(iKoi1(rJP>@}c_s z_}yAvgB*uyMN;_5g-luIZLu}3kcZdE#>D*u9HMn2v4XsVH-+nENom3exQLkPwkVH- z(O9C&VfqV4K_&UUqAE6`vMcuLOBBNiEGDp)F=-Xprw{`qi(`py2#77U4BdbG#Yc|s znG%YLMt4XVJRF^#Eil-bvfiHu5A3)~dx`FTibB^{zObBNVCG>uU*^vi9K- zM)BOC66tt{Z0W_WoaKAgfxTd(_nJ7N{o_QZY)ir~PHY!Zq|CZ<6i=^|sy%599qn9D z-qjUKq8sBmh1c$n-$t4T^}>}mt!k364x5^v-kklzWSRJ3x!$Kg%cOzolvN;~V2{YD zxv!)l4u692^c~nS(E=cc^+FPKIc-17Y=s=A&P-`mkwNkglqJ8usHXQS?iX9@S*I|; z^phJ~^TjX08*ZloTj^%rf08T{gBTl!Y(^@&%nO(b_mjWPy?<_Q9l&z}*pCS*tNj|k z4AB66!9(WKXuDUjs15`IQq&0U$nMU`?qY2Pn$$D3AKGF~(wh^StBQM;ZSq2rQd(#@J@TIeV^uMZ zLA}n(6Fm;1M3r95?r*2ULFjs_XS7DWcMCc#)asI*m3FYlIC(5PbZbNyqtr0Qzp%IP ze_IX(F3mq}e5SS~J;G=Lspa(^wwOzEYt$@E5M*MdW{n<&0R2$xKHGz!hgT+l?*$Mc zq^PBXdujP5FA<0yFi9xwoo8p+i!Z9PN1M`O9-5~gp8pp)8q zy-on_iSVyZo^}1M4iBVhk`UBTIhMCF@o?D2?=z{ee82pwb5nKBQ1Xu6qEmaZX?}<= z+H^JNn0ZyXbhC2acOAE?kjjRl8;APE#5w|Zwv!Dcw)QMeni97DMUDCSP?~3H?x&*X z3Tk@Jk8v#*3SM81O0O5jxI&M`BW$P|Kdt;>=0qAlCZHgFPlMj7@u)7CNzMJTtB{EqvJSKeHjU#{W^|svc0JM3Y4e2A> zXcTs~8d;VfKGqy2sXdv4(dtdhWfiqtRLE9-CTKkH=>n1|YMDVlCJ&o5AU~elOCVJ; z*9Cm2v|ht=@8pbxbL7%d-3-T?Q>7imz#F6Q|G#sBN%&&8c^u zLw~yXD|(QcWAF5RO+O)5D)0%r)EaRv?k)Dsc|+6Up!Wk0LYLb1ttJ{A2%gakYi@`M z-|#Mo1*i8U>Dzkit8KlvWw7o#DDjC#wQ=$lTNm{ zxPul}0tKFD*-qUDPf~m|CeHbh17$R2bY+%VaCMbYlhzm*x9AcVC&O&SG>P}WU4n$o z%YR$2ze(eDJ}vGz3n*LkgPAMSZtF&0b03YPjEX-^!XD%DTRHw*A5*}alq%PR@mP%p zuAgLoL6?@#-jCmXs;bs_hd*)CXodp=X5J7_OvpJg(B^CRQE%3FNvM?B+;UHeR6T}2 z#x_c%EBaVI0=#0`*=|_V#gK2eI;c0s@NkdYi9b4hHq)voIce?(HejJKf8hxrQY z-L>IO`!>C=cL?C;p!k+Bi>lNmO}xuD6m(k9Q2n5aE|rtZ%20)B{hkf+VFcm{wH^lO zR#3~L8=DqgL5mE^=2w3r*Y9_3>8)IL7t6Pn)0IziJbGGqZFD}sUDiyltDZr5R>PGkpsF-Sp|uZCk#DD4bCII5eYo0d%sj+^T32v#`Ap{j{>e(@>0N5W@us_M)fZ zJYEVGCL(;1oR65jt8Qbwl634b3qB-m(3=G>i28INO4p)oUsaw`mvSEmE(pg^tBcvu zgs-;JE*EX`2K>6;YI7N@=3)8Q6yA5?&dbhWcQXfWKF;D)71GONyV0>H+~MkAFSSk` zEj|NHBpw0BUw(g16~et|{YJc$@|Gp`?3G?mE)?r$f{X|Cb1$U#p!HYW){vlg_GWpWq@AcZziN?Ol z0F{)jj|wZtVf0zpb-+km1T{+3wkjokF)fk{XTy9<0{a+tf|CHgi5iZl;3L*HIUc|B zTUvW-&r+mGVL}tUq>!xrrlu>;N$IDzjn5MB#pj*3!&cgj`~!!rGa(#v{DxL)&|3sJ zKsIr_W-cTlrATcC)`^OM~85r)Zq>G_X@|EkG)MTw`Ffr9-ak|l>uztp$rf)|Jb7`P*QcX`6<*WPobvUh^)C)^>@KR3bmqae=bjo} zAw66%s?HZAqogYyhMl7vTJ$MsvZ2e?jjdxw;tL9Acoams$u%Ej=Bda%abz_J6UGTHFT%aH(T-dkIi7 z!rhnSO#vVZ4P8?!;z*Am)5$dg;Bmg!16A$27nSxx(f$Rcx^2@vn-tS$zpZT?VdTkz z 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%0D5prPF z(HSC0;w8SM!oXJ;^k+He>5%c%!E~^Q&Z<$+GRD-LaZDIdFws!F^%Vt=7|M>bc&wm4 z!Fk=8e2Pg^1Puor)QJU*@<2V|R`=IA-JbL4=C1y9zd}b@&+hgG#*IUVHGE67LH6?}CmE$>WJLHOC71SYmzIkNA;o)u(-Asj;z0 zWU1j_Qck9213R1j+;<^sIe`e|?;y||PehA`Rr1hU+|X*3er)KKR1-3kurDP*eazVt z4CUyBIVZWG7|vK=Uzkh-Dd%}sORmjUb?erhocV4&1j>q3&8iA&HPlHWlMG*viOir|UayGkkAZ{o_}sn;>zd8aVwAVWM|I5wXqAxWL9j#l@XRs>S(? zyF1{N{L>7-Vmqj6iyzGfUjG@#(^mQWaF`yd)LXG%yX2O`;0F`&=O{%+ZDZp7YMJo^ z2J@2D`3DFx8({|}?*MR{{GnKe(qBAW6#U_$;15T`@~>n@hC^cvm5-JhAJy3H(_1MU zjalktTMKci3vJOGcCQx7>~~MVE^Lxv zXn4SQ+7TrU?3=rlOE)`_#TCH{Y#^>i>@VKsRgg(?xG%~4TX0DgFpPlk<6`e3PMy*p z7JsqI{to_>LK1&9FJDfEzu?F}zkmN@6a^dzW)I2l2LeD@|NDV}@RTui-*0bCT-S&H z9RB}pc*>82$oCB5!0Kn*ADx^EN)bfqZd;?c?-_#1-GF-}(`RdxBn^fm;Xm_XhM71c zkGzn+k?>#rP35jD1MUeoc;H`#$o@DV|9Si2&lu9`)EALuYmjWadIBV#(sAqcH&v;=Adsg^4)yzaM#=B^oqCP z^#>9m4~+;Pgdgv-j@6eAB(c*1s?)1v^Q(+kw5oMx%O;~B+DV%$9X9WrDjP!?Jr{1a z#K|F<;q}zy(lrjM9;ai2M=CPUj-lk`(HGz%2C8271`wkCN?O|DD~8NJWtVMv*Nn*cQr|N31eq$d{cCF*2)a&PzNY$TT`uAF5(DI661il9%OYOW@z}C*0q!J|~mzgp-;;ehR z;q+Cp)Fn^di1DW8tq~e98J~U#*>9uOC<(nhim4}E=|qext-w!rC10?T2jlV08J}3* zNi9LRasjw8JPt?j!deie5zG(xsbuKDQMgAl-}dHy7A=5Eg=GHL5F4Um|LQD6b|MGi z$uux}-OljU%zNG)Tv&G&6P*h0lPp87V1M!9cGGIK;2O{(#)}m<{}mt7_JJd?w3p!3 zxd4im2vR2|kLF35Xi=9*++tg?et8Za@Pqr_fGSg&55}xDPP$dw@Okx?$1%LFpL?011~44=`l7io=O$ zzhS%Zy;?z=fC+#FNDD!te$zpkM61@499nNZlt{#Ub8S#$tZ6KrN;;PFIHF9Xn?@*a z6qi5u6X}Mnh@N}7PK11>O}d~}5}M=)BC@2#1iprd|0Y7nVH{l!GSuRMIuhF~`pYGa zR)D6Fdh;O8xL@+w+uI9_G^$lu1J_px$}omjyAWRk8(03BsVzQFvqla z5B5LzMy!KTh46ZCf2lDQ65C`sD04k>15<=Z$R)@VC3`;~8q9puarOmX9s)A&MehtK zu79RW;K8ySsfaxJWR4jOt{auoh4~;S`=jtGTyBDpbfTw~HNG!?at*o$ufs zE{_J#M;)}bl)e7+-DAJ0?S;i)v9{hf#tqQ&y|r9DpAZ&Cn=7NEXz0`t#03?$`Oo0a zESA*cM540`+oB!s!|$I(4odwvOjdBm`?`iP@@>wVH#TK9glYF!%~=x@u*Tf>8eH0O z2Jnn;=t1RCOdryEHHLdD(wa62Hl10C^bzbj@4R9Kih|uI+IFA;)T(TQ7}{%idZOd` zRp%y^=YijhED9nC(jGil!9z$BkBmeMCybzAFLa!Egjn51Gx7F?0DNt@8qBq@0E-p; ztR|P@x|%#rVP65;-CX)G{!#a{gtWAWa5)pUcmMvQtK;}4`e-S7OzHnq#2RiNBbSqH z!*qdy9p=!JZtV;kGSDbEaUK*$sP8tr zj&oVFs>b;ft7>(xIN^;^ZXO)mGd)R}d(y|E>5|tst8aO)NxjA{ z<|&i5oK5pVL7Cu@PN7<_Lw%=qf9_-@I(OeT*$1=`gvjd`GD~*ptR1(TU;?A$H95$O zc%%mNE?<^t2&L6ybCYHAhkC8$KLDcGPTNyBQeI{+Z*Nj6C$ryCrn(WLcRBV5b zu=w_kPGIT9j%UcnnQeh3!q>IK;p05mMUBZ7N6vV~&$#tBmmRm~&$2uZrJjQtiQ=PE z742I3?k~0^yex7HZ`*kVT#c}ZZ3Av#$70fE%cj2bEWE z*Z_L6ZJL7XyOe|k)3jEHjgRa(4AE!cJhKj51#GOPhe%#r^XX)7xYBnJ6prQq3hE&u zi4p6(hAUn)@f>a>=n=4js~x=akO0#zVbh)$P%X)l&8rmjQ*feUqlIM%dqie^DUJDF z2AGx`v+z>6`jDRin!qOyK8c7UNI!x+3I#8nOpJt^?i~_i$xSS>ysq~gNBk(3dG~{M zXW}FHt?1Z&ga1b9FwPf|`VN9Lv6G*n3&@kVQjj#>#3H!wuD*uc>Vzw35_+K=mI+1c z%6Yo{GFF#%`)s)Z@)zbQYf*y_bYM%gPa0U?w3&P453cKx*HaA#T%IiG3Z@xLZ_>rT zB0ot`86=EWh8{V`Zg(0iT=vamq~D{#TY}(W5f9KuR%D zHUG0?yI|f?x<-TZhu7d+1+ddP9Fe&H?gc=&@fJ+K zWTz_hq5{Au=IzEhmws$_F%%w>8TkByoBZu}%xFfGolEiW@NP%MNaE#u?zTM;@H5vR zGXPoj4K0_O2SC)h2U>q#hY>KOjL^)Be*}ZlHei4sS$TH7^yAt^mC6nW$D(8kOi5t~ z!3dFc*&r2)AYtaaWj%!)oE4>>C+iU9n9t9D8K#ZvxoMR|7le=g{&=o%Fr4CniE^75 z!@{c$o{#UY>N5^fZJ%vN#T94-kudviQ$z_AMLihDhCUO~zd5@qw{rXEB>Wax$nktr z&bLSX-Mv(&>w*bSh7J<~*um1h?8>EF-a#hO26XNIn0N9KJ>pWdv)_M}X|hyV78HeA&p!wuDMQ)5rY~eU#UXpM{c0JzZV*DiRRc;0!{jt%9F*v~fui@J zlmIs(2az#uV_`o?1STe$Cj7@6sF7#z7TH0N{9Vy$gy@Z%R$tx)Q z82cw1;ven?M!;j>xGV(tWyD{B7(%>J3CvbN9TC)*_X+!F^hI4pg{GHTDBssvxJM1$ ztT8-}jKI&m2RFhRaT@sGCrTNBd8*yb&Zf}xZ6%>Rm2keVG;=@j%aRdmp6pCS1&|ht z=v9U^zk(S#Hr{xiwRcWX3p{BIQ%co=S2c1kUc88TWAFUDRIz~KdRBS2eqgdZ=kaxz z`X{CjrT(jJbIsMAd|Z3LaZsmR_|G(qm1b)5|CENghgrCJutJL?v`iec)GkBg;)3Y9 z+^J3xOxo;M7>nooKs_`uTY~vrgZqh>z|#8o8BCJwbZxEe{N!WhksjjNL3i$0>6F+^ zYf}<>XEBE>L~Mc0LH0vpOng7(gXP4^_$E|RTCl^Bs2#mQ%Q#;viyGD3F@0b>^%eX` zLUxY;k6}m7h?$38>~%dad6WJf#>;9uwAAd@Ucf4ea!q~p%KiflZfbRKGx{)q3G=RF zTFJ2Od|0*BI;tY-vWvt=V|J843p7ISybi%YHT)6jit-oor{T|F%dF8{FZ%7GsL;AW z$XN~#TUyIpgYA@Kb}trVo`v*~9#kceU{?-0E<{;`jLFV}i%6niwb-gXHa;HJxx)mc zF1oaCRP@_y#bPS`B#4@9s+^Cqx)ig#Kq5HTy0Lc|=8xw4I(mtllesb>CF^St zT2l=Q9gWG$7U>iXn~iGkvJoC?(;Wx)dPkbE9TJY>XuKV7HPP&M1lWjt^IjoN_{GmX zj&U{o%G7%x_+1p`v~e9^Jh^Ca(LOJ-P~z8C)6z^j@{yEVijK#0`S|KkX7o4FW1o9O zOp0%4Y8R&^_x0vz-+~?jY>pTFXumryOubl&L6;QutOqWxim8Hdr*bONr|qmoi(=!#3Xqxjkoj zZ*tr|R%iJNLTQ(c=gdOVA0K%oh4eBbS?i zfl-0UZY0!vm2+)!&-{18j%>Vg@SU7y}k4rD%|RJJT7&71DY< z2Bi$EF}u$sx;S06{~>dzT;Oq&A@3RE5N?6?J!^8)3O}yg<$%OX-UY{axGR#rms@`) zxBc)mMW3gVnIp*Z7F<;zyqRwgL%M8#r)UbP)M$Pbmc2we^lmpXEdFJp-9w3CD!2C6a!hoC zE#@WL~i7M{-EGUk1~Cq!>L^`>qsx|p~BUuj2huS-b__?(ab4g zHL;VAnku@P!YNWp1;4~N`^y2)=6w2op4id~_O6feV?)tCEaLCdSI$CwDL~>32Ur*@}SuhS5 zX}ud_iEbWE<2`$VPRycfrmx(c?y*-t^`X&jbuE%}m`!oz`WXWux831aGS(WJbMa6q z^tGmEbGJ`iRzB5O{!8fC>%p+&%O-lLW%zqoWe?sU2X;sF69ttb;+R|WO|`|^k#!?{ zIIPe%YcDj>W2Rkvu>v)KLT4^uuBMp=&C z9n`~&Bh9XGsGkoj;myGrv~|GS72H9`q1b8i(Rr&CZTM(qZ6-VH`IBI|xJ#)#j}zE+ z%Ez}ObbWffwM9sb76kQuX~S53e&ym>qXRKRgPRyJg*<#2(_*tz0sk zNlPI}KY+n{_aB)RBP<%1(HtpL2OJcgMi=3*j>%(tc)(PLn^1U?q09~l;rtY|kY~?Q zI)@^B*j?yOIBIxBNu>WNaO6cw8(wt@_+lx;s--%*A$M}yt32dCIesf5#q=ZLhE>Bp z3qbI5g-uF2XZ+6Mfa#2d5}N216Fl=;x%@fym|b_NTb* zg<{PUF2&`(UV3t?gG2hujn~(;R4Z`%bOKH3vzLFp#8}31pix2u6ZbP$8lGx)IPsdLlMQq==5xCO6&w#(vL%{QtnxJ;XFuf z&Q+V$`|t2Ezj)f?MCw$%l!A*(wpAk`o0%er9+7F+$$!PN^hIeU2t6kQ5BwLe|4;u! z1kX&|`qN+j@-8kNN{&7PHvNfhq)@l6*PU$HYBKOioZ$YH3IAQjGDP3{Yi`~jg%Z#Y zLa2pA`crcRUC{p_ML{U&-Zk|7Rqu=JG79{qV5vO$|0I|ElL**|@lfZ~<_!yH%RsBb z(MREX8&6(`RCvp}Pi`^3c=aKv1IIu>cf&S=6?q3c_VqdAXO+BUK9#lh3rTE>nrZd2 z`(qs)V9!Zw+!reJElJk2;KTzI=#J+2aY_n0Y=%dY-Ls#wrWJNiGkd_S0JdXN&ih1+ zD&n9jSyDO@mw#W#L0Z z6_lI1zXjxph)7Cn;a$1-nv5sWo7bZ3XI1~czTzVkiaIEN8J zw+&JtY_y&VAK2fTGX1n^d04@O}!i6)*d5GcQv|4rzHcf~o*w z{{#1wZmz(>pF<`37j_^zlFatp|9E>`=5ZnmGiWn@RcAfNljYr#c?{|=pMb`L7e^aI zaF;B<=l3eB**dxU!HThLiJQqh)+s_?2k1cEi%*gWuh}QjlN^T5_g4hix@T zd_GDueB{!ttKDi{joI#8)%033PP*wnb*bP#C7IheqWMzTNh5$s%# z>&~rLuOz?0>fJrB&uA?tLvP=Yt!?V~o->dkOxqhC7D@3yKqc(%-O$U6O4&Ht#S6;$ z1~#jg9(Nd$9DtVL#>voNHrn;EK1mG^*E-XEhmkYWXm2O`j(7<<@jhVGGhQ8^{W$2x zF@<@7n93R`fqlR8BbG)2?i$tZ@BzF1k{`P_5E``FJ)5*!CbyD0H&>56JVp9Kb>yK@ zY+5(jr{?0a?>wU4Jv9Om(ysv77Z{~yW1fTrv2hz~Rr>V>${Rj1^eOLBP35sR0Vwkl z(z_&LwII&opSXZ)iyQ{DIs==ID`#%~Ya{)xeGM^G)0S({T zcLtOwuhou-#P3$Lu+OK@aQ60qE3b;oG&;N`c^9%Vs#eKmz75@ z!<{A3R3pE%Yk*UdA_zJew&r=OP?&TSYb8AL@pkyxhYc?Y+~^QBDhSsY(%8Dtph(1h zi3b_~jLP>@1F}#MOPO1>lb1?D-Whx7DKxRStxMch0(B5FYG8uWchy1Td7hX*^~LIY`c4dOFlaOdQJ8Td}XOv zYvB(hn;r4oR29;H-y7F-$~loFuY=XgM8NPv9nJ^;j`KG-bbiPZX2j|97l{C((rVW z>1ymATHg)2k0T9Ry1rjr7K0*$b#TF8C?x=B5({{g!7!m?1VA~AJI%5@f7PCh; zHqZBYkhCdaw)#@N%D%u?<*=z(o6wBj`Q0N0VCQ@PA@?nyT!t53_`iE1}-`HmmxKD2kwII)yK)!4eS z{*^A1wzL=TW2QG{cX{<()t+izg+DGTEWv(BP;`QUM*-+?!3>BbUB%&#=r@XeqZ~gJ z1%=m@7VQ?Va?2c3T#YNB^fle`BTJ=;9Xp@3EN|a+g{I@@1jutuG2dvy8+EW+(#y1@ zMq(QtiDq97Yq>}YJcx+8U-T~0y_1YTLvSq2lFVoIZGRtzQ+LS=LWJ;z<9@W`wa!hZCFzfs3diHJZkD?W01QCS>g)p+-Xx)1`ff353#+4T=2mNH*86hR{ zRF()EPti)XTB>ZO?Lxc@t87{$)DQcSPrTx~&Hw?HD~Anf*dQ;VkDkh;!1q%G*5hj< z;M=gD(sM~35^?s-TWyH6q3v|{hX9JrJW`FmZi)F}HBqjQrs3+%ZU*?`k@}YlUs0qL zTJS}yy2?3U38CWYVhDT+ZSBQ)n%5i{PmImjYSzyV8or8)^FtFST$@D5V2V-j9s;gZ zTu~r}7_p+LL5ce!tXoNJ=Nqf>tZ2ySC>YW@a1-N<2)2t(Et%$dp@*S$X&!YI_fXd1 zh>j-(1(qAS3hAYG4U^Knhq4S&2Mh?^>!>PsHfbopWi59f;wY9U6{XMDzsy#uS(#Bh zg&{`%qrIG4K91;4v2Z4cUOFf=dOs*i+EPG}{;`59eFsuZg9;CnsF08^*R>Pcv{_*r zAPqLB@7{HjuOT1*aZ)y_rr&<{!d#%d_@f2ylh0p!UYtNPWsR|0j}+IM-wuzy%sSJN z@F>hcF>HKEBT5^^VS!khRasT8-i|w0Kj|2~B`7O8A7o5WAHH%ah3)`FmTtu8%zvB= z21#%CE0lPY5%~oBA{k(?Tznh5NDZMoP6@R3LM~3}DUQ1-FT|LOCMhUf`aE_7xnQ4r zT?U0u*QVUKRZfXaip0D#GhUelE(c?smioHOZx;Q|g<}Y~L7|%67;5egw5$?VDpkLR zKWbS==4m!1@BhJtQ_oX~pVF@-uc^1#8?Q9fC$v)HGZj`qThubfmLa;8=Pn}A>t>=M zy5Me-DB8Sv=Bxm*zP)`BS3_05j;Gb2s;Vkq4#p!%sd~tF0$^>Y`tdr8ebQ1gxbhtHhZ!*7QiM-Er;wEG#Tf5P~Jp zjUK4dOKi1*fa6d#%%8bOqm?g{&o1Z86K;#DHtKzd*cez~EaekxPk?wzXdwjq^t#Dx zE)xMWy9pR_`oygIf!NOsN=U}OX4ET?DWT05&FFvt_$sc%vedO@Wt(Z>qW_M*u)*&8 zuB(V^YR_Ap-^q;xBoAj&5=c%MtZ%Z32!g;{q+#qhz*S=X_mI#2D>|{Vj!6RVBZUWT z>`BG4pfqi2oY!Fh_ep1s1gZ-&%HFo@t}Xa_T~gGWO{i2Ph(6KM7`8B%xzV!^BS`D88>-W_yc(T7;t)}sY2fl~ zeN3Uy)X_2%?9)4klot$T>@h~*Qb(4J&Bk*_>`RbqcoerY*unJk`By*Hx)L^;Z`R|= z7nmfr+ObnQjf4&nn_WTp+~U&T=@^zvNMiuj&wHdYQqb*?b#~>5vaH?w9>L4~>SU_E z$AvS!8T*Vdv(5P-u@{&L5er)_{<`DD0C+b&oWr}*T^d$}i#-wUp}i0dF=ZCjyihyHOa*ge-ZFv&vlP_*m;pgTzR!z# zqTZ5vkHO-&Lir}WDvtz$3>7scwa^5Dv+xr5X1&yWQoexx4he~OhlUQ7D<=&-emRi< zb=fU-ovQn zN>yq(XX#4dtEVJNp&mMrvN#8In7~5D+ZU9ScADIUA!%)vFP7*m=6zr>SUg{-Kr9na zv{UM4tmsmY-V;Qz5JV#M?G`p|wR71MB%dZ>brt#MFglX!-!kMg!!d0wMJS~b1g%C8 zf*6)ycVi0Y|3ebf3@N?${b^;p5+~2vxYZ4Yu|@`l{fWw#-U_+8KXXCHJ5I`$nZ#;{ zd>S`!Sc>kLU~faBe@bFkf?rk$I?7JSO_Y3>(Pdaw#pv=y$UB@3kMJIoOasSvhw)x# zK{km0ytJ0J-$SxMmx%3c1qe7Evee8kSPHlqH1o433raEwePn(g$?p4o66XzUExu!V z*%YIMVH!y(kH{xY_0Trrmoqne1h^TBYE&Rj*4pak4n6H2hi*HrJdN__dxATww6X4_ z<{T=h#gE*i{J)4Ut zhU6iy$8eqPSY>;yZl(-VCRU0RyW$t;BH!ekO-4One=9Ujq zm57HLj+W)4Qa#q)X1qPYvUny%xfsfX>Cz=$x^F-zGk=lq?KMh)Op8GrK07bPy!q5x z6G}MotdGBW|C@*LgaGGx*Vg|u{8z9 zQZ-9Wt*J%Lq*1LL*=*d?FVX~jFTMp`aK+%cEub1+Mssx6ni76E-+5Zrs5wr~urtM< zIXpKFt&vHuz9nEn!1cykUx75;!UCC9JLlweOn=P_((^ZwQ&GZ;FA*4!*eu>j6zLT$ z5#+6fxT4==<-w$hUCB-lKl^4%IaNwC@n~m;jxNB1S_kC=nPF{oVds3bf;ey3zA z2bx9Bw!bd^atKac16N3c$8Y@*`y`c>Ks$D?yFNT|zQ_q98+dxEr6Ii-R(U+qUful~ zo}Cf4p`}IpI<=+>4iCMh!{wm}?cYB~D7mS+HeqkF=;}C&x=OpRzmI3IEFSk6!f*wu z8mFXb-g=-KadC=DB5}n7Xn>@8v1%`$tKM9I2Psk~kYGOA0Uy#Be(8P^Gy~U2MGznM zq7JKiPH}yEb_SHXCmWAaDFGqsGjgCMN<|pg1eivg0nTrmGqclLHmr&nq1!F;_9tAH z8o@NQhyPBMOR${bZhh-_o}2RY&aebCnnij}SF>Gnj!0!eyEKzATzH!cZY&*!5bPkR zw|slQC)V1XwAeQH7_q##Z7)=7DK41IDQv~jDP|RkRrT8rbY&?f0}$2{CA zH~f_+zoX|!+U~FzH2RDP^A6{E279>lpgll6_D9_ocz6otW5jCK{4waM$@Ud*;%Fu*odSODUkBLyoKRDJVn0*e z@vVA0vx^Rw=i>Lade8la#7?T^B#aws`URjAmwHIMw|F?3rVymt49gI;`oDAr(?Qv! z6EMoSL1RL;_7X`ud})LBH%l8l-xY)mUfT>ezv#r}N5yKGH~e*K7JGCKz;CeAJ*nC*G~PA*H*;g&7>!tc~V};#90NfX)6c;@dJxZ~(gbqtQjM5w*5B z@dj;&JGz2pNRkFe{uKS$)}akW!jTu!RF4xLnu}P1ReDq98B@>7EH2`wm~Tw;Gc0Bh zu`8K*hI4=QVO-Qt#K#mJxn9R3*r7LZlfeMd)M<2x!^ovSngWZLFRhj{4Xx9B+g#Pd z$Xa_;PwG^N0oDyG{3n#oY1160Ihx9YlyW9$<&Or{nz+3xz=qUf%~!Va8k9Y)ffl`+c9xDE_#7&+v55WMMk1$%2{vd!u1S?nT8> zXx4r+e^2O@KxUD!Dpb(|cCY{2RX-JTHJO()PNcb$)#h}&gjcVN^(gHiVwpo77%Oj? zq&YFPqkzTr(FZBw-qcF0pLI+cdm<7F7Z(%nQe=3)-z`p^RCT3+(N1s<`ytG?d3dXh zPem)Fa!izY_v8h>HU5~?%~Vp5QZr8>c%9jHgb<%IJ$n#W6)4r?yTTNXc-ui#h5b2p z5-#0_uYOOOl#0r6ipocAJO}Kp$|OPuA_CLfwJ7ha4l*0uJxGI-7oM9Y-16KM5$Tk7 zQ8<~K0G!tUhqm{ChO=GYzDElpgh)tYh!TV-5#8ufBM1^DN_3+4(MA_7h{&Ut2vL&g z!DvHt(W3Vrof&;}@8#Khe{1jkfAYNVdcW^m%gSOBGOoK^=Y9Up<2VXY&g^>bwgyZ$ zbG!~T_Tnr5;5+I}4z14m86B)W_Fb_7w)nq?>p48?Q=0`*?R$9xcn-ERHmNXn9~a-=x3{>1UnFOh3?m^lQ?l zv?~BFad+@erM9X7sb0NM+<5D&+0ta%rHInIkRIv^9cngQM*6@0AYgbZfa@T&e4{;j zj@+d8qCrY#XQB=#+j03!M5wP|qMIEP2GJY-w3HcH<&%j*X-%(1*lcWsdpSDVPkO$w zaLL_`d`RkzR$}lO)_@OdXJ*(V9U~l)?kzZ~tF{f;T*D!*zkTg@|2=qpPgWAw0TGiL zvcb5mF2C)EM@Cc^UQLq2mCmgUJf|YPi8u}|GoQK-VjJF4W9Q~jZHy+Ov`(LLnA29x zO2ottMZ?cdlLwLE8mFdg(Xk#u4yf~6#PvI;U6BZ=7M!6;N(19P+1cJF=R4-`C&Lk`4%FINnE4ek)gkXt0X?w z*1yo{%DZ~3$JEh5JeNlO#(7d9&ylDCBwze#MwC=g&qO$cFOBg*F09e3h+x|FDFXp zwW_SP13X%Ko;y*@RDzYp1?XUme%OWXrv8Vz6r~m#v zvHv@2KWD{LT^6hZ3iZZ2OS?;+Cb)`t)yt?Yq8e!-{o#G9BFk`&i4*IG>pv@bpOO5{ zh2?zh9tn;%N$$?lPq`D->)Iu^2rn+A-9IlRxMNR{B)D9j6sWfTQlWQz^J^;U?@kYL ze;si2t@++_`2X{Qg#5+N0ar5m%HZGpzLHkpy5oQNI8L&pe!G7pef?+a)v}CfQqtjp z8b@cC*}TTr;iFoctsl*eOIkG^!L_@MN^UJI7TVKY$1fhoEDq^*MTrgB%r%87SG$?# zq*=Kg%$g7DnYitbn)8~=oTJBwZ8CyOEEHgmUMJ`y%0}tD5@4OM5fB zsC1gvBe*+3PP(qop~DlYV}s{rZoRVR7rKL2??$^}$@-4X>l_9?qc%V3OPS;OX!zNy zS_r5)B2oPvS0(spgdS84!za|7Uxue0n?xr9>)_G081qyS*$FM3PkhK}H(kCc)aj5- z#@)4VpToSl}ld%0lCE?mlTkdTH ze@zEF-R<81_fulTlyL;79(R?Z zb78DDVC1P=$#*F`<{55B)=KQx)B64W9b|goGHf+VZOFl2XFcT2O=J5v-i=50qY@|2 zUc|Ii3Vq0heJQZoZ)aT;?1g?96$Xu;!cr5%6u5mdU%yIZH};$p_q>(zyae&J_l`{U-iwq|aF z&&@+<&C8Eg7q7;Qf+%->%cm0vtObi+YbsoBxS_NSksB2dl~{#5F1;ym?U`m$BrVOJ zd+?3U*H;Ct$G#ye!Ok+8z+;~OB2gcndMIP2sb;jlly1(cn~m|ZQ#GnhO|?sTuw($J zkCDn00z28L*O79Y5W}%J1*{3C-A0T;l6rui1p#ZvoC7QjU7V`MpvL2L%oCF^twPlo zDYLf)?L^0GQr-Q5I!|6G1g>IyWjpfr3EhTIgI+v&$l;FCoiLzR3x*p)FYIvEzxAtp z5q!NcRfIp|RM%J~{@Xk8J*a;P@Mv>1dIe0`%0b(>oj)*~-qH?rxVVq5#$4JGNOoV& z2(baFRxa}k)OH_qoA=%q8~J-j@(&fUrh}3EAuu&kM1F@5cTE=k#uUf*8%&VGa7Bxy zc>Blw>T+b1bp#jJB9A8)ZL8M-tm>#<$SN%V>Xwut!Y7bfji1a9qo*M31TJ$H=UCr! z3tjtK*RCbO>iJS2NR$#~LAuGjd5oXq0bRk5Qwq_y$`Qvz=|{`&`!u<|G{YvP&61-W zzL40qQ=uR4LST+=f{RoScA9XHy5e((_tR zbw*$1q~Zqno>tD)I=$|Zu;CkX8@IIuk!QPXje?Qxo406O5_%{ix%UnkoGKtGFu`G(W{N$ zE^hY@|GlC8+s;2geQ|m?W*MN#9#R$0H?I-Wxz}sz+Lmp;6!?yNV#l?MScy_<(!mwv zj94bB4gD_k(owaUr(ZT<3*DzzBr>=$al+N${Dgp2rSW5@IB(53^f2oj_bxl9|0Kb_4Buwv+C_F72cNzXrUT`0wa<91)}$sai{-^~@dJsE{|_YP?EqKRxgD-PKW9PdA&)u$%2Jd}20h9$ehZs7-i~ zp?cUnWZwd1IA2@96Wf-Gnm3(t)pF+V>s)gDIH1m+vxgM(3 zUK1{!o1-cNu{eorZQfG8rIXr!^yHNejK72Et-_z4QvY_lnPUbI1DildMW@bfUoq*H zR=KC5YaGV>^@qM0Z;cOY#A0YNNA5WqcTfwR#nia*r#Wa{&R@!pi{$XsN6HM)B5_R1R>UFcu0s^~N7KwcB)eZg)%D;{=N9)E_r$q)iH z1`pXgosDY*6cB&N@Ngs76a$3m$(!BVnOO}iwtNT%1^aMq9Irm33vEmR%;WNcXXqGy zMrH`qcDQy;MIpK;`fNgkW9WN<&#{$tou${f&!-J*PmP>h8L{Wo&!wNPQB%<7Sc@}( z2s?*Wu3GX(`t>ZS56hmW)|J^>iyN*{H7&|cucX^E5_K!%TM0aR+vnNAnTa}f-%Y)? z7}zNq%@HUXx-9!$?D;e$###XP!4h@2*LH%;ff>_f{)9Zjb+z3IMOO5ylfdz`Nb03@ z`?SoosGRlVneQ5iN8Q({S?+tI(#$b6yp#Lmg$-CsKKN|OkEM!sw7cz$^Wv5C=xi^M zvtV!D&S&YF<_A!-*-{d2n?)ME+wL^;h_qz%j+;`C_SDZQPwOgLr#5`AvqJ&|<3;>St0nq@Z88NeinkmP*0UxT)#@lBuPKiu0yQC? z)oXsS)ju$$M&bMK@K_%fnEYTT$9mp&39<;9iA#G&gLO=q3~(Ybt<~=DpWETeu5}$f z$jJTU;>m>kw>u2E{}CfN;~w~t+vUlJZif8~FAXCYYUc`?`Gq)I$!U~^wTc4idPW>$ z#30s-cE}$I6C10rztd;K=+}b#z?eILjbxU?hUwcobIR{jy$LQU$WP?)dBqAMR_bn3 z=%`j8$?ooW5k(xZ4OCJq%o;gfi+ZZ5Yf`qdQLL$aYVnXKpPvRj?`ERqk2v2=-AxJo zmIYy^WhLY7^JF|>4BcUkz-BeGkn*|G94hP8+3G)e!V2m4g*JTiS0d%1SA)o1e~qWI zrazf4U$s`+Ez%*I0B_i%_tAKHlh9QlYPsqX!WOqf%h%V8wqV7O_tdv`2xB&kcF%XM z&G{l$jG-Jd^uM>qrWUV2NhUG_anhG(JrLVG$#-?NMWa-iA@ganes?1umig)bgpa7P zzie`&9*+2k(PNwAic+?^F@M4wEWGCzW{Trp+$^m;{Bgr;F114wl16R9as&HIEkrk^ z_($!iW9!^4OxfNf?PrF`DhnM4B`X)%!R~`+CYK_;W`pI&)#UlNJjyCDoViYcCqfdR z9uj@muR2+yu{S@04mM1=n^bX@YvZM7vVboi@`+jg1gG1@=RcM(x6)ROzS^U8+Lrn+ zq4KiXiGHNQ1l?lXN+w-2zGY-<5Y@D6|;Ti7RA$pDmU`M6p=$E=hUl7sSzSF{nWJ zy;VKCz}7QJR3G6kqIpz$x*vnL2LziA#m2ES37BNSvgyN`ryfC&>ZXq*7 zWv2ZCB{~iAX~i`hTK_~z=#n5gY(J9VyJ*x@m5dDjbdJ2JEhqbnkw7nTOH8C^PxsjR z*HO=>S~RmW8ntPg`f%BmNTbCvn04QJb`>35j1cEOnfrhyp~xSQ&dPz0uJV<-*O-h3 zg{wcMo)j*+Rd>n^9HFbL@dF=uwvjs@zjSGKd~A7^#sN7#a5c+!KTdO(aHjAh`3_E9 z)JhXc=WEAntGHV7YHzU5Ojr(ux0P|z%DKoVK6fzDDtOcmOvUB86MMdpz?_H2O%-=)QjdB_a$&HBveX2SJ#ky#FYF;=CS zImh`*5V@v9afJ{<;4!ShD9;MQn)Wgt(rGL)$7Kw`72JC} zKla{MFChpR71Tv4L~00;9n5KqAO4En5r4CGt@O2z;6VAU>%_-O&$x^*cMegUwI7BH zltZh=93sj_f#dW2!%}rA*1@3E`37$jDF>bwsZ|q;w*p`R!&sjZ-k=!m_X_bWKpB0Q zLCBlBSkz*;>P7DC4NYz{Jl`+rkUNjEhE)H&G0{KZx_7-@b{vksDpYdAZ_TSSYd&oR zE}-|o04cGB*up3Ucy*>f!A%uOydS=J`Be+9L%MjZ_f5@1HqHRZM7ixF)iNkCYAs)| zdnva?T)yk^{8UDxwy$XN0dNGQL%1Z-B6jf$5mP@1W)z3&e0itod3!^g@nFa6*(>R@ z*QW>C$9fpN8p2r9ZbECr)O0UfM$J!t&(8QW80^ut^qxqF_oVA^@I!o|@K`)*Zp_mX z(JT_ZI*G#x1!00I3e%wv__zpUhhS$DGtuJZF>g2UP;|Kddd=zg{X4op5B#&n;+^Y0 z1LMpa54m3AYv4bo8r9KeRj3v9IdSLKt@3p^Z?V%sWs*JM8U-TnZdO^AyfmGONCLy7 zfQXx{oFr%X=zKH%dzn6r(>auW!cp)0h^qCJKGui#CmvOEAm>H1S(v&XXg3A8gMtjq zo349K((*rY1j&it^DaG-i2&9bcB^a#jg*4g(9of*Mf6yi^;C!}3vS2iaK2sRIn=KD zYfXe0s%M=GCi2XhCNz=DJtV0h^jm2BR#{9r?B(#Yc*r_dd;o8MtS61Td=XAE2LBqH z^;&GZO<{d+i8HhonOVzKW{avkjKV1$HsGzOOxEqr94kl@PkqrMJBfAAGG~GeV-xZs zV2IYeH5zH@Nz2QVM<*10_o^T0f17YDi=Fb`D9a?p53+b>nEA+||9B!k5AOgu?~u+# zE;D6{li;gieh|j`;%=v!2_ni09qnwAUcoaSU0l2Wd6PkRmTOop?V+c7E~%(Z!mvg` z6nrXgTfQX2eqB)_-|V4;8VTLfy0s`PG1$gCGqP;6)5LDwno9szPVs*5l*hOp)k?$EpjCF^ANgM{tj)_ zCy6}V;&{(`qG9|x#Uv}MBbG}mWw1)7=&HtI$eW#n>pzLEe*5lm(MfQ~VW84rIsiSK zD`jCjw24F<72XaJv|GO@_6K}aM^!dNKiQ~f*#;hErfJeFWl%S~>2@*_6VlJ?S<5R_ zG_%QnvEZf?TFvz>2;4U|#!4$f+*=bsT-9TojlA0Vd)m{AkCgR6K32OL=jOYTVZuiP z7Sx!DcXmTrin;phffBXkI@1%pD_-8pXB@A0#|Oy<-p!EN!|l2$#0inl>)b1OQThtI z#%sMSIIDUZ_fxOWiK|{KBd*6I6u`bezafQbS%^4>S1#NRdf$VD6J7~bmjvmAH|Wt_s`%M$6CH)cL}bH#d~X-KI{f}A@-JKiV4I(Oxwptl5wDNK`Q#3+ViqpQEy zJQ*UGsB|pK26rrYA509 zh*p5Jwv<^oY8OjJwzV?~1hB8fQ`o5Pd8PtneK}&7!<6ZWkv_KEJ#<*$lia2vYwELD zt5|1p_d}>r{EJ4UtxlFa{wLbAn$^!=0+5}I5?pM3lGwH3o-?-?5XTV~cY@-%*Z8Dssh>Yzb*y#rNj$nKiU% G9 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 S;opaVue)NhqQ$rMAO06wEyjod literal 0 HcmV?d00001 diff --git a/examples/esorics23-bluetooth/results/results_mesh.png b/examples/esorics23-bluetooth/results/results_mesh.png new file mode 100644 index 0000000000000000000000000000000000000000..2ff8d6496ff50357e7b60fd658faf7a4704fefa9 GIT binary patch literal 466985 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±j+T1r*-@J@7M-F=) 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Ð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%0Dg>=qrcd>QGgC#A_39JHFdgwGq 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

    XYij|Lv%*AWS<730n1o||s3 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 LNEY3H`s)7z8Kbla literal 0 HcmV?d00001