# 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:
    4.1.4. [TC-DA-1.4] Device Attestation Request Validation-Error 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: "Pre-Conditions"
      verification: |
          1. PAA, PAI, DAC certificates are obtained and validated
          2. Operations happen within the Fail-Safe Context
          3. TH1 should be known about Commissioner based error condition/warning

          (for all steps, PIs use equivalent command on their respective platform)
          set the $CHIP_ROOT environment variable to the location of the connectedhomeip directory or if you are validating image pls send this command in apps folder (cd to the connectedhomeip directory, use command `export CHIP_ROOT=$(pwd -P)`
          For each scenario outlined in the sheet TC-DA-1.8 test cases, perform the following actions
          - Start the TH using the required certificate set and PID. For chip-all-clusters-app, use the command given in the chip-all-clusters app command column
          - Have the DUT commission the TH. Verify that the DUT indicates that the device is not genuine, or otherwise indicates a failure of device attestation, within its error handling APIs or user interface.
          - factory reset the TH
          command when using chip-all-clusters-app: sudo rm -rf /tmp/chip_*
      disabled: true

    - label: "Step 1: Start the commissioning process of TH1 on DUT"
      verification: |
          To perform Factory reset on TH1(all-clusters-app)  follow the below commands in RPI platform , Pls use equivalent command on the respective platform
          sudo rm -rf /tmp/chip_*

          execute the below mentioned command to put TH(all-clusters-app) into a commissionable state, Pls use equivalent command on the respective DUT
          ./chip-all-clusters-app --trace_decode 1

          Once TH(All-clusters-app) reach the  commissionable state pls send below mentioned command on DUT(chip-tool) Pls use equivalent command on the respective DUT

           ./chip-tool pairing onnetwork 1 20202021 --trace_decode 1
      disabled: true

    - label: "Step 2: DUT generates 32-byte AttestationNonce"
      verification: |
          During provision, DUT sends AttestationRequest Command with AttestationNonce


          [1662449060.839956][31006:31006] CHIP:DMG:         }
          [1662449060.839959][31006:31006] CHIP:DMG:         Device Type Id = 22
          [1662449060.839963][31006:31006] CHIP:DMG:         Certificate Id (19) = ZIG20142ZB330003-24
          [1662449060.839967][31006:31006] CHIP:DMG:         Security Level = 0
          [1662449060.839970][31006:31006] CHIP:DMG:         Security Information = 0
          [1662449060.839973][31006:31006] CHIP:DMG:         Version Number = 9876
          [1662449060.839976][31006:31006] CHIP:DMG:         Certification Type = 0
          [1662449060.839979][31006:31006] CHIP:DMG:     }
          [1662449060.839984][31006:31006] CHIP:DMG:     Attestation Nonce (32) = 0DCBD6B7CE5AC2B7972D5350E2709C659E2222862BE8F204FE1E3D709FD959AD
          [1662449060.839987][31006:31006] CHIP:DMG:     Timestamp = 0
          [1662449060.839990][31006:31006] CHIP:DMG: }
          [1662449060.839993][31006:31006] CHIP:DMG:
      disabled: true

    - label:
          "Step 3: DUT sends AttestationRequest Command with AttestationNonce as
          field to the TH1."
      verification: |
          During provision, DUT sends AttestationRequest Command with AttestationNonce as field to the TH. verify the below log in TH(all-clusters-app). As the current TH ref app (all-clusters-app) doesnot decode the received request message, nonce value has been shown from the TH ref app response message , as TH ref app use the same nonce value in the response message

          [1662449060.840902][31013:31018] CHIP:DMG:             Product Id = 32863
          [1662449060.840904][31013:31018] CHIP:DMG:             Product Id = 32864
          [1662449060.840905][31013:31018] CHIP:DMG:             Product Id = 32865
          [1662449060.840907][31013:31018] CHIP:DMG:             Product Id = 32866
          [1662449060.840909][31013:31018] CHIP:DMG:             Product Id = 32867
          [1662449060.840911][31013:31018] CHIP:DMG:         }
          [1662449060.840913][31013:31018] CHIP:DMG:         Device Type Id = 22
          [1662449060.840916][31013:31018] CHIP:DMG:         Certificate Id (19) = ZIG20142ZB330003-24
          [1662449060.840918][31013:31018] CHIP:DMG:         Security Level = 0
          [1662449060.840921][31013:31018] CHIP:DMG:         Security Information = 0
          [1662449060.840923][31013:31018] CHIP:DMG:         Version Number = 9876
          [1662449060.840925][31013:31018] CHIP:DMG:         Certification Type = 0
          [1662449060.840927][31013:31018] CHIP:DMG:     }
          [1662449060.840930][31013:31018] CHIP:DMG:     Attestation Nonce (32) = 0DCBD6B7CE5AC2B7972D5350E2709C659E2222862BE8F204FE1E3D709FD959AD
          [1662449060.840932][31013:31018] CHIP:DMG:     Timestamp = 0
          [1662449060.840934][31013:31018] CHIP:DMG: }
          [1662449060.840935][31013:31018] CHIP:DMG:
          [1662449060.840938][31013:31018] CHIP:DMG:
          [1662449060.840943][31013:31018] CHIP:DMG: Additional Fields =
          [1662449060.840945][31013:31018] CHIP:DMG: {
          [1662449060.840948][31013:31018] CHIP:DMG:     peer_address = UDP:[fe80::b7b8:ff3e:9ace:3e12%wlp0s20f3]:5540
          [1662449060.840950][31013:31018] CHIP:DMG: }
          [1662449060.840951][31013:31018] CHIP:DMG:
          [1662449060.840955][31013:31018] CHIP:EM: Received message of type 0x9 with protocolId (0, 1) and MessageCounter:160787812 on exchange 51916i
          [1662449060.840959][31013:31018] CHIP:EM: Found matching exchange: 51916i, Delegate: 0x7fd35c0219d8
          [1662449060.840962][31013:31018] CHIP:EM: CHIP MessageCounter:39600912 not in RetransTable on exchange 51916i
          [1662449060.840969][31013:31018] CHIP:DMG: ICR moving to [ResponseRe]
          [1662449060.840974][31013:31018] CHIP:DMG: InvokeResponseMessage =
          [1662449060.840976][31013:31018] CHIP:DMG: {
          [1662449060.840979][31013:31018] CHIP:DMG:         suppressResponse = false,
          [1662449060.840981][31013:31018] CHIP:DMG:         InvokeResponseIBs =
          [1662449060.840984][31013:31018] CHIP:DMG:         [
          [1662449060.840986][31013:31018] CHIP:DMG:                 InvokeResponseIB =
          [1662449060.840990][31013:31018] CHIP:DMG:                 {
          [1662449060.840992][31013:31018] CHIP:DMG:                         CommandDataIB =
          [1662449060.840994][31013:31018] CHIP:DMG:                         {
          [1662449060.840996][31013:31018] CHIP:DMG:                                 CommandPathIB =
          [1662449060.840999][31013:31018] CHIP:DMG:                                 {
          [1662449060.841001][31013:31018] CHIP:DMG:                                         EndpointId = 0x0,
          [1662449060.841004][31013:31018] CHIP:DMG:                                         ClusterId = 0x3e,
          [1662449060.841006][31013:31018] CHIP:DMG:                                         CommandId = 0x1,
          [1662449060.841008][31013:31018] CHIP:DMG:                                 },
          [1662449060.841011][31013:31018] CHIP:DMG:
          [1662449060.841013][31013:31018] CHIP:DMG:                                 CommandFields =
          [1662449060.841016][31013:31018] CHIP:DMG:                                 {
          [1662449060.841018][31013:31018] CHIP:DMG:                                         0x0 = [
          [1662449060.841037][31013:31018] CHIP:DMG:                                                         0x15, 0x31, 0x1, 0x1d, 0x2, 0x30, 0x82, 0x2, 0x19, 0x6, 0x9, 0x2a, 0x86, 0x48, 0x86, 0xf7, 0xd, 0x1, 0x7, 0x2, 0xa0, 0x82, 0x2, 0xa, 0x30, 0x82, 0x2, 0x6, 0x2, 0x1, 0x3, 0x31, 0xd, 0x30, 0xb, 0x6, 0x9, 0x60, 0x86, 0x48, 0x1, 0x65, 0x3, 0x4, 0x2, 0x1, 0x30, 0x82, 0x1, 0x71, 0x6, 0x9, 0x2a, 0x86, 0x48, 0x86, 0xf7, 0xd, 0x1, 0x7, 0x1, 0xa0, 0x82, 0x1, 0x62, 0x4, 0x82, 0x1, 0x5e, 0x15, 0x24, 0x0, 0x1, 0x25, 0x1, 0xf1, 0xff, 0x36, 0x2, 0x5, 0x0, 0x80, 0x5, 0x1, 0x80, 0x5, 0x2, 0x80, 0x5, 0x3, 0x80, 0x5, 0x4, 0x80, 0x5, 0x5, 0x80, 0x5, 0x6, 0x80, 0x5, 0x7, 0x80, 0x5, 0x8, 0x80, 0x5, 0x9, 0x80, 0x5, 0xa, 0x80, 0x5, 0xb, 0x80, 0x5, 0xc, 0x80, 0x5, 0xd, 0x80, 0x5, 0xe, 0x80, 0x5, 0xf, 0x80, 0x5, 0x10, 0x80, 0x5, 0x11, 0x80, 0x5, 0x12, 0x80, 0x5, 0x13, 0x80, 0x5, 0x14, 0x80, 0x5, 0x15, 0x80, 0x5, 0x16, 0x80, 0x5, 0x17, 0x80, 0x5, 0x18, 0x80, 0x5, 0x19, 0x80, 0x5, 0x1a, 0x80, 0x5, 0x1b, 0x80, 0x5, 0x1c, 0x80, 0x5, 0x1d, 0x80, 0x5, 0x1e, 0x80, 0x5, 0x1f, 0x80, 0x5, 0x20, 0x80, 0x5, 0x21, 0x80, 0x5, 0x22, 0x80, 0x5, 0x23, 0x80, 0x5, 0x24, 0x80, 0x5, 0x25, 0x80, 0x5, 0x26, 0x80, 0x5, 0x27, 0x80, 0x5, 0x28, 0x80, 0x5, 0x29, 0x80, 0x5, 0x2a, 0x80, 0x5, 0x2b, 0x80, 0x5, 0x2c, 0x80, 0x5, 0x2d, 0x80, 0x5, 0x2e, 0x80, 0x5, 0x2f, 0x80, 0x5, 0x30, 0x80, 0x5, 0x31, 0x80, 0x5, 0x32, 0x80, 0x5, 0x33, 0x80, 0x5, 0x34, 0x80, 0x5, 0x35, 0x80, 0x5, 0x36, 0x80, 0x5, 0x37, 0x80, 0x5, 0x38, 0x80, 0x5, 0x39, 0x80, 0x5, 0x3a, 0x80, 0x5, 0x3b, 0x80, 0x5, 0x3c, 0x80, 0x5, 0x3d, 0x80, 0x5, 0x3e, 0x80, 0x5, 0x3f, 0x80, 0x5, 0x40, 0x80, 0x5, 0x41, 0x80, 0x5, 0x42, 0x80, 0x5, 0x43, 0x80, 0x5, 0x44, 0x80, 0x5, 0x45, 0x80, 0x5, 0x46, 0x80, 0x5, 0x47, 0x80, 0x5, 0x48, 0x80, 0x5, 0x49, 0x80, 0x5, 0x4a, 0x80, 0x5, 0
          [1662449060.841046][31013:31018] CHIP:DMG:                                         ] (585 bytes)
          [1662449060.841048][31013:31018] CHIP:DMG:                                         0x1 = [
          [1662449060.841053][31013:31018] CHIP:DMG:                                                         0x97, 0x2, 0x34, 0x3f, 0x85, 0xad, 0xe8, 0xd0, 0x4, 0x0, 0xfa, 0x8b, 0x3e, 0x91, 0xed, 0x34, 0x77, 0x3, 0x55, 0x89, 0xd5, 0xe, 0xe0, 0x9d, 0x32, 0x5d, 0x9f, 0x30, 0x20, 0x12, 0xf0, 0x25, 0x63, 0x62, 0xc7, 0x47, 0x7e, 0xd1, 0x9f, 0x89, 0x30, 0x84, 0x49, 0x7c, 0xbd, 0xc, 0xab, 0x38, 0xfe, 0xb5, 0x31, 0x24, 0x8e, 0x28, 0xc7, 0x7e, 0x1, 0xab, 0x34, 0x18, 0xe5, 0x78, 0x9c, 0x97,
          [1662449060.841058][31013:31018] CHIP:DMG:                                         ] (64 bytes)
          [1662449060.841060][31013:31018] CHIP:DMG:                                 },
          [1662449060.841062][31013:31018] CHIP:DMG:                         },
          [1662449060.841065][31013:31018] CHIP:DMG:
          [1662449060.841067][31013:31018] CHIP:DMG:                 },
          [1662449060.841070][31013:31018] CHIP:DMG:
          [1662449060.841072][31013:31018] CHIP:DMG:         ],
          [1662449060.841076][31013:31018] CHIP:DMG:
          [1662449060.841078][31013:31018] CHIP:DMG:         InteractionModelRevision = 1
          [1662449060.841080][31013:31018] CHIP:DMG: },
          [1662449060.841088][31013:31018] CHIP:DMG: Received Command Response Data, Endpoint=0 Cluster=0x0000_003E Command=0x0000_0001
          [1662449060.841093][31013:31018] CHIP:CTL: Received Attestation Information from the device
          [1662449060.841103][31013:31018] CHIP:CTL: Successfully finished commissioning step 'SendAttestationRequest'
          [1662449060.841111][31013:31018] CHIP:CTL: Commissioning stage next step: 'SendAttestationRequest' -> 'AttestationVerification'
          [1662449060.841115][31013:31018] CHIP:CTL: Performing next commissioning step 'AttestationVerification'
          [1662449060.841117][31013:31018] CHIP:CTL: Verifying attestation
          [1662449060.841974][31013:31018] CHIP:CTL: Successfully validated 'Attestation Information' command received from the device.
          [1662449060.841981][31013:31018] CHIP:CTL: Successfully finished commissioning step 'AttestationVerification'
      disabled: true

    - label:
          "Step 4: TH1 responds to the DUT with an invalid AttestationResponse
          Command by setting the following error condition: Commissionee is not
          yet certified"
      verification: |
          "The all-cluster-app in the sample application is not a certified commissionee (Certification Declaration has certification_type 0). Launch all-cluster-app on TH raspi and provision the app using the DUT
          "
      disabled: true

    - label:
          "Step 5: Verify that DUT notifies a warning stating that Commissionee
          is not a fully trusted device.Verify that the warning contains the
          information about the reason for error condition If the warning
          message indicates that Commissioning is allowed then confirm that
          CSRRequest Command is sent from DUT to TH1"
      PICS: MCORE.DA.ATTEST_WARNING
      verification: |
          Verify if DUT reports any warning stating that the commissionee is not a fully trusted device. However per Matter spec, Commissioners SHOULD warn the user (its not a SHALL requirement) and commissioners choose their implementation and May give the user a choice to authorize or deny commissioning
      disabled: true

    - label: "Step 6: Factory Reset TH so that it is commissionable again"
      verification: |
          To perform Factory reset on TH1(all-clusters-app)  follow the below step in RPI platform , Pls use equivalent command on the respective platformsudo rm -rf /tmp/chip_*
      disabled: true

    - label:
          "Step 7: For each of the test cases in the Certificates for TC-DA-1.4
          table, start the TH using the appropriate certificate set, commission
          the TH using the DUT, then factory reset the TH."
      verification: |
          Test step has beeen validated in below steps
      disabled: true

    - label:
          "Step 1: CD Test Vector: The dac_origin_vendor_id fild is present and
          dac_origin_product_id fields is not present."
      verification: |
          For Raspberry Pi device, perform a factory reset using the following command  - sudo rm -rf /tmp/chip_* for the 'chip-all-clusters-app.
           please use the equivalent command on your respective platform to perform a factory reset

          Execute the below mentioned command to put TH(all-cluster-app) into a commissionable state, Pls use equivalent command on the respective Platform

          ./chip-all-clusters-app --trace_decode 1 --dac_provider $CHIP_ROOT/credentials/development/commissioner_dut/struct_cd_dac_origin_vid_present_pid_missing/test_case_vector.json --product-id 32768

          Once TH(all-clusters-app) reach the  commissionable state pls send below mentioned command on DUT(chip-tool). Pls use equivalent command on the respective platform
           ./chip-tool pairing onnetwork 1 20202021 --trace_decode 1

          On TH(all-clusters-app), Verify that the DUT(chip-tool) indicates that the device is not genuine, or otherwise indicates a failure of device attestation, within its error handling APIs or user interface

          o 0:FFFFFFFB00000000 [0000] --- Type 0001:09 (IM:InvokeCommandResponse)
          [1693997151.715871][74557:74557] CHIP:IN: (S) Sending msg 185139947 on secure session with LSID: 15692
          [1693997151.715909][74557:74557] CHIP:DMG: Command handler moving to [CommandSen]
          [1693997151.715913][74557:74557] CHIP:DMG: Command handler moving to [AwaitingDe]
          [1693997151.715920][74557:74557] CHIP:DL: HandlePlatformSpecificBLEEvent 32783
          [1693997151.715924][74557:74557] CHIP:SVR: Failsafe timer expired
          [1693997151.715927][74557:74557] CHIP:IN: SecureSession[0x556dff7aaae0]: MarkForEviction Type:1 LSID:15692
          [1693997151.715930][74557:74557] CHIP:SC: SecureSession[0x556dff7aaae0, LSID:15692]: State change 'kActive' --> 'kPendingEviction'
          [1693997151.715943][74557:74557] CHIP:IN: SecureSession[0x556dff7aaae0]: Released - Type:1 LSID:15692
          [1693997151.715951][74557:74557] CHIP:SVR: Commissioning failed (attempt 1): src/app/server/CommissioningWindowManager.cpp:77: CHIP Error 0x00000032: Timeout
          [1693997151.715967][74557:74557] CHIP:IN: SecureSession[0x556dff7aaae0]: Allocated Type:1 LSID:15694
          [1693997151.715972][74557:74557] CHIP:SC: Assigned local session key ID 15694
          [1693997151.715975][74557:74557] CHIP:SC: Waiting for PBKDF param request
      disabled: true

    - label:
          "Step 2: DAC Test Vector: Fallback VID and PID encoding example:
          invalid, PID not present and VID not upper case"
      verification: |
          For Raspberry Pi device, perform a factory reset using the following command  - sudo rm -rf /tmp/chip_* for the 'chip-all-clusters-app.
           please use the equivalent command on your respective platform to perform a factory reset

          Execute the below mentioned command to put TH(all-cluster-app) into a commissionable state, Pls use equivalent command on the respective Platform

          ./chip-all-clusters-app --trace_decode 1 --dac_provider $CHIP_ROOT/credentials/development/commissioner_dut/struct_dac_vidpid_fallback_encoding_12/test_case_vector.json --product-id 177

          Once TH(all-clusters-app) reach the  commissionable state pls send below mentioned command on DUT(chip-tool). Pls use equivalent command on the respective platform
           ./chip-tool pairing onnetwork 1 20202021 --trace_decode 1

          On TH(all-clusters-app), Verify that the DUT(chip-tool) indicates that the device is not genuine, or otherwise indicates a failure of device attestation, within its error handling APIs or user interface

          [1693994403.341228][73449:73449] CHIP:DMG: }
          [1693994403.341231][73449:73449] CHIP:DMG:
          [1693994403.341246][73449:73449] CHIP:EM: <<< [E:30736r S:60388 M:219410600 (Ack:261280417)] (S) Msg TX to 0:FFFFFFFB00000000 [0000] --- Type 0001:09 (IM:InvokeCommandResponse)
          [1693994403.341254][73449:73449] CHIP:IN: (S) Sending msg 219410600 on secure session with LSID: 60388
          [1693994403.341291][73449:73449] CHIP:DMG: Command handler moving to [CommandSen]
          [1693994403.341294][73449:73449] CHIP:DMG: Command handler moving to [AwaitingDe]
          [1693994403.341301][73449:73449] CHIP:DL: HandlePlatformSpecificBLEEvent 32783
          [1693994403.341305][73449:73449] CHIP:SVR: Failsafe timer expired
          [1693994403.341309][73449:73449] CHIP:IN: SecureSession[0x560da40688c0]: MarkForEviction Type:1 LSID:60388
          [1693994403.341312][73449:73449] CHIP:SC: SecureSession[0x560da40688c0, LSID:60388]: State change 'kActive' --> 'kPendingEviction'
          [1693994403.341329][73449:73449] CHIP:IN: SecureSession[0x560da40688c0]: Released - Type:1 LSID:60388
          [1693994403.341338][73449:73449] CHIP:SVR: Commissioning failed (attempt 1): src/app/server/CommissioningWindowManager.cpp:77: CHIP Error 0x00000032: Timeout
          [1693994403.341356][73449:73449] CHIP:IN: SecureSession[0x560da40688c0]: Allocated Type:1 LSID:60390
          [1693994403.341362][73449:73449] CHIP:SC: Assigned local session key ID 60390
          [1693994403.341366][73449:73449] CHIP:SC: Waiting for PBKDF param request
          [1693994403.341374][73449:73449] CHIP:DIS: Updating services using commissioning mode 1
      disabled: true

    - label:
          "Step 3: DAC Test Vector: Invalid certificate signature algorithm
          ECDSA_WITH_SHA1"
      verification: |
          For Raspberry Pi device, perform a factory reset using the following command  - sudo rm -rf /tmp/chip_* for the 'chip-all-clusters-app.
           please use the equivalent command on your respective platform to perform a factory reset

          Execute the below mentioned command to put TH(all-cluster-app) into a commissionable state, Pls use equivalent command on the respective Platform

          ./chip-all-clusters-app --trace_decode 1 --dac_provider $CHIP_ROOT/credentials/development/commissioner_dut/struct_dac_sig_algo_ecdsa_with_sha1/test_case_vector.json --product-id 32768

          Once TH(all-clusters-app) reach the  commissionable state pls send below mentioned command on DUT(chip-tool). Pls use equivalent command on the respective platform
           ./chip-tool pairing onnetwork 1 20202021 --trace_decode 1

          On TH(all-clusters-app), Verify that the DUT(chip-tool) indicates that the device is not genuine, or otherwise indicates a failure of device attestation, within its error handling APIs or user interface

          [1693996211.521552][74117:74117] CHIP:EM: <<< [E:25185r S:53710 M:167691966 (Ack:245625616)] (S) Msg TX to 0:FFFFFFFB00000000 [0000] --- Type 0001:09 (IM:InvokeCommandResponse)
          [1693996211.521560][74117:74117] CHIP:IN: (S) Sending msg 167691966 on secure session with LSID: 53710
          [1693996211.521595][74117:74117] CHIP:DMG: Command handler moving to [CommandSen]
          [1693996211.521599][74117:74117] CHIP:DMG: Command handler moving to [AwaitingDe]
          [1693996211.521607][74117:74117] CHIP:DL: HandlePlatformSpecificBLEEvent 32783
          [1693996211.521611][74117:74117] CHIP:SVR: Failsafe timer expired
          [1693996211.521615][74117:74117] CHIP:IN: SecureSession[0x5581d19b2a70]: MarkForEviction Type:1 LSID:53710
          [1693996211.521619][74117:74117] CHIP:SC: SecureSession[0x5581d19b2a70, LSID:53710]: State change 'kActive' --> 'kPendingEviction'
          [1693996211.521637][74117:74117] CHIP:IN: SecureSession[0x5581d19b2a70]: Released - Type:1 LSID:53710
          [1693996211.521648][74117:74117] CHIP:SVR: Commissioning failed (attempt 1): src/app/server/CommissioningWindowManager.cpp:77: CHIP Error 0x00000032: Timeout
          [1693996211.521669][74117:74117] CHIP:IN: SecureSession[0x5581d19b2a70]: Allocated Type:1 LSID:53712
          [1693996211.521677][74117:74117] CHIP:SC: Assigned local session key ID 53712
      disabled: true

    - label: "Step 4: CD Test Vector: The product_id_array field is missing."
      verification: |
          For Raspberry Pi device, perform a factory reset using the following command  - sudo rm -rf /tmp/chip_* for the 'chip-all-clusters-app.
           please use the equivalent command on your respective platform to perform a factory reset


          Execute the below mentioned command to put TH(all-cluster-app) into a commissionable state, Pls use equivalent command on the respective Platform

          ./chip-all-clusters-app --trace_decode 1 --dac_provider $CHIP_ROOT/credentials/development/commissioner_dut/struct_cd_pid_array_missing/test_case_vector.json --product-id 32768

          Once TH(all-clusters-app) reach the  commissionable state pls send below mentioned command on DUT(chip-tool). Pls use equivalent command on the respective platform
           ./chip-tool pairing onnetwork 1 20202021 --trace_decode 1

          On TH(all-clusters-app), Verify that the DUT(chip-tool) indicates that the device is not genuine, or otherwise indicates a failure of device attestation, within its error handling APIs or user interface

          [1693993840.870308][72883:72883] CHIP:DMG:
          [1693993840.870320][72883:72883] CHIP:EM: <<< [E:37569r S:15994 M:123922316 (Ack:203861491)] (S) Msg TX to 0:FFFFFFFB00000000 [0000] --- Type 0001:09 (IM:InvokeCommandResponse)
          [1693993840.870328][72883:72883] CHIP:IN: (S) Sending msg 123922316 on secure session with LSID: 15994
          [1693993840.870361][72883:72883] CHIP:DMG: Command handler moving to [CommandSen]
          [1693993840.870365][72883:72883] CHIP:DMG: Command handler moving to [AwaitingDe]
          [1693993840.870379][72883:72883] CHIP:DL: HandlePlatformSpecificBLEEvent 32783
          [1693993840.870384][72883:72883] CHIP:SVR: Failsafe timer expired
          [1693993840.870389][72883:72883] CHIP:IN: SecureSession[0x557e71225ce0]: MarkForEviction Type:1 LSID:15994
          [1693993840.870392][72883:72883] CHIP:SC: SecureSession[0x557e71225ce0, LSID:15994]: State change 'kActive' --> 'kPendingEviction'
          [1693993840.870409][72883:72883] CHIP:IN: SecureSession[0x557e71225ce0]: Released - Type:1 LSID:15994
          [1693993840.870420][72883:72883] CHIP:SVR: Commissioning failed (attempt 1): src/app/server/CommissioningWindowManager.cpp:77: CHIP Error 0x00000032: Timeout
          [1693993840.870445][72883:72883] CHIP:IN: SecureSession[0x557e71225ce0]: Allocated Type:1 LSID:15996
          [1693993840.870450][72883:72883] CHIP:SC: Assigned local session key ID 15996
          [1693993840.870456][72883:72883] CHIP:SC: Waiting for PBKDF param request
          [1693993840.870464][72883:72883] CHIP:DIS: Updating services using commissioning mode 1
          [1693993840.870767][72883:72883] CHIP:DIS: CHIP minimal mDNS started advertising.
          [1693993840.871098][72883:72883] CHIP:DL: Using wifi MAC for hostname
          [1693993840.871172][72883:72883] CHIP:DIS: Advertise commission parameter vendorID=65521 productID=32768 discriminator=3840/15 cm=1
      disabled: true

    - label:
          "Step 5: PAI Test Vector: Certificate validity period starts in the
          past"
      verification: |
          For Raspberry Pi device, perform a factory reset using the following command  - sudo rm -rf /tmp/chip_* for the 'chip-all-clusters-app.
           please use the equivalent command on your respective platform to perform a factory reset


          Execute the below mentioned command to put TH(all-cluster-app) into a commissionable state, Pls use equivalent command on the respective Platform

          ./chip-all-clusters-app --trace_decode 1 --dac_provider $CHIP_ROOT/credentials/development/commissioner_dut/struct_pai_valid_in_past/test_case_vector.json --product-id 32768

          Once TH(all-clusters-app) reach the  commissionable state pls send below mentioned command on DUT(chip-tool). Pls use equivalent command on the respective platform
           ./chip-tool pairing onnetwork 1 20202021 --trace_decode 1

          On TH(all-clusters-app), Verify that the DUT(chip-tool) indicates that the device is not genuine, or otherwise indicates a failure of device attestation, within its error handling APIs or user interface

          o 0:FFFFFFFB00000000 [0000] --- Type 0001:09 (IM:InvokeCommandResponse)
          [1693994803.098470][73608:73608] CHIP:IN: (S) Sending msg 223928797 on secure session with LSID: 25230
          [1693994803.098520][73608:73608] CHIP:DMG: Command handler moving to [CommandSen]
          [1693994803.098523][73608:73608] CHIP:DMG: Command handler moving to [AwaitingDe]
          [1693994803.098530][73608:73608] CHIP:DL: HandlePlatformSpecificBLEEvent 32783
          [1693994803.098533][73608:73608] CHIP:SVR: Failsafe timer expired
          [1693994803.098537][73608:73608] CHIP:IN: SecureSession[0x562e2718c880]: MarkForEviction Type:1 LSID:25230
          [1693994803.098541][73608:73608] CHIP:SC: SecureSession[0x562e2718c880, LSID:25230]: State change 'kActive' --> 'kPendingEviction'
          [1693994803.098556][73608:73608] CHIP:IN: SecureSession[0x562e2718c880]: Released - Type:1 LSID:25230
          [1693994803.098564][73608:73608] CHIP:SVR: Commissioning failed (attempt 1): src/app/server/CommissioningWindowManager.cpp:77: CHIP Error 0x00000032: Timeout
          [1693994803.098580][73608:73608] CHIP:IN: SecureSession[0x562e2718c880]: Allocated Type:1 LSID:25232
          [1693994803.098585][73608:73608] CHIP:SC: Assigned local session key ID 25232
          [1693994803.098588][73608:73608] CHIP:SC: Waiting for PBKDF param request
          [1693994803.098596][73608:73608] CHIP:DIS: Updating services using commissioning mode 1
          [1693994803.098836][73608:73608] CHIP:DIS: CHIP minimal mDNS started advertising.
      disabled: true

    - label:
          "Step 6: CD Test Vector: The product_id_array field has 100 PID values
          none of which matches the PID value in DAC."
      verification: |
          For Raspberry Pi device, perform a factory reset using the following command  - sudo rm -rf /tmp/chip_* for the 'chip-all-clusters-app.
           please use the equivalent command on your respective platform to perform a factory reset

          Execute the below mentioned command to put TH(all-cluster-app) into a commissionable state, Pls use equivalent command on the respective Platform

          ./chip-all-clusters-app --trace_decode 1 --dac_provider $CHIP_ROOT/credentials/development/commissioner_dut/struct_cd_pid_array_count100_mismatch/test_case_vector.json --product-id 32768

          Once TH(all-clusters-app) reach the  commissionable state pls send below mentioned command on DUT(chip-tool). Pls use equivalent command on the respective platform
           ./chip-tool pairing onnetwork 1 20202021 --trace_decode 1

          On TH(all-clusters-app), Verify that the DUT(chip-tool) indicates that the device is not genuine, or otherwise indicates a failure of device attestation, within its error handling APIs or user interface

          [1693997405.995023][74683:74683] CHIP:DMG:
          [1693997405.995034][74683:74683] CHIP:EM: <<< [E:36876r S:41477 M:993220 (Ack:208381418)] (S) Msg TX to 0:FFFFFFFB00000000 [0000] --- Type 0001:09 (IM:InvokeCommandResponse)
          [1693997405.995041][74683:74683] CHIP:IN: (S) Sending msg 993220 on secure session with LSID: 41477
          [1693997405.995073][74683:74683] CHIP:DMG: Command handler moving to [CommandSen]
          [1693997405.995076][74683:74683] CHIP:DMG: Command handler moving to [AwaitingDe]
          [1693997405.995083][74683:74683] CHIP:DL: HandlePlatformSpecificBLEEvent 32783
          [1693997405.995086][74683:74683] CHIP:SVR: Failsafe timer expired
          [1693997405.995090][74683:74683] CHIP:IN: SecureSession[0x5605c6bf5560]: MarkForEviction Type:1 LSID:41477
          [1693997405.995094][74683:74683] CHIP:SC: SecureSession[0x5605c6bf5560, LSID:41477]: State change 'kActive' --> 'kPendingEviction'
          [1693997405.995109][74683:74683] CHIP:IN: SecureSession[0x5605c6bf5560]: Released - Type:1 LSID:41477
          [1693997405.995117][74683:74683] CHIP:SVR: Commissioning failed (attempt 1): src/app/server/CommissioningWindowManager.cpp:77: CHIP Error 0x00000032: Timeout
          [1693997405.995133][74683:74683] CHIP:IN: SecureSession[0x5605c6bf5560]: Allocated Type:1 LSID:41479
          [1693997405.995138][74683:74683] CHIP:SC: Assigned local session key ID 41479
          [1693997405.995142][74683:74683] CHIP:SC: Waiting for PBKDF param request
      disabled: true

    - label:
          "Step 7: DAC Test Vector: Certificate Basic Constraint extension CA
          field is wrong (TRUE for DAC and FALSE for PAI)"
      verification: |
          For Raspberry Pi device, perform a factory reset using the following command  - sudo rm -rf /tmp/chip_* for the 'chip-all-clusters-app.
           please use the equivalent command on your respective platform to perform a factory reset

          Execute the below mentioned command to put TH(all-cluster-app) into a commissionable state, Pls use equivalent command on the respective Platform

          ./chip-all-clusters-app --trace_decode 1 --dac_provider $CHIP_ROOT/credentials/development/commissioner_dut/struct_dac_ext_basic_ca_wrong/test_case_vector.json --product-id 32768

          Once TH(all-clusters-app) reach the  commissionable state pls send below mentioned command on DUT(chip-tool). Pls use equivalent command on the respective platform
           ./chip-tool pairing onnetwork 1 20202021 --trace_decode 1

          On TH(all-clusters-app), Verify that the DUT(chip-tool) indicates that the device is not genuine, or otherwise indicates a failure of device attestation, within its error handling APIs or user interface

          [1693997078.351251][74520:74520] CHIP:EM: <<< [E:37804r S:10760 M:65040301 (Ack:219159553)] (S) Msg TX to 0:FFFFFFFB00000000 [0000] --- Type 0001:09 (IM:InvokeCommandResponse)
          [1693997078.351258][74520:74520] CHIP:IN: (S) Sending msg 65040301 on secure session with LSID: 10760
          [1693997078.351302][74520:74520] CHIP:DMG: Command handler moving to [CommandSen]
          [1693997078.351305][74520:74520] CHIP:DMG: Command handler moving to [AwaitingDe]
          [1693997078.351311][74520:74520] CHIP:DL: HandlePlatformSpecificBLEEvent 32783
          [1693997078.351314][74520:74520] CHIP:SVR: Failsafe timer expired
          [1693997078.351316][74520:74520] CHIP:IN: SecureSession[0x564ecf8d4890]: MarkForEviction Type:1 LSID:10760
          [1693997078.351319][74520:74520] CHIP:SC: SecureSession[0x564ecf8d4890, LSID:10760]: State change 'kActive' --> 'kPendingEviction'
          [1693997078.351332][74520:74520] CHIP:IN: SecureSession[0x564ecf8d4890]: Released - Type:1 LSID:10760
          [1693997078.351340][74520:74520] CHIP:SVR: Commissioning failed (attempt 1): src/app/server/CommissioningWindowManager.cpp:77: CHIP Error 0x00000032: Timeout
          [1693997078.351355][74520:74520] CHIP:IN: SecureSession[0x564ecf8d4890]: Allocated Type:1 LSID:10762
          [1693997078.351360][74520:74520] CHIP:SC: Assigned local session key ID 10762
          [1693997078.351363][74520:74520] CHIP:SC: Waiting for PBKDF param request
      disabled: true

    - label:
          "Step 8: CD Test Vector: The dac_origin_vendor_id and
          dac_origin_product_id fields present and the VID value doesnt match
          the VID found in the DAC Subject DN."
      verification: |
          For Raspberry Pi device, perform a factory reset using the following command  - sudo rm -rf /tmp/chip_* for the 'chip-all-clusters-app.
           please use the equivalent command on your respective platform to perform a factory reset


          Execute the below mentioned command to put TH(all-cluster-app) into a commissionable state, Pls use equivalent command on the respective Platform

          ./chip-all-clusters-app --trace_decode 1 --dac_provider $CHIP_ROOT/credentials/development/commissioner_dut/struct_cd_dac_origin_vid_pid_present_vid_mismatch/test_case_vector.json --product-id 32768

          Once TH(all-clusters-app) reach the  commissionable state pls send below mentioned command on DUT(chip-tool). Pls use equivalent command on the respective platform
           ./chip-tool pairing onnetwork 1 20202021 --trace_decode 1

          On TH(all-clusters-app), Verify that the DUT(chip-tool) indicates that the device is not genuine, or otherwise indicates a failure of device attestation, within its error handling APIs or user interface

          [1693994835.257566][73627:73627] CHIP:DMG:
          [1693994835.257577][73627:73627] CHIP:EM: <<< [E:23698r S:38764 M:255686193 (Ack:187772892)] (S) Msg TX to 0:FFFFFFFB00000000 [0000] --- Type 0001:09 (IM:InvokeCommandResponse)
          [1693994835.257585][73627:73627] CHIP:IN: (S) Sending msg 255686193 on secure session with LSID: 38764
          [1693994835.257611][73627:73627] CHIP:DMG: Command handler moving to [CommandSen]
          [1693994835.257614][73627:73627] CHIP:DMG: Command handler moving to [AwaitingDe]
          [1693994835.257620][73627:73627] CHIP:DL: HandlePlatformSpecificBLEEvent 32783
          [1693994835.257623][73627:73627] CHIP:SVR: Failsafe timer expired
          [1693994835.257627][73627:73627] CHIP:IN: SecureSession[0x559ec6387bb0]: MarkForEviction Type:1 LSID:38764
          [1693994835.257630][73627:73627] CHIP:SC: SecureSession[0x559ec6387bb0, LSID:38764]: State change 'kActive' --> 'kPendingEviction'
          [1693994835.257648][73627:73627] CHIP:IN: SecureSession[0x559ec6387bb0]: Released - Type:1 LSID:38764
          [1693994835.257657][73627:73627] CHIP:SVR: Commissioning failed (attempt 1): src/app/server/CommissioningWindowManager.cpp:77: CHIP Error 0x00000032: Timeout
          [1693994835.257675][73627:73627] CHIP:IN: SecureSession[0x559ec6387bb0]: Allocated Type:1 LSID:38766
          [1693994835.257680][73627:73627] CHIP:SC: Assigned local session key ID 38766
          [1693994835.257683][73627:73627] CHIP:SC: Waiting for PBKDF param request
          [1693994835.257690][73627:73627] CHIP:DIS: Updating services using commissioning mode 1
      disabled: true

    - label:
          "Step 9: DAC Test Vector: Fallback VID and PID encoding example from
          spec: invalid, since substring following Mpid: is not exactly 4
          uppercase hexadecimal digits"
      verification: |
          For Raspberry Pi device, perform a factory reset using the following command  - sudo rm -rf /tmp/chip_* for the 'chip-all-clusters-app.
           please use the equivalent command on your respective platform to perform a factory reset

          Execute the below mentioned command to put TH(all-cluster-app) into a commissionable state, Pls use equivalent command on the respective Platform

          ./chip-all-clusters-app --trace_decode 1 --dac_provider $CHIP_ROOT/credentials/development/commissioner_dut/struct_dac_vidpid_fallback_encoding_08/test_case_vector.json --product-id 177

          Once TH(all-clusters-app) reach the  commissionable state pls send below mentioned command on DUT(chip-tool). Pls use equivalent command on the respective platform
           ./chip-tool pairing onnetwork 1 20202021 --trace_decode 1

          On TH(all-clusters-app), Verify that the DUT(chip-tool) indicates that the device is not genuine, or otherwise indicates a failure of device attestation, within its error handling APIs or user interface

          [1693995413.022547][73911:73911] CHIP:EM: <<< [E:30630r S:27734 M:175055120 (Ack:21253685)] (S) Msg TX to 0:FFFFFFFB00000000 [0000] --- Type 0001:09 (IM:InvokeCommandResponse)
          [1693995413.022553][73911:73911] CHIP:IN: (S) Sending msg 175055120 on secure session with LSID: 27734
          [1693995413.022574][73911:73911] CHIP:DMG: Command handler moving to [CommandSen]
          [1693995413.022577][73911:73911] CHIP:DMG: Command handler moving to [AwaitingDe]
          [1693995413.022582][73911:73911] CHIP:DL: HandlePlatformSpecificBLEEvent 32783
          [1693995413.022585][73911:73911] CHIP:SVR: Failsafe timer expired
          [1693995413.022588][73911:73911] CHIP:IN: SecureSession[0x559867c24540]: MarkForEviction Type:1 LSID:27734
          [1693995413.022591][73911:73911] CHIP:SC: SecureSession[0x559867c24540, LSID:27734]: State change 'kActive' --> 'kPendingEviction'
          [1693995413.022601][73911:73911] CHIP:IN: SecureSession[0x559867c24540]: Released - Type:1 LSID:27734
          [1693995413.022608][73911:73911] CHIP:SVR: Commissioning failed (attempt 1): src/app/server/CommissioningWindowManager.cpp:77: CHIP Error 0x00000032: Timeout
          [1693995413.022623][73911:73911] CHIP:IN: SecureSession[0x559867c24540]: Allocated Type:1 LSID:27736
          [1693995413.022627][73911:73911] CHIP:SC: Assigned local session key ID 27736
          [1693995413.022630][73911:73911] CHIP:SC: Waiting for PBKDF param request
          [1693995413.022635][73911:73911] CHIP:DIS: Updating services using commissioning mode 1
          [1693995413.022816][73911:73911] CHIP:DIS: CHIP minimal mDNS started advertising.
          [1693995413.023022][73911:73911] CHIP:DL: Using wifi MAC for hostname
      disabled: true

    - label:
          "Step 10: CD Test Vector: Invalid CMS eContentType is set to Microsoft
          Authenticode [MSAC] OID = { 1.3.6.1.4.1.311.2.1.4 }."
      verification: |
          Execute the below mentioned command to put TH(all-cluster-app) into a commissionable state, Pls use equivalent command on the respective Platform

          ./chip-all-clusters-app --trace_decode 1 --dac_provider $CHIP_ROOT/credentials/development/commissioner_dut/struct_cd_cms_econtent_type_msac/test_case_vector.json --product-id 32768

          Once TH(all-clusters-app) reach the  commissionable state pls send below mentioned command on DUT(chip-tool). Pls use equivalent command on the respective platform
           ./chip-tool pairing onnetwork 1 20202021 --trace_decode 1

          On TH(all-clusters-app), Verify that the DUT(chip-tool) indicates that the device is not genuine, or otherwise indicates a failure of device attestation, within its error handling APIs or user interface

          [1693996285.064401][74155:74155] CHIP:EM: <<< [E:19412r S:5515 M:218067074 (Ack:163851272)] (S) Msg TX to 0:FFFFFFFB00000000 [0000] --- Type 0001:09 (IM:InvokeCommandResponse)
          [1693996285.064410][74155:74155] CHIP:IN: (S) Sending msg 218067074 on secure session with LSID: 5515
          [1693996285.064463][74155:74155] CHIP:DMG: Command handler moving to [CommandSen]
          [1693996285.064466][74155:74155] CHIP:DMG: Command handler moving to [AwaitingDe]
          [1693996285.064475][74155:74155] CHIP:DL: HandlePlatformSpecificBLEEvent 32783
          [1693996285.064479][74155:74155] CHIP:SVR: Failsafe timer expired
          [1693996285.064483][74155:74155] CHIP:IN: SecureSession[0x562b4607aae0]: MarkForEviction Type:1 LSID:5515
          [1693996285.064487][74155:74155] CHIP:SC: SecureSession[0x562b4607aae0, LSID:5515]: State change 'kActive' --> 'kPendingEviction'
          [1693996285.064507][74155:74155] CHIP:IN: SecureSession[0x562b4607aae0]: Released - Type:1 LSID:5515
          [1693996285.064520][74155:74155] CHIP:SVR: Commissioning failed (attempt 1): src/app/server/CommissioningWindowManager.cpp:77: CHIP Error 0x00000032: Timeout
          [1693996285.064543][74155:74155] CHIP:IN: SecureSession[0x562b4607aae0]: Allocated Type:1 LSID:5517
          [1693996285.064550][74155:74155] CHIP:SC: Assigned local session key ID 5517
      disabled: true

    - label:
          "Step 11: PAI Test Vector: PID in Subject field doesnt match PID in
          Issuer field"
      verification: |
          For Raspberry Pi device, perform a factory reset using the following command  - sudo rm -rf /tmp/chip_* for the 'chip-all-clusters-app.
           please use the equivalent command on your respective platform to perform a factory reset

          Execute the below mentioned command to put TH(all-cluster-app) into a commissionable state, Pls use equivalent command on the respective Platform

          ./chip-all-clusters-app --trace_decode 1 --dac_provider $CHIP_ROOT/credentials/development/commissioner_dut/struct_pai_subject_pid_mismatch/test_case_vector.json --product-id 32768

          Once TH(all-clusters-app) reach the  commissionable state pls send below mentioned command on DUT(chip-tool). Pls use equivalent command on the respective platform
           ./chip-tool pairing onnetwork 1 20202021 --trace_decode 1

          On TH(all-clusters-app), Verify that the DUT(chip-tool) indicates that the device is not genuine, or otherwise indicates a failure of device attestation, within its error handling APIs or user interface

          [1693996330.239836][74189:74189] CHIP:DMG:
          [1693996330.239846][74189:74189] CHIP:EM: <<< [E:61254r S:58699 M:113843948 (Ack:144549851)] (S) Msg TX to 0:FFFFFFFB00000000 [0000] --- Type 0001:09 (IM:InvokeCommandResponse)
          [1693996330.239854][74189:74189] CHIP:IN: (S) Sending msg 113843948 on secure session with LSID: 58699
          [1693996330.239877][74189:74189] CHIP:DMG: Command handler moving to [CommandSen]
          [1693996330.239880][74189:74189] CHIP:DMG: Command handler moving to [AwaitingDe]
          [1693996330.239885][74189:74189] CHIP:DL: HandlePlatformSpecificBLEEvent 32783
          [1693996330.239889][74189:74189] CHIP:SVR: Failsafe timer expired
          [1693996330.239893][74189:74189] CHIP:IN: SecureSession[0x56184d3e2c40]: MarkForEviction Type:1 LSID:58699
          [1693996330.239897][74189:74189] CHIP:SC: SecureSession[0x56184d3e2c40, LSID:58699]: State change 'kActive' --> 'kPendingEviction'
          [1693996330.239912][74189:74189] CHIP:IN: SecureSession[0x56184d3e2c40]: Released - Type:1 LSID:58699
          [1693996330.239922][74189:74189] CHIP:SVR: Commissioning failed (attempt 1): src/app/server/CommissioningWindowManager.cpp:77: CHIP Error 0x00000032: Timeout
          [1693996330.239939][74189:74189] CHIP:IN: SecureSession[0x56184d3e2c40]: Allocated Type:1 LSID:58701
          [1693996330.239945][74189:74189] CHIP:SC: Assigned local session key ID 58701
          [1693996330.239950][74189:74189] CHIP:SC: Waiting for PBKDF param request
          [1693996330.239956][74189:74189] CHIP:DIS: Updating services using commissioning mode 1
          [1693996330.240206][74189:74189] CHIP:DIS: CHIP minimal mDNS started advertising.
          [1693996330.240472][74189:74189] CHIP:DL: Using wifi MAC for hostname
      disabled: true

    - label:
          "Step 12: PAI Test Vector: Invalid certificate signature algorithm
          ECDSA_WITH_SHA1"
      verification: |
          For Raspberry Pi device, perform a factory reset using the following command  - sudo rm -rf /tmp/chip_* for the 'chip-all-clusters-app.
           please use the equivalent command on your respective platform to perform a factory reset

          Execute the below mentioned command to put TH(all-cluster-app) into a commissionable state, Pls use equivalent command on the respective Platform

          ./chip-all-clusters-app --trace_decode 1 --dac_provider $CHIP_ROOT/credentials/development/commissioner_dut/struct_pai_sig_algo_ecdsa_with_sha1/test_case_vector.json --product-id 32768

          Once TH(all-clusters-app) reach the  commissionable state pls send below mentioned command on DUT(chip-tool). Pls use equivalent command on the respective platform
           ./chip-tool pairing onnetwork 1 20202021 --trace_decode 1

          On TH(all-clusters-app), Verify that the DUT(chip-tool) indicates that the device is not genuine, or otherwise indicates a failure of device attestation, within its error handling APIs or user interface

          [1693993355.537189][72739:72739] CHIP:EM: <<< [E:46949r S:42353 M:75820384 (Ack:69095779)] (S) Msg TX to 0:FFFFFFFB00000000 [0000] --- Type 0001:09 (IM:InvokeCommandResponse)
          [1693993355.537196][72739:72739] CHIP:IN: (S) Sending msg 75820384 on secure session with LSID: 42353
          [1693993355.537235][72739:72739] CHIP:DMG: Command handler moving to [CommandSen]
          [1693993355.537239][72739:72739] CHIP:DMG: Command handler moving to [AwaitingDe]
          [1693993355.537245][72739:72739] CHIP:DL: HandlePlatformSpecificBLEEvent 32783
          [1693993355.537249][72739:72739] CHIP:SVR: Failsafe timer expired
          [1693993355.537252][72739:72739] CHIP:IN: SecureSession[0x561e088c6c60]: MarkForEviction Type:1 LSID:42353
          [1693993355.537256][72739:72739] CHIP:SC: SecureSession[0x561e088c6c60, LSID:42353]: State change 'kActive' --> 'kPendingEviction'
          [1693993355.537273][72739:72739] CHIP:IN: SecureSession[0x561e088c6c60]: Released - Type:1 LSID:42353
          [1693993355.537284][72739:72739] CHIP:SVR: Commissioning failed (attempt 1): src/app/server/CommissioningWindowManager.cpp:77: CHIP Error 0x00000032: Timeout
          [1693993355.537303][72739:72739] CHIP:IN: SecureSession[0x561e088c6c60]: Allocated Type:1 LSID:42355
          [1693993355.537308][72739:72739] CHIP:SC: Assigned local session key ID 42355
          [1693993355.537311][72739:72739] CHIP:SC: Waiting for PBKDF param request
          [1693993355.537318][72739:72739] CHIP:DIS: Updating services using commissioning mode 1
          [1693993355.537588][72739:72739] CHIP:DIS: CHIP minimal mDNS started advertising.
          [1693993355.537857][72739:72739] CHIP:DL: Using wifi MAC for hostname
          [1693993355.537907][72739:72739] CHIP:DIS: Advertise commission parameter vendorID=65521 productID=32768 discriminator=3840/15 cm=1
          [1693993355.537920][72739:72739] CHIP:DIS: Responding with _matterc._udp.local
          [1693993355.537923][72739:72739] CHIP:DIS: Responding with 341D2ED7D15535D3._matterc._udp.local
      disabled: true

    - label:
          "Step 13: CD Test Vector: The product_id_array field has 10 PID values
          none of which matches the PID value in DAC."
      verification: |
          For Raspberry Pi device, perform a factory reset using the following command  - sudo rm -rf /tmp/chip_* for the 'chip-all-clusters-app.
           please use the equivalent command on your respective platform to perform a factory reset

          Execute the below mentioned command to put TH(all-cluster-app) into a commissionable state, Pls use equivalent command on the respective Platform

          ./chip-all-clusters-app --trace_decode 1 --dac_provider $CHIP_ROOT/credentials/development/commissioner_dut/struct_cd_pid_array_count10_mismatch/test_case_vector.json --product-id 32768

          Once TH(all-clusters-app) reach the  commissionable state pls send below mentioned command on DUT(chip-tool). Pls use equivalent command on the respective platform
           ./chip-tool pairing onnetwork 1 20202021 --trace_decode 1

          On TH(all-clusters-app), Verify that the DUT(chip-tool) indicates that the device is not genuine, or otherwise indicates a failure of device attestation, within its error handling APIs or user interface

          [1693997271.340565][74610:74610] CHIP:EM: <<< [E:58667r S:59822 M:12912710 (Ack:254892351)] (S) Msg TX to 0:FFFFFFFB00000000 [0000] --- Type 0001:09 (IM:InvokeCommandResponse)
          [1693997271.340572][74610:74610] CHIP:IN: (S) Sending msg 12912710 on secure session with LSID: 59822
          [1693997271.340596][74610:74610] CHIP:DMG: Command handler moving to [CommandSen]
          [1693997271.340599][74610:74610] CHIP:DMG: Command handler moving to [AwaitingDe]
          [1693997271.340604][74610:74610] CHIP:DL: HandlePlatformSpecificBLEEvent 32783
          [1693997271.340608][74610:74610] CHIP:SVR: Failsafe timer expired
          [1693997271.340610][74610:74610] CHIP:IN: SecureSession[0x56256eefc1b0]: MarkForEviction Type:1 LSID:59822
          [1693997271.340615][74610:74610] CHIP:SC: SecureSession[0x56256eefc1b0, LSID:59822]: State change 'kActive' --> 'kPendingEviction'
          [1693997271.340627][74610:74610] CHIP:IN: SecureSession[0x56256eefc1b0]: Released - Type:1 LSID:59822
          [1693997271.340636][74610:74610] CHIP:SVR: Commissioning failed (attempt 1): src/app/server/CommissioningWindowManager.cpp:77: CHIP Error 0x00000032: Timeout
          [1693997271.340650][74610:74610] CHIP:IN: SecureSession[0x56256eefc1b0]: Allocated Type:1 LSID:59824
          [1693997271.340655][74610:74610] CHIP:SC: Assigned local session key ID 59824
          [1693997271.340659][74610:74610] CHIP:SC: Waiting for PBKDF param request
          [1693997271.340665][74610:74610] CHIP:DIS: Updating services using commissioning mode 1
          [1693997271.340877][74610:74610] CHIP:DIS: CHIP minimal mDNS started advertising.
      disabled: true

    - label:
          "Step 14: DAC Test Vector: Invalid certificate public key curve
          secp256k1"
      verification: |
          For Raspberry Pi device, perform a factory reset using the following command  - sudo rm -rf /tmp/chip_* for the 'chip-all-clusters-app.
           please use the equivalent command on your respective platform to perform a factory reset

          Execute the below mentioned command to put TH(all-cluster-app) into a commissionable state, Pls use equivalent command on the respective Platform

          ./chip-all-clusters-app --trace_decode 1 --dac_provider $CHIP_ROOT/credentials/development/commissioner_dut/struct_dac_sig_curve_secp256k1/test_case_vector.json --product-id 32768

          Once TH(all-clusters-app) reach the  commissionable state pls send below mentioned command on DUT(chip-tool). Pls use equivalent command on the respective platform
           ./chip-tool pairing onnetwork 1 20202021 --trace_decode 1

          On TH(all-clusters-app), Verify that the DUT(chip-tool) indicates that the device is not genuine, or otherwise indicates a failure of device attestation, within its error handling APIs or user interface

          [1693994760.408266][73595:73595] CHIP:DMG:
          [1693994760.408276][73595:73595] CHIP:EM: <<< [E:58926r S:22159 M:71363476 (Ack:241325210)] (S) Msg TX to 0:FFFFFFFB00000000 [0000] --- Type 0001:09 (IM:InvokeCommandResponse)
          [1693994760.408282][73595:73595] CHIP:IN: (S) Sending msg 71363476 on secure session with LSID: 22159
          [1693994760.408309][73595:73595] CHIP:DMG: Command handler moving to [CommandSen]
          [1693994760.408312][73595:73595] CHIP:DMG: Command handler moving to [AwaitingDe]
          [1693994760.408318][73595:73595] CHIP:DL: HandlePlatformSpecificBLEEvent 32783
          [1693994760.408321][73595:73595] CHIP:SVR: Failsafe timer expired
          [1693994760.408324][73595:73595] CHIP:IN: SecureSession[0x55f597d52960]: MarkForEviction Type:1 LSID:22159
          [1693994760.408328][73595:73595] CHIP:SC: SecureSession[0x55f597d52960, LSID:22159]: State change 'kActive' --> 'kPendingEviction'
          [1693994760.408344][73595:73595] CHIP:IN: SecureSession[0x55f597d52960]: Released - Type:1 LSID:22159
          [1693994760.408351][73595:73595] CHIP:SVR: Commissioning failed (attempt 1): src/app/server/CommissioningWindowManager.cpp:77: CHIP Error 0x00000032: Timeout
          [1693994760.408367][73595:73595] CHIP:IN: SecureSession[0x55f597d52960]: Allocated Type:1 LSID:22161
          [1693994760.408372][73595:73595] CHIP:SC: Assigned local session key ID 22161
          [1693994760.408375][73595:73595] CHIP:SC: Waiting for PBKDF param request
          [1693994760.408382][73595:73595] CHIP:DIS: Updating services using commissioning mode 1
          [1693994760.408655][73595:73595] CHIP:DIS: CHIP minimal mDNS started advertising.
          [1693994760.408910][73595:73595] CHIP:DL: Using wifi MAC for hostname
      disabled: true

    - label:
          "Step 15: DAC Test Vector: Certificate Key Usage extension critical
          field is missing"
      verification: |
          For Raspberry Pi device, perform a factory reset using the following command  - sudo rm -rf /tmp/chip_* for the 'chip-all-clusters-app.
           please use the equivalent command on your respective platform to perform a factory reset


          Execute the below mentioned command to put TH(all-cluster-app) into a commissionable state, Pls use equivalent command on the respective Platform

          ./chip-all-clusters-app --trace_decode 1 --dac_provider $CHIP_ROOT/credentials/development/commissioner_dut/struct_dac_ext_key_usage_critical_missing/test_case_vector.json --product-id 32768

          Once TH(all-clusters-app) reach the  commissionable state pls send below mentioned command on DUT(chip-tool). Pls use equivalent command on the respective platform
           ./chip-tool pairing onnetwork 1 20202021 --trace_decode 1

          On TH(all-clusters-app), Verify that the DUT(chip-tool) indicates that the device is not genuine, or otherwise indicates a failure of device attestation, within its error handling APIs or user interface

          [1693997054.992158][74509:74509] CHIP:EM: <<< [E:37779r S:15307 M:202831458 (Ack:181316818)] (S) Msg TX to 0:FFFFFFFB00000000 [0000] --- Type 0001:09 (IM:InvokeCommandResponse)
          [1693997054.992164][74509:74509] CHIP:IN: (S) Sending msg 202831458 on secure session with LSID: 15307
          [1693997054.992205][74509:74509] CHIP:DMG: Command handler moving to [CommandSen]
          [1693997054.992208][74509:74509] CHIP:DMG: Command handler moving to [AwaitingDe]
          [1693997054.992214][74509:74509] CHIP:DL: HandlePlatformSpecificBLEEvent 32783
          [1693997054.992217][74509:74509] CHIP:SVR: Failsafe timer expired
          [1693997054.992220][74509:74509] CHIP:IN: SecureSession[0x563fed359aa0]: MarkForEviction Type:1 LSID:15307
          [1693997054.992223][74509:74509] CHIP:SC: SecureSession[0x563fed359aa0, LSID:15307]: State change 'kActive' --> 'kPendingEviction'
          [1693997054.992237][74509:74509] CHIP:IN: SecureSession[0x563fed359aa0]: Released - Type:1 LSID:15307
          [1693997054.992246][74509:74509] CHIP:SVR: Commissioning failed (attempt 1): src/app/server/CommissioningWindowManager.cpp:77: CHIP Error 0x00000032: Timeout
          [1693997054.992264][74509:74509] CHIP:IN: SecureSession[0x563fed359aa0]: Allocated Type:1 LSID:15309
          [1693997054.992269][74509:74509] CHIP:SC: Assigned local session key ID 15309
          [1693997054.992272][74509:74509] CHIP:SC: Waiting for PBKDF param request
      disabled: true

    - label:
          "Step 16: DAC Test Vector: Certificate doesnt include Subject Key ID
          (SKID) extension"
      verification: |
          For Raspberry Pi device, perform a factory reset using the following command  - sudo rm -rf /tmp/chip_* for the 'chip-all-clusters-app.
           please use the equivalent command on your respective platform to perform a factory reset


          Execute the below mentioned command to put TH(all-cluster-app) into a commissionable state, Pls use equivalent command on the respective Platform

          ./chip-all-clusters-app --trace_decode 1 --dac_provider $CHIP_ROOT/credentials/development/commissioner_dut/struct_dac_ext_skid_missing/test_case_vector.json --product-id 32768

          Once TH(all-clusters-app) reach the  commissionable state pls send below mentioned command on DUT(chip-tool). Pls use equivalent command on the respective platform
           ./chip-tool pairing onnetwork 1 20202021 --trace_decode 1

          On TH(all-clusters-app), Verify that the DUT(chip-tool) indicates that the device is not genuine, or otherwise indicates a failure of device attestation, within its error handling APIs or user interface

          [1693997101.085189][74532:74532] CHIP:EM: <<< [E:980r S:47787 M:224476482 (Ack:52007145)] (S) Msg TX to 0:FFFFFFFB00000000 [0000] --- Type 0001:09 (IM:InvokeCommandResponse)
          [1693997101.085195][74532:74532] CHIP:IN: (S) Sending msg 224476482 on secure session with LSID: 47787
          [1693997101.085220][74532:74532] CHIP:DMG: Command handler moving to [CommandSen]
          [1693997101.085223][74532:74532] CHIP:DMG: Command handler moving to [AwaitingDe]
          [1693997101.085228][74532:74532] CHIP:DL: HandlePlatformSpecificBLEEvent 32783
          [1693997101.085230][74532:74532] CHIP:SVR: Failsafe timer expired
          [1693997101.085233][74532:74532] CHIP:IN: SecureSession[0x56202f5eeaf0]: MarkForEviction Type:1 LSID:47787
          [1693997101.085236][74532:74532] CHIP:SC: SecureSession[0x56202f5eeaf0, LSID:47787]: State change 'kActive' --> 'kPendingEviction'
          [1693997101.085248][74532:74532] CHIP:IN: SecureSession[0x56202f5eeaf0]: Released - Type:1 LSID:47787
          [1693997101.085255][74532:74532] CHIP:SVR: Commissioning failed (attempt 1): src/app/server/CommissioningWindowManager.cpp:77: CHIP Error 0x00000032: Timeout
          [1693997101.085269][74532:74532] CHIP:IN: SecureSession[0x56202f5eeaf0]: Allocated Type:1 LSID:47789
          [1693997101.085274][74532:74532] CHIP:SC: Assigned local session key ID 47789
          [1693997101.085276][74532:74532] CHIP:SC: Waiting for PBKDF param request
      disabled: true

    - label: "Step 17: CD Test Vector: Invalid Signer Info version set to v2."
      verification: |
          For Raspberry Pi device, perform a factory reset using the following command  - sudo rm -rf /tmp/chip_* for the 'chip-all-clusters-app.
           please use the equivalent command on your respective platform to perform a factory reset

          Execute the below mentioned command to put TH(all-cluster-app) into a commissionable state, Pls use equivalent command on the respective Platform
          ./chip-all-clusters-app --trace_decode 1 --dac_provider $CHIP_ROOT/credentials/development/commissioner_dut/struct_cd_signer_info_v2/test_case_vector.json --product-id 32768

          Once TH(all-clusters-app) reach the  commissionable state pls send below mentioned command on DUT(chip-tool). Pls use equivalent command on the respective platform
           ./chip-tool pairing onnetwork 1 20202021 --trace_decode 1

          On TH(all-clusters-app), Verify that the DUT(chip-tool) indicates that the device is not genuine, or otherwise indicates a failure of device attestation, within its error handling APIs or user interface

          [1693993317.367258][72717:72717] CHIP:EM: <<< [E:12718r S:18565 M:251356398 (Ack:239317917)] (S) Msg TX to 0:FFFFFFFB00000000 [0000] --- Type 0001:09 (IM:InvokeCommandResponse)
          [1693993317.367267][72717:72717] CHIP:IN: (S) Sending msg 251356398 on secure session with LSID: 18565
          [1693993317.367312][72717:72717] CHIP:DMG: Command handler moving to [CommandSen]
          [1693993317.367318][72717:72717] CHIP:DMG: Command handler moving to [AwaitingDe]
          [1693993317.367326][72717:72717] CHIP:DL: HandlePlatformSpecificBLEEvent 32783
          [1693993317.367331][72717:72717] CHIP:SVR: Failsafe timer expired
          [1693993317.367334][72717:72717] CHIP:IN: SecureSession[0x55a97361eb30]: MarkForEviction Type:1 LSID:18565
          [1693993317.367340][72717:72717] CHIP:SC: SecureSession[0x55a97361eb30, LSID:18565]: State change 'kActive' --> 'kPendingEviction'
          [1693993317.367359][72717:72717] CHIP:IN: SecureSession[0x55a97361eb30]: Released - Type:1 LSID:18565
          [1693993317.367370][72717:72717] CHIP:SVR: Commissioning failed (attempt 1): src/app/server/CommissioningWindowManager.cpp:77: CHIP Error 0x00000032: Timeout
          [1693993317.367391][72717:72717] CHIP:IN: SecureSession[0x55a97361eb30]: Allocated Type:1 LSID:18567
          [1693993317.367396][72717:72717] CHIP:SC: Assigned local session key ID 18567
          [1693993317.367400][72717:72717] CHIP:SC: Waiting for PBKDF param request
          [1693993317.367406][72717:72717] CHIP:DIS: Updating services using commissioning mode 1
          [1693993317.367652][72717:72717] CHIP:DIS: CHIP minimal mDNS started advertising.
          [1693993317.367956][72717:72717] CHIP:DL: Using wifi MAC for hostname
          [1693993317.368007][72717:72717] CHIP:DIS: Advertise commission parameter vendorID=65521 productID=32768 discriminator=3840/15 cm=1
      disabled: true

    - label:
          "Step 18: DAC Test Vector: Certificate Key Usage extension
          digitalSignature field is wrong (not present for DAC and present for
          PAI, which is OK as optional)"
      verification: |
          For Raspberry Pi device, perform a factory reset using the following command  - sudo rm -rf /tmp/chip_* for the 'chip-all-clusters-app.
           please use the equivalent command on your respective platform to perform a factory reset

          Execute the below mentioned command to put TH(all-cluster-app) into a commissionable state, Pls use equivalent command on the respective Platform

          ./chip-all-clusters-app --trace_decode 1 --dac_provider $CHIP_ROOT/credentials/development/commissioner_dut/struct_dac_ext_key_usage_dig_sig_wrong/test_case_vector.json --product-id 32768

          Once TH(all-clusters-app) reach the  commissionable state pls send below mentioned command on DUT(chip-tool). Pls use equivalent command on the respective platform
           ./chip-tool pairing onnetwork 1 20202021 --trace_decode 1

          On TH(all-clusters-app), Verify that the DUT(chip-tool) indicates that the device is not genuine, or otherwise indicates a failure of device attestation, within its error handling APIs or user interface

          [1693996261.937664][74143:74143] CHIP:EM: <<< [E:4439r S:62297 M:255923001 (Ack:4405626)] (S) Msg TX to 0:FFFFFFFB00000000 [0000] --- Type 0001:09 (IM:InvokeCommandResponse)
          [1693996261.937674][74143:74143] CHIP:IN: (S) Sending msg 255923001 on secure session with LSID: 62297
          [1693996261.937736][74143:74143] CHIP:DMG: Command handler moving to [CommandSen]
          [1693996261.937742][74143:74143] CHIP:DMG: Command handler moving to [AwaitingDe]
          [1693996261.937750][74143:74143] CHIP:DL: HandlePlatformSpecificBLEEvent 32783
          [1693996261.937755][74143:74143] CHIP:SVR: Failsafe timer expired
          [1693996261.937758][74143:74143] CHIP:IN: SecureSession[0x55c35e92eea0]: MarkForEviction Type:1 LSID:62297
          [1693996261.937761][74143:74143] CHIP:SC: SecureSession[0x55c35e92eea0, LSID:62297]: State change 'kActive' --> 'kPendingEviction'
          [1693996261.937779][74143:74143] CHIP:IN: SecureSession[0x55c35e92eea0]: Released - Type:1 LSID:62297
          [1693996261.937788][74143:74143] CHIP:SVR: Commissioning failed (attempt 1): src/app/server/CommissioningWindowManager.cpp:77: CHIP Error 0x00000032: Timeout
          [1693996261.937808][74143:74143] CHIP:IN: SecureSession[0x55c35e92eea0]: Allocated Type:1 LSID:62299
          [1693996261.937814][74143:74143] CHIP:SC: Assigned local session key ID 62299
          [1693996261.937816][74143:74143] CHIP:SC: Waiting for PBKDF param request
      disabled: true

    - label:
          "Step 19: DAC Test Vector: Certificate doesnt include Authority Key ID
          (AKID) extension"
      verification: |
          For Raspberry Pi device, perform a factory reset using the following command  - sudo rm -rf /tmp/chip_* for the 'chip-all-clusters-app.
           please use the equivalent command on your respective platform to perform a factory reset

          Execute the below mentioned command to put TH(all-cluster-app) into a commissionable state, Pls use equivalent command on the respective Platform

          ./chip-all-clusters-app --trace_decode 1 --dac_provider $CHIP_ROOT/credentials/development/commissioner_dut/struct_dac_ext_akid_missing/test_case_vector.json --product-id 32768

          Once TH(all-clusters-app) reach the  commissionable state pls send below mentioned command on DUT(chip-tool). Pls use equivalent command on the respective platform
           ./chip-tool pairing onnetwork 1 20202021 --trace_decode 1

          On TH(all-clusters-app), Verify that the DUT(chip-tool) indicates that the device is not genuine, or otherwise indicates a failure of device attestation, within its error handling APIs or user interface

          [1693995381.552754][73894:73894] CHIP:DMG:
          [1693995381.552761][73894:73894] CHIP:EM: <<< [E:37229r S:55064 M:5606557 (Ack:201777288)] (S) Msg TX to 0:FFFFFFFB00000000 [0000] --- Type 0001:09 (IM:InvokeCommandResponse)
          [1693995381.552767][73894:73894] CHIP:IN: (S) Sending msg 5606557 on secure session with LSID: 55064
          [1693995381.552789][73894:73894] CHIP:DMG: Command handler moving to [CommandSen]
          [1693995381.552792][73894:73894] CHIP:DMG: Command handler moving to [AwaitingDe]
          [1693995381.552796][73894:73894] CHIP:DL: HandlePlatformSpecificBLEEvent 32783
          [1693995381.552799][73894:73894] CHIP:SVR: Failsafe timer expired
          [1693995381.552802][73894:73894] CHIP:IN: SecureSession[0x563b61004960]: MarkForEviction Type:1 LSID:55064
          [1693995381.552804][73894:73894] CHIP:SC: SecureSession[0x563b61004960, LSID:55064]: State change 'kActive' --> 'kPendingEviction'
          [1693995381.552815][73894:73894] CHIP:IN: SecureSession[0x563b61004960]: Released - Type:1 LSID:55064
          [1693995381.552823][73894:73894] CHIP:SVR: Commissioning failed (attempt 1): src/app/server/CommissioningWindowManager.cpp:77: CHIP Error 0x00000032: Timeout
          [1693995381.552836][73894:73894] CHIP:IN: SecureSession[0x563b61004960]: Allocated Type:1 LSID:55066
          [1693995381.552840][73894:73894] CHIP:SC: Assigned local session key ID 55066
          [1693995381.552843][73894:73894] CHIP:SC: Waiting for PBKDF param request
          [1693995381.552848][73894:73894] CHIP:DIS: Updating services using commissioning mode 1
          [1693995381.553045][73894:73894] CHIP:DIS: CHIP minimal mDNS started advertising.
          [1693995381.553265][73894:73894] CHIP:DL: Using wifi MAC for hostname
      disabled: true

    - label:
          "Step 20: PAI Test Vector: Certificate doesnt include Basic Constraint
          extension"
      verification: |
          For Raspberry Pi device, perform a factory reset using the following command  - sudo rm -rf /tmp/chip_* for the 'chip-all-clusters-app.
           please use the equivalent command on your respective platform to perform a factory reset

          Execute the below mentioned command to put TH(all-cluster-app) into a commissionable state, Pls use equivalent command on the respective Platform

          ./chip-all-clusters-app --trace_decode 1 --dac_provider $CHIP_ROOT/credentials/development/commissioner_dut/struct_pai_ext_basic_missing/test_case_vector.json --product-id 32768

          Once TH(all-clusters-app) reach the  commissionable state pls send below mentioned command on DUT(chip-tool). Pls use equivalent command on the respective platform
           ./chip-tool pairing onnetwork 1 20202021 --trace_decode 1

          On TH(all-clusters-app), Verify that the DUT(chip-tool) indicates that the device is not genuine, or otherwise indicates a failure of device attestation, within its error handling APIs or user interface

          [1693994276.553200][73374:73374] CHIP:DMG:     peer_address = UDP:[fe80::a70c:61dc:df51:6945%enxd03745ce8f62]:36473
          [1693994276.553203][73374:73374] CHIP:DMG: }
          [1693994276.553206][73374:73374] CHIP:DMG:
          [1693994276.553217][73374:73374] CHIP:EM: <<< [E:65206r S:34371 M:72339643 (Ack:58486237)] (S) Msg TX to 0:FFFFFFFB00000000 [0000] --- Type 0001:09 (IM:InvokeCommandResponse)
          [1693994276.553225][73374:73374] CHIP:IN: (S) Sending msg 72339643 on secure session with LSID: 34371
          [1693994276.553250][73374:73374] CHIP:DMG: Command handler moving to [CommandSen]
          [1693994276.553254][73374:73374] CHIP:DMG: Command handler moving to [AwaitingDe]
          [1693994276.553259][73374:73374] CHIP:DL: HandlePlatformSpecificBLEEvent 32783
          [1693994276.553262][73374:73374] CHIP:SVR: Failsafe timer expired
          [1693994276.553265][73374:73374] CHIP:IN: SecureSession[0x5604c97909b0]: MarkForEviction Type:1 LSID:34371
          [1693994276.553269][73374:73374] CHIP:SC: SecureSession[0x5604c97909b0, LSID:34371]: State change 'kActive' --> 'kPendingEviction'
          [1693994276.553285][73374:73374] CHIP:IN: SecureSession[0x5604c97909b0]: Released - Type:1 LSID:34371
          [1693994276.553295][73374:73374] CHIP:SVR: Commissioning failed (attempt 1): src/app/server/CommissioningWindowManager.cpp:77: CHIP Error 0x00000032: Timeout
          [1693994276.553313][73374:73374] CHIP:IN: SecureSession[0x5604c97909b0]: Allocated Type:1 LSID:34373
          [1693994276.553319][73374:73374] CHIP:SC: Assigned local session key ID 34373
          [1693994276.553323][73374:73374] CHIP:SC: Waiting for PBKDF param request
          [1693994276.553330][73374:73374] CHIP:DIS: Updating services using commissioning mode 1
          [1693994276.553580][73374:73374] CHIP:DIS: CHIP minimal mDNS started advertising.
          [1693994276.553870][73374:73374] CHIP:DL: Using wifi MAC for hostname
          [1693994276.553912][73374:73374] CHIP:DIS: Advertise commission parameter vendorID=65521 productID=32768 discriminator=3840/15 cm=1
          [1693994276.553924][73374:73374] CHIP:DIS: Responding with _matterc._udp.local
      disabled: true

    - label:
          "Step 21: CD Test Vector: The security_information field is missing."
      verification: |
          For Raspberry Pi device, perform a factory reset using the following command  - sudo rm -rf /tmp/chip_* for the 'chip-all-clusters-app.
           please use the equivalent command on your respective platform to perform a factory reset

          Execute the below mentioned command to put TH(all-cluster-app) into a commissionable state, Pls use equivalent command on the respective Platform

          ./chip-all-clusters-app --trace_decode 1 --dac_provider $CHIP_ROOT/credentials/development/commissioner_dut/struct_cd_security_info_missing/test_case_vector.json --product-id 32768

          Once TH(all-clusters-app) reach the  commissionable state pls send below mentioned command on DUT(chip-tool). Pls use equivalent command on the respective platform
           ./chip-tool pairing onnetwork 1 20202021 --trace_decode 1

          On TH(all-clusters-app), Verify that the DUT(chip-tool) indicates that the device is not genuine, or otherwise indicates a failure of device attestation, within its error handling APIs or user interface

          [1693996239.759850][74133:74133] CHIP:EM: <<< [E:11884r S:63423 M:74553917 (Ack:204682393)] (S) Msg TX to 0:FFFFFFFB00000000 [0000] --- Type 0001:09 (IM:InvokeCommandResponse)
          [1693996239.759857][74133:74133] CHIP:IN: (S) Sending msg 74553917 on secure session with LSID: 63423
          [1693996239.759887][74133:74133] CHIP:DMG: Command handler moving to [CommandSen]
          [1693996239.759890][74133:74133] CHIP:DMG: Command handler moving to [AwaitingDe]
          [1693996239.759897][74133:74133] CHIP:DL: HandlePlatformSpecificBLEEvent 32783
          [1693996239.759900][74133:74133] CHIP:SVR: Failsafe timer expired
          [1693996239.759904][74133:74133] CHIP:IN: SecureSession[0x557fa61c3c90]: MarkForEviction Type:1 LSID:63423
          [1693996239.759908][74133:74133] CHIP:SC: SecureSession[0x557fa61c3c90, LSID:63423]: State change 'kActive' --> 'kPendingEviction'
          [1693996239.759923][74133:74133] CHIP:IN: SecureSession[0x557fa61c3c90]: Released - Type:1 LSID:63423
          [1693996239.759932][74133:74133] CHIP:SVR: Commissioning failed (attempt 1): src/app/server/CommissioningWindowManager.cpp:77: CHIP Error 0x00000032: Timeout
          [1693996239.759948][74133:74133] CHIP:IN: SecureSession[0x557fa61c3c90]: Allocated Type:1 LSID:63425
          [1693996239.759953][74133:74133] CHIP:SC: Assigned local session key ID 63425
          [1693996239.759956][74133:74133] CHIP:SC: Waiting for PBKDF param request
      disabled: true

    - label:
          "Step 22: PAI Test Vector: Certificate Key Usage extension keyCertSign
          field is wrong (present for DAC and not present for PAI)"
      verification: |
          For Raspberry Pi device, perform a factory reset using the following command  - sudo rm -rf /tmp/chip_* for the 'chip-all-clusters-app.
           please use the equivalent command on your respective platform to perform a factory reset

          Execute the below mentioned command to put TH(all-cluster-app) into a commissionable state, Pls use equivalent command on the respective Platform

          ./chip-all-clusters-app --trace_decode 1 --dac_provider $CHIP_ROOT/credentials/development/commissioner_dut/struct_pai_ext_key_usage_key_cert_sign_wrong/test_case_vector.json --product-id 32768

          Once TH(all-clusters-app) reach the  commissionable state pls send below mentioned command on DUT(chip-tool). Pls use equivalent command on the respective platform
           ./chip-tool pairing onnetwork 1 20202021 --trace_decode 1

          On TH(all-clusters-app), Verify that the DUT(chip-tool) indicates that the device is not genuine, or otherwise indicates a failure of device attestation, within its error handling APIs or user interface

          [1693997515.751436][74733:74733] CHIP:DMG:
          [1693997515.751444][74733:74733] CHIP:EM: <<< [E:5171r S:65366 M:88404245 (Ack:115426625)] (S) Msg TX to 0:FFFFFFFB00000000 [0000] --- Type 0001:09 (IM:InvokeCommandResponse)
          [1693997515.751449][74733:74733] CHIP:IN: (S) Sending msg 88404245 on secure session with LSID: 65366
          [1693997515.751471][74733:74733] CHIP:DMG: Command handler moving to [CommandSen]
          [1693997515.751474][74733:74733] CHIP:DMG: Command handler moving to [AwaitingDe]
          [1693997515.751481][74733:74733] CHIP:DL: HandlePlatformSpecificBLEEvent 32783
          [1693997515.751484][74733:74733] CHIP:SVR: Failsafe timer expired
          [1693997515.751487][74733:74733] CHIP:IN: SecureSession[0x558c6a10d970]: MarkForEviction Type:1 LSID:65366
          [1693997515.751491][74733:74733] CHIP:SC: SecureSession[0x558c6a10d970, LSID:65366]: State change 'kActive' --> 'kPendingEviction'
          [1693997515.751505][74733:74733] CHIP:IN: SecureSession[0x558c6a10d970]: Released - Type:1 LSID:65366
          [1693997515.751513][74733:74733] CHIP:SVR: Commissioning failed (attempt 1): src/app/server/CommissioningWindowManager.cpp:77: CHIP Error 0x00000032: Timeout
          [1693997515.751528][74733:74733] CHIP:IN: SecureSession[0x558c6a10d970]: Allocated Type:1 LSID:65368
          [1693997515.751533][74733:74733] CHIP:SC: Assigned local session key ID 65368
          [1693997515.751536][74733:74733] CHIP:SC: Waiting for PBKDF param request
      disabled: true

    - label:
          "Step 23: CD Test Vector: The authorized_paa_list contains one valid
          PAA which is authorized to sign the PAI."
      verification: |
          For Raspberry Pi device, perform a factory reset using the following command  - sudo rm -rf /tmp/chip_* for the 'chip-all-clusters-app.
           please use the equivalent command on your respective platform to perform a factory reset

          Execute the below mentioned command to put TH(all-cluster-app) into a commissionable state, Pls use equivalent command on the respective Platform

          ./chip-all-clusters-app --trace_decode 1 --dac_provider $CHIP_ROOT/credentials/development/commissioner_dut/struct_cd_authorized_paa_list_count0/test_case_vector.json --product-id 32768

          Once TH(all-clusters-app) reach the  commissionable state pls send below mentioned command on DUT(chip-tool). Pls use equivalent command on the respective platform
           ./chip-tool pairing onnetwork 1 20202021 --trace_decode 1

          On TH(all-clusters-app), Verify that the DUT(chip-tool) indicates that the device is not genuine, or otherwise indicates a failure of device attestation, within its error handling APIs or user interface

          [1693994866.084220][73646:73646] CHIP:EM: <<< [E:32023r S:4683 M:260375300 (Ack:133194635)] (S) Msg TX to 0:FFFFFFFB00000000 [0000] --- Type 0001:09 (IM:InvokeCommandResponse)
          [1693994866.084225][73646:73646] CHIP:IN: (S) Sending msg 260375300 on secure session with LSID: 4683
          [1693994866.084267][73646:73646] CHIP:DMG: Command handler moving to [CommandSen]
          [1693994866.084269][73646:73646] CHIP:DMG: Command handler moving to [AwaitingDe]
          [1693994866.084274][73646:73646] CHIP:DL: HandlePlatformSpecificBLEEvent 32783
          [1693994866.084276][73646:73646] CHIP:SVR: Failsafe timer expired
          [1693994866.084279][73646:73646] CHIP:IN: SecureSession[0x564174dd8940]: MarkForEviction Type:1 LSID:4683
          [1693994866.084282][73646:73646] CHIP:SC: SecureSession[0x564174dd8940, LSID:4683]: State change 'kActive' --> 'kPendingEviction'
          [1693994866.084294][73646:73646] CHIP:IN: SecureSession[0x564174dd8940]: Released - Type:1 LSID:4683
          [1693994866.084300][73646:73646] CHIP:SVR: Commissioning failed (attempt 1): src/app/server/CommissioningWindowManager.cpp:77: CHIP Error 0x00000032: Timeout
          [1693994866.084314][73646:73646] CHIP:IN: SecureSession[0x564174dd8940]: Allocated Type:1 LSID:4685
          [1693994866.084319][73646:73646] CHIP:SC: Assigned local session key ID 4685
          [1693994866.084321][73646:73646] CHIP:SC: Waiting for PBKDF param request
          [1693994866.084326][73646:73646] CHIP:DIS: Updating services using commissioning mode 1
      disabled: true

    - label:
          "Step 24: CD Test Vector: The product_id_array field is empty TLV
          array."
      verification: |
          For Raspberry Pi device, perform a factory reset using the following command  - sudo rm -rf /tmp/chip_* for the 'chip-all-clusters-app.
           please use the equivalent command on your respective platform to perform a factory reset

          Execute the below mentioned command to put TH(all-cluster-app) into a commissionable state, Pls use equivalent command on the respective Platform

          ./chip-all-clusters-app --trace_decode 1 --dac_provider $CHIP_ROOT/credentials/development/commissioner_dut/struct_cd_pid_array_count01_mismatch/test_case_vector.json --product-id 32768

          Once TH(all-clusters-app) reach the  commissionable state pls send below mentioned command on DUT(chip-tool). Pls use equivalent command on the respective platform
           ./chip-tool pairing onnetwork 1 20202021 --trace_decode 1

          On TH(all-clusters-app), Verify that the DUT(chip-tool) indicates that the device is not genuine, or otherwise indicates a failure of device attestation, within its error handling APIs or user interface

          [1693994601.641020][73535:73535] CHIP:EM: <<< [E:59651r S:16286 M:42317111 (Ack:165156221)] (S) Msg TX to 0:FFFFFFFB00000000 [0000] --- Type 0001:09 (IM:InvokeCommandResponse)
          [1693994601.641028][73535:73535] CHIP:IN: (S) Sending msg 42317111 on secure session with LSID: 16286
          [1693994601.641053][73535:73535] CHIP:DMG: Command handler moving to [CommandSen]
          [1693994601.641057][73535:73535] CHIP:DMG: Command handler moving to [AwaitingDe]
          [1693994601.641064][73535:73535] CHIP:DL: HandlePlatformSpecificBLEEvent 32783
          [1693994601.641067][73535:73535] CHIP:SVR: Failsafe timer expired
          [1693994601.641071][73535:73535] CHIP:IN: SecureSession[0x558132a3cae0]: MarkForEviction Type:1 LSID:16286
          [1693994601.641075][73535:73535] CHIP:SC: SecureSession[0x558132a3cae0, LSID:16286]: State change 'kActive' --> 'kPendingEviction'
          [1693994601.641091][73535:73535] CHIP:IN: SecureSession[0x558132a3cae0]: Released - Type:1 LSID:16286
          [1693994601.641101][73535:73535] CHIP:SVR: Commissioning failed (attempt 1): src/app/server/CommissioningWindowManager.cpp:77: CHIP Error 0x00000032: Timeout
          [1693994601.641116][73535:73535] CHIP:IN: SecureSession[0x558132a3cae0]: Allocated Type:1 LSID:16288
          [1693994601.641122][73535:73535] CHIP:SC: Assigned local session key ID 16288
          [1693994601.641126][73535:73535] CHIP:SC: Waiting for PBKDF param request
          [1693994601.641134][73535:73535] CHIP:DIS: Updating services using commissioning mode 1
          [1693994601.641380][73535:73535] CHIP:DIS: CHIP minimal mDNS started advertising.
          [1693994601.641631][73535:73535] CHIP:DL: Using wifi MAC for hostname
          [1693994601.641667][73535:73535] CHIP:DIS: Advertise commission parameter vendorID=65521 productID=32768 discriminator=3840/15 cm=1
          [1693994601.641679][73535:73535] CHIP:DIS: Responding with _matterc._udp.local
      disabled: true

    - label:
          "Step 25: CD Test Vector: The vendor_id field doesnt match the VID in
          DAC."
      verification: |
          For Raspberry Pi device, perform a factory reset using the following command  - sudo rm -rf /tmp/chip_* for the 'chip-all-clusters-app.
           please use the equivalent command on your respective platform to perform a factory reset


          Execute the below mentioned command to put TH(all-cluster-app) into a commissionable state, Pls use equivalent command on the respective Platform

          ./chip-all-clusters-app --trace_decode 1 --dac_provider $CHIP_ROOT/credentials/development/commissioner_dut/struct_cd_vid_mismatch/test_case_vector.json --product-id 32768

          Once TH(all-clusters-app) reach the  commissionable state pls send below mentioned command on DUT(chip-tool). Pls use equivalent command on the respective platform
           ./chip-tool pairing onnetwork 1 20202021 --trace_decode 1

          On TH(all-clusters-app), Verify that the DUT(chip-tool) indicates that the device is not genuine, or otherwise indicates a failure of device attestation, within its error handling APIs or user interface

          [1693994486.893297][73502:73502] CHIP:DMG:
          [1693994486.893313][73502:73502] CHIP:EM: <<< [E:21518r S:20806 M:104253722 (Ack:147833640)] (S) Msg TX to 0:FFFFFFFB00000000 [0000] --- Type 0001:09 (IM:InvokeCommandResponse)
          [1693994486.893323][73502:73502] CHIP:IN: (S) Sending msg 104253722 on secure session with LSID: 20806
          [1693994486.893367][73502:73502] CHIP:DMG: Command handler moving to [CommandSen]
          [1693994486.893372][73502:73502] CHIP:DMG: Command handler moving to [AwaitingDe]
          [1693994486.893379][73502:73502] CHIP:DL: HandlePlatformSpecificBLEEvent 32783
          [1693994486.893384][73502:73502] CHIP:SVR: Failsafe timer expired
          [1693994486.893388][73502:73502] CHIP:IN: SecureSession[0x561bb3613ad0]: MarkForEviction Type:1 LSID:20806
          [1693994486.893393][73502:73502] CHIP:SC: SecureSession[0x561bb3613ad0, LSID:20806]: State change 'kActive' --> 'kPendingEviction'
          [1693994486.893411][73502:73502] CHIP:IN: SecureSession[0x561bb3613ad0]: Released - Type:1 LSID:20806
          [1693994486.893421][73502:73502] CHIP:SVR: Commissioning failed (attempt 1): src/app/server/CommissioningWindowManager.cpp:77: CHIP Error 0x00000032: Timeout
          [1693994486.893442][73502:73502] CHIP:IN: SecureSession[0x561bb3613ad0]: Allocated Type:1 LSID:20808
          [1693994486.893449][73502:73502] CHIP:SC: Assigned local session key ID 20808
          [1693994486.893453][73502:73502] CHIP:SC: Waiting for PBKDF param request
          [1693994486.893460][73502:73502] CHIP:DIS: Updating services using commissioning mode 1
          [1693994486.893767][73502:73502] CHIP:DIS: CHIP minimal mDNS started advertising.
          [1693994486.894023][73502:73502] CHIP:DL: Using wifi MAC for hostname
          [1693994486.894053][73502:73502] CHIP:DIS: Advertise commission parameter vendorID=65521 productID=32768 discriminator=3840/15 cm=1
      disabled: true

    - label:
          "Step 26: DAC Test Vector: Certificate Basic Constraint extension
          PathLen field set to 2"
      verification: |
          For Raspberry Pi device, perform a factory reset using the following command  - sudo rm -rf /tmp/chip_* for the 'chip-all-clusters-app.
           please use the equivalent command on your respective platform to perform a factory reset


          Execute the below mentioned command to put TH(all-cluster-app) into a commissionable state, Pls use equivalent command on the respective Platform

          ./chip-all-clusters-app --trace_decode 1 --dac_provider $CHIP_ROOT/credentials/development/commissioner_dut/struct_dac_ext_basic_pathlen2/test_case_vector.json --product-id 32768

          Once TH(all-clusters-app) reach the  commissionable state pls send below mentioned command on DUT(chip-tool). Pls use equivalent command on the respective platform
           ./chip-tool pairing onnetwork 1 20202021 --trace_decode 1

          On TH(all-clusters-app), Verify that the DUT(chip-tool) indicates that the device is not genuine, or otherwise indicates a failure of device attestation, within its error handling APIs or user interface

          [1693996848.934331][74418:74418] CHIP:DMG:
          [1693996848.934341][74418:74418] CHIP:EM: <<< [E:42022r S:36447 M:202045280 (Ack:89005990)] (S) Msg TX to 0:FFFFFFFB00000000 [0000] --- Type 0001:09 (IM:InvokeCommandResponse)
          [1693996848.934346][74418:74418] CHIP:IN: (S) Sending msg 202045280 on secure session with LSID: 36447
          [1693996848.934373][74418:74418] CHIP:DMG: Command handler moving to [CommandSen]
          [1693996848.934376][74418:74418] CHIP:DMG: Command handler moving to [AwaitingDe]
          [1693996848.934380][74418:74418] CHIP:DL: HandlePlatformSpecificBLEEvent 32783
          [1693996848.934383][74418:74418] CHIP:SVR: Failsafe timer expired
          [1693996848.934385][74418:74418] CHIP:IN: SecureSession[0x559fea0e1c60]: MarkForEviction Type:1 LSID:36447
          [1693996848.934398][74418:74418] CHIP:SC: SecureSession[0x559fea0e1c60, LSID:36447]: State change 'kActive' --> 'kPendingEviction'
          [1693996848.934413][74418:74418] CHIP:IN: SecureSession[0x559fea0e1c60]: Released - Type:1 LSID:36447
          [1693996848.934421][74418:74418] CHIP:SVR: Commissioning failed (attempt 1): src/app/server/CommissioningWindowManager.cpp:77: CHIP Error 0x00000032: Timeout
      disabled: true

    - label:
          "Step 27: PAI Test Vector: Certificate Key Usage extension cRLSign
          field is wrong (present for DAC and not present for PAI)"
      verification: |
          For Raspberry Pi device, perform a factory reset using the following command  - sudo rm -rf /tmp/chip_* for the 'chip-all-clusters-app.
           please use the equivalent command on your respective platform to perform a factory reset

          Execute the below mentioned command to put TH(all-cluster-app) into a commissionable state, Pls use equivalent command on the respective Platform

          ./chip-all-clusters-app --trace_decode 1 --dac_provider $CHIP_ROOT/credentials/development/commissioner_dut/struct_pai_ext_key_usage_crl_sign_wrong/test_case_vector.json --product-id 32768

          Once TH(all-clusters-app) reach the  commissionable state pls send below mentioned command on DUT(chip-tool). Pls use equivalent command on the respective platform
           ./chip-tool pairing onnetwork 1 20202021 --trace_decode 1

          On TH(all-clusters-app), Verify that the DUT(chip-tool) indicates that the device is not genuine, or otherwise indicates a failure of device attestation, within its error handling APIs or user interface

          [1693995732.022364][73958:73958] CHIP:EM: <<< [E:45133r S:28926 M:139363549 (Ack:191197291)] (S) Msg TX to 0:FFFFFFFB00000000 [0000] --- Type 0001:09 (IM:InvokeCommandResponse)
          [1693995732.022372][73958:73958] CHIP:IN: (S) Sending msg 139363549 on secure session with LSID: 28926
          [1693995732.022397][73958:73958] CHIP:DMG: Command handler moving to [CommandSen]
          [1693995732.022400][73958:73958] CHIP:DMG: Command handler moving to [AwaitingDe]
          [1693995732.022406][73958:73958] CHIP:DL: HandlePlatformSpecificBLEEvent 32783
          [1693995732.022409][73958:73958] CHIP:SVR: Failsafe timer expired
          [1693995732.022412][73958:73958] CHIP:IN: SecureSession[0x5637ef6d5990]: MarkForEviction Type:1 LSID:28926
          [1693995732.022416][73958:73958] CHIP:SC: SecureSession[0x5637ef6d5990, LSID:28926]: State change 'kActive' --> 'kPendingEviction'
          [1693995732.022432][73958:73958] CHIP:IN: SecureSession[0x5637ef6d5990]: Released - Type:1 LSID:28926
          [1693995732.022442][73958:73958] CHIP:SVR: Commissioning failed (attempt 1): src/app/server/CommissioningWindowManager.cpp:77: CHIP Error 0x00000032: Timeout
          [1693995732.022459][73958:73958] CHIP:IN: SecureSession[0x5637ef6d5990]: Allocated Type:1 LSID:28928
          [1693995732.022465][73958:73958] CHIP:SC: Assigned local session key ID 28928
          [1693995732.022469][73958:73958] CHIP:SC: Waiting for PBKDF param request
          [1693995732.022476][73958:73958] CHIP:DIS: Updating services using commissioning mode 1
          [1693995732.022723][73958:73958] CHIP:DIS: CHIP minimal mDNS started advertising.
          [1693995732.023005][73958:73958] CHIP:DL: Using wifi MAC for hostname
          [1693995732.023042][73958:73958] CHIP:DIS: Advertise commission parameter vendorID=65521 productID=32768 discriminator=3840/15 cm=1
      disabled: true

    - label:
          "Step 28: CD Test Vector: Invalid Signer Info digest algorithm SHA1."
      verification: |
          For Raspberry Pi device, perform a factory reset using the following command  - sudo rm -rf /tmp/chip_* for the 'chip-all-clusters-app.
           please use the equivalent command on your respective platform to perform a factory reset

          Execute the below mentioned command to put TH(all-cluster-app) into a commissionable state, Pls use equivalent command on the respective Platform

          ./chip-all-clusters-app --trace_decode 1 --dac_provider $CHIP_ROOT/credentials/development/commissioner_dut/struct_cd_signer_info_digest_algo_sha1/test_case_vector.json --product-id 32768

          Once TH(all-clusters-app) reach the  commissionable state pls send below mentioned command on DUT(chip-tool). Pls use equivalent command on the respective platform
           ./chip-tool pairing onnetwork 1 20202021 --trace_decode 1

          On TH(all-clusters-app), Verify that the DUT(chip-tool) indicates that the device is not genuine, or otherwise indicates a failure of device attestation, within its error handling APIs or user interface

          [1693994367.331030][73424:73424] CHIP:EM: <<< [E:34584r S:41358 M:224843539 (Ack:179898907)] (S) Msg TX to 0:FFFFFFFB00000000 [0000] --- Type 0001:09 (IM:InvokeCommandResponse)
          [1693994367.331036][73424:73424] CHIP:IN: (S) Sending msg 224843539 on secure session with LSID: 41358
          [1693994367.331059][73424:73424] CHIP:DMG: Command handler moving to [CommandSen]
          [1693994367.331062][73424:73424] CHIP:DMG: Command handler moving to [AwaitingDe]
          [1693994367.331067][73424:73424] CHIP:DL: HandlePlatformSpecificBLEEvent 32783
          [1693994367.331070][73424:73424] CHIP:SVR: Failsafe timer expired
          [1693994367.331073][73424:73424] CHIP:IN: SecureSession[0x55c991abec90]: MarkForEviction Type:1 LSID:41358
          [1693994367.331079][73424:73424] CHIP:SC: SecureSession[0x55c991abec90, LSID:41358]: State change 'kActive' --> 'kPendingEviction'
          [1693994367.331090][73424:73424] CHIP:IN: SecureSession[0x55c991abec90]: Released - Type:1 LSID:41358
          [1693994367.331097][73424:73424] CHIP:SVR: Commissioning failed (attempt 1): src/app/server/CommissioningWindowManager.cpp:77: CHIP Error 0x00000032: Timeout
          [1693994367.331111][73424:73424] CHIP:IN: SecureSession[0x55c991abec90]: Allocated Type:1 LSID:41360
          [1693994367.331116][73424:73424] CHIP:SC: Assigned local session key ID 41360
          [1693994367.331118][73424:73424] CHIP:SC: Waiting for PBKDF param request
          [1693994367.331124][73424:73424] CHIP:DIS: Updating services using commissioning mode 1
          [1693994367.331310][73424:73424] CHIP:DIS: CHIP minimal mDNS started advertising.
          [1693994367.331527][73424:73424] CHIP:DL: Using wifi MAC for hostname
          [1693994367.331559][73424:73424] CHIP:DIS: Advertise commission parameter vendorID=65521 productID=32768 discriminator=3840/15 cm=1
          [1693994367.331568][73424:73424] CHIP:DIS: Responding with _matterc._udp.local
          [1693994367.331572][73424:73424] CHIP:DIS: Responding with D90EF381193D21EB._matterc._udp.loc
      disabled: true

    - label:
          "Step 29: PAI Test Vector: Fallback VID and PID encoding example:
          invalid VID encoding"
      verification: |
          For Raspberry Pi device, perform a factory reset using the following command  - sudo rm -rf /tmp/chip_* for the 'chip-all-clusters-app.
           please use the equivalent command on your respective platform to perform a factory reset


          Execute the below mentioned command to put TH(all-cluster-app) into a commissionable state, Pls use equivalent command on the respective Platform

          ./chip-all-clusters-app --trace_decode 1 --dac_provider $CHIP_ROOT/credentials/development/commissioner_dut/struct_pai_vidpid_fallback_encoding_10/test_case_vector.json --product-id 177


          Once TH(all-clusters-app) reach the  commissionable state pls send below mentioned command on DUT(chip-tool). Pls use equivalent command on the respective platform
           ./chip-tool pairing onnetwork 1 20202021 --trace_decode 1

          On TH(all-clusters-app), Verify that the DUT(chip-tool) indicates that the device is not genuine, or otherwise indicates a failure of device attestation, within its error handling APIs or user interface

          [1693997239.698633][74597:74597] CHIP:EM: <<< [E:5732r S:61163 M:138027290 (Ack:110202572)] (S) Msg TX to 0:FFFFFFFB00000000 [0000] --- Type 0001:09 (IM:InvokeCommandResponse)
          [1693997239.698640][74597:74597] CHIP:IN: (S) Sending msg 138027290 on secure session with LSID: 61163
          [1693997239.698700][74597:74597] CHIP:DMG: Command handler moving to [CommandSen]
          [1693997239.698706][74597:74597] CHIP:DMG: Command handler moving to [AwaitingDe]
          [1693997239.698716][74597:74597] CHIP:DL: HandlePlatformSpecificBLEEvent 32783
          [1693997239.698723][74597:74597] CHIP:SVR: Failsafe timer expired
          [1693997239.698727][74597:74597] CHIP:IN: SecureSession[0x55d7d8191960]: MarkForEviction Type:1 LSID:61163
          [1693997239.698734][74597:74597] CHIP:SC: SecureSession[0x55d7d8191960, LSID:61163]: State change 'kActive' --> 'kPendingEviction'
          [1693997239.698761][74597:74597] CHIP:IN: SecureSession[0x55d7d8191960]: Released - Type:1 LSID:61163
          [1693997239.698781][74597:74597] CHIP:SVR: Commissioning failed (attempt 1): src/app/server/CommissioningWindowManager.cpp:77: CHIP Error 0x00000032: Timeout
          [1693997239.698830][74597:74597] CHIP:IN: SecureSession[0x55d7d8191960]: Allocated Type:1 LSID:61165
          [1693997239.698841][74597:74597] CHIP:SC: Assigned local session key ID 61165
          [1693997239.698848][74597:74597] CHIP:SC: Waiting for PBKDF param request
          [1693997239.698862][74597:74597] CHIP:DIS: Updating services using commissioning mode 1
          [1693997239.699249][74597:74597] CHIP:DIS: CHIP minimal mDNS started advertising.
      disabled: true

    - label:
          "Step 30: PAI Test Vector: Certificate Basic Constraint extension
          critical field is set as 'non-critical'"
      verification: |
          For Raspberry Pi device, perform a factory reset using the following command  - sudo rm -rf /tmp/chip_* for the 'chip-all-clusters-app.
           please use the equivalent command on your respective platform to perform a factory reset

          Execute the below mentioned command to put TH(all-cluster-app) into a commissionable state, Pls use equivalent command on the respective Platform

          ./chip-all-clusters-app --trace_decode 1 --dac_provider $CHIP_ROOT/credentials/development/commissioner_dut/struct_pai_ext_basic_critical_wrong/test_case_vector.json --product-id 32768

          Once TH(all-clusters-app) reach the  commissionable state pls send below mentioned command on DUT(chip-tool). Pls use equivalent command on the respective platform
           ./chip-tool pairing onnetwork 1 20202021 --trace_decode 1

          On TH(all-clusters-app), Verify that the DUT(chip-tool) indicates that the device is not genuine, or otherwise indicates a failure of device attestation, within its error handling APIs or user interface

          [1693995285.889838][73846:73846] CHIP:EM: <<< [E:45422r S:62769 M:160526158 (Ack:96854025)] (S) Msg TX to 0:FFFFFFFB00000000 [0000] --- Type 0001:09 (IM:InvokeCommandResponse)
          [1693995285.889844][73846:73846] CHIP:IN: (S) Sending msg 160526158 on secure session with LSID: 62769
          [1693995285.889866][73846:73846] CHIP:DMG: Command handler moving to [CommandSen]
          [1693995285.889870][73846:73846] CHIP:DMG: Command handler moving to [AwaitingDe]
          [1693995285.889876][73846:73846] CHIP:DL: HandlePlatformSpecificBLEEvent 32783
          [1693995285.889880][73846:73846] CHIP:SVR: Failsafe timer expired
          [1693995285.889883][73846:73846] CHIP:IN: SecureSession[0x564a0507ca40]: MarkForEviction Type:1 LSID:62769
          [1693995285.889887][73846:73846] CHIP:SC: SecureSession[0x564a0507ca40, LSID:62769]: State change 'kActive' --> 'kPendingEviction'
          [1693995285.889904][73846:73846] CHIP:IN: SecureSession[0x564a0507ca40]: Released - Type:1 LSID:62769
          [1693995285.889913][73846:73846] CHIP:SVR: Commissioning failed (attempt 1): src/app/server/CommissioningWindowManager.cpp:77: CHIP Error 0x00000032: Timeout
          [1693995285.889932][73846:73846] CHIP:IN: SecureSession[0x564a0507ca40]: Allocated Type:1 LSID:62771
          [1693995285.889938][73846:73846] CHIP:SC: Assigned local session key ID 62771
          [1693995285.889941][73846:73846] CHIP:SC: Waiting for PBKDF param request
          [1693995285.889948][73846:73846] CHIP:DIS: Updating services using commissioning mode 1
          [1693995285.890194][73846:73846] CHIP:DIS: CHIP minimal mDNS started advertising.
          [1693995285.890476][73846:73846] CHIP:DL: Using wifi MAC for hostname
          [1693995285.890515][73846:73846] CHIP:DIS: Advertise commission parameter vendorID=65521 productID=32768 discriminator=3840/15 cm=1
      disabled: true

    - label:
          "Step 31: DAC Test Vector: Fallback VID and PID encoding example from
          spec: invalid, since substring following Mvid: is not exactly 4
          uppercase hexadecimal digits"
      verification: |
          For Raspberry Pi device, perform a factory reset using the following command  - sudo rm -rf /tmp/chip_* for the 'chip-all-clusters-app.
           please use the equivalent command on your respective platform to perform a factory reset

          Execute the below mentioned command to put TH(all-cluster-app) into a commissionable state, Pls use equivalent command on the respective Platform

          ./chip-all-clusters-app --trace_decode 1 --dac_provider $CHIP_ROOT/credentials/development/commissioner_dut/struct_dac_vidpid_fallback_encoding_07/test_case_vector.json --product-id 177

          Once TH(all-clusters-app) reach the  commissionable state pls send below mentioned command on DUT(chip-tool). Pls use equivalent command on the respective platform
           ./chip-tool pairing onnetwork 1 20202021 --trace_decode 1

          On TH(all-clusters-app), Verify that the DUT(chip-tool) indicates that the device is not genuine, or otherwise indicates a failure of device attestation, within its error handling APIs or user interface

          [1693997435.474777][74695:74695] CHIP:EM: <<< [E:47404r S:56892 M:148152004 (Ack:209702583)] (S) Msg TX to 0:FFFFFFFB00000000 [0000] --- Type 0001:09 (IM:InvokeCommandResponse)
          [1693997435.474785][74695:74695] CHIP:IN: (S) Sending msg 148152004 on secure session with LSID: 56892
          [1693997435.474824][74695:74695] CHIP:DMG: Command handler moving to [CommandSen]
          [1693997435.474828][74695:74695] CHIP:DMG: Command handler moving to [AwaitingDe]
          [1693997435.474835][74695:74695] CHIP:DL: HandlePlatformSpecificBLEEvent 32783
          [1693997435.474838][74695:74695] CHIP:SVR: Failsafe timer expired
          [1693997435.474842][74695:74695] CHIP:IN: SecureSession[0x55acdcc83540]: MarkForEviction Type:1 LSID:56892
          [1693997435.474846][74695:74695] CHIP:SC: SecureSession[0x55acdcc83540, LSID:56892]: State change 'kActive' --> 'kPendingEviction'
          [1693997435.474861][74695:74695] CHIP:IN: SecureSession[0x55acdcc83540]: Released - Type:1 LSID:56892
          [1693997435.474869][74695:74695] CHIP:SVR: Commissioning failed (attempt 1): src/app/server/CommissioningWindowManager.cpp:77: CHIP Error 0x00000032: Timeout
          [1693997435.474885][74695:74695] CHIP:IN: SecureSession[0x55acdcc83540]: Allocated Type:1 LSID:56894
          [1693997435.474890][74695:74695] CHIP:SC: Assigned local session key ID 56894
          [1693997435.474892][74695:74695] CHIP:SC: Waiting for PBKDF param request
      disabled: true

    - label:
          "Step 32: PAI Test Vector: Certificate Key Usage extension critical
          field is missing"
      verification: |
          For Raspberry Pi device, perform a factory reset using the following command  - sudo rm -rf /tmp/chip_* for the 'chip-all-clusters-app.
           please use the equivalent command on your respective platform to perform a factory reset

          Execute the below mentioned command to put TH(all-cluster-app) into a commissionable state, Pls use equivalent command on the respective Platform

          ./chip-all-clusters-app --trace_decode 1 --dac_provider $CHIP_ROOT/credentials/development/commissioner_dut/struct_pai_ext_key_usage_critical_missing/test_case_vector.json --product-id 32768

          Once TH(all-clusters-app) reach the  commissionable state pls send below mentioned command on DUT(chip-tool). Pls use equivalent command on the respective platform
           ./chip-tool pairing onnetwork 1 20202021 --trace_decode 1

          On TH(all-clusters-app), Verify that the DUT(chip-tool) indicates that the device is not genuine, or otherwise indicates a failure of device attestation, within its error handling APIs or user interface

          [1693993961.436864][73215:73215] CHIP:EM: <<< [E:41036r S:15775 M:136220042 (Ack:221049132)] (S) Msg TX to 0:FFFFFFFB00000000 [0000] --- Type 0001:09 (IM:InvokeCommandResponse)
          [1693993961.436870][73215:73215] CHIP:IN: (S) Sending msg 136220042 on secure session with LSID: 15775
          [1693993961.436897][73215:73215] CHIP:DMG: Command handler moving to [CommandSen]
          [1693993961.436901][73215:73215] CHIP:DMG: Command handler moving to [AwaitingDe]
          [1693993961.436908][73215:73215] CHIP:DL: HandlePlatformSpecificBLEEvent 32783
          [1693993961.436912][73215:73215] CHIP:SVR: Failsafe timer expired
          [1693993961.436915][73215:73215] CHIP:IN: SecureSession[0x55cace3a1a70]: MarkForEviction Type:1 LSID:15775
          [1693993961.436919][73215:73215] CHIP:SC: SecureSession[0x55cace3a1a70, LSID:15775]: State change 'kActive' --> 'kPendingEviction'
          [1693993961.436936][73215:73215] CHIP:IN: SecureSession[0x55cace3a1a70]: Released - Type:1 LSID:15775
          [1693993961.436944][73215:73215] CHIP:SVR: Commissioning failed (attempt 1): src/app/server/CommissioningWindowManager.cpp:77: CHIP Error 0x00000032: Timeout
          [1693993961.436983][73215:73215] CHIP:IN: SecureSession[0x55cace3a1a70]: Allocated Type:1 LSID:15777
          [1693993961.436990][73215:73215] CHIP:SC: Assigned local session key ID 15777
          [1693993961.436994][73215:73215] CHIP:SC: Waiting for PBKDF param request
          [1693993961.437001][73215:73215] CHIP:DIS: Updating services using commissioning mode 1
          [1693993961.437268][73215:73215] CHIP:DIS: CHIP minimal mDNS started advertising.
          [1693993961.437596][73215:73215] CHIP:DL: Using wifi MAC for hostname
          [1693993961.437684][73215:73215] CHIP:DIS: Advertise commission parameter vendorID=65521 productID=32768 discriminator=3840/15 cm=1
      disabled: true

    - label:
          "Step 33: CD Test Vector: The product_id_array field has one PID value
          that doesnt match the PID value in DAC."
      verification: |
          For Raspberry Pi device, perform a factory reset using the following command  - sudo rm -rf /tmp/chip_* for the 'chip-all-clusters-app.
           please use the equivalent command on your respective platform to perform a factory reset

          Execute the below mentioned command to put TH(all-cluster-app) into a commissionable state, Pls use equivalent command on the respective Platform

          ./chip-all-clusters-app --trace_decode 1 --dac_provider $CHIP_ROOT/credentials/development/commissioner_dut/struct_cd_pid_array_count01_mismatch/test_case_vector.json --product-id 32768

          Once TH(all-clusters-app) reach the  commissionable state pls send below mentioned command on DUT(chip-tool). Pls use equivalent command on the respective platform
           ./chip-tool pairing onnetwork 1 20202021 --trace_decode 1

          On TH(all-clusters-app), Verify that the DUT(chip-tool) indicates that the device is not genuine, or otherwise indicates a failure of device attestation, within its error handling APIs or user interface

          [1693994601.641020][73535:73535] CHIP:EM: <<< [E:59651r S:16286 M:42317111 (Ack:165156221)] (S) Msg TX to 0:FFFFFFFB00000000 [0000] --- Type 0001:09 (IM:InvokeCommandResponse)
          [1693994601.641028][73535:73535] CHIP:IN: (S) Sending msg 42317111 on secure session with LSID: 16286
          [1693994601.641053][73535:73535] CHIP:DMG: Command handler moving to [CommandSen]
          [1693994601.641057][73535:73535] CHIP:DMG: Command handler moving to [AwaitingDe]
          [1693994601.641064][73535:73535] CHIP:DL: HandlePlatformSpecificBLEEvent 32783
          [1693994601.641067][73535:73535] CHIP:SVR: Failsafe timer expired
          [1693994601.641071][73535:73535] CHIP:IN: SecureSession[0x558132a3cae0]: MarkForEviction Type:1 LSID:16286
          [1693994601.641075][73535:73535] CHIP:SC: SecureSession[0x558132a3cae0, LSID:16286]: State change 'kActive' --> 'kPendingEviction'
          [1693994601.641091][73535:73535] CHIP:IN: SecureSession[0x558132a3cae0]: Released - Type:1 LSID:16286
          [1693994601.641101][73535:73535] CHIP:SVR: Commissioning failed (attempt 1): src/app/server/CommissioningWindowManager.cpp:77: CHIP Error 0x00000032: Timeout
          [1693994601.641116][73535:73535] CHIP:IN: SecureSession[0x558132a3cae0]: Allocated Type:1 LSID:16288
          [1693994601.641122][73535:73535] CHIP:SC: Assigned local session key ID 16288
          [1693994601.641126][73535:73535] CHIP:SC: Waiting for PBKDF param request
          [1693994601.641134][73535:73535] CHIP:DIS: Updating services using commissioning mode 1
          [1693994601.641380][73535:73535] CHIP:DIS: CHIP minimal mDNS started advertising.
          [1693994601.641631][73535:73535] CHIP:DL: Using wifi MAC for hostname
          [1693994601.641667][73535:73535] CHIP:DIS: Advertise commission parameter vendorID=65521 productID=32768 discriminator=3840/15 cm=1
          [1693994601.641679][73535:73535] CHIP:DIS: Responding with _matterc._udp.local
      disabled: true

    - label:
          "Step 34: DAC Test Vector: Certificate Basic Constraint extension
          critical field is set as 'non-critical'"
      verification: |
          For Raspberry Pi device, perform a factory reset using the following command  - sudo rm -rf /tmp/chip_* for the 'chip-all-clusters-app.
           please use the equivalent command on your respective platform to perform a factory reset

          Execute the below mentioned command to put TH(all-cluster-app) into a commissionable state, Pls use equivalent command on the respective Platform

          ./chip-all-clusters-app --trace_decode 1 --dac_provider $CHIP_ROOT/credentials/development/commissioner_dut/struct_dac_ext_basic_critical_wrong/test_case_vector.json --product-id 32768

          Once TH(all-clusters-app) reach the  commissionable state pls send below mentioned command on DUT(chip-tool). Pls use equivalent command on the respective platform
           ./chip-tool pairing onnetwork 1 20202021 --trace_decode 1

          On TH(all-clusters-app), Verify that the DUT(chip-tool) indicates that the device is not genuine, or otherwise indicates a failure of device attestation, within its error handling APIs or user interface

          [1693994309.863989][73393:73393] CHIP:EM: <<< [E:13816r S:50685 M:35649942 (Ack:85667731)] (S) Msg TX to 0:FFFFFFFB00000000 [0000] --- Type 0001:09 (IM:InvokeCommandResponse)
          [1693994309.863996][73393:73393] CHIP:IN: (S) Sending msg 35649942 on secure session with LSID: 50685
          [1693994309.864019][73393:73393] CHIP:DMG: Command handler moving to [CommandSen]
          [1693994309.864022][73393:73393] CHIP:DMG: Command handler moving to [AwaitingDe]
          [1693994309.864028][73393:73393] CHIP:DL: HandlePlatformSpecificBLEEvent 32783
          [1693994309.864031][73393:73393] CHIP:SVR: Failsafe timer expired
          [1693994309.864034][73393:73393] CHIP:IN: SecureSession[0x560989b2fa30]: MarkForEviction Type:1 LSID:50685
          [1693994309.864038][73393:73393] CHIP:SC: SecureSession[0x560989b2fa30, LSID:50685]: State change 'kActive' --> 'kPendingEviction'
          [1693994309.864053][73393:73393] CHIP:IN: SecureSession[0x560989b2fa30]: Released - Type:1 LSID:50685
          [1693994309.864060][73393:73393] CHIP:SVR: Commissioning failed (attempt 1): src/app/server/CommissioningWindowManager.cpp:77: CHIP Error 0x00000032: Timeout
          [1693994309.864075][73393:73393] CHIP:IN: SecureSession[0x560989b2fa30]: Allocated Type:1 LSID:50687
          [1693994309.864081][73393:73393] CHIP:SC: Assigned local session key ID 50687
          [1693994309.864084][73393:73393] CHIP:SC: Waiting for PBKDF param request
          [1693994309.864091][73393:73393] CHIP:DIS: Updating services using commissioning mode 1
          [1693994309.864315][73393:73393] CHIP:DIS: CHIP minimal mDNS started advertising.
          [1693994309.864596][73393:73393] CHIP:DL: Using wifi MAC for hostname
          [1693994309.864631][73393:73393] CHIP:DIS: Advertise commission parameter vendorID=65521 productID=32768 discriminator=3840/15 cm=1
          [1693994309.864643][73393:73393] CHIP:DIS: Responding with _matterc._udp.local
          [1693994309.864648][73393:73393] CHIP:DIS: Responding with 6D23ADC224752D59._matterc._udp.local
          [1693994309.864652][73393:73393] CHIP:DIS: Responding with 8C1D96786A130000.local
      disabled: true

    - label:
          "Step 35: DAC Test Vector: Fallback VID and PID encoding example from
          spec: invalid, since substring following Mvid: is not exactly 4
          uppercase hexadecimal digits"
      verification: |
          For Raspberry Pi device, perform a factory reset using the following command  - sudo rm -rf /tmp/chip_* for the 'chip-all-clusters-app.
           please use the equivalent command on your respective platform to perform a factory reset

          Execute the below mentioned command to put TH(all-cluster-app) into a commissionable state, Pls use equivalent command on the respective Platform

          ./chip-all-clusters-app --trace_decode 1 --dac_provider $CHIP_ROOT/credentials/development/commissioner_dut/struct_dac_vidpid_fallback_encoding_06/test_case_vector.json --product-id 177

          Once TH(all-clusters-app) reach the  commissionable state pls send below mentioned command on DUT(chip-tool). Pls use equivalent command on the respective platform
           ./chip-tool pairing onnetwork 1 20202021 --trace_decode 1

          On TH(all-clusters-app), Verify that the DUT(chip-tool) indicates that the device is not genuine, or otherwise indicates a failure of device attestation, within its error handling APIs or user interface

          [1693995171.970121][73778:73778] CHIP:EM: <<< [E:44422r S:47062 M:155461515 (Ack:70593203)] (S) Msg TX to 0:FFFFFFFB00000000 [0000] --- Type 0001:09 (IM:InvokeCommandResponse)
          [1693995171.970128][73778:73778] CHIP:IN: (S) Sending msg 155461515 on secure session with LSID: 47062
          [1693995171.970162][73778:73778] CHIP:DMG: Command handler moving to [CommandSen]
          [1693995171.970165][73778:73778] CHIP:DMG: Command handler moving to [AwaitingDe]
          [1693995171.970170][73778:73778] CHIP:DL: HandlePlatformSpecificBLEEvent 32783
          [1693995171.970173][73778:73778] CHIP:SVR: Failsafe timer expired
          [1693995171.970176][73778:73778] CHIP:IN: SecureSession[0x55ef8a8d4550]: MarkForEviction Type:1 LSID:47062
          [1693995171.970179][73778:73778] CHIP:SC: SecureSession[0x55ef8a8d4550, LSID:47062]: State change 'kActive' --> 'kPendingEviction'
          [1693995171.970191][73778:73778] CHIP:IN: SecureSession[0x55ef8a8d4550]: Released - Type:1 LSID:47062
          [1693995171.970198][73778:73778] CHIP:SVR: Commissioning failed (attempt 1): src/app/server/CommissioningWindowManager.cpp:77: CHIP Error 0x00000032: Timeout
          [1693995171.970211][73778:73778] CHIP:IN: SecureSession[0x55ef8a8d4550]: Allocated Type:1 LSID:47064
          [1693995171.970216][73778:73778] CHIP:SC: Assigned local session key ID 47064
          [1693995171.970218][73778:73778] CHIP:SC: Waiting for PBKDF param request
      disabled: true

    - label:
          "Step 36: DAC Test Vector: Certificate Basic Constraint extension
          critical field is missing"
      verification: |
          For Raspberry Pi device, perform a factory reset using the following command - sudo rm -rf /tmp/chip_* for the 'chip-all-clusters-app. please use the equivalent command on your respective platform to perform a factory reset Execute the below mentioned command to put TH(all-cluster-app) into a commissionable state, Pls use equivalent command on the respective Platform

          ./chip-all-clusters-app --trace_decode 1 --dac_provider $CHIP_ROOT/credentials/development/commissioner_dut/struct_dac_ext_basic_critical_missing/test_case_vector.json --product-id 32768

          Once TH(all-clusters-app) reach the commissionable state pls send below mentioned command on DUT(chip-tool). Pls use equivalent command on the respective platform

          ./chip-tool pairing onnetwork 1 20202021 --trace_decode 1

           On TH(all-clusters-app), Verify that the DUT(chip-tool) indicates that the device is not genuine, or otherwise indicates a failure of device attestation, within its error handling APIs or user interface

          [1693997539.063813][74749:74749] CHIP:DMG:
          [1693997539.063820][74749:74749] CHIP:EM: <<< [E:17379r S:53226 M:29102807 (Ack:182470622)] (S) Msg TX to 0:FFFFFFFB00000000 [0000] --- Type 0001:09 (IM:InvokeCommandResponse)
          [1693997539.063826][74749:74749] CHIP:IN: (S) Sending msg 29102807 on secure session with LSID: 53226
          [1693997539.063845][74749:74749] CHIP:DMG: Command handler moving to [CommandSen]
          [1693997539.063848][74749:74749] CHIP:DMG: Command handler moving to [AwaitingDe]
          [1693997539.063852][74749:74749] CHIP:DL: HandlePlatformSpecificBLEEvent 32783
          [1693997539.063854][74749:74749] CHIP:SVR: Failsafe timer expired
          [1693997539.063857][74749:74749] CHIP:IN: SecureSession[0x55bfe0573aa0]: MarkForEviction Type:1 LSID:53226
          [1693997539.063859][74749:74749] CHIP:SC: SecureSession[0x55bfe0573aa0, LSID:53226]: State change 'kActive' --> 'kPendingEviction'
          [1693997539.063872][74749:74749] CHIP:IN: SecureSession[0x55bfe0573aa0]: Released - Type:1 LSID:53226
          [1693997539.063879][74749:74749] CHIP:SVR: Commissioning failed (attempt 1): src/app/server/CommissioningWindowManager.cpp:77: CHIP Error 0x00000032: Timeout
          [1693997539.063893][74749:74749] CHIP:IN: SecureSession[0x55bfe0573aa0]: Allocated Type:1 LSID:53228
          [1693997539.063897][74749:74749] CHIP:SC: Assigned local session key ID 53228
          [1693997539.063900][74749:74749] CHIP:SC: Waiting for PBKDF param request
          [1693997539.063905][74749:74749] CHIP:DIS: Updating services using commissioning mode 1
          [1693997539.064082][74749:74749] CHIP:DIS: CHIP minimal mDNS started advertising.
          [1693997539.064286][74749:74749] CHIP:DL: Using wifi MAC for hostname
      disabled: true

    - label:
          "Step 37: PAI Test Vector: Certificate Key Usage extension critical
          field is set as 'non-critical'"
      verification: |
          For Raspberry Pi device, perform a factory reset using the following command  - sudo rm -rf /tmp/chip_* for the 'chip-all-clusters-app.
           please use the equivalent command on your respective platform to perform a factory reset

          Execute the below mentioned command to put TH(all-cluster-app) into a commissionable state, Pls use equivalent command on the respective Platform

          ./chip-all-clusters-app --trace_decode 1 --dac_provider $CHIP_ROOT/credentials/development/commissioner_dut/struct_pai_ext_key_usage_critical_wrong/test_case_vector.json --product-id 32768

          Once TH(all-clusters-app) reach the  commissionable state pls send below mentioned command on DUT(chip-tool). Pls use equivalent command on the respective platform
           ./chip-tool pairing onnetwork 1 20202021 --trace_decode 1

          On TH(all-clusters-app), Verify that the DUT(chip-tool) indicates that the device is not genuine, or otherwise indicates a failure of device attestation, within its error handling APIs or user interface

          [1693995025.206031][73723:73723] CHIP:EM: <<< [E:52837r S:34496 M:253072011 (Ack:204014627)] (S) Msg TX to 0:FFFFFFFB00000000 [0000] --- Type 0001:09 (IM:InvokeCommandResponse)
          [1693995025.206038][73723:73723] CHIP:IN: (S) Sending msg 253072011 on secure session with LSID: 34496
          [1693995025.206074][73723:73723] CHIP:DMG: Command handler moving to [CommandSen]
          [1693995025.206077][73723:73723] CHIP:DMG: Command handler moving to [AwaitingDe]
          [1693995025.206084][73723:73723] CHIP:DL: HandlePlatformSpecificBLEEvent 32783
          [1693995025.206088][73723:73723] CHIP:SVR: Failsafe timer expired
          [1693995025.206091][73723:73723] CHIP:IN: SecureSession[0x563c42ebaa40]: MarkForEviction Type:1 LSID:34496
          [1693995025.206094][73723:73723] CHIP:SC: SecureSession[0x563c42ebaa40, LSID:34496]: State change 'kActive' --> 'kPendingEviction'
          [1693995025.206106][73723:73723] CHIP:IN: SecureSession[0x563c42ebaa40]: Released - Type:1 LSID:34496
          [1693995025.206114][73723:73723] CHIP:SVR: Commissioning failed (attempt 1): src/app/server/CommissioningWindowManager.cpp:77: CHIP Error 0x00000032: Timeout
          [1693995025.206129][73723:73723] CHIP:IN: SecureSession[0x563c42ebaa40]: Allocated Type:1 LSID:34498
          [1693995025.206134][73723:73723] CHIP:SC: Assigned local session key ID 34498
          [1693995025.206137][73723:73723] CHIP:SC: Waiting for PBKDF param request
      disabled: true

    - label:
          "Step 38: PAI Test Vector: Fallback VID and PID encoding example:
          invalid PID and VID prefixes"
      verification: |
          For Raspberry Pi device, perform a factory reset using the following command  - sudo rm -rf /tmp/chip_* for the 'chip-all-clusters-app.
           please use the equivalent command on your respective platform to perform a factory reset


          Execute the below mentioned command to put TH(all-cluster-app) into a commissionable state, Pls use equivalent command on the respective Platform

          ./chip-all-clusters-app --trace_decode 1 --dac_provider $CHIP_ROOT/credentials/development/commissioner_dut/struct_pai_vidpid_fallback_encoding_14/test_case_vector.json --product-id 177

          Once TH(all-clusters-app) reach the  commissionable state pls send below mentioned command on DUT(chip-tool). Pls use equivalent command on the respective platform
           ./chip-tool pairing onnetwork 1 20202021 --trace_decode 1

          On TH(all-clusters-app), Verify that the DUT(chip-tool) indicates that the device is not genuine, or otherwise indicates a failure of device attestation, within its error handling APIs or user interface

          [1693996721.242096][74349:74349] CHIP:EM: <<< [E:47891r S:48954 M:258386198 (Ack:60536202)] (S) Msg TX to 0:FFFFFFFB00000000 [0000] --- Type 0001:09 (IM:InvokeCommandResponse)
          [1693996721.242101][74349:74349] CHIP:IN: (S) Sending msg 258386198 on secure session with LSID: 48954
          [1693996721.242123][74349:74349] CHIP:DMG: Command handler moving to [CommandSen]
          [1693996721.242126][74349:74349] CHIP:DMG: Command handler moving to [AwaitingDe]
          [1693996721.242132][74349:74349] CHIP:DL: HandlePlatformSpecificBLEEvent 32783
          [1693996721.242135][74349:74349] CHIP:SVR: Failsafe timer expired
          [1693996721.242138][74349:74349] CHIP:IN: SecureSession[0x55d6b6c90c30]: MarkForEviction Type:1 LSID:48954
          [1693996721.242141][74349:74349] CHIP:SC: SecureSession[0x55d6b6c90c30, LSID:48954]: State change 'kActive' --> 'kPendingEviction'
          [1693996721.242152][74349:74349] CHIP:IN: SecureSession[0x55d6b6c90c30]: Released - Type:1 LSID:48954
          [1693996721.242160][74349:74349] CHIP:SVR: Commissioning failed (attempt 1): src/app/server/CommissioningWindowManager.cpp:77: CHIP Error 0x00000032: Timeout
          [1693996721.242174][74349:74349] CHIP:IN: SecureSession[0x55d6b6c90c30]: Allocated Type:1 LSID:48956
          [1693996721.242179][74349:74349] CHIP:SC: Assigned local session key ID 48956
          [1693996721.242181][74349:74349] CHIP:SC: Waiting for PBKDF param request
          [1693996721.242186][74349:74349] CHIP:DIS: Updating services using commissioning mode 1
          [1693996721.242372][74349:74349] CHIP:DIS: CHIP minimal mDNS started advertising.
          [1693996721.242610][74349:74349] CHIP:DL: Using wifi MAC for hostname
      disabled: true

    - label:
          "Step 39: CD Test Vector: Invalid CMS signature algorithm
          ECDSA_WITH_SHA1."
      verification: |
          For Raspberry Pi device, perform a factory reset using the following command  - sudo rm -rf /tmp/chip_* for the 'chip-all-clusters-app.
           please use the equivalent command on your respective platform to perform a factory reset

          Execute the below mentioned command to put TH(all-cluster-app) into a commissionable state, Pls use equivalent command on the respective Platform

          ./chip-all-clusters-app --trace_decode 1 --dac_provider $CHIP_ROOT/credentials/development/commissioner_dut/struct_cd_cms_sig_algo_ecdsa_with_sha1/test_case_vector.json --product-id 32768

          Once TH(all-clusters-app) reach the  commissionable state pls send below mentioned command on DUT(chip-tool). Pls use equivalent command on the respective platform
           ./chip-tool pairing onnetwork 1 20202021 --trace_decode 1

          On TH(all-clusters-app), Verify that the DUT(chip-tool) indicates that the device is not genuine, or otherwise indicates a failure of device attestation, within its error handling APIs or user interface

          [1693995350.564731][73881:73881] CHIP:EM: <<< [E:31060r S:37954 M:110559466 (Ack:22034170)] (S) Msg TX to 0:FFFFFFFB00000000 [0000] --- Type 0001:09 (IM:InvokeCommandResponse)
          [1693995350.564739][73881:73881] CHIP:IN: (S) Sending msg 110559466 on secure session with LSID: 37954
          [1693995350.564804][73881:73881] CHIP:DMG: Command handler moving to [CommandSen]
          [1693995350.564809][73881:73881] CHIP:DMG: Command handler moving to [AwaitingDe]
          [1693995350.564815][73881:73881] CHIP:DL: HandlePlatformSpecificBLEEvent 32783
          [1693995350.564821][73881:73881] CHIP:SVR: Failsafe timer expired
          [1693995350.564824][73881:73881] CHIP:IN: SecureSession[0x555ee4e66ad0]: MarkForEviction Type:1 LSID:37954
          [1693995350.564828][73881:73881] CHIP:SC: SecureSession[0x555ee4e66ad0, LSID:37954]: State change 'kActive' --> 'kPendingEviction'
          [1693995350.564846][73881:73881] CHIP:IN: SecureSession[0x555ee4e66ad0]: Released - Type:1 LSID:37954
          [1693995350.564855][73881:73881] CHIP:SVR: Commissioning failed (attempt 1): src/app/server/CommissioningWindowManager.cpp:77: CHIP Error 0x00000032: Timeout
          [1693995350.564874][73881:73881] CHIP:IN: SecureSession[0x555ee4e66ad0]: Allocated Type:1 LSID:37956
          [1693995350.564880][73881:73881] CHIP:SC: Assigned local session key ID 37956
          [1693995350.564884][73881:73881] CHIP:SC: Waiting for PBKDF param request
          [1693995350.564891][73881:73881] CHIP:DIS: Updating services using commissioning mode 1
          [1693995350.565399][73881:73881] CHIP:DIS: CHIP minimal mDNS started advertising.
          [1693995350.565716][73881:73881] CHIP:DL: Using wifi MAC for hostname
          [1693995350.565759][73881:73881] CHIP:DIS: Advertise commission parameter vendorID=65521 productID=32768 discriminator=3840/15 cm=1
      disabled: true

    - label:
          "Step 40: PAI Test Vector: Mix of Fallback and Matter OID encoding for
          VID and PID: invalid, PID is using Matter OID then VID must also use
          Matter OID"
      verification: |
          For Raspberry Pi device, perform a factory reset using the following command  - sudo rm -rf /tmp/chip_* for the 'chip-all-clusters-app.
           please use the equivalent command on your respective platform to perform a factory reset


          Execute the below mentioned command to put TH(all-cluster-app) into a commissionable state, Pls use equivalent command on the respective Platform

          ./chip-all-clusters-app --trace_decode 1 --dac_provider $CHIP_ROOT/credentials/development/commissioner_dut/struct_pai_vidpid_fallback_encoding_17/test_case_vector.json --product-id 177

          Once TH(all-clusters-app) reach the  commissionable state pls send below mentioned command on DUT(chip-tool). Pls use equivalent command on the respective platform
           ./chip-tool pairing onnetwork 1 20202021 --trace_decode 1

          On TH(all-clusters-app), Verify that the DUT(chip-tool) indicates that the device is not genuine, or otherwise indicates a failure of device attestation, within its error handling APIs or user interface

          [1693996944.027234][74452:74452] CHIP:EM: <<< [E:15428r S:21228 M:66013482 (Ack:15185004)] (S) Msg TX to 0:FFFFFFFB00000000 [0000] --- Type 0001:09 (IM:InvokeCommandResponse)
          [1693996944.027239][74452:74452] CHIP:IN: (S) Sending msg 66013482 on secure session with LSID: 21228
          [1693996944.027258][74452:74452] CHIP:DMG: Command handler moving to [CommandSen]
          [1693996944.027261][74452:74452] CHIP:DMG: Command handler moving to [AwaitingDe]
          [1693996944.027265][74452:74452] CHIP:DL: HandlePlatformSpecificBLEEvent 32783
          [1693996944.027267][74452:74452] CHIP:SVR: Failsafe timer expired
          [1693996944.027270][74452:74452] CHIP:IN: SecureSession[0x55f1c2dc3ad0]: MarkForEviction Type:1 LSID:21228
          [1693996944.027273][74452:74452] CHIP:SC: SecureSession[0x55f1c2dc3ad0, LSID:21228]: State change 'kActive' --> 'kPendingEviction'
      disabled: true

    - label:
          "Step 41: CD Test Vector: The authorized_paa_list contains three PAAs
          none of which is a valid PAA authorized to sign the PAI."
      verification: |
          For Raspberry Pi device, perform a factory reset using the following command  - sudo rm -rf /tmp/chip_* for the 'chip-all-clusters-app.
           please use the equivalent command on your respective platform to perform a factory reset

          Execute the below mentioned command to put TH(all-cluster-app) into a commissionable state, Pls use equivalent command on the respective Platform

          ./chip-all-clusters-app --trace_decode 1 --dac_provider $CHIP_ROOT/credentials/development/commissioner_dut/struct_cd_authorized_paa_list_count3_invalid/test_case_vector.json --product-id 32768

          Once TH(all-clusters-app) reach the  commissionable state pls send below mentioned command on DUT(chip-tool). Pls use equivalent command on the respective platform
           ./chip-tool pairing onnetwork 1 20202021 --trace_decode 1

          On TH(all-clusters-app), Verify that the DUT(chip-tool) indicates that the device is not genuine, or otherwise indicates a failure of device attestation, within its error handling APIs or user interface

          [1693994994.295582][73706:73706] CHIP:EM: <<< [E:29330r S:9576 M:87938545 (Ack:262262590)] (S) Msg TX to 0:FFFFFFFB00000000 [0000] --- Type 0001:09 (IM:InvokeCommandResponse)
          [1693994994.295590][73706:73706] CHIP:IN: (S) Sending msg 87938545 on secure session with LSID: 9576
          [1693994994.295630][73706:73706] CHIP:DMG: Command handler moving to [CommandSen]
          [1693994994.295633][73706:73706] CHIP:DMG: Command handler moving to [AwaitingDe]
          [1693994994.295640][73706:73706] CHIP:DL: HandlePlatformSpecificBLEEvent 32783
          [1693994994.295643][73706:73706] CHIP:SVR: Failsafe timer expired
          [1693994994.295647][73706:73706] CHIP:IN: SecureSession[0x55ea1bc20f20]: MarkForEviction Type:1 LSID:9576
          [1693994994.295650][73706:73706] CHIP:SC: SecureSession[0x55ea1bc20f20, LSID:9576]: State change 'kActive' --> 'kPendingEviction'
          [1693994994.295666][73706:73706] CHIP:IN: SecureSession[0x55ea1bc20f20]: Released - Type:1 LSID:9576
          [1693994994.295674][73706:73706] CHIP:SVR: Commissioning failed (attempt 1): src/app/server/CommissioningWindowManager.cpp:77: CHIP Error 0x00000032: Timeout
          [1693994994.295692][73706:73706] CHIP:IN: SecureSession[0x55ea1bc20f20]: Allocated Type:1 LSID:9578
          [1693994994.295697][73706:73706] CHIP:SC: Assigned local session key ID 9578
          [1693994994.295701][73706:73706] CHIP:SC: Waiting for PBKDF param request
          [1693994994.295708][73706:73706] CHIP:DIS: Updating services using commissioning mode 1
          [1693994994.295955][73706:73706] CHIP:DIS: CHIP minimal mDNS started advertising.
          [1693994994.296232][73706:73706] CHIP:DL: Using wifi MAC for hostname
          [1693994994.296270][73706:73706] CHIP:DIS: Advertise commission parameter vendorID=65521 productID=32768 discriminator=3840/15 cm=1
      disabled: true

    - label:
          "Step 42: DAC Test Vector: Certificate Key Usage extension keyCertSign
          field is wrong (present for DAC and not present for PAI)"
      verification: |
          For Raspberry Pi device, perform a factory reset using the following command  - sudo rm -rf /tmp/chip_* for the 'chip-all-clusters-app.
           please use the equivalent command on your respective platform to perform a factory reset

          Execute the below mentioned command to put TH(all-cluster-app) into a commissionable state, Pls use equivalent command on the respective Platform

          ./chip-all-clusters-app --trace_decode 1 --dac_provider $CHIP_ROOT/credentials/development/commissioner_dut/struct_dac_ext_key_usage_key_cert_sign_wrong/test_case_vector.json --product-id 32768

          Once TH(all-clusters-app) reach the  commissionable state pls send below mentioned command on DUT(chip-tool). Pls use equivalent command on the respective platform
           ./chip-tool pairing onnetwork 1 20202021 --trace_decode 1

          On TH(all-clusters-app), Verify that the DUT(chip-tool) indicates that the device is not genuine, or otherwise indicates a failure of device attestation, within its error handling APIs or user interface

           0:FFFFFFFB00000000 [0000] --- Type 0001:09 (IM:InvokeCommandResponse)
          [1693997493.187931][74723:74723] CHIP:IN: (S) Sending msg 140235257 on secure session with LSID: 31830
          [1693997493.187962][74723:74723] CHIP:DMG: Command handler moving to [CommandSen]
          [1693997493.187965][74723:74723] CHIP:DMG: Command handler moving to [AwaitingDe]
          [1693997493.187970][74723:74723] CHIP:DL: HandlePlatformSpecificBLEEvent 32783
          [1693997493.187974][74723:74723] CHIP:SVR: Failsafe timer expired
          [1693997493.187977][74723:74723] CHIP:IN: SecureSession[0x55ceb536ba00]: MarkForEviction Type:1 LSID:31830
          [1693997493.187981][74723:74723] CHIP:SC: SecureSession[0x55ceb536ba00, LSID:31830]: State change 'kActive' --> 'kPendingEviction'
          [1693997493.187997][74723:74723] CHIP:IN: SecureSession[0x55ceb536ba00]: Released - Type:1 LSID:31830
          [1693997493.188008][74723:74723] CHIP:SVR: Commissioning failed (attempt 1): src/app/server/CommissioningWindowManager.cpp:77: CHIP Error 0x00000032: Timeout
          [1693997493.188029][74723:74723] CHIP:IN: SecureSession[0x55ceb536ba00]: Allocated Type:1 LSID:31832
          [1693997493.188036][74723:74723] CHIP:SC: Assigned local session key ID 31832
          [1693997493.188040][74723:74723] CHIP:SC: Waiting for PBKDF param request
          [1693997493.188048][74723:74723] CHIP:DIS: Updating services using commissioning mode 1
          [1693997493.188313][74723:74723] CHIP:DIS: CHIP minimal mDNS started advertising.
      disabled: true

    - label:
          "Step 43: PAI Test Vector: Certificate validity period starts in the
          future"
      verification: |
          For Raspberry Pi device, perform a factory reset using the following command  - sudo rm -rf /tmp/chip_* for the 'chip-all-clusters-app.
           please use the equivalent command on your respective platform to perform a factory reset

          Execute the below mentioned command to put TH(all-cluster-app) into a commissionable state, Pls use equivalent command on the respective Platform
          ./chip-all-clusters-app --trace_decode 1 --dac_provider $CHIP_ROOT/credentials/development/commissioner_dut/struct_pai_valid_in_future/test_case_vector.json --product-id 32768

          Once TH(all-clusters-app) reach the  commissionable state pls send below mentioned command on DUT(chip-tool). Pls use equivalent command on the respective platform
           ./chip-tool pairing onnetwork 1 20202021 --trace_decode 1

          On TH(all-clusters-app), Verify that the DUT(chip-tool) indicates that the device is not genuine, or otherwise indicates a failure of device attestation, within its error handling APIs or user interface

          1693994070.857421][73264:73264] CHIP:DMG:     peer_address = UDP:[fe80::a70c:61dc:df51:6945%enxd03745ce8f62]:59736
          [1693994070.857423][73264:73264] CHIP:DMG: }
          [1693994070.857425][73264:73264] CHIP:DMG:
          [1693994070.857437][73264:73264] CHIP:EM: <<< [E:18036r S:31986 M:116453148 (Ack:226659157)] (S) Msg TX to 0:FFFFFFFB00000000 [0000] --- Type 0001:09 (IM:InvokeCommandResponse)
          [1693994070.857443][73264:73264] CHIP:IN: (S) Sending msg 116453148 on secure session with LSID: 31986
          [1693994070.857472][73264:73264] CHIP:DMG: Command handler moving to [CommandSen]
          [1693994070.857474][73264:73264] CHIP:DMG: Command handler moving to [AwaitingDe]
          [1693994070.857479][73264:73264] CHIP:DL: HandlePlatformSpecificBLEEvent 32783
          [1693994070.857482][73264:73264] CHIP:SVR: Failsafe timer expired
          [1693994070.857485][73264:73264] CHIP:IN: SecureSession[0x560a76fb7890]: MarkForEviction Type:1 LSID:31986
          [1693994070.857488][73264:73264] CHIP:SC: SecureSession[0x560a76fb7890, LSID:31986]: State change 'kActive' --> 'kPendingEviction'
          [1693994070.857500][73264:73264] CHIP:IN: SecureSession[0x560a76fb7890]: Released - Type:1 LSID:31986
          [1693994070.857506][73264:73264] CHIP:SVR: Commissioning failed (attempt 1): src/app/server/CommissioningWindowManager.cpp:77: CHIP Error 0x00000032: Timeout
          [1693994070.857521][73264:73264] CHIP:IN: SecureSession[0x560a76fb7890]: Allocated Type:1 LSID:31988
          [1693994070.857525][73264:73264] CHIP:SC: Assigned local session key ID 31988
          [1693994070.857528][73264:73264] CHIP:SC: Waiting for PBKDF param request
          [1693994070.857534][73264:73264] CHIP:DIS: Updating services using commissioning mode 1
      disabled: true

    - label:
          "Step 44: PAI Test Vector: Invalid certificate public key curve
          secp256k1"
      verification: |
          For Raspberry Pi device, perform a factory reset using the following command  - sudo rm -rf /tmp/chip_* for the 'chip-all-clusters-app.
           please use the equivalent command on your respective platform to perform a factory reset

          Execute the below mentioned command to put TH(all-cluster-app) into a commissionable state, Pls use equivalent command on the respective Platform

          ./chip-all-clusters-app --trace_decode 1 --dac_provider $CHIP_ROOT/credentials/development/commissioner_dut/struct_pai_sig_curve_secp256k1/test_case_vector.json --product-id 32768

          Once TH(all-clusters-app) reach the  commissionable state pls send below mentioned command on DUT(chip-tool). Pls use equivalent command on the respective platform
           ./chip-tool pairing onnetwork 1 20202021 --trace_decode 1

          On TH(all-clusters-app), Verify that the DUT(chip-tool) indicates that the device is not genuine, or otherwise indicates a failure of device attestation, within its error handling APIs or user interface

          [1693994937.114088][73683:73683] CHIP:EM: <<< [E:49715r S:13754 M:244879345 (Ack:52354936)] (S) Msg TX to 0:FFFFFFFB00000000 [0000] --- Type 0001:09 (IM:InvokeCommandResponse)
          [1693994937.114096][73683:73683] CHIP:IN: (S) Sending msg 244879345 on secure session with LSID: 13754
          [1693994937.114120][73683:73683] CHIP:DMG: Command handler moving to [CommandSen]
          [1693994937.114123][73683:73683] CHIP:DMG: Command handler moving to [AwaitingDe]
          [1693994937.114130][73683:73683] CHIP:DL: HandlePlatformSpecificBLEEvent 32783
          [1693994937.114133][73683:73683] CHIP:SVR: Failsafe timer expired
          [1693994937.114137][73683:73683] CHIP:IN: SecureSession[0x56311376d960]: MarkForEviction Type:1 LSID:13754
          [1693994937.114141][73683:73683] CHIP:SC: SecureSession[0x56311376d960, LSID:13754]: State change 'kActive' --> 'kPendingEviction'
          [1693994937.114157][73683:73683] CHIP:IN: SecureSession[0x56311376d960]: Released - Type:1 LSID:13754
          [1693994937.114165][73683:73683] CHIP:SVR: Commissioning failed (attempt 1): src/app/server/CommissioningWindowManager.cpp:77: CHIP Error 0x00000032: Timeout
          [1693994937.114183][73683:73683] CHIP:IN: SecureSession[0x56311376d960]: Allocated Type:1 LSID:13756
          [1693994937.114188][73683:73683] CHIP:SC: Assigned local session key ID 13756
          [1693994937.114191][73683:73683] CHIP:SC: Waiting for PBKDF param request
      disabled: true

    - label:
          "Step 45: PAI Test Vector: Fallback VID and PID encoding example from
          spec: invalid, since substring following Mvid: is not exactly 4
          uppercase hexadecimal digits"
      verification: |
          For Raspberry Pi device, perform a factory reset using the following command  - sudo rm -rf /tmp/chip_* for the 'chip-all-clusters-app.
           please use the equivalent command on your respective platform to perform a factory reset

          Execute the below mentioned command to put TH(all-cluster-app) into a commissionable state, Pls use equivalent command on the respective Platform

          ./chip-all-clusters-app --trace_decode 1 --dac_provider $CHIP_ROOT/credentials/development/commissioner_dut/struct_pai_vidpid_fallback_encoding_07/test_case_vector.json --product-id 177

          Once TH(all-clusters-app) reach the  commissionable state pls send below mentioned command on DUT(chip-tool). Pls use equivalent command on the respective platform
           ./chip-tool pairing onnetwork 1 20202021 --trace_decode 1

          On TH(all-clusters-app), Verify that the DUT(chip-tool) indicates that the device is not genuine, or otherwise indicates a failure of device attestation, within its error handling APIs or user interface

          [1693995853.450434][74013:74013] CHIP:EM: <<< [E:22061r S:8988 M:191746032 (Ack:245185446)] (S) Msg TX to 0:FFFFFFFB00000000 [0000] --- Type 0001:09 (IM:InvokeCommandResponse)
          [1693995853.450441][74013:74013] CHIP:IN: (S) Sending msg 191746032 on secure session with LSID: 8988
          [1693995853.450472][74013:74013] CHIP:DMG: Command handler moving to [CommandSen]
          [1693995853.450476][74013:74013] CHIP:DMG: Command handler moving to [AwaitingDe]
          [1693995853.450484][74013:74013] CHIP:DL: HandlePlatformSpecificBLEEvent 32783
          [1693995853.450488][74013:74013] CHIP:SVR: Failsafe timer expired
          [1693995853.450491][74013:74013] CHIP:IN: SecureSession[0x5607aeef1750]: MarkForEviction Type:1 LSID:8988
          [1693995853.450496][74013:74013] CHIP:SC: SecureSession[0x5607aeef1750, LSID:8988]: State change 'kActive' --> 'kPendingEviction'
          [1693995853.450512][74013:74013] CHIP:IN: SecureSession[0x5607aeef1750]: Released - Type:1 LSID:8988
          [1693995853.450521][74013:74013] CHIP:SVR: Commissioning failed (attempt 1): src/app/server/CommissioningWindowManager.cpp:77: CHIP Error 0x00000032: Timeout
          [1693995853.450539][74013:74013] CHIP:IN: SecureSession[0x5607aeef1750]: Allocated Type:1 LSID:8990
          [1693995853.450545][74013:74013] CHIP:SC: Assigned local session key ID 8990
          [1693995853.450549][74013:74013] CHIP:SC: Waiting for PBKDF param request
          [1693995853.450556][74013:74013] CHIP:DIS: Updating services using commissioning mode 1
          [1693995853.450823][74013:74013] CHIP:DIS: CHIP minimal mDNS started advertising.
          [1693995853.451182][74013:74013] CHIP:DL: Using wifi MAC for hostname
      disabled: true

    - label: "Step 46: CD Test Vector: The certificate_id field is missing."
      verification: |
          For Raspberry Pi device, perform a factory reset using the following command  - sudo rm -rf /tmp/chip_* for the 'chip-all-clusters-app.
           please use the equivalent command on your respective platform to perform a factory reset

          Execute the below mentioned command to put TH(all-cluster-app) into a commissionable state, Pls use equivalent command on the respective Platform

          ./chip-all-clusters-app --trace_decode 1 --dac_provider $CHIP_ROOT/credentials/development/commissioner_dut/struct_cd_cert_id_missing/test_case_vector.json --product-id 32768

          Once TH(all-clusters-app) reach the  commissionable state pls send below mentioned command on DUT(chip-tool). Pls use equivalent command on the respective platform
           ./chip-tool pairing onnetwork 1 20202021 --trace_decode 1

          On TH(all-clusters-app), Verify that the DUT(chip-tool) indicates that the device is not genuine, or otherwise indicates a failure of device attestation, within its error handling APIs or user interface

          [1693996750.060075][74364:74364] CHIP:DMG: }
          [1693996750.060078][74364:74364] CHIP:DMG:
          [1693996750.060094][74364:74364] CHIP:EM: <<< [E:50586r S:36416 M:141787643 (Ack:100004491)] (S) Msg TX to 0:FFFFFFFB00000000 [0000] --- Type 0001:09 (IM:InvokeCommandResponse)
          [1693996750.060102][74364:74364] CHIP:IN: (S) Sending msg 141787643 on secure session with LSID: 36416
          [1693996750.060145][74364:74364] CHIP:DMG: Command handler moving to [CommandSen]
          [1693996750.060149][74364:74364] CHIP:DMG: Command handler moving to [AwaitingDe]
          [1693996750.060156][74364:74364] CHIP:DL: HandlePlatformSpecificBLEEvent 32783
          [1693996750.060161][74364:74364] CHIP:SVR: Failsafe timer expired
          [1693996750.060165][74364:74364] CHIP:IN: SecureSession[0x560b65cef920]: MarkForEviction Type:1 LSID:36416
          [1693996750.060169][74364:74364] CHIP:SC: SecureSession[0x560b65cef920, LSID:36416]: State change 'kActive' --> 'kPendingEviction'
          [1693996750.060185][74364:74364] CHIP:IN: SecureSession[0x560b65cef920]: Released - Type:1 LSID:36416
          [1693996750.060196][74364:74364] CHIP:SVR: Commissioning failed (attempt 1): src/app/server/CommissioningWindowManager.cpp:77: CHIP Error 0x00000032: Timeout
          [1693996750.060212][74364:74364] CHIP:IN: SecureSession[0x560b65cef920]: Allocated Type:1 LSID:36418
          [1693996750.060218][74364:74364] CHIP:SC: Assigned local session key ID 36418
      disabled: true

    - label:
          "Step 47: PAI Test Vector: Certificate Basic Constraint extension
          PathLen field set to 2"
      verification: |
          For Raspberry Pi device, perform a factory reset using the following command  - sudo rm -rf /tmp/chip_* for the 'chip-all-clusters-app.
           please use the equivalent command on your respective platform to perform a factory reset

          Execute the below mentioned command to put TH(all-cluster-app) into a commissionable state, Pls use equivalent command on the respective Platform

          ./chip-all-clusters-app --trace_decode 1 --dac_provider $CHIP_ROOT/credentials/development/commissioner_dut/struct_pai_ext_basic_pathlen2/test_case_vector.json --product-id 32768

          Once TH(all-clusters-app) reach the  commissionable state pls send below mentioned command on DUT(chip-tool). Pls use equivalent command on the respective platform
           ./chip-tool pairing onnetwork 1 20202021 --trace_decode 1

          On TH(all-clusters-app), Verify that the DUT(chip-tool) indicates that the device is not genuine, or otherwise indicates a failure of device attestation, within its error handling APIs or user interface

          [1693993901.970537][73174:73174] CHIP:EM: <<< [E:59335r S:48771 M:10059134 (Ack:95539287)] (S) Msg TX to 0:FFFFFFFB00000000 [0000] --- Type 0001:09 (IM:InvokeCommandResponse)
          [1693993901.970544][73174:73174] CHIP:IN: (S) Sending msg 10059134 on secure session with LSID: 48771
          [1693993901.970584][73174:73174] CHIP:DMG: Command handler moving to [CommandSen]
          [1693993901.970587][73174:73174] CHIP:DMG: Command handler moving to [AwaitingDe]
          [1693993901.970593][73174:73174] CHIP:DL: HandlePlatformSpecificBLEEvent 32783
          [1693993901.970597][73174:73174] CHIP:SVR: Failsafe timer expired
          [1693993901.970599][73174:73174] CHIP:IN: SecureSession[0x55f05c3b8a90]: MarkForEviction Type:1 LSID:48771
          [1693993901.970611][73174:73174] CHIP:SC: SecureSession[0x55f05c3b8a90, LSID:48771]: State change 'kActive' --> 'kPendingEviction'
          [1693993901.970623][73174:73174] CHIP:IN: SecureSession[0x55f05c3b8a90]: Released - Type:1 LSID:48771
          [1693993901.970631][73174:73174] CHIP:SVR: Commissioning failed (attempt 1): src/app/server/CommissioningWindowManager.cpp:77: CHIP Error 0x00000032: Timeout
          [1693993901.970646][73174:73174] CHIP:IN: SecureSession[0x55f05c3b8a90]: Allocated Type:1 LSID:48773
          [1693993901.970651][73174:73174] CHIP:SC: Assigned local session key ID 48773
          [1693993901.970654][73174:73174] CHIP:SC: Waiting for PBKDF param request
          [1693993901.970660][73174:73174] CHIP:DIS: Updating services using commissioning mode 1
          [1693993901.970850][73174:73174] CHIP:DIS: CHIP minimal mDNS started advertising.
          [1693993901.971123][73174:73174] CHIP:DL: Using wifi MAC for hostname
          [1693993901.971159][73174:73174] CHIP:DIS: Advertise commission parameter vendorID=65521 productID=32768 discriminator=3840/15 cm=1
      disabled: true

    - label:
          "Step 48: DAC Test Vector: Fallback VID and PID encoding example:
          invalid PID and VID prefixes"
      verification: |
          For Raspberry Pi device, perform a factory reset using the following command  - sudo rm -rf /tmp/chip_* for the 'chip-all-clusters-app.
           please use the equivalent command on your respective platform to perform a factory reset

          Execute the below mentioned command to put TH(all-cluster-app) into a commissionable state, Pls use equivalent command on the respective Platform

          ./chip-all-clusters-app --trace_decode 1 --dac_provider $CHIP_ROOT/credentials/development/commissioner_dut/struct_dac_vidpid_fallback_encoding_14/test_case_vector.json --product-id 177

          Once TH(all-clusters-app) reach the  commissionable state pls send below mentioned command on DUT(chip-tool). Pls use equivalent command on the respective platform
           ./chip-tool pairing onnetwork 1 20202021 --trace_decode 1

          On TH(all-clusters-app), Verify that the DUT(chip-tool) indicates that the device is not genuine, or otherwise indicates a failure of device attestation, within its error handling APIs or user interface

          [1693995817.508655][74000:74000] CHIP:EM: <<< [E:7012r S:58652 M:202734303 (Ack:196860855)] (S) Msg TX to 0:FFFFFFFB00000000 [0000] --- Type 0001:09 (IM:InvokeCommandResponse)
          [1693995817.508663][74000:74000] CHIP:IN: (S) Sending msg 202734303 on secure session with LSID: 58652
          [1693995817.508694][74000:74000] CHIP:DMG: Command handler moving to [CommandSen]
          [1693995817.508698][74000:74000] CHIP:DMG: Command handler moving to [AwaitingDe]
          [1693995817.508706][74000:74000] CHIP:DL: HandlePlatformSpecificBLEEvent 32783
          [1693995817.508710][74000:74000] CHIP:SVR: Failsafe timer expired
          [1693995817.508714][74000:74000] CHIP:IN: SecureSession[0x55963a9cecb0]: MarkForEviction Type:1 LSID:58652
          [1693995817.508718][74000:74000] CHIP:SC: SecureSession[0x55963a9cecb0, LSID:58652]: State change 'kActive' --> 'kPendingEviction'
          [1693995817.508735][74000:74000] CHIP:IN: SecureSession[0x55963a9cecb0]: Released - Type:1 LSID:58652
          [1693995817.508745][74000:74000] CHIP:SVR: Commissioning failed (attempt 1): src/app/server/CommissioningWindowManager.cpp:77: CHIP Error 0x00000032: Timeout
          [1693995817.508764][74000:74000] CHIP:IN: SecureSession[0x55963a9cecb0]: Allocated Type:1 LSID:58654
          [1693995817.508771][74000:74000] CHIP:SC: Assigned local session key ID 58654
          [1693995817.508775][74000:74000] CHIP:SC: Waiting for PBKDF param request
      disabled: true

    - label:
          "Step 49: PAI Test Vector: Mix of Fallback and Matter OID encoding for
          VID and PID: wrong, Correct values encoded in the common-name are
          ignored"
      verification: |
          For Raspberry Pi device, perform a factory reset using the following command  - sudo rm -rf /tmp/chip_* for the 'chip-all-clusters-app.
           please use the equivalent command on your respective platform to perform a factory reset

          Execute the below mentioned command to put TH(all-cluster-app) into a commissionable state, Pls use equivalent command on the respective Platform

          ./chip-all-clusters-app --trace_decode 1 --dac_provider $CHIP_ROOT/credentials/development/commissioner_dut/struct_pai_vidpid_fallback_encoding_16/test_case_vector.json --product-id 177

          Once TH(all-clusters-app) reach the  commissionable state pls send below mentioned command on DUT(chip-tool). Pls use equivalent command on the respective platform
           ./chip-tool pairing onnetwork 1 20202021 --trace_decode 1

          On TH(all-clusters-app), Verify that the DUT(chip-tool) indicates that the device is not genuine, or otherwise indicates a failure of device attestation, within its error handling APIs or user interface

          [1693994734.416781][73585:73585] CHIP:EM: <<< [E:35581r S:34867 M:147536613 (Ack:100758548)] (S) Msg TX to 0:FFFFFFFB00000000 [0000] --- Type 0001:09 (IM:InvokeCommandResponse)
          [1693994734.416786][73585:73585] CHIP:IN: (S) Sending msg 147536613 on secure session with LSID: 34867
          [1693994734.416806][73585:73585] CHIP:DMG: Command handler moving to [CommandSen]
          [1693994734.416809][73585:73585] CHIP:DMG: Command handler moving to [AwaitingDe]
          [1693994734.416813][73585:73585] CHIP:DL: HandlePlatformSpecificBLEEvent 32783
          [1693994734.416816][73585:73585] CHIP:SVR: Failsafe timer expired
          [1693994734.416818][73585:73585] CHIP:IN: SecureSession[0x56009a87aac0]: MarkForEviction Type:1 LSID:34867
          [1693994734.416821][73585:73585] CHIP:SC: SecureSession[0x56009a87aac0, LSID:34867]: State change 'kActive' --> 'kPendingEviction'
          [1693994734.416832][73585:73585] CHIP:IN: SecureSession[0x56009a87aac0]: Released - Type:1 LSID:34867
          [1693994734.416839][73585:73585] CHIP:SVR: Commissioning failed (attempt 1): src/app/server/CommissioningWindowManager.cpp:77: CHIP Error 0x00000032: Timeout
          [1693994734.416853][73585:73585] CHIP:IN: SecureSession[0x56009a87aac0]: Allocated Type:1 LSID:34869
          [1693994734.416858][73585:73585] CHIP:SC: Assigned local session key ID 34869
          [1693994734.416860][73585:73585] CHIP:SC: Waiting for PBKDF param request
          [1693994734.416866][73585:73585] CHIP:DIS: Updating services using commissioning mode 1
          [1693994734.417065][73585:73585] CHIP:DIS: CHIP minimal mDNS started advertising.
          [1693994734.417279][73585:73585] CHIP:DL: Using wifi MAC for hostname
      disabled: true

    - label:
          "Step 50: PAI Test Vector: Invalid certificate version field set to
          v2(1)"
      verification: |
          For Raspberry Pi device, perform a factory reset using the following command  - sudo rm -rf /tmp/chip_* for the 'chip-all-clusters-app.
           please use the equivalent command on your respective platform to perform a factory reset


          Execute the below mentioned command to put TH(all-cluster-app) into a commissionable state, Pls use equivalent command on the respective Platform

          ./chip-all-clusters-app --trace_decode 1 --dac_provider $CHIP_ROOT/credentials/development/commissioner_dut/struct_pai_cert_version_v2/test_case_vector.json --product-id 32768

          Once TH(all-clusters-app) reach the  commissionable state pls send below mentioned command on DUT(chip-tool). Pls use equivalent command on the respective platform
           ./chip-tool pairing onnetwork 1 20202021 --trace_decode 1

          On TH(all-clusters-app), Verify that the DUT(chip-tool) indicates that the device is not genuine, or otherwise indicates a failure of device attestation, within its error handling APIs or user interface

          [1693996775.308293][74381:74381] CHIP:EM: <<< [E:59252r S:59214 M:230492921 (Ack:3210801)] (S) Msg TX to 0:FFFFFFFB00000000 [0000] --- Type 0001:09 (IM:InvokeCommandResponse)
          [1693996775.308305][74381:74381] CHIP:IN: (S) Sending msg 230492921 on secure session with LSID: 59214
          [1693996775.308363][74381:74381] CHIP:DMG: Command handler moving to [CommandSen]
          [1693996775.308369][74381:74381] CHIP:DMG: Command handler moving to [AwaitingDe]
          [1693996775.308378][74381:74381] CHIP:DL: HandlePlatformSpecificBLEEvent 32783
          [1693996775.308386][74381:74381] CHIP:SVR: Failsafe timer expired
          [1693996775.308389][74381:74381] CHIP:IN: SecureSession[0x556753b05890]: MarkForEviction Type:1 LSID:59214
          [1693996775.308393][74381:74381] CHIP:SC: SecureSession[0x556753b05890, LSID:59214]: State change 'kActive' --> 'kPendingEviction'
          [1693996775.308406][74381:74381] CHIP:IN: SecureSession[0x556753b05890]: Released - Type:1 LSID:59214
          [1693996775.308414][74381:74381] CHIP:SVR: Commissioning failed (attempt 1): src/app/server/CommissioningWindowManager.cpp:77: CHIP Error 0x00000032: Timeout
          [1693996775.308430][74381:74381] CHIP:IN: SecureSession[0x556753b05890]: Allocated Type:1 LSID:59216
          [1693996775.308435][74381:74381] CHIP:SC: Assigned local session key ID 59216
          [1693996775.308438][74381:74381] CHIP:SC: Waiting for PBKDF param request
          [1693996775.308444][74381:74381] CHIP:DIS: Updating services using commissioning mode 1
      disabled: true

    - label:
          "Step 51: PAI Test Vector: Certificate doesnt include Key Usage
          extension"
      verification: |
          For Raspberry Pi device, perform a factory reset using the following command  - sudo rm -rf /tmp/chip_* for the 'chip-all-clusters-app.
           please use the equivalent command on your respective platform to perform a factory reset

          Execute the below mentioned command to put TH(all-cluster-app) into a commissionable state, Pls use equivalent command on the respective Platform

          ./chip-all-clusters-app --trace_decode 1 --dac_provider $CHIP_ROOT/credentials/development/commissioner_dut/struct_pai_ext_key_usage_missing/test_case_vector.json --product-id 32768

          Once TH(all-clusters-app) reach the  commissionable state pls send below mentioned command on DUT(chip-tool). Pls use equivalent command on the respective platform
           ./chip-tool pairing onnetwork 1 20202021 --trace_decode 1

          On TH(all-clusters-app), Verify that the DUT(chip-tool) indicates that the device is not genuine, or otherwise indicates a failure of device attestation, within its error handling APIs or user interface

          [1693996976.416497][74466:74466] CHIP:EM: <<< [E:48220r S:55511 M:104568595 (Ack:25835293)] (S) Msg TX to 0:FFFFFFFB00000000 [0000] --- Type 0001:09 (IM:InvokeCommandResponse)
          [1693996976.416502][74466:74466] CHIP:IN: (S) Sending msg 104568595 on secure session with LSID: 55511
          [1693996976.416520][74466:74466] CHIP:DMG: Command handler moving to [CommandSen]
          [1693996976.416522][74466:74466] CHIP:DMG: Command handler moving to [AwaitingDe]
          [1693996976.416526][74466:74466] CHIP:DL: HandlePlatformSpecificBLEEvent 32783
          [1693996976.416529][74466:74466] CHIP:SVR: Failsafe timer expired
          [1693996976.416531][74466:74466] CHIP:IN: SecureSession[0x55dadcc3e990]: MarkForEviction Type:1 LSID:55511
          [1693996976.416534][74466:74466] CHIP:SC: SecureSession[0x55dadcc3e990, LSID:55511]: State change 'kActive' --> 'kPendingEviction'
          [1693996976.416545][74466:74466] CHIP:IN: SecureSession[0x55dadcc3e990]: Released - Type:1 LSID:55511
          [1693996976.416552][74466:74466] CHIP:SVR: Commissioning failed (attempt 1): src/app/server/CommissioningWindowManager.cpp:77: CHIP Error 0x00000032: Timeout
          [1693996976.416565][74466:74466] CHIP:IN: SecureSession[0x55dadcc3e990]: Allocated Type:1 LSID:55513
          [1693996976.416569][74466:74466] CHIP:SC: Assigned local session key ID 55513
      disabled: true

    - label:
          "Step 52: DAC Test Vector: Certificate Basic Constraint extension
          PathLen field set to 0"
      verification: |
          Factory reset the TH(all-clusters-app) - Below mentioned command is for RPI,  PIs use equivalent command on their respective platform)
          command when using chip-all-clusters-app: sudo rm -rf /tmp/chip_*


          Execute the below mentioned command to put TH(all-cluster-app) into a commissionable state, Pls use equivalent command on the respective Platform

          ./chip-all-clusters-app --trace_decode 1 --dac_provider $CHIP_ROOT/credentials/development/commissioner_dut/struct_dac_ext_basic_pathlen0/test_case_vector.json --product-id 32768

          Once TH(all-clusters-app) reach the  commissionable state pls send below mentioned command on DUT(chip-tool). Pls use equivalent command on the respective platform
           ./chip-tool pairing onnetwork 1 20202021 --trace_decode 1

          On TH(all-clusters-app), Verify that the DUT(chip-tool) indicates that the device is not genuine, or otherwise indicates a failure of device attestation, within its error handling APIs or user interface

          [1693993355.537189][72739:72739] CHIP:EM: <<< [E:46949r S:42353 M:75820384 (Ack:69095779)] (S) Msg TX to 0:FFFFFFFB00000000 [0000] --- Type 0001:09 (IM:InvokeCommandResponse)
          [1693993355.537196][72739:72739] CHIP:IN: (S) Sending msg 75820384 on secure session with LSID: 42353
          [1693993355.537235][72739:72739] CHIP:DMG: Command handler moving to [CommandSen]
          [1693993355.537239][72739:72739] CHIP:DMG: Command handler moving to [AwaitingDe]
          [1693993355.537245][72739:72739] CHIP:DL: HandlePlatformSpecificBLEEvent 32783
          [1693993355.537249][72739:72739] CHIP:SVR: Failsafe timer expired
          [1693993355.537252][72739:72739] CHIP:IN: SecureSession[0x561e088c6c60]: MarkForEviction Type:1 LSID:42353
          [1693993355.537256][72739:72739] CHIP:SC: SecureSession[0x561e088c6c60, LSID:42353]: State change 'kActive' --> 'kPendingEviction'
          [1693993355.537273][72739:72739] CHIP:IN: SecureSession[0x561e088c6c60]: Released - Type:1 LSID:42353
          [1693993355.537284][72739:72739] CHIP:SVR: Commissioning failed (attempt 1): src/app/server/CommissioningWindowManager.cpp:77: CHIP Error 0x00000032: Timeout
          [1693993355.537303][72739:72739] CHIP:IN: SecureSession[0x561e088c6c60]: Allocated Type:1 LSID:42355
          [1693993355.537308][72739:72739] CHIP:SC: Assigned local session key ID 42355
          [1693993355.537311][72739:72739] CHIP:SC: Waiting for PBKDF param request
          [1693993355.537318][72739:72739] CHIP:DIS: Updating services using commissioning mode 1
          [1693993355.537588][72739:72739] CHIP:DIS: CHIP minimal mDNS started advertising.
          [1693993355.537857][72739:72739] CHIP:DL: Using wifi MAC for hostname
          [1693993355.537907][72739:72739] CHIP:DIS: Advertise commission parameter vendorID=65521 productID=32768 discriminator=3840/15 cm=1
          [1693993355.537920][72739:72739] CHIP:DIS: Responding with _matterc._udp.local
          [1693993355.537923][72739:72739] CHIP:DIS: Responding with 341D2ED7D15535D3._matterc._udp.local
          [1693993355.537926][72739:72739] CHIP:DIS: Responding with 8C1D96786A130000.local
          [1693993355.537929][72739:72739] CHIP:DIS: Responding with 8C1D96786A130000.local
      disabled: true

    - label: "Step 53: CD Test Vector: The vendor_id field is missing."
      verification: |
          For Raspberry Pi device, perform a factory reset using the following command  - sudo rm -rf /tmp/chip_* for the 'chip-all-clusters-app.
           please use the equivalent command on your respective platform to perform a factory reset

          Execute the below mentioned command to put TH(all-cluster-app) into a commissionable state, Pls use equivalent command on the respective Platform

          ./chip-all-clusters-app --trace_decode 1 --dac_provider $CHIP_ROOT/credentials/development/commissioner_dut/struct_cd_vid_missing/test_case_vector.json --product-id 32768

          Once TH(all-clusters-app) reach the  commissionable state pls send below mentioned command on DUT(chip-tool). Pls use equivalent command on the respective platform
           ./chip-tool pairing onnetwork 1 20202021 --trace_decode 1

          On TH(all-clusters-app), Verify that the DUT(chip-tool) indicates that the device is not genuine, or otherwise indicates a failure of device attestation, within its error handling APIs or user interface

          o 0:FFFFFFFB00000000 [0000] --- Type 0001:09 (IM:InvokeCommandResponse)
          [1693997124.337991][74541:74541] CHIP:IN: (S) Sending msg 235587990 on secure session with LSID: 11133
          [1693997124.338037][74541:74541] CHIP:DMG: Command handler moving to [CommandSen]
          [1693997124.338040][74541:74541] CHIP:DMG: Command handler moving to [AwaitingDe]
          [1693997124.338049][74541:74541] CHIP:DL: HandlePlatformSpecificBLEEvent 32783
          [1693997124.338053][74541:74541] CHIP:SVR: Failsafe timer expired
          [1693997124.338057][74541:74541] CHIP:IN: SecureSession[0x558830cce0e0]: MarkForEviction Type:1 LSID:11133
          [1693997124.338062][74541:74541] CHIP:SC: SecureSession[0x558830cce0e0, LSID:11133]: State change 'kActive' --> 'kPendingEviction'
          [1693997124.338084][74541:74541] CHIP:IN: SecureSession[0x558830cce0e0]: Released - Type:1 LSID:11133
          [1693997124.338092][74541:74541] CHIP:SVR: Commissioning failed (attempt 1): src/app/server/CommissioningWindowManager.cpp:77: CHIP Error 0x00000032: Timeout
          [1693997124.338111][74541:74541] CHIP:IN: SecureSession[0x558830cce0e0]: Allocated Type:1 LSID:11135
          [1693997124.338116][74541:74541] CHIP:SC: Assigned local session key ID 11135
          [1693997124.338119][74541:74541] CHIP:SC: Waiting for PBKDF param request
          [1693997124.338126][74541:74541] CHIP:DIS: Updating services using commissioning mode 1
          [1693997124.338452][74541:74541] CHIP:DIS: CHIP minimal mDNS started advertising.
      disabled: true

    - label: "Step 54: CD Test Vector: The version_number field is missing."
      verification: |
          For Raspberry Pi device, perform a factory reset using the following command  - sudo rm -rf /tmp/chip_* for the 'chip-all-clusters-app.
           please use the equivalent command on your respective platform to perform a factory reset

          Execute the below mentioned command to put TH(all-cluster-app) into a commissionable state, Pls use equivalent command on the respective Platform

          ./chip-all-clusters-app --trace_decode 1 --dac_provider $CHIP_ROOT/credentials/development/commissioner_dut/struct_cd_version_number_missing/test_case_vector.json --product-id 32768

          Once TH(all-clusters-app) reach the  commissionable state pls send below mentioned command on DUT(chip-tool). Pls use equivalent command on the respective platform
           ./chip-tool pairing onnetwork 1 20202021 --trace_decode 1

          On TH(all-clusters-app), Verify that the DUT(chip-tool) indicates that the device is not genuine, or otherwise indicates a failure of device attestation, within its error handling APIs or user interface

          [1693994668.691517][73554:73554] CHIP:EM: <<< [E:27863r S:51711 M:249269395 (Ack:246852262)] (S) Msg TX to 0:FFFFFFFB00000000 [0000] --- Type 0001:09 (IM:InvokeCommandResponse)
          [1693994668.691525][73554:73554] CHIP:IN: (S) Sending msg 249269395 on secure session with LSID: 51711
          [1693994668.691552][73554:73554] CHIP:DMG: Command handler moving to [CommandSen]
          [1693994668.691556][73554:73554] CHIP:DMG: Command handler moving to [AwaitingDe]
          [1693994668.691563][73554:73554] CHIP:DL: HandlePlatformSpecificBLEEvent 32783
          [1693994668.691567][73554:73554] CHIP:SVR: Failsafe timer expired
          [1693994668.691570][73554:73554] CHIP:IN: SecureSession[0x55646b0adce0]: MarkForEviction Type:1 LSID:51711
          [1693994668.691574][73554:73554] CHIP:SC: SecureSession[0x55646b0adce0, LSID:51711]: State change 'kActive' --> 'kPendingEviction'
          [1693994668.691590][73554:73554] CHIP:IN: SecureSession[0x55646b0adce0]: Released - Type:1 LSID:51711
          [1693994668.691600][73554:73554] CHIP:SVR: Commissioning failed (attempt 1): src/app/server/CommissioningWindowManager.cpp:77: CHIP Error 0x00000032: Timeout
          [1693994668.691618][73554:73554] CHIP:IN: SecureSession[0x55646b0adce0]: Allocated Type:1 LSID:51713
          [1693994668.691624][73554:73554] CHIP:SC: Assigned local session key ID 51713
          [1693994668.691628][73554:73554] CHIP:SC: Waiting for PBKDF param request
          [1693994668.691635][73554:73554] CHIP:DIS: Updating services using commissioning mode 1
          [1693994668.691882][73554:73554] CHIP:DIS: CHIP minimal mDNS started advertising.
          [1693994668.692178][73554:73554] CHIP:DL: Using wifi MAC for hostname
      disabled: true

    - label:
          "Step 55: DAC Test Vector: Certificate validity period starts in the
          past"
      verification: |
          For Raspberry Pi device, perform a factory reset using the following command  - sudo rm -rf /tmp/chip_* for the 'chip-all-clusters-app.
           please use the equivalent command on your respective platform to perform a factory reset

          Execute the below mentioned command to put TH(all-cluster-app) into a commissionable state, Pls use equivalent command on the respective Platform

          ./chip-all-clusters-app --trace_decode 1 --dac_provider $CHIP_ROOT/credentials/development/commissioner_dut/struct_dac_valid_in_past/test_case_vector.json --product-id 32768

          Once TH(all-clusters-app) reach the  commissionable state pls send below mentioned command on DUT(chip-tool). Pls use equivalent command on the respective platform
           ./chip-tool pairing onnetwork 1 20202021 --trace_decode 1

          On TH(all-clusters-app), Verify that the DUT(chip-tool) indicates that the device is not genuine, or otherwise indicates a failure of device attestation, within its error handling APIs or user interface

          [1693997610.132909][74792:74792] CHIP:EM: <<< [E:21455r S:37082 M:136294811 (Ack:124710680)] (S) Msg TX to 0:FFFFFFFB00000000 [0000] --- Type 0001:09 (IM:InvokeCommandResponse)
          [1693997610.132915][74792:74792] CHIP:IN: (S) Sending msg 136294811 on secure session with LSID: 37082
          [1693997610.132934][74792:74792] CHIP:DMG: Command handler moving to [CommandSen]
          [1693997610.132936][74792:74792] CHIP:DMG: Command handler moving to [AwaitingDe]
          [1693997610.132941][74792:74792] CHIP:DL: HandlePlatformSpecificBLEEvent 32783
          [1693997610.132943][74792:74792] CHIP:SVR: Failsafe timer expired
          [1693997610.132945][74792:74792] CHIP:IN: SecureSession[0x55efecb47930]: MarkForEviction Type:1 LSID:37082
          [1693997610.132977][74792:74792] CHIP:SC: SecureSession[0x55efecb47930, LSID:37082]: State change 'kActive' --> 'kPendingEviction'
          [1693997610.132996][74792:74792] CHIP:IN: SecureSession[0x55efecb47930]: Released - Type:1 LSID:37082
          [1693997610.133003][74792:74792] CHIP:SVR: Commissioning failed (attempt 1): src/app/server/CommissioningWindowManager.cpp:77: CHIP Error 0x00000032: Timeout
          [1693997610.133019][74792:74792] CHIP:IN: SecureSession[0x55efecb47930]: Allocated Type:1 LSID:37084
          [1693997610.133023][74792:74792] CHIP:SC: Assigned local session key ID 37084
          [1693997610.133026][74792:74792] CHIP:SC: Waiting for PBKDF param request
      disabled: true

    - label:
          "Step 56: PAI Test Vector: Fallback VID and PID encoding example from
          spec: invalid, since substring following Mvid: is not exactly 4
          uppercase hexadecimal digits"
      verification: |
          For Raspberry Pi device, perform a factory reset using the following command  - sudo rm -rf /tmp/chip_* for the 'chip-all-clusters-app.
           please use the equivalent command on your respective platform to perform a factory reset

          Execute the below mentioned command to put TH(all-cluster-app) into a commissionable state, Pls use equivalent command on the respective Platform

          ./chip-all-clusters-app --trace_decode 1 --dac_provider $CHIP_ROOT/credentials/development/commissioner_dut/struct_pai_vidpid_fallback_encoding_06/test_case_vector.json --product-id 177


          Once TH(all-clusters-app) reach the  commissionable state pls send below mentioned command on DUT(chip-tool). Pls use equivalent command on the respective platform
           ./chip-tool pairing onnetwork 1 20202021 --trace_decode 1

          On TH(all-clusters-app), Verify that the DUT(chip-tool) indicates that the device is not genuine, or otherwise indicates a failure of device attestation, within its error handling APIs or user interface

          [1693997369.939646][74668:74668] CHIP:EM: <<< [E:49580r S:11334 M:240277268 (Ack:200111746)] (S) Msg TX to 0:FFFFFFFB00000000 [0000] --- Type 0001:09 (IM:InvokeCommandResponse)
          [1693997369.939653][74668:74668] CHIP:IN: (S) Sending msg 240277268 on secure session with LSID: 11334
          [1693997369.939701][74668:74668] CHIP:DMG: Command handler moving to [CommandSen]
          [1693997369.939705][74668:74668] CHIP:DMG: Command handler moving to [AwaitingDe]
          [1693997369.939712][74668:74668] CHIP:DL: HandlePlatformSpecificBLEEvent 32783
          [1693997369.939715][74668:74668] CHIP:SVR: Failsafe timer expired
          [1693997369.939718][74668:74668] CHIP:IN: SecureSession[0x55aa26bb87e0]: MarkForEviction Type:1 LSID:11334
          [1693997369.939720][74668:74668] CHIP:SC: SecureSession[0x55aa26bb87e0, LSID:11334]: State change 'kActive' --> 'kPendingEviction'
          [1693997369.939733][74668:74668] CHIP:IN: SecureSession[0x55aa26bb87e0]: Released - Type:1 LSID:11334
          [1693997369.939743][74668:74668] CHIP:SVR: Commissioning failed (attempt 1): src/app/server/CommissioningWindowManager.cpp:77: CHIP Error 0x00000032: Timeout
          [1693997369.939771][74668:74668] CHIP:IN: SecureSession[0x55aa26bb87e0]: Allocated Type:1 LSID:11336
          [1693997369.939778][74668:74668] CHIP:SC: Assigned local session key ID 11336
          [1693997369.939781][74668:74668] CHIP:SC: Waiting for PBKDF param request
      disabled: true

    - label:
          "Step 57: CD Test Vector: The certification_type field is set to
          invalid value."
      verification: |
          For Raspberry Pi device, perform a factory reset using the following command  - sudo rm -rf /tmp/chip_* for the 'chip-all-clusters-app.
           please use the equivalent command on your respective platform to perform a factory reset

          Execute the below mentioned command to put TH(all-cluster-app) into a commissionable state, Pls use equivalent command on the respective Platform

          ./chip-all-clusters-app --trace_decode 1 --dac_provider $CHIP_ROOT/credentials/development/commissioner_dut/struct_cd_cert_type_wrong/test_case_vector.json --product-id 32768

          Once TH(all-clusters-app) reach the  commissionable state pls send below mentioned command on DUT(chip-tool). Pls use equivalent command on the respective platform
           ./chip-tool pairing onnetwork 1 20202021 --trace_decode 1

          On TH(all-clusters-app), Verify that the DUT(chip-tool) indicates that the device is not genuine, or otherwise indicates a failure of device attestation, within its error handling APIs or user interface

          [1693997345.986044][74654:74654] CHIP:IN: (S) Sending msg 9093635 on secure session with LSID: 5249
          [1693997345.986063][74654:74654] CHIP:DMG: Command handler moving to [CommandSen]
          [1693997345.986066][74654:74654] CHIP:DMG: Command handler moving to [AwaitingDe]
          [1693997345.986071][74654:74654] CHIP:DL: HandlePlatformSpecificBLEEvent 32783
          [1693997345.986073][74654:74654] CHIP:SVR: Failsafe timer expired
          [1693997345.986076][74654:74654] CHIP:IN: SecureSession[0x55e15dc92d30]: MarkForEviction Type:1 LSID:5249
          [1693997345.986079][74654:74654] CHIP:SC: SecureSession[0x55e15dc92d30, LSID:5249]: State change 'kActive' --> 'kPendingEviction'
          [1693997345.986090][74654:74654] CHIP:IN: SecureSession[0x55e15dc92d30]: Released - Type:1 LSID:5249
          [1693997345.986097][74654:74654] CHIP:SVR: Commissioning failed (attempt 1): src/app/server/CommissioningWindowManager.cpp:77: CHIP Error 0x00000032: Timeout
          [1693997345.986110][74654:74654] CHIP:IN: SecureSession[0x55e15dc92d30]: Allocated Type:1 LSID:5251
          [1693997345.986114][74654:74654] CHIP:SC: Assigned local session key ID 5251
          [1693997345.986117][74654:74654] CHIP:SC: Waiting for PBKDF param request
          [1693997345.986122][74654:74654] CHIP:DIS: Updating services using commissioning mode 1
          [1693997345.986297][74654:74654] CHIP:DIS: CHIP minimal mDNS started advertising.
          [1693997345.986518][74654:74654] CHIP:DL: Using wifi MAC for hostname
      disabled: true

    - label:
          "Step 58: PAI Test Vector: Certificate Basic Constraint extension
          critical field is missing"
      verification: |
          For Raspberry Pi device, perform a factory reset using the following command  - sudo rm -rf /tmp/chip_* for the 'chip-all-clusters-app.
           please use the equivalent command on your respective platform to perform a factory reset


          Execute the below mentioned command to put TH(all-cluster-app) into a commissionable state, Pls use equivalent command on the respective Platform

          ./chip-all-clusters-app --trace_decode 1 --dac_provider $CHIP_ROOT/credentials/development/commissioner_dut/struct_pai_ext_basic_critical_missing/test_case_vector.json --product-id 32768

          Once TH(all-clusters-app) reach the  commissionable state pls send below mentioned command on DUT(chip-tool). Pls use equivalent command on the respective platform
           ./chip-tool pairing onnetwork 1 20202021 --trace_decode 1

          On TH(all-clusters-app), Verify that the DUT(chip-tool) indicates that the device is not genuine, or otherwise indicates a failure of device attestation, within its error handling APIs or user interface

           0:FFFFFFFB00000000 [0000] --- Type 0001:09 (IM:InvokeCommandResponse)
          [1693995141.040391][73748:73748] CHIP:IN: (S) Sending msg 13082630 on secure session with LSID: 25697
          [1693995141.040415][73748:73748] CHIP:DMG: Command handler moving to [CommandSen]
          [1693995141.040418][73748:73748] CHIP:DMG: Command handler moving to [AwaitingDe]
          [1693995141.040422][73748:73748] CHIP:DL: HandlePlatformSpecificBLEEvent 32783
          [1693995141.040425][73748:73748] CHIP:SVR: Failsafe timer expired
          [1693995141.040427][73748:73748] CHIP:IN: SecureSession[0x5595f22b8a70]: MarkForEviction Type:1 LSID:25697
          [1693995141.040431][73748:73748] CHIP:SC: SecureSession[0x5595f22b8a70, LSID:25697]: State change 'kActive' --> 'kPendingEviction'
          [1693995141.040444][73748:73748] CHIP:IN: SecureSession[0x5595f22b8a70]: Released - Type:1 LSID:25697
          [1693995141.040453][73748:73748] CHIP:SVR: Commissioning failed (attempt 1): src/app/server/CommissioningWindowManager.cpp:77: CHIP Error 0x00000032: Timeout
          [1693995141.040469][73748:73748] CHIP:IN: SecureSession[0x5595f22b8a70]: Allocated Type:1 LSID:25699
          [1693995141.040474][73748:73748] CHIP:SC: Assigned local session key ID 25699
          [1693995141.040477][73748:73748] CHIP:SC: Waiting for PBKDF param request
          [1693995141.040483][73748:73748] CHIP:DIS: Updating services using commissioning mode 1
          [1693995141.040688][73748:73748] CHIP:DIS: CHIP minimal mDNS started advertising.
          [1693995141.040929][73748:73748] CHIP:DL: Using wifi MAC for hostname
      disabled: true

    - label:
          "Step 59: DAC Test Vector: Mix of Fallback and Matter OID encoding for
          VID and PID: wrong, Correct values encoded in the common-name are
          ignored"
      verification: |
          For Raspberry Pi device, perform a factory reset using the following command  - sudo rm -rf /tmp/chip_* for the 'chip-all-clusters-app.
           please use the equivalent command on your respective platform to perform a factory reset


          Execute the below mentioned command to put TH(all-cluster-app) into a commissionable state, Pls use equivalent command on the respective Platform

          ./chip-all-clusters-app --trace_decode 1 --dac_provider $CHIP_ROOT/credentials/development/commissioner_dut/struct_dac_vidpid_fallback_encoding_10/test_case_vector.json --product-id 177

          Once TH(all-clusters-app) reach the  commissionable state pls send below mentioned command on DUT(chip-tool). Pls use equivalent command on the respective platform
           ./chip-tool pairing onnetwork 1 20202021 --trace_decode 1

          On TH(all-clusters-app), Verify that the DUT(chip-tool) indicates that the device is not genuine, or otherwise indicates a failure of device attestation, within its error handling APIs or user interface

          [1693994569.856552][73521:73521] CHIP:IN: (S) Sending msg 148377031 on secure session with LSID: 36938
          [1693994569.856571][73521:73521] CHIP:DMG: Command handler moving to [CommandSen]
          [1693994569.856573][73521:73521] CHIP:DMG: Command handler moving to [AwaitingDe]
          [1693994569.856577][73521:73521] CHIP:DL: HandlePlatformSpecificBLEEvent 32783
          [1693994569.856580][73521:73521] CHIP:SVR: Failsafe timer expired
          [1693994569.856582][73521:73521] CHIP:IN: SecureSession[0x559724af7a80]: MarkForEviction Type:1 LSID:36938
          [1693994569.856585][73521:73521] CHIP:SC: SecureSession[0x559724af7a80, LSID:36938]: State change 'kActive' --> 'kPendingEviction'
          [1693994569.856595][73521:73521] CHIP:IN: SecureSession[0x559724af7a80]: Released - Type:1 LSID:36938
          [1693994569.856602][73521:73521] CHIP:SVR: Commissioning failed (attempt 1): src/app/server/CommissioningWindowManager.cpp:77: CHIP Error 0x00000032: Timeout
          [1693994569.856615][73521:73521] CHIP:IN: SecureSession[0x559724af7a80]: Allocated Type:1 LSID:36940
          [1693994569.856619][73521:73521] CHIP:SC: Assigned local session key ID 36940
          [1693994569.856622][73521:73521] CHIP:SC: Waiting for PBKDF param request
          [1693994569.856627][73521:73521] CHIP:DIS: Updating services using commissioning mode 1
          [1693994569.856806][73521:73521] CHIP:DIS: CHIP minimal mDNS started advertising.
          [1693994569.857035][73521:73521] CHIP:DL: Using wifi MAC for hostname
          [1693994569.857067][73521:73521] CHIP:DIS: Advertise commission parameter vendorID=65521 productID=177 discriminator=3840/15 cm=1
      disabled: true

    - label:
          "Step 60: DAC Test Vector: Certificate validity period starts in the
          future"
      verification: |
          For Raspberry Pi device, perform a factory reset using the following command  - sudo rm -rf /tmp/chip_* for the 'chip-all-clusters-app.
           please use the equivalent command on your respective platform to perform a factory reset

          Execute the below mentioned command to put TH(all-cluster-app) into a commissionable state, Pls use equivalent command on the respective Platform

          ./chip-all-clusters-app --trace_decode 1 --dac_provider $CHIP_ROOT/credentials/development/commissioner_dut/struct_dac_valid_in_future/test_case_vector.json --product-id 32768

          Once TH(all-clusters-app) reach the  commissionable state pls send below mentioned command on DUT(chip-tool). Pls use equivalent command on the respective platform
           ./chip-tool pairing onnetwork 1 20202021 --trace_decode 1

          On TH(all-clusters-app), Verify that the DUT(chip-tool) indicates that the device is not genuine, or otherwise indicates a failure of device attestation, within its error handling APIs or user interface

          [1693994108.296043][73284:73284] CHIP:DMG: }
          [1693994108.296046][73284:73284] CHIP:DMG:
          [1693994108.296060][73284:73284] CHIP:EM: <<< [E:21442r S:39030 M:264066648 (Ack:200959608)] (S) Msg TX to 0:FFFFFFFB00000000 [0000] --- Type 0001:09 (IM:InvokeCommandResponse)
          [1693994108.296069][73284:73284] CHIP:IN: (S) Sending msg 264066648 on secure session with LSID: 39030
          [1693994108.296124][73284:73284] CHIP:DMG: Command handler moving to [CommandSen]
          [1693994108.296128][73284:73284] CHIP:DMG: Command handler moving to [AwaitingDe]
          [1693994108.296134][73284:73284] CHIP:DL: HandlePlatformSpecificBLEEvent 32783
          [1693994108.296138][73284:73284] CHIP:SVR: Failsafe timer expired
          [1693994108.296144][73284:73284] CHIP:IN: SecureSession[0x55acb0510890]: MarkForEviction Type:1 LSID:39030
          [1693994108.296151][73284:73284] CHIP:SC: SecureSession[0x55acb0510890, LSID:39030]: State change 'kActive' --> 'kPendingEviction'
          [1693994108.296179][73284:73284] CHIP:IN: SecureSession[0x55acb0510890]: Released - Type:1 LSID:39030
          [1693994108.296210][73284:73284] CHIP:SVR: Commissioning failed (attempt 1): src/app/server/CommissioningWindowManager.cpp:77: CHIP Error 0x00000032: Timeout
          [1693994108.296234][73284:73284] CHIP:IN: SecureSession[0x55acb0510890]: Allocated Type:1 LSID:39032
          [1693994108.296238][73284:73284] CHIP:SC: Assigned local session key ID 39032
          [1693994108.296242][73284:73284] CHIP:SC: Waiting for PBKDF param request
          [1693994108.296246][73284:73284] CHIP:DIS: Updating services using commissioning mode 1
          [1693994108.296462][73284:73284] CHIP:DIS: CHIP minimal mDNS started advertising.
          [1693994108.296707][73284:73284] CHIP:DL: Using wifi MAC for hostname
      disabled: true

    - label:
          "Step 61: CD Test Vector: The certificate_id field has wrong length."
      verification: |
          For Raspberry Pi device, perform a factory reset using the following command  - sudo rm -rf /tmp/chip_* for the 'chip-all-clusters-app.
           please use the equivalent command on your respective platform to perform a factory reset

          Execute the below mentioned command to put TH(all-cluster-app) into a commissionable state, Pls use equivalent command on the respective Platform
          ./chip-all-clusters-app --trace_decode 1 --dac_provider $CHIP_ROOT/credentials/development/commissioner_dut/struct_cd_cert_id_len_wrong/test_case_vector.json --product-id 32768

          Once TH(all-clusters-app) reach the  commissionable state pls send below mentioned command on DUT(chip-tool). Pls use equivalent command on the respective platform
           ./chip-tool pairing onnetwork 1 20202021 --trace_decode 1

          On TH(all-clusters-app), Verify that the DUT(chip-tool) indicates that the device is not genuine, or otherwise indicates a failure of device attestation, within its error handling APIs or user interface

          [1693997320.814609][74644:74644] CHIP:EM: <<< [E:6007r S:62708 M:225968513 (Ack:186887405)] (S) Msg TX to 0:FFFFFFFB00000000 [0000] --- Type 0001:09 (IM:InvokeCommandResponse)
          [1693997320.814615][74644:74644] CHIP:IN: (S) Sending msg 225968513 on secure session with LSID: 62708
          [1693997320.814643][74644:74644] CHIP:DMG: Command handler moving to [CommandSen]
          [1693997320.814647][74644:74644] CHIP:DMG: Command handler moving to [AwaitingDe]
          [1693997320.814652][74644:74644] CHIP:DL: HandlePlatformSpecificBLEEvent 32783
          [1693997320.814655][74644:74644] CHIP:SVR: Failsafe timer expired
          [1693997320.814657][74644:74644] CHIP:IN: SecureSession[0x55dfa19ceae0]: MarkForEviction Type:1 LSID:62708
          [1693997320.814661][74644:74644] CHIP:SC: SecureSession[0x55dfa19ceae0, LSID:62708]: State change 'kActive' --> 'kPendingEviction'
          [1693997320.814672][74644:74644] CHIP:IN: SecureSession[0x55dfa19ceae0]: Released - Type:1 LSID:62708
          [1693997320.814680][74644:74644] CHIP:SVR: Commissioning failed (attempt 1): src/app/server/CommissioningWindowManager.cpp:77: CHIP Error 0x00000032: Timeout
          [1693997320.814695][74644:74644] CHIP:IN: SecureSession[0x55dfa19ceae0]: Allocated Type:1 LSID:62710
          [1693997320.814699][74644:74644] CHIP:SC: Assigned local session key ID 62710
          [1693997320.814702][74644:74644] CHIP:SC: Waiting for PBKDF param request
      disabled: true

    - label:
          "Step 62: PAI Test Vector: Certificate Basic Constraint extension
          PathLen field presence is wrong (present for DAC not present for PAI)"
      verification: |
          For Raspberry Pi device, perform a factory reset using the following command  - sudo rm -rf /tmp/chip_* for the 'chip-all-clusters-app.
           please use the equivalent command on your respective platform to perform a factory reset

          Execute the below mentioned command to put TH(all-cluster-app) into a commissionable state, Pls use equivalent command on the respective Platform

          ./chip-all-clusters-app --trace_decode 1 --dac_provider $CHIP_ROOT/credentials/development/commissioner_dut/struct_pai_ext_basic_pathlen_presence_wrong/test_case_vector.json --product-id 32768

          Once TH(all-clusters-app) reach the  commissionable state pls send below mentioned command on DUT(chip-tool). Pls use equivalent command on the respective platform
           ./chip-tool pairing onnetwork 1 20202021 --trace_decode 1

          On TH(all-clusters-app), Verify that the DUT(chip-tool) indicates that the device is not genuine, or otherwise indicates a failure of device attestation, within its error handling APIs or user interface

          [1693995197.902283][73788:73788] CHIP:EM: <<< [E:1271r S:60164 M:123351731 (Ack:124474473)] (S) Msg TX to 0:FFFFFFFB00000000 [0000] --- Type 0001:09 (IM:InvokeCommandResponse)
          [1693995197.902291][73788:73788] CHIP:IN: (S) Sending msg 123351731 on secure session with LSID: 60164
          [1693995197.902328][73788:73788] CHIP:DMG: Command handler moving to [CommandSen]
          [1693995197.902332][73788:73788] CHIP:DMG: Command handler moving to [AwaitingDe]
          [1693995197.902340][73788:73788] CHIP:DL: HandlePlatformSpecificBLEEvent 32783
          [1693995197.902345][73788:73788] CHIP:SVR: Failsafe timer expired
          [1693995197.902348][73788:73788] CHIP:IN: SecureSession[0x5640a74d9890]: MarkForEviction Type:1 LSID:60164
          [1693995197.902353][73788:73788] CHIP:SC: SecureSession[0x5640a74d9890, LSID:60164]: State change 'kActive' --> 'kPendingEviction'
          [1693995197.902369][73788:73788] CHIP:IN: SecureSession[0x5640a74d9890]: Released - Type:1 LSID:60164
          [1693995197.902380][73788:73788] CHIP:SVR: Commissioning failed (attempt 1): src/app/server/CommissioningWindowManager.cpp:77: CHIP Error 0x00000032: Timeout
          [1693995197.902399][73788:73788] CHIP:IN: SecureSession[0x5640a74d9890]: Allocated Type:1 LSID:60166
          [1693995197.902406][73788:73788] CHIP:SC: Assigned local session key ID 60166
          [1693995197.902411][73788:73788] CHIP:SC: Waiting for PBKDF param request
          [1693995197.902420][73788:73788] CHIP:DIS: Updating services using commissioning mode 1
          [1693995197.902658][73788:73788] CHIP:DIS: CHIP minimal mDNS started advertising.
          [1693995197.902955][73788:73788] CHIP:DL: Using wifi MAC for hostname
          [1693995197.903011][73788:73788] CHIP:DIS: Advertise commission parameter vendorID=65521 productID=32768 discriminator=3840/15 cm=1
      disabled: true

    - label:
          "Step 63: PAI Test Vector: Fallback VID and PID encoding example:
          invalid VID prefix"
      verification: |
          For Raspberry Pi device, perform a factory reset using the following command  - sudo rm -rf /tmp/chip_* for the 'chip-all-clusters-app.
           please use the equivalent command on your respective platform to perform a factory reset

          Execute the below mentioned command to put TH(all-cluster-app) into a commissionable state, Pls use equivalent command on the respective Platform

          ./chip-all-clusters-app --trace_decode 1 --dac_provider $CHIP_ROOT/credentials/development/commissioner_dut/struct_pai_vidpid_fallback_encoding_13/test_case_vector.json --product-id 177

          Once TH(all-clusters-app) reach the  commissionable state pls send below mentioned command on DUT(chip-tool). Pls use equivalent command on the respective platform
           ./chip-tool pairing onnetwork 1 20202021 --trace_decode 1

          On TH(all-clusters-app), Verify that the DUT(chip-tool) indicates that the device is not genuine, or otherwise indicates a failure of device attestation, within its error handling APIs or user interface

          [1693995319.932069][73870:73870] CHIP:EM: <<< [E:61482r S:22710 M:111317237 (Ack:118801789)] (S) Msg TX to 0:FFFFFFFB00000000 [0000] --- Type 0001:09 (IM:InvokeCommandResponse)
          [1693995319.932084][73870:73870] CHIP:IN: (S) Sending msg 111317237 on secure session with LSID: 22710
          [1693995319.932197][73870:73870] CHIP:DMG: Command handler moving to [CommandSen]
          [1693995319.932207][73870:73870] CHIP:DMG: Command handler moving to [AwaitingDe]
          [1693995319.932227][73870:73870] CHIP:DL: HandlePlatformSpecificBLEEvent 32783
          [1693995319.932236][73870:73870] CHIP:SVR: Failsafe timer expired
          [1693995319.932240][73870:73870] CHIP:IN: SecureSession[0x5628acd36a70]: MarkForEviction Type:1 LSID:22710
          [1693995319.932244][73870:73870] CHIP:SC: SecureSession[0x5628acd36a70, LSID:22710]: State change 'kActive' --> 'kPendingEviction'
          [1693995319.932273][73870:73870] CHIP:IN: SecureSession[0x5628acd36a70]: Released - Type:1 LSID:22710
          [1693995319.932291][73870:73870] CHIP:SVR: Commissioning failed (attempt 1): src/app/server/CommissioningWindowManager.cpp:77: CHIP Error 0x00000032: Timeout
          [1693995319.932320][73870:73870] CHIP:IN: SecureSession[0x5628acd36a70]: Allocated Type:1 LSID:22712
          [1693995319.932325][73870:73870] CHIP:SC: Assigned local session key ID 22712
          [1693995319.932328][73870:73870] CHIP:SC: Waiting for PBKDF param request
          [1693995319.932333][73870:73870] CHIP:DIS: Updating services using commissioning mode 1
          [1693995319.932613][73870:73870] CHIP:DIS: CHIP minimal mDNS started advertising.
          [1693995319.932916][73870:73870] CHIP:DL: Using wifi MAC for hostname
      disabled: true

    - label: "Step 64: CD Test Vector: Invalid CMS version set to v2."
      verification: |
          For Raspberry Pi device, perform a factory reset using the following command  - sudo rm -rf /tmp/chip_* for the 'chip-all-clusters-app.
           please use the equivalent command on your respective platform to perform a factory reset

          Execute the below mentioned command to put TH(all-cluster-app) into a commissionable state, Pls use equivalent command on the respective Platform

          ./chip-all-clusters-app --trace_decode 1 --dac_provider $CHIP_ROOT/credentials/development/commissioner_dut/struct_cd_cms_v2/test_case_vector.json --product-id 32768

          Once TH(all-clusters-app) reach the  commissionable state pls send below mentioned command on DUT(chip-tool). Pls use equivalent command on the respective platform
           ./chip-tool pairing onnetwork 1 20202021 --trace_decode 1

          On TH(all-clusters-app), Verify that the DUT(chip-tool) indicates that the device is not genuine, or otherwise indicates a failure of device attestation, within its error handling APIs or user interface

          [1693997461.745027][74710:74710] CHIP:EM: <<< [E:51312r S:62341 M:262208603 (Ack:254470721)] (S) Msg TX to 0:FFFFFFFB00000000 [0000] --- Type 0001:09 (IM:InvokeCommandResponse)
          [1693997461.745033][74710:74710] CHIP:IN: (S) Sending msg 262208603 on secure session with LSID: 62341
          [1693997461.745052][74710:74710] CHIP:DMG: Command handler moving to [CommandSen]
          [1693997461.745055][74710:74710] CHIP:DMG: Command handler moving to [AwaitingDe]
          [1693997461.745059][74710:74710] CHIP:DL: HandlePlatformSpecificBLEEvent 32783
          [1693997461.745062][74710:74710] CHIP:SVR: Failsafe timer expired
          [1693997461.745065][74710:74710] CHIP:IN: SecureSession[0x55a662f12d40]: MarkForEviction Type:1 LSID:62341
          [1693997461.745068][74710:74710] CHIP:SC: SecureSession[0x55a662f12d40, LSID:62341]: State change 'kActive' --> 'kPendingEviction'
          [1693997461.745079][74710:74710] CHIP:IN: SecureSession[0x55a662f12d40]: Released - Type:1 LSID:62341
          [1693997461.745085][74710:74710] CHIP:SVR: Commissioning failed (attempt 1): src/app/server/CommissioningWindowManager.cpp:77: CHIP Error 0x00000032: Timeout
          [1693997461.745098][74710:74710] CHIP:IN: SecureSession[0x55a662f12d40]: Allocated Type:1 LSID:62343
          [1693997461.745102][74710:74710] CHIP:SC: Assigned local session key ID 62343
          [1693997461.745105][74710:74710] CHIP:SC: Waiting for PBKDF param request
          [1693997461.745109][74710:74710] CHIP:DIS: Updating services using commissioning mode 1
      disabled: true

    - label:
          "Step 65: DAC Test Vector: Fallback VID and PID encoding example:
          invalid VID encoding"
      verification: |
          For Raspberry Pi device, perform a factory reset using the following command  - sudo rm -rf /tmp/chip_* for the 'chip-all-clusters-app.
           please use the equivalent command on your respective platform to perform a factory reset

          Execute the below mentioned command to put TH(all-cluster-app) into a commissionable state, Pls use equivalent command on the respective Platform

          ./chip-all-clusters-app --trace_decode 1 --dac_provider $CHIP_ROOT/credentials/development/commissioner_dut/struct_dac_vidpid_fallback_encoding_14/test_case_vector.json --product-id 177

          Once TH(all-clusters-app) reach the  commissionable state pls send below mentioned command on DUT(chip-tool). Pls use equivalent command on the respective platform
           ./chip-tool pairing onnetwork 1 20202021 --trace_decode 1

          On TH(all-clusters-app), Verify that the DUT(chip-tool) indicates that the device is not genuine, or otherwise indicates a failure of device attestation, within its error handling APIs or user interface

          [1693995817.508655][74000:74000] CHIP:EM: <<< [E:7012r S:58652 M:202734303 (Ack:196860855)] (S) Msg TX to 0:FFFFFFFB00000000 [0000] --- Type 0001:09 (IM:InvokeCommandResponse)
          [1693995817.508663][74000:74000] CHIP:IN: (S) Sending msg 202734303 on secure session with LSID: 58652
          [1693995817.508694][74000:74000] CHIP:DMG: Command handler moving to [CommandSen]
          [1693995817.508698][74000:74000] CHIP:DMG: Command handler moving to [AwaitingDe]
          [1693995817.508706][74000:74000] CHIP:DL: HandlePlatformSpecificBLEEvent 32783
          [1693995817.508710][74000:74000] CHIP:SVR: Failsafe timer expired
          [1693995817.508714][74000:74000] CHIP:IN: SecureSession[0x55963a9cecb0]: MarkForEviction Type:1 LSID:58652
          [1693995817.508718][74000:74000] CHIP:SC: SecureSession[0x55963a9cecb0, LSID:58652]: State change 'kActive' --> 'kPendingEviction'
          [1693995817.508735][74000:74000] CHIP:IN: SecureSession[0x55963a9cecb0]: Released - Type:1 LSID:58652
          [1693995817.508745][74000:74000] CHIP:SVR: Commissioning failed (attempt 1): src/app/server/CommissioningWindowManager.cpp:77: CHIP Error 0x00000032: Timeout
          [1693995817.508764][74000:74000] CHIP:IN: SecureSession[0x55963a9cecb0]: Allocated Type:1 LSID:58654
          [1693995817.508771][74000:74000] CHIP:SC: Assigned local session key ID 58654
          [1693995817.508775][74000:74000] CHIP:SC: Waiting for PBKDF param request
      disabled: true

    - label: "Step 66: CD Test Vector: The security_level field is missing."
      verification: |
          For Raspberry Pi device, perform a factory reset using the following command  - sudo rm -rf /tmp/chip_* for the 'chip-all-clusters-app.
           please use the equivalent command on your respective platform to perform a factory reset

          Execute the below mentioned command to put TH(all-cluster-app) into a commissionable state, Pls use equivalent command on the respective Platform

          ./chip-all-clusters-app --trace_decode 1 --dac_provider $CHIP_ROOT/credentials/development/commissioner_dut/struct_cd_security_level_missing/test_case_vector.json --product-id 32768


          Once TH(all-clusters-app) reach the  commissionable state pls send below mentioned command on DUT(chip-tool). Pls use equivalent command on the respective platform
           ./chip-tool pairing onnetwork 1 20202021 --trace_decode 1

          On TH(all-clusters-app), Verify that the DUT(chip-tool) indicates that the device is not genuine, or otherwise indicates a failure of device attestation, within its error handling APIs or user interface

          [1693986541.596701][71746:71746] CHIP:EM: <<< [E:37957r S:22144 M:175902201 (Ack:200093104)] (S) Msg TX to 0:FFFFFFFB00000000 [0000] --- Type 0001:09 (IM:InvokeCommandResponse)
          [1693986541.596707][71746:71746] CHIP:IN: (S) Sending msg 175902201 on secure session with LSID: 22144
          [1693986541.596726][71746:71746] CHIP:DMG: Command handler moving to [CommandSen]
          [1693986541.596728][71746:71746] CHIP:DMG: Command handler moving to [AwaitingDe]
          [1693986541.596732][71746:71746] CHIP:DL: HandlePlatformSpecificBLEEvent 32783
          [1693986541.596735][71746:71746] CHIP:SVR: Failsafe timer expired
          [1693986541.596738][71746:71746] CHIP:IN: SecureSession[0x559a84d3cb20]: MarkForEviction Type:1 LSID:22144
          [1693986541.596742][71746:71746] CHIP:SC: SecureSession[0x559a84d3cb20, LSID:22144]: State change 'kActive' --> 'kPendingEviction'
          [1693986541.596755][71746:71746] CHIP:IN: SecureSession[0x559a84d3cb20]: Released - Type:1 LSID:22144
          [1693986541.596763][71746:71746] CHIP:SVR: Commissioning failed (attempt 1): src/app/server/CommissioningWindowManager.cpp:77: CHIP Error 0x00000032: Timeout
          [1693986541.596778][71746:71746] CHIP:IN: SecureSession[0x559a84d3cb20]: Allocated Type:1 LSID:22146
      disabled: true

    - label:
          "Step 67: DAC Test Vector: Certificate doesnt include Key Usage
          extension"
      verification: |
          For Raspberry Pi device, perform a factory reset using the following command  - sudo rm -rf /tmp/chip_* for the 'chip-all-clusters-app.
           please use the equivalent command on your respective platform to perform a factory reset

          Execute the below mentioned command to put TH(all-cluster-app) into a commissionable state, Pls use equivalent command on the respective Platform

          ./chip-all-clusters-app --trace_decode 1 --dac_provider $CHIP_ROOT/credentials/development/commissioner_dut/struct_cd_security_level_missing/test_case_vector.json --product-id 32768


          Once TH(all-clusters-app) reach the  commissionable state pls send below mentioned command on DUT(chip-tool). Pls use equivalent command on the respective platform
           ./chip-tool pairing onnetwork 1 20202021 --trace_decode 1

          On TH(all-clusters-app), Verify that the DUT(chip-tool) indicates that the device is not genuine, or otherwise indicates a failure of device attestation, within its error handling APIs or user interface

          [1693986541.596701][71746:71746] CHIP:EM: <<< [E:37957r S:22144 M:175902201 (Ack:200093104)] (S) Msg TX to 0:FFFFFFFB00000000 [0000] --- Type 0001:09 (IM:InvokeCommandResponse)
          [1693986541.596707][71746:71746] CHIP:IN: (S) Sending msg 175902201 on secure session with LSID: 22144
          [1693986541.596726][71746:71746] CHIP:DMG: Command handler moving to [CommandSen]
          [1693986541.596728][71746:71746] CHIP:DMG: Command handler moving to [AwaitingDe]
          [1693986541.596732][71746:71746] CHIP:DL: HandlePlatformSpecificBLEEvent 32783
          [1693986541.596735][71746:71746] CHIP:SVR: Failsafe timer expired
          [1693986541.596738][71746:71746] CHIP:IN: SecureSession[0x559a84d3cb20]: MarkForEviction Type:1 LSID:22144
          [1693986541.596742][71746:71746] CHIP:SC: SecureSession[0x559a84d3cb20, LSID:22144]: State change 'kActive' --> 'kPendingEviction'
          [1693986541.596755][71746:71746] CHIP:IN: SecureSession[0x559a84d3cb20]: Released - Type:1 LSID:22144
          [1693986541.596763][71746:71746] CHIP:SVR: Commissioning failed (attempt 1): src/app/server/CommissioningWindowManager.cpp:77: CHIP Error 0x00000032: Timeout
          [1693986541.596778][71746:71746] CHIP:IN: SecureSession[0x559a84d3cb20]: Allocated Type:1 LSID:22146
      disabled: true

    - label:
          "Step 68: PAI Test Vector: Certificate Basic Constraint extension CA
          field is missing"
      verification: |
          For Raspberry Pi device, perform a factory reset using the following command  - sudo rm -rf /tmp/chip_* for the 'chip-all-clusters-app.
           please use the equivalent command on your respective platform to perform a factory reset

          Execute the below mentioned command to put TH(all-cluster-app) into a commissionable state, Pls use equivalent command on the respective Platform

          ./chip-all-clusters-app --trace_decode 1 --dac_provider $CHIP_ROOT/credentials/development/commissioner_dut/struct_pai_ext_basic_ca_missing/test_case_vector.json --product-id 32768

          Once TH(all-clusters-app) reach the  commissionable state pls send below mentioned command on DUT(chip-tool). Pls use equivalent command on the respective platform
           ./chip-tool pairing onnetwork 1 20202021 --trace_decode 1

          On TH(all-clusters-app), Verify that the DUT(chip-tool) indicates that the device is not genuine, or otherwise indicates a failure of device attestation, within its error handling APIs or user interface

          [1693997563.549737][74762:74762] CHIP:EM: <<< [E:15206r S:63028 M:93417935 (Ack:71293345)] (S) Msg TX to 0:FFFFFFFB00000000 [0000] --- Type 0001:09 (IM:InvokeCommandResponse)
          [1693997563.549743][74762:74762] CHIP:IN: (S) Sending msg 93417935 on secure session with LSID: 63028
          [1693997563.549766][74762:74762] CHIP:DMG: Command handler moving to [CommandSen]
          [1693997563.549770][74762:74762] CHIP:DMG: Command handler moving to [AwaitingDe]
          [1693997563.549776][74762:74762] CHIP:DL: HandlePlatformSpecificBLEEvent 32783
          [1693997563.549780][74762:74762] CHIP:SVR: Failsafe timer expired
          [1693997563.549783][74762:74762] CHIP:IN: SecureSession[0x555e1432ca90]: MarkForEviction Type:1 LSID:63028
          [1693997563.549787][74762:74762] CHIP:SC: SecureSession[0x555e1432ca90, LSID:63028]: State change 'kActive' --> 'kPendingEviction'
          [1693997563.549804][74762:74762] CHIP:IN: SecureSession[0x555e1432ca90]: Released - Type:1 LSID:63028
          [1693997563.549814][74762:74762] CHIP:SVR: Commissioning failed (attempt 1): src/app/server/CommissioningWindowManager.cpp:77: CHIP Error 0x00000032: Timeout
          [1693997563.549831][74762:74762] CHIP:IN: SecureSession[0x555e1432ca90]: Allocated Type:1 LSID:63030
          [1693997563.549838][74762:74762] CHIP:SC: Assigned local session key ID 63030
          [1693997563.549842][74762:74762] CHIP:SC: Waiting for PBKDF param request
          [1693997563.549849][74762:74762] CHIP:DIS: Updating services using commissioning mode 1
          [1693997563.550099][74762:74762] CHIP:DIS: CHIP minimal mDNS started advertising.
          [1693997563.550377][74762:74762] CHIP:DL: Using wifi MAC for hostname
          [1693997563.550423][74762:74762] CHIP:DIS: Advertise commission parameter vendorID=65521 productID=32768 discriminator=3840/15 cm=1
      disabled: true

    - label: "Step 69: CD Test Vector: Invalid format_version field set to 2."
      verification: |
          For Raspberry Pi device, perform a factory reset using the following command  - sudo rm -rf /tmp/chip_* for the 'chip-all-clusters-app.
           please use the equivalent command on your respective platform to perform a factory reset

          Execute the below mentioned command to put TH(all-cluster-app) into a commissionable state, Pls use equivalent command on the respective Platform

          ./chip-all-clusters-app --trace_decode 1 --dac_provider $CHIP_ROOT/credentials/development/commissioner_dut/struct_cd_format_version_2/test_case_vector.json --product-id 32768


          Once TH(all-clusters-app) reach the  commissionable state pls send below mentioned command on DUT(chip-tool). Pls use equivalent command on the respective platform
           ./chip-tool pairing onnetwork 1 20202021 --trace_decode 1

          On TH(all-clusters-app), Verify that the DUT(chip-tool) indicates that the device is not genuine, or otherwise indicates a failure of device attestation, within its error handling APIs or user interface

          [1693997298.963569][74629:74629] CHIP:EM: <<< [E:22186r S:49877 M:136149078 (Ack:129406676)] (S) Msg TX to 0:FFFFFFFB00000000 [0000] --- Type 0001:09 (IM:InvokeCommandResponse)
          [1693997298.963577][74629:74629] CHIP:IN: (S) Sending msg 136149078 on secure session with LSID: 49877
          [1693997298.963633][74629:74629] CHIP:DMG: Command handler moving to [CommandSen]
          [1693997298.963638][74629:74629] CHIP:DMG: Command handler moving to [AwaitingDe]
          [1693997298.963651][74629:74629] CHIP:DL: HandlePlatformSpecificBLEEvent 32783
          [1693997298.963659][74629:74629] CHIP:SVR: Failsafe timer expired
          [1693997298.963663][74629:74629] CHIP:IN: SecureSession[0x5569a41b1b30]: MarkForEviction Type:1 LSID:49877
          [1693997298.963668][74629:74629] CHIP:SC: SecureSession[0x5569a41b1b30, LSID:49877]: State change 'kActive' --> 'kPendingEviction'
          [1693997298.963688][74629:74629] CHIP:IN: SecureSession[0x5569a41b1b30]: Released - Type:1 LSID:49877
          [1693997298.963697][74629:74629] CHIP:SVR: Commissioning failed (attempt 1): src/app/server/CommissioningWindowManager.cpp:77: CHIP Error 0x00000032: Timeout
          [1693997298.963714][74629:74629] CHIP:IN: SecureSession[0x5569a41b1b30]: Allocated Type:1 LSID:49879
          [1693997298.963720][74629:74629] CHIP:SC: Assigned local session key ID 49879
      disabled: true

    - label:
          "Step 70: PAI Test Vector: Fallback VID and PID encoding example:
          invalid, PID not present and VID not upper case"
      verification: |
          For Raspberry Pi device, perform a factory reset using the following command  - sudo rm -rf /tmp/chip_* for the 'chip-all-clusters-app.
           please use the equivalent command on your respective platform to perform a factory reset

          Execute the below mentioned command to put TH(all-cluster-app) into a commissionable state, Pls use equivalent command on the respective Platform

          ./chip-all-clusters-app --trace_decode 1 --dac_provider $CHIP_ROOT/credentials/development/commissioner_dut/struct_pai_vidpid_fallback_encoding_12/test_case_vector.json --product-id 177

          Once TH(all-clusters-app) reach the  commissionable state pls send below mentioned command on DUT(chip-tool). Pls use equivalent command on the respective platform
           ./chip-tool pairing onnetwork 1 20202021 --trace_decode 1

          On TH(all-clusters-app), Verify that the DUT(chip-tool) indicates that the device is not genuine, or otherwise indicates a failure of device attestation, within its error handling APIs or user interface

          1693994014.916528][73235:73235] CHIP:EM: <<< [E:30765r S:52283 M:265344393 (Ack:94964163)] (S) Msg TX to 0:FFFFFFFB00000000 [0000] --- Type 0001:09 (IM:InvokeCommandResponse)
          [1693994014.916537][73235:73235] CHIP:IN: (S) Sending msg 265344393 on secure session with LSID: 52283
          [1693994014.916606][73235:73235] CHIP:DMG: Command handler moving to [CommandSen]
          [1693994014.916614][73235:73235] CHIP:DMG: Command handler moving to [AwaitingDe]
          [1693994014.916629][73235:73235] CHIP:DL: HandlePlatformSpecificBLEEvent 32783
          [1693994014.916637][73235:73235] CHIP:SVR: Failsafe timer expired
          [1693994014.916641][73235:73235] CHIP:IN: SecureSession[0x5576f0462890]: MarkForEviction Type:1 LSID:52283
          [1693994014.916648][73235:73235] CHIP:SC: SecureSession[0x5576f0462890, LSID:52283]: State change 'kActive' --> 'kPendingEviction'
          [1693994014.916675][73235:73235] CHIP:IN: SecureSession[0x5576f0462890]: Released - Type:1 LSID:52283
          [1693994014.916695][73235:73235] CHIP:SVR: Commissioning failed (attempt 1): src/app/server/CommissioningWindowManager.cpp:77: CHIP Error 0x00000032: Timeout
          [1693994014.916737][73235:73235] CHIP:IN: SecureSession[0x5576f0462890]: Allocated Type:1 LSID:52285
          [1693994014.916747][73235:73235] CHIP:SC: Assigned local session key ID 52285
          [1693994014.916754][73235:73235] CHIP:SC: Waiting for PBKDF param request
          [1693994014.916776][73235:73235] CHIP:DIS: Updating services using commissioning mode 1
          [1693994014.917257][73235:73235] CHIP:DIS: CHIP minimal mDNS started advertising.
          [1693994014.917585][73235:73235] CHIP:DL: Using wifi MAC for hostname
          [1693994014.917633][73235:73235] CHIP:DIS: Advertise commission parameter vendorID=65521 productID=177 discriminator=3840/15 cm=1
      disabled: true

    - label:
          "Step 71: PAI Test Vector: Certificate doesnt include Authority Key ID
          (AKID) extension"
      verification: |
          For Raspberry Pi device, perform a factory reset using the following command  - sudo rm -rf /tmp/chip_* for the 'chip-all-clusters-app.
           please use the equivalent command on your respective platform to perform a factory reset

          Execute the below mentioned command to put TH(all-cluster-app) into a commissionable state, Pls use equivalent command on the respective Platform

          ./chip-all-clusters-app --trace_decode 1 --dac_provider $CHIP_ROOT/credentials/development/commissioner_dut/struct_pai_ext_akid_missing/test_case_vector.json --product-id 32768

          Once TH(all-clusters-app) reach the  commissionable state pls send below mentioned command on DUT(chip-tool). Pls use equivalent command on the respective platform
           ./chip-tool pairing onnetwork 1 20202021 --trace_decode 1

          On TH(all-clusters-app), Verify that the DUT(chip-tool) indicates that the device is not genuine, or otherwise indicates a failure of device attestation, within its error handling APIs or user interface

          [1693997030.811923][74498:74498] CHIP:EM: <<< [E:3545r S:12633 M:143314976 (Ack:95689146)] (S) Msg TX to 0:FFFFFFFB00000000 [0000] --- Type 0001:09 (IM:InvokeCommandResponse)
          [1693997030.811928][74498:74498] CHIP:IN: (S) Sending msg 143314976 on secure session with LSID: 12633
          [1693997030.811948][74498:74498] CHIP:DMG: Command handler moving to [CommandSen]
          [1693997030.811951][74498:74498] CHIP:DMG: Command handler moving to [AwaitingDe]
          [1693997030.811956][74498:74498] CHIP:DL: HandlePlatformSpecificBLEEvent 32783
          [1693997030.811959][74498:74498] CHIP:SVR: Failsafe timer expired
          [1693997030.811961][74498:74498] CHIP:IN: SecureSession[0x561a7a305990]: MarkForEviction Type:1 LSID:12633
          [1693997030.811964][74498:74498] CHIP:SC: SecureSession[0x561a7a305990, LSID:12633]: State change 'kActive' --> 'kPendingEviction'
          [1693997030.811976][74498:74498] CHIP:IN: SecureSession[0x561a7a305990]: Released - Type:1 LSID:12633
          [1693997030.811983][74498:74498] CHIP:SVR: Commissioning failed (attempt 1): src/app/server/CommissioningWindowManager.cpp:77: CHIP Error 0x00000032: Timeout
          [1693997030.811996][74498:74498] CHIP:IN: SecureSession[0x561a7a305990]: Allocated Type:1 LSID:12635
          [1693997030.812000][74498:74498] CHIP:SC: Assigned local session key ID 12635
      disabled: true

    - label: "Step 72: CD Test Vector: The certification_type field is missing."
      verification: |
          For Raspberry Pi device, perform a factory reset using the following command  - sudo rm -rf /tmp/chip_* for the 'chip-all-clusters-app.
           please use the equivalent command on your respective platform to perform a factory reset

          Execute the below mentioned command to put TH(all-cluster-app) into a commissionable state, Pls use equivalent command on the respective Platform

          ./chip-all-clusters-app --trace_decode 1 --dac_provider $CHIP_ROOT/credentials/development/commissioner_dut/struct_cd_cert_type_missing/test_case_vector.json --product-id 32768

          Once TH(all-clusters-app) reach the  commissionable state pls send below mentioned command on DUT(chip-tool). Pls use equivalent command on the respective platform
           ./chip-tool pairing onnetwork 1 20202021 --trace_decode 1

          On TH(all-clusters-app), Verify that the DUT(chip-tool) indicates that the device is not genuine, or otherwise indicates a failure of device attestation, within its error handling APIs or user interface

          [1693995881.963711][74025:74025] CHIP:EM: <<< [E:25552r S:14686 M:144254657 (Ack:235871460)] (S) Msg TX to 0:FFFFFFFB00000000 [0000] --- Type 0001:09 (IM:InvokeCommandResponse)
          [1693995881.963723][74025:74025] CHIP:IN: (S) Sending msg 144254657 on secure session with LSID: 14686
          [1693995881.963763][74025:74025] CHIP:DMG: Command handler moving to [CommandSen]
          [1693995881.963769][74025:74025] CHIP:DMG: Command handler moving to [AwaitingDe]
          [1693995881.963777][74025:74025] CHIP:DL: HandlePlatformSpecificBLEEvent 32783
          [1693995881.963781][74025:74025] CHIP:SVR: Failsafe timer expired
          [1693995881.963784][74025:74025] CHIP:IN: SecureSession[0x55bd8b92ec90]: MarkForEviction Type:1 LSID:14686
          [1693995881.963789][74025:74025] CHIP:SC: SecureSession[0x55bd8b92ec90, LSID:14686]: State change 'kActive' --> 'kPendingEviction'
          [1693995881.963805][74025:74025] CHIP:IN: SecureSession[0x55bd8b92ec90]: Released - Type:1 LSID:14686
          [1693995881.963814][74025:74025] CHIP:SVR: Commissioning failed (attempt 1): src/app/server/CommissioningWindowManager.cpp:77: CHIP Error 0x00000032: Timeout
          [1693995881.963830][74025:74025] CHIP:IN: SecureSession[0x55bd8b92ec90]: Allocated Type:1 LSID:14688
          [1693995881.963836][74025:74025] CHIP:SC: Assigned local session key ID 14688
          [1693995881.963839][74025:74025] CHIP:SC: Waiting for PBKDF param request
          [1693995881.963848][74025:74025] CHIP:DIS: Updating services using commissioning mode 1
          [1693995881.964078][74025:74025] CHIP:DIS: CHIP minimal mDNS started advertising.
          [1693995881.964378][74025:74025] CHIP:DL: Using wifi MAC for hostname
          [1693995881.964421][74025:74025] CHIP:DIS: Advertise commission parameter vendorID=65521 productID=32768 discriminator=3840/15 cm=1
      disabled: true

    - label:
          "Step 73: PAI Test Vector: VID in Subject field doesnt match VID in
          Issuer field"
      verification: |
          For Raspberry Pi device, perform a factory reset using the following command  - sudo rm -rf /tmp/chip_* for the 'chip-all-clusters-app.
           please use the equivalent command on your respective platform to perform a factory reset

          Execute the below mentioned command to put TH(all-cluster-app) into a commissionable state, Pls use equivalent command on the respective Platform

          ./chip-all-clusters-app --trace_decode 1 --dac_provider $CHIP_ROOT/credentials/development/commissioner_dut/struct_pai_subject_vid_mismatch/test_case_vector.json --product-id 32768

          Once TH(all-clusters-app) reach the  commissionable state pls send below mentioned command on DUT(chip-tool). Pls use equivalent command on the respective platform
           ./chip-tool pairing onnetwork 1 20202021 --trace_decode 1

          On TH(all-clusters-app), Verify that the DUT(chip-tool) indicates that the device is not genuine, or otherwise indicates a failure of device attestation, within its error handling APIs or user interface

          [1693995066.552263][73733:73733] CHIP:EM: <<< [E:28752r S:56050 M:91395672 (Ack:28019124)] (S) Msg TX to 0:FFFFFFFB00000000 [0000] --- Type 0001:09 (IM:InvokeCommandResponse)
          [1693995066.552269][73733:73733] CHIP:IN: (S) Sending msg 91395672 on secure session with LSID: 56050
          [1693995066.552288][73733:73733] CHIP:DMG: Command handler moving to [CommandSen]
          [1693995066.552291][73733:73733] CHIP:DMG: Command handler moving to [AwaitingDe]
          [1693995066.552295][73733:73733] CHIP:DL: HandlePlatformSpecificBLEEvent 32783
          [1693995066.552297][73733:73733] CHIP:SVR: Failsafe timer expired
          [1693995066.552300][73733:73733] CHIP:IN: SecureSession[0x55e35e55fc30]: MarkForEviction Type:1 LSID:56050
          [1693995066.552303][73733:73733] CHIP:SC: SecureSession[0x55e35e55fc30, LSID:56050]: State change 'kActive' --> 'kPendingEviction'
          [1693995066.552314][73733:73733] CHIP:IN: SecureSession[0x55e35e55fc30]: Released - Type:1 LSID:56050
          [1693995066.552322][73733:73733] CHIP:SVR: Commissioning failed (attempt 1): src/app/server/CommissioningWindowManager.cpp:77: CHIP Error 0x00000032: Timeout
          [1693995066.552335][73733:73733] CHIP:IN: SecureSession[0x55e35e55fc30]: Allocated Type:1 LSID:56052
          [1693995066.552340][73733:73733] CHIP:SC: Assigned local session key ID 56052
          [1693995066.552342][73733:73733] CHIP:SC: Waiting for PBKDF param request
          [1693995066.552348][73733:73733] CHIP:DIS: Updating services using commissioning mode 1
          [1693995066.552571][73733:73733] CHIP:DIS: CHIP minimal mDNS started advertising.
          [1693995066.552808][73733:73733] CHIP:DL: Using wifi MAC for hostname
          [1693995066.552843][73733:73733] CHIP:DIS: Advertise commission parameter vendorID=65521 productID=32768 discriminator=3840/15 cm=1
          [1693995066.552854][73733:73733] CHIP:DIS: Responding with _matterc._udp.l
      disabled: true

    - label:
          "Step 74: DAC Test Vector: Certificate Key Usage extension critical
          field is set as 'non-critical'"
      verification: |
          For Raspberry Pi device, perform a factory reset using the following command  - sudo rm -rf /tmp/chip_* for the 'chip-all-clusters-app.
           please use the equivalent command on your respective platform to perform a factory reset

          Execute the below mentioned command to put TH(all-cluster-app) into a commissionable state, Pls use equivalent command on the respective Platform

          ./chip-all-clusters-app --trace_decode 1 --dac_provider $CHIP_ROOT/credentials/development/commissioner_dut/struct_dac_ext_key_usage_critical_wrong/test_case_vector.json --product-id 32768

          Once TH(all-clusters-app) reach the  commissionable state pls send below mentioned command on DUT(chip-tool). Pls use equivalent command on the respective platform
           ./chip-tool pairing onnetwork 1 20202021 --trace_decode 1

          On TH(all-clusters-app), Verify that the DUT(chip-tool) indicates that the device is not genuine, or otherwise indicates a failure of device attestation, within its error handling APIs or user interface

           0:FFFFFFFB00000000 [0000] --- Type 0001:09 (IM:InvokeCommandResponse)
          [1693993286.456667][72701:72701] CHIP:IN: (S) Sending msg 164594174 on secure session with LSID: 42108
          [1693993286.456731][72701:72701] CHIP:DMG: Command handler moving to [CommandSen]
          [1693993286.456737][72701:72701] CHIP:DMG: Command handler moving to [AwaitingDe]
          [1693993286.456747][72701:72701] CHIP:DL: HandlePlatformSpecificBLEEvent 32783
          [1693993286.456753][72701:72701] CHIP:SVR: Failsafe timer expired
          [1693993286.456758][72701:72701] CHIP:IN: SecureSession[0x559be703da30]: MarkForEviction Type:1 LSID:42108
          [1693993286.456764][72701:72701] CHIP:SC: SecureSession[0x559be703da30, LSID:42108]: State change 'kActive' --> 'kPendingEviction'
          [1693993286.456791][72701:72701] CHIP:IN: SecureSession[0x559be703da30]: Released - Type:1 LSID:42108
          [1693993286.456810][72701:72701] CHIP:SVR: Commissioning failed (attempt 1): src/app/server/CommissioningWindowManager.cpp:77: CHIP Error 0x00000032: Timeout
          [1693993286.456845][72701:72701] CHIP:IN: SecureSession[0x559be703da30]: Allocated Type:1 LSID:42110
          [1693993286.456852][72701:72701] CHIP:SC: Assigned local session key ID 42110
          [1693993286.456857][72701:72701] CHIP:SC: Waiting for PBKDF param request
          [1693993286.456868][72701:72701] CHIP:DIS: Updating services using commissioning mode 1
          [1693993286.457360][72701:72701] CHIP:DIS: CHIP minimal mDNS started advertising.
          [1693993286.457672][72701:72701] CHIP:DL: Using wifi MAC for hostname
          [1693993286.457715][72701:72701] CHIP:DIS: Advertise commission parameter vendorID=65521 productID=32768 discriminator=3840/15 cm=1
          [1693993286.457726][72701:72701] CHIP:DIS: Responding with _matterc._udp.local
      disabled: true

    - label:
          "Step 75: DAC Test Vector: Fallback VID and PID encoding example from
          spec: invalid, since substring following Mpid: is not exactly 4
          uppercase hexadecimal digits"
      verification: |
          For Raspberry Pi device, perform a factory reset using the following command  - sudo rm -rf /tmp/chip_* for the 'chip-all-clusters-app.
           please use the equivalent command on your respective platform to perform a factory reset

          Execute the below mentioned command to put TH(all-cluster-app) into a commissionable state, Pls use equivalent command on the respective Platform

          ./chip-all-clusters-app --trace_decode 1 --dac_provider $CHIP_ROOT/credentials/development/commissioner_dut/struct_dac_vidpid_fallback_encoding_09/test_case_vector.json --product-id 177

          Once TH(all-clusters-app) reach the  commissionable state pls send below mentioned command on DUT(chip-tool). Pls use equivalent command on the respective platform
           ./chip-tool pairing onnetwork 1 20202021 --trace_decode 1

          On TH(all-clusters-app), Verify that the DUT(chip-tool) indicates that the device is not genuine, or otherwise indicates a failure of device attestation, within its error handling APIs or user interface

          [1693995260.012915][73834:73834] CHIP:DMG:
          [1693995260.012926][73834:73834] CHIP:EM: <<< [E:60855r S:8080 M:251599612 (Ack:56465607)] (S) Msg TX to 0:FFFFFFFB00000000 [0000] --- Type 0001:09 (IM:InvokeCommandResponse)
          [1693995260.012933][73834:73834] CHIP:IN: (S) Sending msg 251599612 on secure session with LSID: 8080
          [1693995260.012973][73834:73834] CHIP:DMG: Command handler moving to [CommandSen]
          [1693995260.012978][73834:73834] CHIP:DMG: Command handler moving to [AwaitingDe]
          [1693995260.012984][73834:73834] CHIP:DL: HandlePlatformSpecificBLEEvent 32783
          [1693995260.012987][73834:73834] CHIP:SVR: Failsafe timer expired
          [1693995260.012991][73834:73834] CHIP:IN: SecureSession[0x560f3897d3b0]: MarkForEviction Type:1 LSID:8080
          [1693995260.012996][73834:73834] CHIP:SC: SecureSession[0x560f3897d3b0, LSID:8080]: State change 'kActive' --> 'kPendingEviction'
          [1693995260.013011][73834:73834] CHIP:IN: SecureSession[0x560f3897d3b0]: Released - Type:1 LSID:8080
          [1693995260.013020][73834:73834] CHIP:SVR: Commissioning failed (attempt 1): src/app/server/CommissioningWindowManager.cpp:77: CHIP Error 0x00000032: Timeout
          [1693995260.013036][73834:73834] CHIP:IN: SecureSession[0x560f3897d3b0]: Allocated Type:1 LSID:8082
          [1693995260.013042][73834:73834] CHIP:SC: Assigned local session key ID 8082
          [1693995260.013046][73834:73834] CHIP:SC: Waiting for PBKDF param request
      disabled: true

    - label:
          "Step 76: DAC Test Vector: Certificate doesnt include Basic Constraint
          extension"
      verification: |
          For Raspberry Pi device, perform a factory reset using the following command  - sudo rm -rf /tmp/chip_* for the 'chip-all-clusters-app.
           please use the equivalent command on your respective platform to perform a factory reset


          Execute the below mentioned command to put TH(all-cluster-app) into a commissionable state, Pls use equivalent command on the respective Platform

          ./chip-all-clusters-app --trace_decode 1 --dac_provider $CHIP_ROOT/credentials/development/commissioner_dut/struct_dac_ext_basic_missing/test_case_vector.json --product-id 32768

          Once TH(all-clusters-app) reach the  commissionable state pls send below mentioned command on DUT(chip-tool). Pls use equivalent command on the respective platform
           ./chip-tool pairing onnetwork 1 20202021 --trace_decode 1

          On TH(all-clusters-app), Verify that the DUT(chip-tool) indicates that the device is not genuine, or otherwise indicates a failure of device attestation, within its error handling APIs or user interface

          [1693995791.207188][73985:73985] CHIP:EM: <<< [E:46317r S:59509 M:225538799 (Ack:100515880)] (S) Msg TX to 0:FFFFFFFB00000000 [0000] --- Type 0001:09 (IM:InvokeCommandResponse)
          [1693995791.207194][73985:73985] CHIP:IN: (S) Sending msg 225538799 on secure session with LSID: 59509
          [1693995791.207215][73985:73985] CHIP:DMG: Command handler moving to [CommandSen]
          [1693995791.207218][73985:73985] CHIP:DMG: Command handler moving to [AwaitingDe]
          [1693995791.207224][73985:73985] CHIP:DL: HandlePlatformSpecificBLEEvent 32783
          [1693995791.207227][73985:73985] CHIP:SVR: Failsafe timer expired
          [1693995791.207230][73985:73985] CHIP:IN: SecureSession[0x5639d72d76b0]: MarkForEviction Type:1 LSID:59509
          [1693995791.207234][73985:73985] CHIP:SC: SecureSession[0x5639d72d76b0, LSID:59509]: State change 'kActive' --> 'kPendingEviction'
          [1693995791.207247][73985:73985] CHIP:IN: SecureSession[0x5639d72d76b0]: Released - Type:1 LSID:59509
          [1693995791.207255][73985:73985] CHIP:SVR: Commissioning failed (attempt 1): src/app/server/CommissioningWindowManager.cpp:77: CHIP Error 0x00000032: Timeout
          [1693995791.207271][73985:73985] CHIP:IN: SecureSession[0x5639d72d76b0]: Allocated Type:1 LSID:59511
          [1693995791.207276][73985:73985] CHIP:SC: Assigned local session key ID 59511
          [1693995791.207279][73985:73985] CHIP:SC: Waiting for PBKDF param request
      disabled: true

    - label:
          "Step 77: CD Test Vector: The dac_origin_vendor_id fild is not present
          and dac_origin_product_id is present."
      verification: |
          For Raspberry Pi device, perform a factory reset using the following command  - sudo rm -rf /tmp/chip_* for the 'chip-all-clusters-app.
           please use the equivalent command on your respective platform to perform a factory reset

          Execute the below mentioned command to put TH(all-cluster-app) into a commissionable state, Pls use equivalent command on the respective Platform

          ./chip-all-clusters-app --trace_decode 1 --dac_provider $CHIP_ROOT/credentials/development/commissioner_dut/struct_cd_dac_origin_vid_missing_pid_present/test_case_vector.json --product-id 32768

          Once TH(all-clusters-app) reach the  commissionable state pls send below mentioned command on DUT(chip-tool). Pls use equivalent command on the respective platform
           ./chip-tool pairing onnetwork 1 20202021 --trace_decode 1

          On TH(all-clusters-app), Verify that the DUT(chip-tool) indicates that the device is not genuine, or otherwise indicates a failure of device attestation, within its error handling APIs or user interface

          [1693993506.668073][72775:72775] CHIP:EM: <<< [E:43761r S:6870 M:126288958 (Ack:38007872)] (S) Msg TX to 0:FFFFFFFB00000000 [0000] --- Type 0001:09 (IM:InvokeCommandResponse)
          [1693993506.668080][72775:72775] CHIP:IN: (S) Sending msg 126288958 on secure session with LSID: 6870
          [1693993506.668109][72775:72775] CHIP:DMG: Command handler moving to [CommandSen]
          [1693993506.668113][72775:72775] CHIP:DMG: Command handler moving to [AwaitingDe]
          [1693993506.668119][72775:72775] CHIP:DL: HandlePlatformSpecificBLEEvent 32783
          [1693993506.668124][72775:72775] CHIP:SVR: Failsafe timer expired
          [1693993506.668127][72775:72775] CHIP:IN: SecureSession[0x5557c35e8940]: MarkForEviction Type:1 LSID:6870
          [1693993506.668131][72775:72775] CHIP:SC: SecureSession[0x5557c35e8940, LSID:6870]: State change 'kActive' --> 'kPendingEviction'
          [1693993506.668147][72775:72775] CHIP:IN: SecureSession[0x5557c35e8940]: Released - Type:1 LSID:6870
          [1693993506.668156][72775:72775] CHIP:SVR: Commissioning failed (attempt 1): src/app/server/CommissioningWindowManager.cpp:77: CHIP Error 0x00000032: Timeout
          [1693993506.668174][72775:72775] CHIP:IN: SecureSession[0x5557c35e8940]: Allocated Type:1 LSID:6872
          [1693993506.668180][72775:72775] CHIP:SC: Assigned local session key ID 6872
          [1693993506.668184][72775:72775] CHIP:SC: Waiting for PBKDF param request
          [1693993506.668192][72775:72775] CHIP:DIS: Updating services using commissioning mode 1
          [1693993506.668443][72775:72775] CHIP:DIS: CHIP minimal mDNS started advertising.
          [1693993506.668725][72775:72775] CHIP:DL: Using wifi MAC for hostname
          [1693993506.668758][72775:72775] CHIP:DIS: Advertise commission parameter vendorID=65521 productID=32768 discriminator=3840/15 cm=1
          [1693993506.668768][72775:72775] CHIP:DIS: Responding with _matterc._udp.local
          [1693993506.668771][72775:72775] CHIP:DIS: Responding with 5F5CFF56D4D1B826._matterc._udp.local
      disabled: true

    - label:
          "Step 78: CD Test Vector: The authorized_paa_list contains ten PAAs
          none of which is a valid PAA authorized to sign the PAI."
      verification: |
          For Raspberry Pi device, perform a factory reset using the following command  - sudo rm -rf /tmp/chip_* for the 'chip-all-clusters-app.
           please use the equivalent command on your respective platform to perform a factory reset

          Execute the below mentioned command to put TH(all-cluster-app) into a commissionable state, Pls use equivalent command on the respective Platform

          ./chip-all-clusters-app --trace_decode 1 --dac_provider $CHIP_ROOT/credentials/development/commissioner_dut/struct_cd_authorized_paa_list_count10_invalid/test_case_vector.json --product-id 32768

          Once TH(all-clusters-app) reach the  commissionable state pls send below mentioned command on DUT(chip-tool). Pls use equivalent command on the respective platform
           ./chip-tool pairing onnetwork 1 20202021 --trace_decode 1

          On TH(all-clusters-app), Verify that the DUT(chip-tool) indicates that the device is not genuine, or otherwise indicates a failure of device attestation, within its error handling APIs or user interface

          [1693994966.391444][73695:73695] CHIP:EM: <<< [E:62607r S:61961 M:184105458 (Ack:71570764)] (S) Msg TX to 0:FFFFFFFB00000000 [0000] --- Type 0001:09 (IM:InvokeCommandResponse)
          [1693994966.391451][73695:73695] CHIP:IN: (S) Sending msg 184105458 on secure session with LSID: 61961
          [1693994966.391482][73695:73695] CHIP:DMG: Command handler moving to [CommandSen]
          [1693994966.391485][73695:73695] CHIP:DMG: Command handler moving to [AwaitingDe]
          [1693994966.391492][73695:73695] CHIP:DL: HandlePlatformSpecificBLEEvent 32783
          [1693994966.391496][73695:73695] CHIP:SVR: Failsafe timer expired
          [1693994966.391498][73695:73695] CHIP:IN: SecureSession[0x56426b169920]: MarkForEviction Type:1 LSID:61961
          [1693994966.391502][73695:73695] CHIP:SC: SecureSession[0x56426b169920, LSID:61961]: State change 'kActive' --> 'kPendingEviction'
          [1693994966.391515][73695:73695] CHIP:IN: SecureSession[0x56426b169920]: Released - Type:1 LSID:61961
          [1693994966.391523][73695:73695] CHIP:SVR: Commissioning failed (attempt 1): src/app/server/CommissioningWindowManager.cpp:77: CHIP Error 0x00000032: Timeout
          [1693994966.391538][73695:73695] CHIP:IN: SecureSession[0x56426b169920]: Allocated Type:1 LSID:61963
          [1693994966.391544][73695:73695] CHIP:SC: Assigned local session key ID 61963
          [1693994966.391547][73695:73695] CHIP:SC: Waiting for PBKDF param request
          [1693994966.391553][73695:73695] CHIP:DIS: Updating services using commissioning mode 1
          [1693994966.391757][73695:73695] CHIP:DIS: CHIP minimal mDNS started advertising.
          [1693994966.391995][73695:73695] CHIP:DL: Using wifi MAC for hostname
          [1693994966.392035][73695:73695] CHIP:DIS: Advertise commission parameter vendorID=65521 productID=32768 discriminator=3840/15 cm=1
      disabled: true

    - label:
          "Step 79: PAI Test Vector: Certificate doesnt include Subject Key ID
          (SKID) extension"
      verification: |
          For Raspberry Pi device, perform a factory reset using the following command  - sudo rm -rf /tmp/chip_* for the 'chip-all-clusters-app.
           please use the equivalent command on your respective platform to perform a factory reset

          Execute the below mentioned command to put TH(all-cluster-app) into a commissionable state, Pls use equivalent command on the respective Platform

          ./chip-all-clusters-app --trace_decode 1 --dac_provider $CHIP_ROOT/credentials/development/commissioner_dut/struct_pai_ext_skid_missing/test_case_vector.json --product-id 32768

          Once TH(all-clusters-app) reach the  commissionable state pls send below mentioned command on DUT(chip-tool). Pls use equivalent command on the respective platform
           ./chip-tool pairing onnetwork 1 20202021 --trace_decode 1

          On TH(all-clusters-app), Verify that the DUT(chip-tool) indicates that the device is not genuine, or otherwise indicates a failure of device attestation, within its error handling APIs or user interface

          [1694000205.966896][75316:75316] CHIP:EM: <<< [E:53246r S:10676 M:42258398 (Ack:58149456)] (S) Msg TX to 0:FFFFFFFB00000000 [0000] --- Type 0001:09 (IM:InvokeCommandResponse)
          [1694000205.966905][75316:75316] CHIP:IN: (S) Sending msg 42258398 on secure session with LSID: 10676
          [1694000205.966934][75316:75316] CHIP:DMG: Command handler moving to [CommandSen]
          [1694000205.966937][75316:75316] CHIP:DMG: Command handler moving to [AwaitingDe]
          [1694000205.966943][75316:75316] CHIP:DL: HandlePlatformSpecificBLEEvent 32783
          [1694000205.966947][75316:75316] CHIP:SVR: Failsafe timer expired
          [1694000205.966951][75316:75316] CHIP:IN: SecureSession[0x5593424d2bc0]: MarkForEviction Type:1 LSID:10676
          [1694000205.966955][75316:75316] CHIP:SC: SecureSession[0x5593424d2bc0, LSID:10676]: State change 'kActive' --> 'kPendingEviction'
          [1694000205.966973][75316:75316] CHIP:IN: SecureSession[0x5593424d2bc0]: Released - Type:1 LSID:10676
          [1694000205.966984][75316:75316] CHIP:SVR: Commissioning failed (attempt 1): src/app/server/CommissioningWindowManager.cpp:77: CHIP Error 0x00000032: Timeout
          [1694000205.967003][75316:75316] CHIP:IN: SecureSession[0x5593424d2bc0]: Allocated Type:1 LSID:10678
          [1694000205.967008][75316:75316] CHIP:SC: Assigned local session key ID 10678
          [1694000205.967013][75316:75316] CHIP:SC: Waiting for PBKDF param request
          [1694000205.967020][75316:75316] CHIP:DIS: Updating services using commissioning mode 1
      disabled: true

    - label:
          "Step 80: PAA Test Vector: Use Invalid PAA (Not Registered in the
          DCL)."
      verification: |
          For Raspberry Pi device, perform a factory reset using the following command  - sudo rm -rf /tmp/chip_* for the 'chip-all-clusters-app.
           please use the equivalent command on your respective platform to perform a factory reset


          Execute the below mentioned command to put TH(all-cluster-app) into a commissionable state, Pls use equivalent command on the respective Platform

          ./chip-all-clusters-app --trace_decode 1 --dac_provider $CHIP_ROOT/credentials/development/commissioner_dut/invalid_paa/test_case_vector.json --product-id 32768

          Once TH(all-clusters-app) reach the  commissionable state pls send below mentioned command on DUT(chip-tool). Pls use equivalent command on the respective platform
           ./chip-tool pairing onnetwork 1 20202021 --trace_decode 1

          On TH(all-clusters-app), Verify that the DUT(chip-tool) indicates that the device is not genuine, or otherwise indicates a failure of device attestation, within its error handling APIs or user interface

          [1693995967.899266][74064:74064] CHIP:EM: <<< [E:64536r S:43313 M:255762469 (Ack:183956987)] (S) Msg TX to 0:FFFFFFFB00000000 [0000] --- Type 0001:09 (IM:InvokeCommandResponse)
          [1693995967.899272][74064:74064] CHIP:IN: (S) Sending msg 255762469 on secure session with LSID: 43313
          [1693995967.899293][74064:74064] CHIP:DMG: Command handler moving to [CommandSen]
          [1693995967.899296][74064:74064] CHIP:DMG: Command handler moving to [AwaitingDe]
          [1693995967.899301][74064:74064] CHIP:DL: HandlePlatformSpecificBLEEvent 32783
          [1693995967.899304][74064:74064] CHIP:SVR: Failsafe timer expired
          [1693995967.899307][74064:74064] CHIP:IN: SecureSession[0x55cc2c7db970]: MarkForEviction Type:1 LSID:43313
          [1693995967.899312][74064:74064] CHIP:SC: SecureSession[0x55cc2c7db970, LSID:43313]: State change 'kActive' --> 'kPendingEviction'
          [1693995967.899326][74064:74064] CHIP:IN: SecureSession[0x55cc2c7db970]: Released - Type:1 LSID:43313
          [1693995967.899334][74064:74064] CHIP:SVR: Commissioning failed (attempt 1): src/app/server/CommissioningWindowManager.cpp:77: CHIP Error 0x00000032: Timeout
          [1693995967.899348][74064:74064] CHIP:IN: SecureSession[0x55cc2c7db970]: Allocated Type:1 LSID:43315
          [1693995967.899353][74064:74064] CHIP:SC: Assigned local session key ID 43315
      disabled: true

    - label:
          "Step 81: DAC Test Vector: Certificate Basic Constraint extension
          PathLen field presence is wrong (present for DAC not present for PAI)"
      verification: |
          For Raspberry Pi device, perform a factory reset using the following command  - sudo rm -rf /tmp/chip_* for the 'chip-all-clusters-app.
           please use the equivalent command on your respective platform to perform a factory reset

          Execute the below mentioned command to put TH(all-cluster-app) into a commissionable state, Pls use equivalent command on the respective Platform

          ./chip-all-clusters-app --trace_decode 1 --dac_provider $CHIP_ROOT/credentials/development/commissioner_dut/struct_dac_ext_basic_pathlen_presence_wrong/test_case_vector.json --product-id 32768

          Once TH(all-clusters-app) reach the  commissionable state pls send below mentioned command on DUT(chip-tool). Pls use equivalent command on the respective platform
           ./chip-tool pairing onnetwork 1 20202021 --trace_decode 1

          On TH(all-clusters-app), Verify that the DUT(chip-tool) indicates that the device is not genuine, or otherwise indicates a failure of device attestation, within its error handling APIs or user interface

          [1693994441.928228][73474:73474] CHIP:DMG: }
          [1693994441.928231][73474:73474] CHIP:DMG:
          [1693994441.928254][73474:73474] CHIP:EM: <<< [E:59402r S:246 M:229095428 (Ack:35299346)] (S) Msg TX to 0:FFFFFFFB00000000 [0000] --- Type 0001:09 (IM:InvokeCommandResponse)
          [1693994441.928265][73474:73474] CHIP:IN: (S) Sending msg 229095428 on secure session with LSID: 246
          [1693994441.928323][73474:73474] CHIP:DMG: Command handler moving to [CommandSen]
          [1693994441.928327][73474:73474] CHIP:DMG: Command handler moving to [AwaitingDe]
          [1693994441.928339][73474:73474] CHIP:DL: HandlePlatformSpecificBLEEvent 32783
          [1693994441.928344][73474:73474] CHIP:SVR: Failsafe timer expired
          [1693994441.928349][73474:73474] CHIP:IN: SecureSession[0x563a2d9b2890]: MarkForEviction Type:1 LSID:246
          [1693994441.928354][73474:73474] CHIP:SC: SecureSession[0x563a2d9b2890, LSID:246]: State change 'kActive' --> 'kPendingEviction'
          [1693994441.928372][73474:73474] CHIP:IN: SecureSession[0x563a2d9b2890]: Released - Type:1 LSID:246
          [1693994441.928381][73474:73474] CHIP:SVR: Commissioning failed (attempt 1): src/app/server/CommissioningWindowManager.cpp:77: CHIP Error 0x00000032: Timeout
          [1693994441.928400][73474:73474] CHIP:IN: SecureSession[0x563a2d9b2890]: Allocated Type:1 LSID:248
          [1693994441.928406][73474:73474] CHIP:SC: Assigned local session key ID 248
          [1693994441.928409][73474:73474] CHIP:SC: Waiting for PBKDF param request
          [1693994441.928416][73474:73474] CHIP:DIS: Updating services using commissioning mode 1
          [1693994441.928637][73474:73474] CHIP:DIS: CHIP minimal mDNS started advertising.
          [1693994441.928900][73474:73474] CHIP:DL: Using wifi MAC for hostname
          [1693994441.928934][73474:73474] CHIP:DIS: Advertise commission parameter vendorID=65521 productID=32768 discriminator=3840/15 cm=1
          [1693994441.928947][73474:73474] CHIP:DIS: Responding with _matterc._udp.local
          [1693994441.928961][73474:73474] CHIP:DIS: Responding with 3E01EDD4BC3C2AF9._matterc._udp.local
          [1693994441.928964][73474:73474] CHIP:DIS: Responding with 8C1D96786A130000.local
      disabled: true

    - label:
          "Step 82: DAC Test Vector: Mix of Fallback and Matter OID encoding for
          VID and PID: invalid, PID is using Matter OID then VID must also use
          Matter OID"
      verification: |
          For Raspberry Pi device, perform a factory reset using the following command  - sudo rm -rf /tmp/chip_* for the 'chip-all-clusters-app.
           please use the equivalent command on your respective platform to perform a factory reset


          Execute the below mentioned command to put TH(all-cluster-app) into a commissionable state, Pls use equivalent command on the respective Platform

          ./chip-all-clusters-app --trace_decode 1 --dac_provider $CHIP_ROOT/credentials/development/commissioner_dut/struct_dac_vidpid_fallback_encoding_17/test_case_vector.json --product-id 177

          Once TH(all-clusters-app) reach the  commissionable state pls send below mentioned command on DUT(chip-tool). Pls use equivalent command on the respective platform
           ./chip-tool pairing onnetwork 1 20202021 --trace_decode 1

          On TH(all-clusters-app), Verify that the DUT(chip-tool) indicates that the device is not genuine, or otherwise indicates a failure of device attestation, within its error handling APIs or user interface

          [1693996905.702758][74442:74442] CHIP:EM: <<< [E:7107r S:18979 M:236270845 (Ack:85054530)] (S) Msg TX to 0:FFFFFFFB00000000 [0000] --- Type 0001:09 (IM:InvokeCommandResponse)
          [1693996905.702764][74442:74442] CHIP:IN: (S) Sending msg 236270845 on secure session with LSID: 18979
          [1693996905.702788][74442:74442] CHIP:DMG: Command handler moving to [CommandSen]
          [1693996905.702791][74442:74442] CHIP:DMG: Command handler moving to [AwaitingDe]
          [1693996905.702796][74442:74442] CHIP:DL: HandlePlatformSpecificBLEEvent 32783
          [1693996905.702799][74442:74442] CHIP:SVR: Failsafe timer expired
          [1693996905.702802][74442:74442] CHIP:IN: SecureSession[0x56288c350990]: MarkForEviction Type:1 LSID:18979
          [1693996905.702807][74442:74442] CHIP:SC: SecureSession[0x56288c350990, LSID:18979]: State change 'kActive' --> 'kPendingEviction'
          [1693996905.702820][74442:74442] CHIP:IN: SecureSession[0x56288c350990]: Released - Type:1 LSID:18979
          [1693996905.702828][74442:74442] CHIP:SVR: Commissioning failed (attempt 1): src/app/server/CommissioningWindowManager.cpp:77: CHIP Error 0x00000032: Timeout
          [1693996905.702842][74442:74442] CHIP:IN: SecureSession[0x56288c350990]: Allocated Type:1 LSID:18981
          [1693996905.702847][74442:74442] CHIP:SC: Assigned local session key ID 18981
          [1693996905.702851][74442:74442] CHIP:SC: Waiting for PBKDF param request
      disabled: true

    - label:
          "Step 83: DAC Test Vector: Certificate Basic Constraint extension CA
          field is missing"
      verification: |
          For Raspberry Pi device, perform a factory reset using the following command  - sudo rm -rf /tmp/chip_* for the 'chip-all-clusters-app.
           please use the equivalent command on your respective platform to perform a factory reset


          Execute the below mentioned command to put TH(all-cluster-app) into a commissionable state, Pls use equivalent command on the respective Platform

          ./chip-all-clusters-app --trace_decode 1 --dac_provider $CHIP_ROOT/credentials/development/commissioner_dut/struct_dac_ext_basic_ca_missing/test_case_vector.json --product-id 32768

          Once TH(all-clusters-app) reach the  commissionable state pls send below mentioned command on DUT(chip-tool). Pls use equivalent command on the respective platform
           ./chip-tool pairing onnetwork 1 20202021 --trace_decode 1

          On TH(all-clusters-app), Verify that the DUT(chip-tool) indicates that the device is not genuine, or otherwise indicates a failure of device attestation, within its error handling APIs or user interface
          [1693993614.289279][72826:72826] CHIP:EM: <<< [E:11915r S:25559 M:123399583 (Ack:174738663)] (S) Msg TX to 0:FFFFFFFB00000000 [0000] --- Type 0001:09 (IM:InvokeCommandResponse)
          [1693993614.289287][72826:72826] CHIP:IN: (S) Sending msg 123399583 on secure session with LSID: 25559
          [1693993614.289310][72826:72826] CHIP:DMG: Command handler moving to [CommandSen]
          [1693993614.289313][72826:72826] CHIP:DMG: Command handler moving to [AwaitingDe]
          [1693993614.289317][72826:72826] CHIP:DL: HandlePlatformSpecificBLEEvent 32783
          [1693993614.289321][72826:72826] CHIP:SVR: Failsafe timer expired
          [1693993614.289324][72826:72826] CHIP:IN: SecureSession[0x5585eb32ab80]: MarkForEviction Type:1 LSID:25559
          [1693993614.289329][72826:72826] CHIP:SC: SecureSession[0x5585eb32ab80, LSID:25559]: State change 'kActive' --> 'kPendingEviction'
          [1693993614.289344][72826:72826] CHIP:IN: SecureSession[0x5585eb32ab80]: Released - Type:1 LSID:25559
          [1693993614.289352][72826:72826] CHIP:SVR: Commissioning failed (attempt 1): src/app/server/CommissioningWindowManager.cpp:77: CHIP Error 0x00000032: Timeout
          [1693993614.289370][72826:72826] CHIP:IN: SecureSession[0x5585eb32ab80]: Allocated Type:1 LSID:25561
          [1693993614.289375][72826:72826] CHIP:SC: Assigned local session key ID 25561
          [1693993614.289379][72826:72826] CHIP:SC: Waiting for PBKDF param request
          [1693993614.289386][72826:72826] CHIP:DIS: Updating services using commissioning mode 1
          [1693993614.289637][72826:72826] CHIP:DIS: CHIP minimal mDNS started advertising.
          [1693993614.289931][72826:72826] CHIP:DL: Using wifi MAC for hostname
          [1693993614.289970][72826:72826] CHIP:DIS: Advertise commission parameter vendorID=65521 productID=32768 discriminator=3840/15 cm=1
      disabled: true

    - label:
          "Step 84: DAC Test Vector: Certificate Key Usage extension cRLSign
          field is wrong (present for DAC and not present for PAI)"
      verification: |
          For Raspberry Pi device, perform a factory reset using the following command  - sudo rm -rf /tmp/chip_* for the 'chip-all-clusters-app.
           please use the equivalent command on your respective platform to perform a factory reset


          Execute the below mentioned command to put TH(all-cluster-app) into a commissionable state, Pls use equivalent command on the respective Platform

          ./chip-all-clusters-app --trace_decode 1 --dac_provider $CHIP_ROOT/credentials/development/commissioner_dut/struct_dac_ext_key_usage_crl_sign_wrong/test_case_vector.json --product-id 32768

          Once TH(all-clusters-app) reach the  commissionable state pls send below mentioned command on DUT(chip-tool). Pls use equivalent command on the respective platform
           ./chip-tool pairing onnetwork 1 20202021 --trace_decode 1

          On TH(all-clusters-app), Verify that the DUT(chip-tool) indicates that the device is not genuine, or otherwise indicates a failure of device attestation, within its error handling APIs or user interface

          [1693997175.066400][74569:74569] CHIP:EM: <<< [E:49203r S:4076 M:82722507 (Ack:43979047)] (S) Msg TX to 0:FFFFFFFB00000000 [0000] --- Type 0001:09 (IM:InvokeCommandResponse)
          [1693997175.066406][74569:74569] CHIP:IN: (S) Sending msg 82722507 on secure session with LSID: 4076
          [1693997175.066434][74569:74569] CHIP:DMG: Command handler moving to [CommandSen]
          [1693997175.066438][74569:74569] CHIP:DMG: Command handler moving to [AwaitingDe]
          [1693997175.066445][74569:74569] CHIP:DL: HandlePlatformSpecificBLEEvent 32783
          [1693997175.066450][74569:74569] CHIP:SVR: Failsafe timer expired
          [1693997175.066453][74569:74569] CHIP:IN: SecureSession[0x55b6ecc239a0]: MarkForEviction Type:1 LSID:4076
          [1693997175.066457][74569:74569] CHIP:SC: SecureSession[0x55b6ecc239a0, LSID:4076]: State change 'kActive' --> 'kPendingEviction'
          [1693997175.066473][74569:74569] CHIP:IN: SecureSession[0x55b6ecc239a0]: Released - Type:1 LSID:4076
          [1693997175.066481][74569:74569] CHIP:SVR: Commissioning failed (attempt 1): src/app/server/CommissioningWindowManager.cpp:77: CHIP Error 0x00000032: Timeout
          [1693997175.066500][74569:74569] CHIP:IN: SecureSession[0x55b6ecc239a0]: Allocated Type:1 LSID:4078
          [1693997175.066507][74569:74569] CHIP:SC: Assigned local session key ID 4078
          [1693997175.066511][74569:74569] CHIP:SC: Waiting for PBKDF param request
          [1693997175.066518][74569:74569] CHIP:DIS: Updating services using commissioning mode 1
      disabled: true

    - label:
          "Step 85: DAC Test Vector: Certificate Basic Constraint extension
          PathLen field set to 1"
      verification: |
          For Raspberry Pi device, perform a factory reset using the following command  - sudo rm -rf /tmp/chip_* for the 'chip-all-clusters-app.
           please use the equivalent command on your respective platform to perform a factory reset


          Execute the below mentioned command to put TH(all-cluster-app) into a commissionable state, Pls use equivalent command on the respective Platform

          ./chip-all-clusters-app --trace_decode 1 --dac_provider $CHIP_ROOT/credentials/development/commissioner_dut/struct_dac_ext_basic_pathlen1/test_case_vector.json --product-id 32768

          Once TH(all-clusters-app) reach the  commissionable state pls send below mentioned command on DUT(chip-tool). Pls use equivalent command on the respective platform
           ./chip-tool pairing onnetwork 1 20202021 --trace_decode 1

          On TH(all-clusters-app), Verify that the DUT(chip-tool) indicates that the device is not genuine, or otherwise indicates a failure of device attestation, within its error handling APIs or user interface

          [1693993543.391045][72792:72792] CHIP:EM: <<< [E:27543r S:37975 M:106997663 (Ack:16093275)] (S) Msg TX to 0:FFFFFFFB00000000 [0000] --- Type 0001:09 (IM:InvokeCommandResponse)
          [1693993543.391050][72792:72792] CHIP:IN: (S) Sending msg 106997663 on secure session with LSID: 37975
          [1693993543.391083][72792:72792] CHIP:DMG: Command handler moving to [CommandSen]
          [1693993543.391086][72792:72792] CHIP:DMG: Command handler moving to [AwaitingDe]
          [1693993543.391090][72792:72792] CHIP:DL: HandlePlatformSpecificBLEEvent 32783
          [1693993543.391093][72792:72792] CHIP:SVR: Failsafe timer expired
          [1693993543.391095][72792:72792] CHIP:IN: SecureSession[0x55cc9deb9c60]: MarkForEviction Type:1 LSID:37975
          [1693993543.391098][72792:72792] CHIP:SC: SecureSession[0x55cc9deb9c60, LSID:37975]: State change 'kActive' --> 'kPendingEviction'
          [1693993543.391110][72792:72792] CHIP:IN: SecureSession[0x55cc9deb9c60]: Released - Type:1 LSID:37975
          [1693993543.391117][72792:72792] CHIP:SVR: Commissioning failed (attempt 1): src/app/server/CommissioningWindowManager.cpp:77: CHIP Error 0x00000032: Timeout
          [1693993543.391131][72792:72792] CHIP:IN: SecureSession[0x55cc9deb9c60]: Allocated Type:1 LSID:37977
          [1693993543.391135][72792:72792] CHIP:SC: Assigned local session key ID 37977
          [1693993543.391138][72792:72792] CHIP:SC: Waiting for PBKDF param request
          [1693993543.391143][72792:72792] CHIP:DIS: Updating services using commissioning mode 1
          [1693993543.391335][72792:72792] CHIP:DIS: CHIP minimal mDNS started advertising.
      disabled: true

    - label:
          "Step 86: DAC Test Vector: Fallback VID and PID encoding example:
          invalid VID prefix"
      verification: |
          For Raspberry Pi device, perform a factory reset using the following command  - sudo rm -rf /tmp/chip_* for the 'chip-all-clusters-app.
           please use the equivalent command on your respective platform to perform a factory reset

          Execute the below mentioned command to put TH(all-cluster-app) into a commissionable state, Pls use equivalent command on the respective Platform

          ./chip-all-clusters-app --trace_decode 1 --dac_provider $CHIP_ROOT/credentials/development/commissioner_dut/struct_dac_vidpid_fallback_encoding_13/test_case_vector.json --product-id 177

          Once TH(all-clusters-app) reach the  commissionable state pls send below mentioned command on DUT(chip-tool). Pls use equivalent command on the respective platform
           ./chip-tool pairing onnetwork 1 20202021 --trace_decode 1

          On TH(all-clusters-app), Verify that the DUT(chip-tool) indicates that the device is not genuine, or otherwise indicates a failure of device attestation, within its error handling APIs or user interface

          [1693995912.709704][74034:74034] CHIP:EM: <<< [E:38489r S:6352 M:205559533 (Ack:262506086)] (S) Msg TX to 0:FFFFFFFB00000000 [0000] --- Type 0001:09 (IM:InvokeCommandResponse)
          [1693995912.709712][74034:74034] CHIP:IN: (S) Sending msg 205559533 on secure session with LSID: 6352
          [1693995912.709737][74034:74034] CHIP:DMG: Command handler moving to [CommandSen]
          [1693995912.709739][74034:74034] CHIP:DMG: Command handler moving to [AwaitingDe]
          [1693995912.709744][74034:74034] CHIP:DL: HandlePlatformSpecificBLEEvent 32783
          [1693995912.709747][74034:74034] CHIP:SVR: Failsafe timer expired
          [1693995912.709750][74034:74034] CHIP:IN: SecureSession[0x5619a3eaeea0]: MarkForEviction Type:1 LSID:6352
          [1693995912.709755][74034:74034] CHIP:SC: SecureSession[0x5619a3eaeea0, LSID:6352]: State change 'kActive' --> 'kPendingEviction'
          [1693995912.709771][74034:74034] CHIP:IN: SecureSession[0x5619a3eaeea0]: Released - Type:1 LSID:6352
          [1693995912.709780][74034:74034] CHIP:SVR: Commissioning failed (attempt 1): src/app/server/CommissioningWindowManager.cpp:77: CHIP Error 0x00000032: Timeout
          [1693995912.709797][74034:74034] CHIP:IN: SecureSession[0x5619a3eaeea0]: Allocated Type:1 LSID:6354
          [1693995912.709803][74034:74034] CHIP:SC: Assigned local session key ID 6354
          [1693995912.709806][74034:74034] CHIP:SC: Waiting for PBKDF param request
          [1693995912.709814][74034:74034] CHIP:DIS: Updating services using commissioning mode 1
          [1693995912.710062][74034:74034] CHIP:DIS: CHIP minimal mDNS started advertising.
          [1693995912.710352][74034:74034] CHIP:DL: Using wifi MAC for hostname
      disabled: true

    - label:
          "Step 87: DAC Test Vector: Invalid certificate version field set to
          v2(1)"
      verification: |
          For Raspberry Pi device, perform a factory reset using the following command  - sudo rm -rf /tmp/chip_* for the 'chip-all-clusters-app.
           please use the equivalent command on your respective platform to perform a factory reset

          Execute the below mentioned command to put TH(all-cluster-app) into a commissionable state, Pls use equivalent command on the respective Platform

          ./chip-all-clusters-app --trace_decode 1 --dac_provider $CHIP_ROOT/credentials/development/commissioner_dut/struct_dac_cert_version_v2/test_case_vector.json --product-id 32768


          Once TH(all-clusters-app) reach the  commissionable state pls send below mentioned command on DUT(chip-tool). Pls use equivalent command on the respective platform
           ./chip-tool pairing onnetwork 1 20202021 --trace_decode 1

          On TH(all-clusters-app), Verify that the DUT(chip-tool) indicates that the device is not genuine, or otherwise indicates a failure of device attestation, within its error handling APIs or user interface

          [1693994702.874495][73568:73568] CHIP:DMG:
          [1693994702.874505][73568:73568] CHIP:EM: <<< [E:48921r S:51325 M:96774311 (Ack:264729104)] (S) Msg TX to 0:FFFFFFFB00000000 [0000] --- Type 0001:09 (IM:InvokeCommandResponse)
          [1693994702.874510][73568:73568] CHIP:IN: (S) Sending msg 96774311 on secure session with LSID: 51325
          [1693994702.874533][73568:73568] CHIP:DMG: Command handler moving to [CommandSen]
          [1693994702.874536][73568:73568] CHIP:DMG: Command handler moving to [AwaitingDe]
          [1693994702.874540][73568:73568] CHIP:DL: HandlePlatformSpecificBLEEvent 32783
          [1693994702.874542][73568:73568] CHIP:SVR: Failsafe timer expired
          [1693994702.874546][73568:73568] CHIP:IN: SecureSession[0x5619db2979a0]: MarkForEviction Type:1 LSID:51325
          [1693994702.874550][73568:73568] CHIP:SC: SecureSession[0x5619db2979a0, LSID:51325]: State change 'kActive' --> 'kPendingEviction'
          [1693994702.874564][73568:73568] CHIP:IN: SecureSession[0x5619db2979a0]: Released - Type:1 LSID:51325
          [1693994702.874572][73568:73568] CHIP:SVR: Commissioning failed (attempt 1): src/app/server/CommissioningWindowManager.cpp:77: CHIP Error 0x00000032: Timeout
          [1693994702.874587][73568:73568] CHIP:IN: SecureSession[0x5619db2979a0]: Allocated Type:1 LSID:51327
          [1693994702.874592][73568:73568] CHIP:SC: Assigned local session key ID 51327
          [1693994702.874595][73568:73568] CHIP:SC: Waiting for PBKDF param request
          [1693994702.874603][73568:73568] CHIP:DIS: Updating services using commissioning mode 1
          [1693994702.874831][73568:73568] CHIP:DIS: CHIP minimal mDNS started advertising.
      disabled: true

    - label:
          "Step 88: DAC Test Vector: VID in Subject field doesnt match VID in
          Issuer field"
      verification: |
          For Raspberry Pi device, perform a factory reset using the following command  - sudo rm -rf /tmp/chip_* for the 'chip-all-clusters-app.
           please use the equivalent command on your respective platform to perform a factory reset


          Execute the below mentioned command to put TH(all-cluster-app) into a commissionable state, Pls use equivalent command on the respective Platform

          ./chip-all-clusters-app --trace_decode 1 --dac_provider $CHIP_ROOT/credentials/development/commissioner_dut/struct_dac_subject_vid_mismatch/test_case_vector.json --product-id 32768

          Once TH(all-clusters-app) reach the  commissionable state pls send below mentioned command on DUT(chip-tool). Pls use equivalent command on the respective platform
           ./chip-tool pairing onnetwork 1 20202021 --trace_decode 1

          On TH(all-clusters-app), Verify that the DUT(chip-tool) indicates that the device is not genuine, or otherwise indicates a failure of device attestation, within its error handling APIs or user interface

          [1693993773.557516][72869:72869] CHIP:DMG: }
          [1693993773.557518][72869:72869] CHIP:DMG:
          [1693993773.557529][72869:72869] CHIP:EM: <<< [E:20914r S:10360 M:64900117 (Ack:58867763)] (S) Msg TX to 0:FFFFFFFB00000000 [0000] --- Type 0001:09 (IM:InvokeCommandResponse)
          [1693993773.557537][72869:72869] CHIP:IN: (S) Sending msg 64900117 on secure session with LSID: 10360
          [1693993773.557569][72869:72869] CHIP:DMG: Command handler moving to [CommandSen]
          [1693993773.557573][72869:72869] CHIP:DMG: Command handler moving to [AwaitingDe]
          [1693993773.557579][72869:72869] CHIP:DL: HandlePlatformSpecificBLEEvent 32783
          [1693993773.557582][72869:72869] CHIP:SVR: Failsafe timer expired
          [1693993773.557585][72869:72869] CHIP:IN: SecureSession[0x565173d71a20]: MarkForEviction Type:1 LSID:10360
          [1693993773.557588][72869:72869] CHIP:SC: SecureSession[0x565173d71a20, LSID:10360]: State change 'kActive' --> 'kPendingEviction'
          [1693993773.557599][72869:72869] CHIP:IN: SecureSession[0x565173d71a20]: Released - Type:1 LSID:10360
          [1693993773.557606][72869:72869] CHIP:SVR: Commissioning failed (attempt 1): src/app/server/CommissioningWindowManager.cpp:77: CHIP Error 0x00000032: Timeout
          [1693993773.557620][72869:72869] CHIP:IN: SecureSession[0x565173d71a20]: Allocated Type:1 LSID:10362
          [1693993773.557624][72869:72869] CHIP:SC: Assigned local session key ID 10362
          [1693993773.557627][72869:72869] CHIP:SC: Waiting for PBKDF param request
          [1693993773.557632][72869:72869] CHIP:DIS: Updating services using commissioning mode 1
          [1693993773.557813][72869:72869] CHIP:DIS: CHIP minimal mDNS started advertising.
          [1693993773.558024][72869:72869] CHIP:DL: Using wifi MAC for hostname
          [1693993773.558059][72869:72869] CHIP:DIS: Advertise commission parameter vendorID=65521 productID=32768 discriminator=3840/15 cm=1
      disabled: true

    - label: "Step 89: CD Test Vector: The format_version field is missing."
      verification: |
          For Raspberry Pi device, perform a factory reset using the following command  - sudo rm -rf /tmp/chip_* for the 'chip-all-clusters-app.
           please use the equivalent command on your respective platform to perform a factory reset


          Execute the below mentioned command to put TH(all-cluster-app) into a commissionable state, Pls use equivalent command on the respective Platform
          ./chip-all-clusters-app --trace_decode 1 --dac_provider $CHIP_ROOT/credentials/development/commissioner_dut/struct_cd_format_version_missing/test_case_vector.json --product-id 32768


          Once TH(all-clusters-app) reach the  commissionable state pls send below mentioned command on DUT(chip-tool). Pls use equivalent command on the respective platform
           ./chip-tool pairing onnetwork 1 20202021 --trace_decode 1

          On TH(all-clusters-app), Verify that the DUT(chip-tool) indicates that the device is not genuine, or otherwise indicates a failure of device attestation, within its error handling APIs or user interface

          [1693997210.051257][74584:74584] CHIP:EM: <<< [E:57940r S:23049 M:92365298 (Ack:236085904)] (S) Msg TX to 0:FFFFFFFB00000000 [0000] --- Type 0001:09 (IM:InvokeCommandResponse)
          [1693997210.051264][74584:74584] CHIP:IN: (S) Sending msg 92365298 on secure session with LSID: 23049
          [1693997210.051294][74584:74584] CHIP:DMG: Command handler moving to [CommandSen]
          [1693997210.051297][74584:74584] CHIP:DMG: Command handler moving to [AwaitingDe]
          [1693997210.051303][74584:74584] CHIP:DL: HandlePlatformSpecificBLEEvent 32783
          [1693997210.051307][74584:74584] CHIP:SVR: Failsafe timer expired
          [1693997210.051310][74584:74584] CHIP:IN: SecureSession[0x558b22f2fce0]: MarkForEviction Type:1 LSID:23049
          [1693997210.051313][74584:74584] CHIP:SC: SecureSession[0x558b22f2fce0, LSID:23049]: State change 'kActive' --> 'kPendingEviction'
          [1693997210.051326][74584:74584] CHIP:IN: SecureSession[0x558b22f2fce0]: Released - Type:1 LSID:23049
          [1693997210.051334][74584:74584] CHIP:SVR: Commissioning failed (attempt 1): src/app/server/CommissioningWindowManager.cpp:77: CHIP Error 0x00000032: Timeout
          [1693997210.051349][74584:74584] CHIP:IN: SecureSession[0x558b22f2fce0]: Allocated Type:1 LSID:23051
          [1693997210.051354][74584:74584] CHIP:SC: Assigned local session key ID 23051
      disabled: true

    - label: "Step 90: CD Test Vector: The device_type_id field is missing."
      verification: |
          For Raspberry Pi device, perform a factory reset using the following command  - sudo rm -rf /tmp/chip_* for the 'chip-all-clusters-app.
           please use the equivalent command on your respective platform to perform a factory reset

          Execute the below mentioned command to put TH(all-cluster-app) into a commissionable state, Pls use equivalent command on the respective Platform

          ./chip-all-clusters-app --trace_decode 1 --dac_provider $CHIP_ROOT/credentials/development/commissioner_dut/struct_cd_device_type_id_missing/test_case_vector.json --product-id 32768

          Once TH(all-clusters-app) reach the  commissionable state pls send below mentioned command on DUT(chip-tool). Pls use equivalent command on the respective platform
           ./chip-tool pairing onnetwork 1 20202021 --trace_decode 1

          On TH(all-clusters-app), Verify that the DUT(chip-tool) indicates that the device is not genuine, or otherwise indicates a failure of device attestation, within its error handling APIs or user interface

          [1693993573.297063][72806:72806] CHIP:EM: <<< [E:28701r S:35923 M:215504152 (Ack:14384899)] (S) Msg TX to 0:FFFFFFFB00000000 [0000] --- Type 0001:09 (IM:InvokeCommandResponse)
          [1693993573.297071][72806:72806] CHIP:IN: (S) Sending msg 215504152 on secure session with LSID: 35923
          [1693993573.297109][72806:72806] CHIP:DMG: Command handler moving to [CommandSen]
          [1693993573.297112][72806:72806] CHIP:DMG: Command handler moving to [AwaitingDe]
          [1693993573.297119][72806:72806] CHIP:DL: HandlePlatformSpecificBLEEvent 32783
          [1693993573.297122][72806:72806] CHIP:SVR: Failsafe timer expired
          [1693993573.297125][72806:72806] CHIP:IN: SecureSession[0x561727f72ce0]: MarkForEviction Type:1 LSID:35923
          [1693993573.297127][72806:72806] CHIP:SC: SecureSession[0x561727f72ce0, LSID:35923]: State change 'kActive' --> 'kPendingEviction'
          [1693993573.297139][72806:72806] CHIP:IN: SecureSession[0x561727f72ce0]: Released - Type:1 LSID:35923
          [1693993573.297145][72806:72806] CHIP:SVR: Commissioning failed (attempt 1): src/app/server/CommissioningWindowManager.cpp:77: CHIP Error 0x00000032: Timeout
          [1693993573.297158][72806:72806] CHIP:IN: SecureSession[0x561727f72ce0]: Allocated Type:1 LSID:35925
          [1693993573.297163][72806:72806] CHIP:SC: Assigned local session key ID 35925
          [1693993573.297165][72806:72806] CHIP:SC: Waiting for PBKDF param request
          [1693993573.297172][72806:72806] CHIP:DIS: Updating services using commissioning mode 1
          [1693993573.297368][72806:72806] CHIP:DIS: CHIP minimal mDNS started advertising.
          [1693993573.297638][72806:72806] CHIP:DL: Using wifi MAC for hostname
          [1693993573.297667][72806:72806] CHIP:DIS: Advertise commission parameter vendorID=65521 productID=32768 discriminator=3840/15 cm=1
          [1693993573.297676][72806:72806] CHIP:DIS: Responding with _matterc._udp.local
      disabled: true

    - label:
          "Step 91: DAC Test Vector: PID in Subject field doesnt match PID in
          Issuer field"
      verification: |
          For Raspberry Pi device, perform a factory reset using the following command  - sudo rm -rf /tmp/chip_* for the 'chip-all-clusters-app.
           please use the equivalent command on your respective platform to perform a factory reset


          Execute the below mentioned command to put TH(all-cluster-app) into a commissionable state, Pls use equivalent command on the respective Platform

          ./chip-all-clusters-app --trace_decode 1 --dac_provider $CHIP_ROOT/credentials/development/commissioner_dut/struct_dac_subject_pid_mismatch/test_case_vector.json --product-id 32768

          Once TH(all-clusters-app) reach the  commissionable state pls send below mentioned command on DUT(chip-tool). Pls use equivalent command on the respective platform
           ./chip-tool pairing onnetwork 1 20202021 --trace_decode 1

          On TH(all-clusters-app), Verify that the DUT(chip-tool) indicates that the device is not genuine, or otherwise indicates a failure of device attestation, within its error handling APIs or user interface

          [1693996797.931878][74392:74392] CHIP:DMG:
          [1693996797.931886][74392:74392] CHIP:EM: <<< [E:52113r S:36416 M:61307417 (Ack:229885016)] (S) Msg TX to 0:FFFFFFFB00000000 [0000] --- Type 0001:09 (IM:InvokeCommandResponse)
          [1693996797.931891][74392:74392] CHIP:IN: (S) Sending msg 61307417 on secure session with LSID: 36416
          [1693996797.931930][74392:74392] CHIP:DMG: Command handler moving to [CommandSen]
          [1693996797.931932][74392:74392] CHIP:DMG: Command handler moving to [AwaitingDe]
          [1693996797.931937][74392:74392] CHIP:DL: HandlePlatformSpecificBLEEvent 32783
          [1693996797.931940][74392:74392] CHIP:SVR: Failsafe timer expired
          [1693996797.931942][74392:74392] CHIP:IN: SecureSession[0x55bc8f6cbc40]: MarkForEviction Type:1 LSID:36416
          [1693996797.931945][74392:74392] CHIP:SC: SecureSession[0x55bc8f6cbc40, LSID:36416]: State change 'kActive' --> 'kPendingEviction'
          [1693996797.931957][74392:74392] CHIP:IN: SecureSession[0x55bc8f6cbc40]: Released - Type:1 LSID:36416
          [1693996797.931964][74392:74392] CHIP:SVR: Commissioning failed (attempt 1): src/app/server/CommissioningWindowManager.cpp:77: CHIP Error 0x00000032: Timeout
          [1693996797.931977][74392:74392] CHIP:IN: SecureSession[0x55bc8f6cbc40]: Allocated Type:1 LSID:36418
          [1693996797.931981][74392:74392] CHIP:SC: Assigned local session key ID 36418
      disabled: true

    - label:
          "Step 92: PAI Test Vector: Certificate Basic Constraint extension CA
          field is wrong (TRUE for DAC and FALSE for PAI)"
      verification: |
          For Raspberry Pi device, perform a factory reset using the following command  - sudo rm -rf /tmp/chip_* for the 'chip-all-clusters-app.
           please use the equivalent command on your respective platform to perform a factory reset

          Execute the below mentioned command to put TH(all-cluster-app) into a commissionable state, Pls use equivalent command on the respective Platform

          ./chip-all-clusters-app --trace_decode 1 --dac_provider $CHIP_ROOT/credentials/development/commissioner_dut/struct_pai_ext_basic_ca_wrong/test_case_vector.json --product-id 32768

          Once TH(all-clusters-app) reach the  commissionable state pls send below mentioned command on DUT(chip-tool). Pls use equivalent command on the respective platform
           ./chip-tool pairing onnetwork 1 20202021 --trace_decode 1

          On TH(all-clusters-app), Verify that the DUT(chip-tool) indicates that the device is not genuine, or otherwise indicates a failure of device attestation, within its error handling APIs or user interface

          [1693995232.206947][73816:73816] CHIP:EM: <<< [E:17497r S:51386 M:198210726 (Ack:46150282)] (S) Msg TX to 0:FFFFFFFB00000000 [0000] --- Type 0001:09 (IM:InvokeCommandResponse)
          [1693995232.206956][73816:73816] CHIP:IN: (S) Sending msg 198210726 on secure session with LSID: 51386
          [1693995232.206984][73816:73816] CHIP:DMG: Command handler moving to [CommandSen]
          [1693995232.206988][73816:73816] CHIP:DMG: Command handler moving to [AwaitingDe]
          [1693995232.206994][73816:73816] CHIP:DL: HandlePlatformSpecificBLEEvent 32783
          [1693995232.206998][73816:73816] CHIP:SVR: Failsafe timer expired
          [1693995232.207002][73816:73816] CHIP:IN: SecureSession[0x55d9850fe970]: MarkForEviction Type:1 LSID:51386
          [1693995232.207006][73816:73816] CHIP:SC: SecureSession[0x55d9850fe970, LSID:51386]: State change 'kActive' --> 'kPendingEviction'
          [1693995232.207029][73816:73816] CHIP:IN: SecureSession[0x55d9850fe970]: Released - Type:1 LSID:51386
          [1693995232.207045][73816:73816] CHIP:SVR: Commissioning failed (attempt 1): src/app/server/CommissioningWindowManager.cpp:77: CHIP Error 0x00000032: Timeout
          [1693995232.207086][73816:73816] CHIP:IN: SecureSession[0x55d9850fe970]: Allocated Type:1 LSID:51388
          [1693995232.207097][73816:73816] CHIP:SC: Assigned local session key ID 51388
          [1693995232.207101][73816:73816] CHIP:SC: Waiting for PBKDF param request
          [1693995232.207113][73816:73816] CHIP:DIS: Updating services using commissioning mode 1
          [1693995232.207494][73816:73816] CHIP:DIS: CHIP minimal mDNS started advertising.
          [1693995232.207803][73816:73816] CHIP:DL: Using wifi MAC for hostname
      disabled: true

    - label:
          "Step 93: CD Test Vector: The dac_origin_vendor_id and
          dac_origin_product_id fields present and the PID value doesnt match
          the PID found in the DAC Subject DN."
      verification: |
          For Raspberry Pi device, perform a factory reset using the following command  - sudo rm -rf /tmp/chip_* for the 'chip-all-clusters-app.
           please use the equivalent command on your respective platform to perform a factory reset

          Execute the below mentioned command to put TH(all-cluster-app) into a commissionable state, Pls use equivalent command on the respective Platform

          ./chip-all-clusters-app --trace_decode 1 --dac_provider $CHIP_ROOT/credentials/development/commissioner_dut/struct_cd_dac_origin_vid_pid_present_pid_mismatch/test_case_vector.json --product-id 32768

          Once TH(all-clusters-app) reach the  commissionable state pls send below mentioned command on DUT(chip-tool). Pls use equivalent command on the respective platform
           ./chip-tool pairing onnetwork 1 20202021 --trace_decode 1

          On TH(all-clusters-app), Verify that the DUT(chip-tool) indicates that the device is not genuine, or otherwise indicates a failure of device attestation, within its error handling APIs or user interface

          [1693995756.487808][73971:73971] CHIP:EM: <<< [E:18472r S:904 M:103552416 (Ack:249527511)] (S) Msg TX to 0:FFFFFFFB00000000 [0000] --- Type 0001:09 (IM:InvokeCommandResponse)
          [1693995756.487815][73971:73971] CHIP:IN: (S) Sending msg 103552416 on secure session with LSID: 904
          [1693995756.487857][73971:73971] CHIP:DMG: Command handler moving to [CommandSen]
          [1693995756.487860][73971:73971] CHIP:DMG: Command handler moving to [AwaitingDe]
          [1693995756.487866][73971:73971] CHIP:DL: HandlePlatformSpecificBLEEvent 32783
          [1693995756.487869][73971:73971] CHIP:SVR: Failsafe timer expired
          [1693995756.487873][73971:73971] CHIP:IN: SecureSession[0x563f4befd0a0]: MarkForEviction Type:1 LSID:904
          [1693995756.487877][73971:73971] CHIP:SC: SecureSession[0x563f4befd0a0, LSID:904]: State change 'kActive' --> 'kPendingEviction'
          [1693995756.487891][73971:73971] CHIP:IN: SecureSession[0x563f4befd0a0]: Released - Type:1 LSID:904
          [1693995756.487898][73971:73971] CHIP:SVR: Commissioning failed (attempt 1): src/app/server/CommissioningWindowManager.cpp:77: CHIP Error 0x00000032: Timeout
          [1693995756.487913][73971:73971] CHIP:IN: SecureSession[0x563f4befd0a0]: Allocated Type:1 LSID:906
          [1693995756.487919][73971:73971] CHIP:SC: Assigned local session key ID 906
          [1693995756.487922][73971:73971] CHIP:SC: Waiting for PBKDF param request
          [1693995756.487928][73971:73971] CHIP:DIS: Updating services using commissioning mode 1
          [1693995756.488137][73971:73971] CHIP:DIS: CHIP minimal mDNS started advertising.
      disabled: true

    - label: "Step 94: CD Test Vector: Invalid CMS digest algorithm SHA1."
      verification: |
          For Raspberry Pi device, perform a factory reset using the following command  - sudo rm -rf /tmp/chip_* for the 'chip-all-clusters-app.
           please use the equivalent command on your respective platform to perform a factory reset

          Execute the below mentioned command to put TH(all-cluster-app) into a commissionable state, Pls use equivalent command on the respective Platform

          ./chip-all-clusters-app --trace_decode 1 --dac_provider $CHIP_ROOT/credentials/development/commissioner_dut/struct_cd_cms_digest_algo_sha1/test_case_vector.json --product-id 32768

          Once TH(all-clusters-app) reach the  commissionable state pls send below mentioned command on DUT(chip-tool). Pls use equivalent command on the respective platform
           ./chip-tool pairing onnetwork 1 20202021 --trace_decode 1

          On TH(all-clusters-app), Verify that the DUT(chip-tool) indicates that the device is not genuine, or otherwise indicates a failure of device attestation, within its error handling APIs or user interface

          [1693995992.630928][74076:74076] CHIP:EM: <<< [E:17723r S:41547 M:62321273 (Ack:21047269)] (S) Msg TX to 0:FFFFFFFB00000000 [0000] --- Type 0001:09 (IM:InvokeCommandResponse)
          [1693995992.630935][74076:74076] CHIP:IN: (S) Sending msg 62321273 on secure session with LSID: 41547
          [1693995992.630973][74076:74076] CHIP:DMG: Command handler moving to [CommandSen]
          [1693995992.630976][74076:74076] CHIP:DMG: Command handler moving to [AwaitingDe]
          [1693995992.630981][74076:74076] CHIP:DL: HandlePlatformSpecificBLEEvent 32783
          [1693995992.630984][74076:74076] CHIP:SVR: Failsafe timer expired
          [1693995992.630987][74076:74076] CHIP:IN: SecureSession[0x5651ac815d00]: MarkForEviction Type:1 LSID:41547
          [1693995992.630990][74076:74076] CHIP:SC: SecureSession[0x5651ac815d00, LSID:41547]: State change 'kActive' --> 'kPendingEviction'
          [1693995992.631001][74076:74076] CHIP:IN: SecureSession[0x5651ac815d00]: Released - Type:1 LSID:41547
          [1693995992.631007][74076:74076] CHIP:SVR: Commissioning failed (attempt 1): src/app/server/CommissioningWindowManager.cpp:77: CHIP Error 0x00000032: Timeout
          [1693995992.631022][74076:74076] CHIP:IN: SecureSession[0x5651ac815d00]: Allocated Type:1 LSID:41549
          [1693995992.631026][74076:74076] CHIP:SC: Assigned local session key ID 41549
          [1693995992.631029][74076:74076] CHIP:SC: Waiting for PBKDF param request
          [1693995992.631034][74076:74076] CHIP:DIS: Updating services using commissioning mode 1
      disabled: true

    - label: "Step 95: CD Test Vector: Invalid CMS Signature."
      verification: |
          For Raspberry Pi device, perform a factory reset using the following command  - sudo rm -rf /tmp/chip_* for the 'chip-all-clusters-app.
           please use the equivalent command on your respective platform to perform a factory reset

          Execute the below mentioned command to put TH(all-cluster-app) into a commissionable state, Pls use equivalent command on the respective Platform

          ./chip-all-clusters-app --trace_decode 1 --dac_provider $CHIP_ROOT/credentials/development/commissioner_dut/struct_cd_cms_signature/test_case_vector.json --product-id 32768

          Once TH(all-clusters-app) reach the  commissionable state pls send below mentioned command on DUT(chip-tool). Pls use equivalent command on the respective platform
           ./chip-tool pairing onnetwork 1 20202021 --trace_decode 1

          On TH(all-clusters-app), Verify that the DUT(chip-tool) indicates that the device is not genuine, or otherwise indicates a failure of device attestation, within its error handling APIs or user interface

          [1693994899.515996][73668:73668] CHIP:DMG:
          [1693994899.516006][73668:73668] CHIP:EM: <<< [E:6307r S:5804 M:155066286 (Ack:201427042)] (S) Msg TX to 0:FFFFFFFB00000000 [0000] --- Type 0001:09 (IM:InvokeCommandResponse)
          [1693994899.516012][73668:73668] CHIP:IN: (S) Sending msg 155066286 on secure session with LSID: 5804
          [1693994899.516034][73668:73668] CHIP:DMG: Command handler moving to [CommandSen]
          [1693994899.516037][73668:73668] CHIP:DMG: Command handler moving to [AwaitingDe]
          [1693994899.516043][73668:73668] CHIP:DL: HandlePlatformSpecificBLEEvent 32783
          [1693994899.516046][73668:73668] CHIP:SVR: Failsafe timer expired
          [1693994899.516050][73668:73668] CHIP:IN: SecureSession[0x56266902eb60]: MarkForEviction Type:1 LSID:5804
          [1693994899.516054][73668:73668] CHIP:SC: SecureSession[0x56266902eb60, LSID:5804]: State change 'kActive' --> 'kPendingEviction'
          [1693994899.516068][73668:73668] CHIP:IN: SecureSession[0x56266902eb60]: Released - Type:1 LSID:5804
          [1693994899.516075][73668:73668] CHIP:SVR: Commissioning failed (attempt 1): src/app/server/CommissioningWindowManager.cpp:77: CHIP Error 0x00000032: Timeout
          [1693994899.516090][73668:73668] CHIP:IN: SecureSession[0x56266902eb60]: Allocated Type:1 LSID:5806
          [1693994899.516095][73668:73668] CHIP:SC: Assigned local session key ID 5806
          [1693994899.516098][73668:73668] CHIP:SC: Waiting for PBKDF param request
          [1693994899.516106][73668:73668] CHIP:DIS: Updating services using commissioning mode 1
          [1693994899.516366][73668:73668] CHIP:DIS: CHIP minimal mDNS started advertising.
          [1693994899.516614][73668:73668] CHIP:DL: Using wifi MAC for hostname
      disabled: true

    - label:
          "Step 96: PAI Test Vector: Certificate Basic Constraint extension
          PathLen field set to 1"
      verification: |
          For Raspberry Pi device, perform a factory reset using the following command  - sudo rm -rf /tmp/chip_* for the 'chip-all-clusters-app.
           please use the equivalent command on your respective platform to perform a factory reset


          Execute the below mentioned command to put TH(all-cluster-app) into a commissionable state, Pls use equivalent command on the respective Platform

          ./chip-all-clusters-app --trace_decode 1 --dac_provider $CHIP_ROOT/credentials/development/commissioner_dut/struct_pai_ext_basic_pathlen1/test_case_vector.json --product-id 32768

          Once TH(all-clusters-app) reach the  commissionable state pls send below mentioned command on DUT(chip-tool). Pls use equivalent command on the respective platform
           ./chip-tool pairing onnetwork 1 20202021 --trace_decode 1

          On TH(all-clusters-app), Verify that the DUT(chip-tool) indicates that the device is not genuine, or otherwise indicates a failure of device attestation, within its error handling APIs or user interface

          o 0:FFFFFFFB00000000 [0000] --- Type 0001:09 (IM:InvokeCommandResponse)
          [1693995941.309060][74050:74050] CHIP:IN: (S) Sending msg 222865985 on secure session with LSID: 45785
          [1693995941.309108][74050:74050] CHIP:DMG: Command handler moving to [CommandSen]
          [1693995941.309111][74050:74050] CHIP:DMG: Command handler moving to [AwaitingDe]
          [1693995941.309119][74050:74050] CHIP:DL: HandlePlatformSpecificBLEEvent 32783
          [1693995941.309122][74050:74050] CHIP:SVR: Failsafe timer expired
          [1693995941.309126][74050:74050] CHIP:IN: SecureSession[0x559c0bcaea80]: MarkForEviction Type:1 LSID:45785
          [1693995941.309130][74050:74050] CHIP:SC: SecureSession[0x559c0bcaea80, LSID:45785]: State change 'kActive' --> 'kPendingEviction'
          [1693995941.309150][74050:74050] CHIP:IN: SecureSession[0x559c0bcaea80]: Released - Type:1 LSID:45785
          [1693995941.309163][74050:74050] CHIP:SVR: Commissioning failed (attempt 1): src/app/server/CommissioningWindowManager.cpp:77: CHIP Error 0x00000032: Timeout
          [1693995941.309185][74050:74050] CHIP:IN: SecureSession[0x559c0bcaea80]: Allocated Type:1 LSID:45787
          [1693995941.309190][74050:74050] CHIP:SC: Assigned local session key ID 45787
          [1693995941.309194][74050:74050] CHIP:SC: Waiting for PBKDF param request
          [1693995941.309202][74050:74050] CHIP:DIS: Updating services using commissioning mode 1
          [1693995941.309518][74050:74050] CHIP:DIS: CHIP minimal mDNS started advertising.
      disabled: true

    - label:
          "Step 97: CD Test Vector: The subjectKeyIdentifier contains invalid
          SKID of a certificate unknown by Zigbee Alliance."
      verification: |
          For Raspberry Pi device, perform a factory reset using the following command  - sudo rm -rf /tmp/chip_* for the 'chip-all-clusters-app.
           please use the equivalent command on your respective platform to perform a factory reset


          Execute the below mentioned command to put TH(all-cluster-app) into a commissionable state, Pls use equivalent command on the respective Platform

          ./chip-all-clusters-app --trace_decode 1 --dac_provider $CHIP_ROOT/credentials/development/commissioner_dut/struct_cd_signer_info_skid_invalid/test_case_vector.json --product-id 32768

          Once TH(all-clusters-app) reach the  commissionable state pls send below mentioned command on DUT(chip-tool). Pls use equivalent command on the respective platform
           ./chip-tool pairing onnetwork 1 20202021 --trace_decode 1

          On TH(all-clusters-app), Verify that the DUT(chip-tool) indicates that the device is not genuine, or otherwise indicates a failure of device attestation, within its error handling APIs or user interface

          [1693993614.289269][72826:72826] CHIP:DMG:
          [1693993614.289279][72826:72826] CHIP:EM: <<< [E:11915r S:25559 M:123399583 (Ack:174738663)] (S) Msg TX to 0:FFFFFFFB00000000 [0000] --- Type 0001:09 (IM:InvokeCommandResponse)
          [1693993614.289287][72826:72826] CHIP:IN: (S) Sending msg 123399583 on secure session with LSID: 25559
          [1693993614.289310][72826:72826] CHIP:DMG: Command handler moving to [CommandSen]
          [1693993614.289313][72826:72826] CHIP:DMG: Command handler moving to [AwaitingDe]
          [1693993614.289317][72826:72826] CHIP:DL: HandlePlatformSpecificBLEEvent 32783
          [1693993614.289321][72826:72826] CHIP:SVR: Failsafe timer expired
          [1693993614.289324][72826:72826] CHIP:IN: SecureSession[0x5585eb32ab80]: MarkForEviction Type:1 LSID:25559
          [1693993614.289329][72826:72826] CHIP:SC: SecureSession[0x5585eb32ab80, LSID:25559]: State change 'kActive' --> 'kPendingEviction'
          [1693993614.289344][72826:72826] CHIP:IN: SecureSession[0x5585eb32ab80]: Released - Type:1 LSID:25559
          [1693993614.289352][72826:72826] CHIP:SVR: Commissioning failed (attempt 1): src/app/server/CommissioningWindowManager.cpp:77: CHIP Error 0x00000032: Timeout
          [1693993614.289370][72826:72826] CHIP:IN: SecureSession[0x5585eb32ab80]: Allocated Type:1 LSID:25561
          [1693993614.289375][72826:72826] CHIP:SC: Assigned local session key ID 25561
          [1693993614.289379][72826:72826] CHIP:SC: Waiting for PBKDF param request
          [1693993614.289386][72826:72826] CHIP:DIS: Updating services using commissioning mode 1
          [1693993614.289637][72826:72826] CHIP:DIS: CHIP minimal mDNS started advertising.
      disabled: true
