# Copyright (c) 2021 Project CHIP Authors
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
# Auto-generated scripts for harness use only, please review before automation. The endpoints and cluster names are currently set to default

name:
    3.3.7. [TC-DD-3.7] Commissioning Flow - Concurrent - Negative Scenario [DUT
    - Commissioner]

PICS:
    - MCORE.ROLE.COMMISSIONER

config:
    nodeId: 0x12344321
    cluster: "Basic"
    endpoint: 0

tests:
    - label:
          "Commissioner has regulatory and fabric information available and has
          accurate date, time and timezone"
      verification: |
          Verify in TH as server side
          sudo ./chip-all-clusters-app --wifi --discriminator 3841

          [1653471956.966855][10713:10713] CHIP:SPT: PASE PBKDF iterations set to 1000
          [1653471956.966887][10713:10713] CHIP:SPT: LinuxCommissionableDataProvider didn"t get a PASE salt, generating one.
          [1653471956.972152][10713:10713] CHIP:DL: Device Configuration:
          [1653471956.972270][10713:10713] CHIP:DL:   Serial Number: TEST_SN
          [1653471956.972315][10713:10713] CHIP:DL:   Vendor Id: 65521 (0xFFF1)
          [1653471956.972354][10713:10713] CHIP:DL:   Product Id: 32769 (0x8001)
          [1653471956.972388][10713:10713] CHIP:DL:   Hardware Version: 0
          [1653471956.972413][10713:10713] CHIP:DL:   Setup Pin Code (0 for UNKNOWN/ERROR): 20202021
          [1653471956.972435][10713:10713] CHIP:DL:   Setup Discriminator (0xFFFF for UNKNOWN/ERROR): 3841 (0xF01)
          [1653471956.972464][10713:10713] CHIP:DL:   Manufacturing Date: (not set)
          [1653471956.972488][10713:10713] CHIP:DL:   Device Type: 65535 (0xFFFF)
          [1653471956.972509][10713:10713] CHIP:-: ==== Onboarding payload for Standard Commissioning Flow ====
          [1653471956.972546][10713:10713] CHIP:SVR: SetupQRCode: [MT:-24J0CEK01KA0648G00]
          [1653471956.972579][10713:10713] CHIP:SVR: Copy/paste the below URL in a browser to see the QR Code:
          [1653471956.972600][10713:10713] CHIP:SVR: https://dhrishi.github.io/connectedhomeip/qrcode.html?data=MT%3A-24J0CEK01KA0648G00
          [1653471956.972632][10713:10713] CHIP:SVR: Manual pairing code: [34970112332]
          [1653471956.972654][10713:10713] CHIP:-: ==== Onboarding payload for Custom Commissioning Flows ====
          [1653471956.972715][10713:10713] CHIP:SVR: SetupQRCode: [MT:-24J048N01KA0648G00]
          [1653471956.972748][10713:10713] CHIP:SVR: Copy/paste the below URL in a browser to see the QR Code:
          [1653471956.972769][10713:10713] CHIP:SVR: https://dhrishi.github.io/connectedhomeip/qrcode.html?data=MT%3A-24J048N01KA0648G00
          [1653471956.972803][10713:10713] CHIP:SVR: Manual pairing code: [749701123365521327694]

          Verify in DUT as client side
          ./chip-tool pairing code 1 MT:-24J0CEK01KA0648G00
          ...
          [1657226543861] [30621:16744161] CHIP: [IN] SecureSession[0x6000007cc000]: Activated - Type:1 LSID:47293
          [1657226543861] [30621:16744161] CHIP: [IN] New secure session activated for device <FFFFFFFB00000000, 0>, LSID:47293 PSID:201!
          [1657226543861] [30621:16744161] CHIP: [CTL] Remote device completed SPAKE2+ handshake
          [1657226543861] [30621:16744161] CHIP: [CTL] Stopping commissioning discovery over DNS-SD
          [1657226543861] [30621:16744161] CHIP: [TOO] Pairing Success
          [1657226543861] [30621:16744161] CHIP: [TOO] PASE establishment successful
          [1657226543861] [30621:16744161] CHIP: [CTL] Commissioning stage next step: "SecurePairing" -> "ReadCommissioningInfo"
      disabled: true

    - label:
          "Commissioner and Commissionee discover each other and connect via the
          discovery mode applicable for the DUT."
      verification: |
          Verify in DUT as client side
          ./chip-tool pairing code 1 MT:-24J0AFN00KA0648G00
          ...
          [1657226543861] [30621:16744161] CHIP: [IN] SecureSession[0x6000007cc000]: Activated - Type:1 LSID:47293
          [1657226543861] [30621:16744161] CHIP: [IN] New secure session activated for device <FFFFFFFB00000000, 0>, LSID:47293 PSID:201!
          [1657226543861] [30621:16744161] CHIP: [CTL] Remote device completed SPAKE2+ handshake
          [1657226543861] [30621:16744161] CHIP: [CTL] Stopping commissioning discovery over DNS-SD
          [1657226543861] [30621:16744161] CHIP: [TOO] Pairing Success
          [1657226543861] [30621:16744161] CHIP: [TOO] PASE establishment successful
          [1657226543861] [30621:16744161] CHIP: [CTL] Commissioning stage next step: "SecurePairing" -> "ReadCommissioningInfo"


          Verify in TH as server side
          $ ./out/all-clusters-app/chip-all-clusters-app
          ...
          [1657226543.948995][369114:369114] CHIP:IN: SecureSession[0xaaaab60788e0]: Activated - Type:1 LSID:201
          [1657226543.949023][369114:369114] CHIP:IN: New secure session created for device <FFFFFFFB00000000, 0>, LSID:201 PSID:47293!
          [1657226543.949048][369114:369114] CHIP:SVR: Commissioning completed session establishment step
      disabled: true

    - label:
          "Establish encryption keys with Password Authenticated Session
          Establishment on the commissioning channel"
      verification: |
          Verify in DUT as client side

          CHIP:SC: Sent PBKDF param request
          CHIP:CTL: Setting attestation nonce to random value
          CHIP:CTL: Setting CSR nonce to random value
          CHIP:CTL: Commission called for node ID 0x000000000001B669
          CHIP:EM: Received message of type 0x21 with protocolId (0, 0) and MessageCounter:1341084110 on exchange 63762i
          CHIP:EM: Found matching exchange: 63762i, Delegate: 0xffff8c000bc0
          CHIP:EM: Rxd Ack; Removing MessageCounter:850320430 from Retrans Table on exchange 63762i
          CHIP:EM: Removed CHIP MessageCounter:850320430 from RetransTable on exchange 63762i
          CHIP:SC: Received PBKDF param response
      disabled: true

    - label:
          "Commissioner SHALL re-arm Fail-safe timer on Commissionee within 60s
          (the autonomously Fail-safe timer length set by Commissionee)"
      verification: |
          Verify in DUT as client side

          CHIP:CTL: Commissioning stage next step: "ReadCommissioningInfo" -> "ArmFailSafe"
          CHIP:CTL: Performing next commissioning step "ArmFailSafe"
          CHIP:CTL: Arming failsafe (60 seconds)
      disabled: true

    - label: "Reboot TH and prepare for commissioning"
      verification: |
          1. Using TH=all-clusters-app, exit the app, re-launch app
      disabled: true

    - label: "Commissioner should return to step 2"
      verification: |
          Verify in DUT as client side

          ./chip-tool discover commissionables
          Waiting for device responses...
          CHIP:CTL: Generating ICAC
          CHIP:DL: AUDIT: ===== RANDOM NUMBER GENERATOR AUDIT START ====
          CHIP:DL: AUDIT: * Validate buf1 and buf2 are <<<different every run/boot!>>>
          CHIP:DL: AUDIT: * Validate r1 and r2 are <<<different every run/boot!>>>
          CHIP:DL: AUDIT: * buf1: 3BE3E264C0A0A053248E93609D22044A
          CHIP:DL: AUDIT: * buf2: E69C8767AD6B60907AD3633E774F38EB
          CHIP:DL: AUDIT: * r1: 0x2A0E6454 r2: 0x16315893
          CHIP:DL: AUDIT: ===== RANDOM NUMBER GENERATOR AUDIT END ====
          CHIP:DL: writing settings to file (/tmp/chip_counters.ini-9yXPat)
          CHIP:DL: renamed tmp file to file (/tmp/chip_counters.ini)
          CHIP:DL: NVS set: chip-counters/reboot-count = 23 (0x17)
          CHIP:DL: Got Ethernet interface: eth0
          CHIP:DL: Found the primary Ethernet interface:eth0
          CHIP:DL: Got WiFi interface: wlan0
          CHIP:DL: Failed to reset WiFi statistic counts
          CHIP:IN: UDP::Init bind&listen port=5541
          CHIP:IN: UDP::Init bound to port=5541
          CHIP:IN: UDP::Init bind&listen port=5541
          CHIP:IN: UDP::Init bound to port=5541
          CHIP:IN: TransportMgr initialized
          CHIP:DIS: Init fabric pairing table with server storage
          CHIP:DL: writing settings to file (/tmp/chip_counters.ini-zgCtZd)
          CHIP:DL: renamed tmp file to file (/tmp/chip_counters.ini)
          CHIP:DL: NVS set: chip-counters/GlobalMCTR = 25000 (0x61A8)
          CHIP:CTL: System State Initialized...
          CHIP:DL: MDNS failed to join multicast group on veth5731933 for address type IPv4: ../th
          CHIP:DL: MDNS failed to join multicast group on vethbf7bfa6 for address type IPv4: ../th
          CHIP:DL: MDNS failed to join multicast group on vethcf434e5 for address type IPv4: ../th
          CHIP:ZCL: Using ZAP configuration...
          CHIP:DIS: Verifying the received credentials
          CHIP:IN: Generating compressed fabric ID using uncompressed fabric ID 0x0000000000000000
          CHIP:IN: 0x04, 0x66, 0xd6, 0xcf, 0x4c, 0x1e, 0x11, 0xc3,
          CHIP:IN: 0x52, 0x4f, 0xa6, 0x8c, 0x6e, 0x65, 0x46, 0xdc,
          CHIP:IN: 0x90, 0x1b, 0x5f, 0x42, 0x9f, 0x69, 0xd1, 0xb7,
          CHIP:IN: 0x7d, 0xf3, 0x6b, 0x54, 0x12, 0x6c, 0x12, 0x59,
          CHIP:IN: 0x5b, 0xc3, 0x07, 0x1c, 0x5c, 0xf4, 0x4e, 0x5f,
          CHIP:IN: 0x71, 0x06, 0x9a, 0xbb, 0x2f, 0xef, 0x20, 0x0d,
          CHIP:IN: 0x0e, 0x9b, 0x26, 0x3e, 0x8d, 0x46, 0x09, 0xd8,
          CHIP:IN: 0xfd, 0xa1, 0xc0, 0x10, 0x4f, 0x05, 0x14, 0x99,
          CHIP:IN: 0x22,
          CHIP:IN: Generated compressed fabric ID
          CHIP:IN: 0x4a, 0x53, 0x1e, 0x52, 0x06, 0xed, 0x06, 0xda,
          CHIP:DIS: Added new fabric at index: 1, Initialized: 1
          CHIP:DIS: Assigned compressed fabric ID: 0x4A531E5206ED06DA, node ID: 0x000000000001B669
          CHIP:CTL: Joined the fabric at index 1. Compressed fabric ID is: 0x4A531E5206ED06DA
          CHIP:DL: CHIP task running
          CHIP:DIS: Attempt to mDNS broadcast failed:  ../third_party/connectedhomeip/src/inet/UDP
          CHIP:DIS: Attempt to mDNS broadcast failed:  ../third_party/connectedhomeip/src/inet/UDP
          CHIP:DIS: Attempt to mDNS broadcast failed:  ../third_party/connectedhomeip/src/inet/UDP
          CHIP:DIS: Attempt to mDNS broadcast failed:  ../third_party/connectedhomeip/src/inet/UDP
          CHIP:DIS: Discovered Node:
          CHIP:DIS:      Host name:              EEAABADABAD0DDCA        CHIP:DIS:      Port:                   5540
          CHIP:DIS:      Long discriminator:     3840
          CHIP:DIS:      Vendor ID:              9050
          CHIP:DIS:      Product ID:             65279
          CHIP:DIS:      Commissioning Mode      1
          CHIP:DIS:      Device Type             0
          CHIP:DIS:      Device Name
          CHIP:DIS:      Rotating Id             00007C5F6E176CD40F68685D100A1CF8A98B
          CHIP:DIS:      Pairing Instruction
          CHIP:DIS:      Pairing Hint            0x21
          CHIP:DIS:      Address 0:              2402:e280:2108:181:dea6:32ff:fef9:f0a1
          CHIP:DIS:      Address 1:              fe80::dea6:32ff:fef9:f0a1
          CHIP:DIS:      Address 2:              192.168.1.12
          CHIP:DIS: Discovered Node:
          CHIP:DIS:      Host name:              EEAABADABAD0DDCA        CHIP:DIS:      Port:                   5540
          CHIP:DIS:      Long discriminator:     3840
          CHIP:DIS:      Vendor ID:              9050
          CHIP:DIS:      Product ID:             65279
          CHIP:DIS:      Commissioning Mode      1
          CHIP:DIS:      Device Type             0
          CHIP:DIS:      Device Name
          CHIP:DIS:      Rotating Id             00007C5F6E176CD40F68685D100A1CF8A98B
          CHIP:DIS:      Pairing Instruction
          CHIP:DIS:      Pairing Hint            0x21
          CHIP:DIS:      Address 0:              2402:e280:2108:181:dea6:32ff:fef9:f0a1
          CHIP:DIS:      Address 1:              fe80::dea6:32ff:fef9:f0a1
          CHIP:DIS:      Address 2:              192.168.1.12
          CHIP:DIS: Discovered Node:
          CHIP:DIS:      Host name:              EEAABADABAD0DDCA        CHIP:DIS:      Port:                   5540
          CHIP:DIS:      Long discriminator:     3840
          CHIP:DIS:      Vendor ID:              9050
          CHIP:DIS:      Product ID:             65279
          CHIP:DIS:      Commissioning Mode      1
          CHIP:DIS:      Device Type             0
          CHIP:DIS:      Device Name
          CHIP:DIS:      Rotating Id             00007C5F6E176CD40F68685D100A1CF8A98B
          CHIP:DIS:      Pairing Instruction
          CHIP:DIS:      Pairing Hint            0x21
          CHIP:DIS:      Address 0:              2402:e280:2108:181:dea6:32ff:fef9:f0a1
          CHIP:DIS:      Address 1:              fe80::dea6:32ff:fef9:f0a1
          CHIP:DIS:      Address 2:              192.168.1.12
          CHIP:DIS: Discovered Node:
          CHIP:DIS:      Host name:              EEAABADABAD0DDCA        CHIP:DIS:      Port:                   5540
          CHIP:DIS:      Long discriminator:     3840
          CHIP:DIS:      Vendor ID:              9050
          CHIP:DIS:      Product ID:             65279
          CHIP:DIS:      Commissioning Mode      1
          CHIP:DIS:      Device Type             0
          CHIP:DIS:      Device Name
          CHIP:DIS:      Rotating Id             00007C5F6E176CD40F68685D100A1CF8A98B
          CHIP:DIS:      Pairing Instruction
          CHIP:DIS:      Pairing Hint            0x21
          CHIP:DIS:      Address 0:              2402:e280:2108:181:dea6:32ff:fef9:f0a1
          CHIP:DIS:      Address 1:              fe80::dea6:32ff:fef9:f0a1
          CHIP:DIS:      Address 2:              192.168.1.12
          CHIP:DIS: Discovered Node:
          CHIP:DIS:      Host name:              EEAABADABAD0DDCA        CHIP:DIS:      Port:                   5540
          CHIP:DIS:      Long discriminator:     3840
          CHIP:DIS:      Vendor ID:              9050
          CHIP:DIS:      Product ID:             65279
          CHIP:DIS:      Commissioning Mode      1
          CHIP:DIS:      Device Type             0
          CHIP:DIS:      Device Name
          CHIP:DIS:      Rotating Id             00007C5F6E176CD40F68685D100A1CF8A98B
          CHIP:DIS:      Pairing Instruction
          CHIP:DIS:      Pairing Hint            0x21
          CHIP:DIS:      Address 0:              2402:e280:2108:181:dea6:32ff:fef9:f0a1
          CHIP:DIS:      Address 1:              fe80::dea6:32ff:fef9:f0a1
          CHIP:DIS:      Address 2:              192.168.1.12
          CHIP:DIS: Discovered Node:
          CHIP:DIS:      Host name:              EEAABADABAD0DDCA        CHIP:DIS:      Port:                   5540
          CHIP:DIS:      Long discriminator:     3840
          CHIP:DIS:      Vendor ID:              9050
          CHIP:DIS:      Product ID:             65279
          CHIP:DIS:      Commissioning Mode      1
          CHIP:DIS:      Device Type             0
          CHIP:DIS:      Device Name
          CHIP:DIS:      Rotating Id             00007C5F6E176CD40F68685D100A1CF8A98B
          CHIP:DIS:      Pairing Instruction
          CHIP:DIS:      Pairing Hint            0x21
          CHIP:DIS:      Address 0:              2402:e280:2108:181:dea6:32ff:fef9:f0a1
          CHIP:DIS:      Address 1:              fe80::dea6:32ff:fef9:f0a1
          CHIP:DIS:      Address 2:              192.168.1.12
      disabled: true

    - label:
          "Establish encryption keys with Password Authenticated Session
          Establishment on the commissioning channel"
      verification: |
          Verify in DUT as client side

          CHIP:SC: Sent PBKDF param request
          CHIP:CTL: Setting attestation nonce to random value
          CHIP:CTL: Setting CSR nonce to random value
          CHIP:CTL: Commission called for node ID 0x000000000001B669
          CHIP:EM: Received message of type 0x21 with protocolId (0, 0) and MessageCounter:1341084110 on exchange 63762i
          CHIP:EM: Found matching exchange: 63762i, Delegate: 0xffff8c000bc0
          CHIP:EM: Rxd Ack; Removing MessageCounter:850320430 from Retrans Table on exchange 63762i
          CHIP:EM: Removed CHIP MessageCounter:850320430 from RetransTable on exchange 63762i
          CHIP:SC: Received PBKDF param response
      disabled: true

    - label:
          "Commissioner SHALL re-arm Fail-safe timer on Commissionee within 60s
          (the autonomously Fail-safe timer length set by Commissionee)"
      verification: |
          Verify in DUT as client side

          CHIP:CTL: Commissioning stage next step: "ReadCommissioningInfo" -> "ArmFailSafe"
          CHIP:CTL: Performing next commissioning step "ArmFailSafe"
          CHIP:CTL: Arming failsafe (60 seconds)
      disabled: true

    - label:
          "Commissioner SHALL configure regulatory information in the
          Commissionee."
      PICS: MCORE.COM.WIRELESS
      verification: |
          Verify in DUT as client side

          Performing next commissioning step "ConfigRegulatory"
          [1653471968.202645][30157:30162] CHIP:CTL: Setting Regulatory Config
          [1653471968.202666][30157:30162] CHIP:CTL: No regulatory config supplied by controller, leaving as device default (0)

          Verify in TH as server side
           NVS set: chip-config/regulatory-location = 0 (0x0)
      disabled: true

    - label:
          "Commissioner requests operational CSR from Commissionee with
          OperationalCSRRequest command"
      verification: |
          Verify in DUT as client side

          CHIP:ZCL: OpCreds: commissioner has requested a CSR
          CHIP:ZCL: OpCreds: NewCertificateSigningRequest returned ../../third_party/connectedhomeip/src/crypto/CHIPCryptoPALOpenSSL.cpp:1114: Success
      disabled: true

    - label:
          "Commissioner configures operational credentials on DUT if not
          previously installed"
      verification: |
          Verify in DUT as client side

          CHIP:CTL: Performing next commissioning step "SendTrustedRootCert"
          CHIP:CTL: Sending root certificate to the device
          CHIP:DMG: ICR moving to [AddingComm]
          CHIP:DMG: ICR moving to [AddedComma]
          CHIP:IN: Prepared secure message 0xaaaafc0d5be8 to 0x000000000001B669 (1)  of type 0x8 and protocolId (0, 1) on exchange 63770i with MessageCounter:695615.
          CHIP:IN: Sending encrypted msg 0xaaaafc0d5be8 with MessageCounter:695615 to 0x000000000001B669 (1) at monotonic time: 0000000000FBA3DE msec
          CHIP:DMG: ICR moving to [CommandSen]
          CHIP:CTL: Sent root certificate to the device
      disabled: true

    - label:
          "Commissioner configures itself as administrator in ACL on TH if
          needed"
      verification: |
          Verify in DUT as client side after commissioning



          [1646909537.115328][3145:3150] CHIP:CTL: Sending CSR request to 0xffffac001730 device
          [1646909537.115512][3145:3150] CHIP:DMG: ICR moving to [AddingComm]
          [1646909537.115589][3145:3150] CHIP:DMG: ICR moving to [AddedComma]
          [1646909537.115861][3145:3150] CHIP:IN: Prepared secure message 0xffffb67cbd98 to 0x0000000000000001 (1)  of type 0x8 and protocolId (0, 1) on exchange 7731i with MessageCounter:8191681.
          [1646909537.115959][3145:3150] CHIP:IN: Sending encrypted msg 0xffffb67cbd98 with MessageCounter:8191681 to 0x0000000000000001 (1) at monotonic time: 10877964 msec
          [1646909537.116173][3145:3150] CHIP:DMG: ICR moving to [CommandSen]
          [1646909537.116242][3145:3150] CHIP:CTL: Sent CSR request, waiting for the CSR
          [1646909537.116356][3145:3150] CHIP:DMG: ICR moving to [AwaitingDe]
          [1646909537.193355][3145:3150] CHIP:DL: HandlePlatformSpecificBLEEvent 16387
          [1646909537.241579][3145:3148] CHIP:DL: Indication received, conn = 0xffffa803b310
          [1646909537.241838][3145:3150] CHIP:DL: HandlePlatformSpecificBLEEvent 16389
          [1646909537.341266][3145:3148] CHIP:DL: Indication received, conn = 0xffffa803b310
          [1646909537.341523][3145:3150] CHIP:DL: HandlePlatformSpecificBLEEvent 16389
          [1646909537.341903][3145:3150] CHIP:EM: Received message of type 0x9 with protocolId (0, 1) and MessageCounter:2304337 on exchange 7731i
          [1646909537.341988][3145:3150] CHIP:EM: Found matching exchange: 7731i, Delegate: 0xffffa8026ab0
          [1646909537.342086][3145:3150] CHIP:DMG: ICR moving to [ResponseRe]
          [1646909537.342191][3145:3150] CHIP:DMG: InvokeResponseMessage =
          [1646909537.342251][3145:3150] CHIP:DMG: {
          [1646909537.342310][3145:3150] CHIP:DMG:         suppressResponse = false,
          [1646909537.342370][3145:3150] CHIP:DMG:         InvokeResponseIBs =
          [1646909537.342450][3145:3150] CHIP:DMG:         [
          [1646909537.342511][3145:3150] CHIP:DMG:                 InvokeResponseIB =
          [1646909537.342598][3145:3150] CHIP:DMG:                 {
          [1646909537.342662][3145:3150] CHIP:DMG:                         CommandDataIB =
          [1646909537.342749][3145:3150] CHIP:DMG:                         {
          [1646909537.342832][3145:3150] CHIP:DMG:                                 CommandPathIB =
          [1646909537.342915][3145:3150] CHIP:DMG:                                 {
          [1646909537.342998][3145:3150] CHIP:DMG:                                         EndpointId = 0x0,
          [1646909537.343091][3145:3150] CHIP:DMG:                                         ClusterId = 0x3e,
          [1646909537.343177][3145:3150] CHIP:DMG:                                         CommandId = 0x5,
          [1646909537.343262][3145:3150] CHIP:DMG:                                 },
          [1646909537.343346][3145:3150] CHIP:DMG:
          [1646909537.343420][3145:3150] CHIP:DMG:                                 CommandData =
          [1646909537.343548][3145:3150] CHIP:DMG:                                 {
          [1646909537.343632][3145:3150] CHIP:DMG:                                         0x0 = [
          [1646909537.343772][3145:3150] CHIP:DMG:                                                 0x15, 0x30, 0x1, 0xcb, 0x30, 0x81, 0xc8, 0x30, 0x70, 0x2, 0x1, 0x0, 0x30, 0xe, 0x31, 0xc, 0x30, 0xa, 0x6, 0x3, 0x55, 0x4, 0xa, 0xc, 0x3, 0x43, 0x53, 0x52, 0x30, 0x59, 0x30, 0x13, 0x6, 0x7, 0x2a, 0x86, 0x48, 0xce, 0x3d, 0x2, 0x1, 0x6, 0x8, 0x2a, 0x86
          [1646909537.343880][3145:3150] CHIP:DMG:                                 ]
          [1646909537.343968][3145:3150] CHIP:DMG:                                         0x1 = [
          [1646909537.344094][3145:3150] CHIP:DMG:                                                 0xbd, 0xef, 0xb7, 0x8c, 0x5, 0x95, 0x9b, 0x60, 0xf4, 0xb1, 0xf7, 0x9c, 0x24, 0x50, 0x51, 0x9c, 0x59, 0x46, 0x97, 0x5e, 0x89, 0xe8, 0x7d, 0x29, 0x88, 0xac, 0x45, 0xed, 0xa6, 0xca, 0xac, 0x55, 0x2a, 0x7e, 0x11, 0x71, 0xe9, 0x68, 0x0, 0x91, 0xe, 0x23,
          [1646909537.344193][3145:3150] CHIP:DMG:                                 ]
          [1646909537.344274][3145:3150] CHIP:DMG:                                 },
          [1646909537.344349][3145:3150] CHIP:DMG:                         },
          [1646909537.344442][3145:3150] CHIP:DMG:
          [1646909537.344508][3145:3150] CHIP:DMG:                 },
          [1646909537.344588][3145:3150] CHIP:DMG:
          [1646909537.344646][3145:3150] CHIP:DMG:         ],
          [1646909537.344721][3145:3150] CHIP:DMG:
          [1646909537.344779][3145:3150] CHIP:DMG:         InteractionModelRevision = 1
          [1646909537.344837][3145:3150] CHIP:DMG: },
          [1646909537.344985][3145:3150] CHIP:DMG: Received Command Response Data, Endpoint=0 Cluster=0x0000_003E Command=0x0000_0005
          [1646909537.345068][3145:3150] CHIP:CTL: Received certificate signing request from the device
          [1646909537.345139][3145:3150] CHIP:CTL: Getting certificate chain for the device from the issuer
          [1646909537.347800][3145:3150] CHIP:CTL: Verifying Certificate Signing Request
          [1646909537.349300][3145:3150] CHIP:CTL: Generating NOC
          [1646909537.350268][3145:3150] CHIP:CTL: Providing certificate chain to the commissioner
          [1646909537.350347][3145:3150] CHIP:CTL: Received callback from the CA for NOC Chain generation. Status ../../third_party/connectedhomeip/src/controller/ExampleOperationalCredentialsIssuer.cpp:225: Success
      disabled: true

    - label:
          "Commissioner configures operational network on TH if TH both supports
          and requires"
      verification: |
          Verify in DUT as client side

          CHIP:CTL: Operational credentials provisioned on device 0xffff8c000b60
          CHIP:TOO: Secure Pairing Success
      disabled: true

    - label:
          "Commissioner instructs Commissionee to connect to operational network
          if not already connected"
      verification: |
          Verify in DUT as client side

          CHIP:CTL: Performing next commissioning step "FindOperational"
          CHIP:CSM: FindOrEstablishSession: PeerId = BFCBED670D527591:000000000001B669
          CHIP:CSM: FindOrEstablishSession: No existing OperationalSessionSetup instance found
      disabled: true

    - label: "Reboot TH"
      verification: |
          1. Using TH=all-clusters-app, exit the app, re-launch app
      disabled: true

    - label:
          "Commissioner should return to the same state as step 13 to continue
          commissioning (i.e. Commissioner configure operational network on TH
          if TH both supports and requires)"
      verification: |
          Verify in DUT as client side

          CHIP:CTL: Operational credentials provisioned on device 0xffff8c000b60
          CHIP:TOO: Secure Pairing Success
      disabled: true

    - label:
          "Commissioner instructs Commissionee to connect to operational network
          if not already connected"
      verification: |
          Verify in DUT as client side

          CHIP:CTL: Performing next commissioning step "FindOperational"
          CHIP:CSM: FindOrEstablishSession: PeerId = BFCBED670D527591:000000000001B669
          CHIP:CSM: FindOrEstablishSession: No existing OperationalSessionSetup instance found
      disabled: true

    - label: "Commissioner starts discovery of TH using Operational Discovery"
      verification: |
          Verify in DUT as client side

          CHIP:DIS: Resolving BFCBED670D527591:000000000001B669 ...
          CHIP:DIS: Operational node lookup already in progress. Will NOT start a new one.
          CHIP:DMG: ICR moving to [AwaitingDe]
          CHIP:EM: Sending Standalone Ack for MessageCounter:9439913 on exchange 63771i
          CHIP:IN: Prepared secure message 0xffffa1c07938 to 0x000000000001B669 (1)  of type 0x10 and protocolId (0, 0) on exchange 63771i with MessageCounter:695619.
          CHIP:IN: Sending encrypted msg 0xffffa1c07938 with MessageCounter:695619 to 0x000000000001B669 (1) at monotonic time: 0000000000FBA446 msec
          CHIP:EM: Flushed pending ack for MessageCounter:9439913 on exchange 63771i
          CHIP:DL: Avahi resolve found
          CHIP:DIS: Node ID resolved for BFCBED670D527591:000000000001B669
          CHIP:DIS:     Addr 0: [fe80::dea6:32ff:feba:b3f7]:5540
      disabled: true

    - label:
          "Commissioner opens a CASE session with TH over operational network"
      verification: |
          Verify in DUT as client side

          CHIP:SC: Establishing CASE session
      disabled: true

    - label: "Commissioner sends CommissioningComplete command"
      verification: |
          Verify in DUT as client side

          CHIP:CTL: Received CommissioningComplete response
          CHIP:CTL: Successfully finished commissioning step "SendComplete"
      disabled: true

    - label:
          "Commissioning channel between the Commissioner and Commissionee is
          terminated."
      verification: |
          Verify in DUT as client side

          CHIP:CTL: Successfully finished commissioning step "SendComplete"
          CHIP:CTL: Commissioning stage next step: "SendComplete" -> "Cleanup"
          CHIP:CTL: Performing next commissioning step "Cleanup"
          CHIP:CTL: Successfully finished commissioning step "Cleanup"
          CHIP:TOO: Device commissioning completed with success
      disabled: true
