# 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 Information"
    endpoint: 0

tests:
    - label: "Note"
      verification: |
          Chip-tool command used below are an example to verify the DUT as commissioner test cases. For certification test, we expect DUT should have a capability or way to run the equivalent command.
      disabled: true

    - label: "Preconditions"
      verification: |
          1 - 5.5 - Commissioner is on a network. - The network can either be WiFi or Thread.
          2 - 5.5 - Commissionee can either be a Matter device which is already on a network or the test harness connected to the network.
      disabled: true

    - label:
          "Commissioner has regulatory and fabric information available and has
          accurate date, time and timezone"
      verification: |
          Verify in TH as server side
          ./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
          ./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 OperationalDeviceProxy 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 OperationalDeviceProxy 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
