# 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
      disabled: true

    - label: "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: "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:
          "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:
          "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:
          "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: "Factory Reset TH1 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 platform
          sudo rm -rf /tmp/chip_*
      disabled: true

    - label:
          "Repeat step 1 to step 7 and for step 5 set different error condition
          as below: Commissionees PAA is not in the Commissioners trusted set.
          Commissionee provides an invalid DAC and PAI chain as validated by TH
          against the RFC5280 certificate Basic path validation algorithm
          Commissionee provides DAC with validity period that is not in range of
          PAA/PAI"
      verification: |
          For each error scenario  Factory reset on TH1(all-clusters-app)  as explained in step 6

          1. For error scenario 1 i.e. Commissionee’s PAA is not in the Commissioner’s trusted set.

          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

          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 --paa-trust-store-path  ~/connectedhomeip/credentials/development/attestation

          If the DUT(chip-tool) has to provision to verify the logs:- verify the below mentioned same behaviour log on the DUT (chip-tool):
          [1662455580.725445][31980:31985] CHIP:DMG: Received Command Response Data, Endpoint=0 Cluster=0x0000_003E Command=0x0000_0001
          [1662455580.725450][31980:31985] CHIP:CTL: Received Attestation Information from the device
          [1662455580.725454][31980:31985] CHIP:CTL: Successfully finished commissioning step 'SendAttestationRequest'
          [1662455580.725461][31980:31985] CHIP:CTL: Commissioning stage next step: 'SendAttestationRequest' -> 'AttestationVerification'
          [1662455580.725465][31980:31985] CHIP:CTL: Performing next commissioning step 'AttestationVerification'
          [1662455580.725468][31980:31985] CHIP:CTL: Verifying attestation
          [1662455580.725944][31980:31985] CHIP:CTL: Failed in verifying 'Attestation Information' command received from the device: err 101. Look at AttestationVerificationResult enum to understand the errors
          [1662455580.725956][31980:31985] CHIP:CTL: Error on commissioning step 'AttestationVerification': '../../third_party/connectedhomeip/src/controller/CHIPDeviceController.cpp:1027: CHIP Error 0x000000AC: Internal error'
          [1662455580.725958][31980:31985] CHIP:CTL: Failed to perform commissioning step 8
          [1662455580.725961][31980:31985] CHIP:CTL: Going from commissioning step 'AttestationVerification' with lastErr = '../../third_party/connectedhomeip/src/controller/CHIPDeviceController.cpp:1027: CHIP Error 0x000000AC: Internal error' -> 'Cleanup'
          [1662455580.725966][31980:31985] CHIP:CTL: Performing next commissioning step 'Cleanup' with completion status = '../../third_party/connectedhomeip/src/controller/CHIPDeviceController.cpp:1027: CHIP Error 0x000000AC: Internal error'
          [1662455580.725979][31980:31985] CHIP:CTL: Expiring failsafe on proxy 0x7fe3b40236a0



          2. To Execute this step for error condition 2 Commissionee provides an invalid DAC and PAI chain ,  follow the below steps,

          All  sample error scenario certificates has generated and present in ~/connectedhomeip/credentials/development/commissioner_dut/

          Commissionee provides an invalid DAC and PAI - Use the folder  - connectedhomeip/credentials/development/commissioner_dut/struct_dac_sig_algo_ecdsa_with_sha1 & use the sample json test_case_vector.json


          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 ~/connectedhomeip/credentials/development/commissioner_dut/struct_dac_sig_algo_ecdsa_with_sha1/test_case_vector.json

          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

          If the DUT(chip-tool) has to provision to verify the logs:- verify the below mentioned same behaviour log on the DUT (chip-tool):
          [1684494307.862989][176412:176414] CHIP:CTL: Commissioning stage next step: 'SendAttestationRequest' -> 'AttestationVerification'
          [1684494307.862994][176412:176414] CHIP:CTL: Performing next commissioning step 'AttestationVerification'
          [1684494307.862996][176412:176414] CHIP:CTL: Verifying attestation
          [1684494307.864806][176412:176414] CHIP:CTL: Failed in verifying 'Attestation Information' command received from the device: err 303. Look at AttestationVerificationResult enum to understand the errors
          [1684494307.864822][176412:176414] CHIP:CTL: Error on commissioning step 'AttestationVerification': '../../third_party/connectedhomeip/src/controller/CHIPDeviceController.cpp:1075: CHIP Error 0x000000AC: Internal error'
          [1684494307.864826][176412:176414] CHIP:CTL: Failed to perform commissioning step 8
          [1684494307.864829][176412:176414] CHIP:CTL: Going from commissioning step 'AttestationVerification' with lastErr = '../../third_party/connectedhomeip/src/controller/CHIPDeviceController.cpp:1075: CHIP Error 0x000000AC: Internal error' -> 'Cleanup'
          [1684494307.864837][176412:176414] CHIP:CTL: Performing next commissioning step 'Cleanup' with completion status = '../../third_party/connectedhomeip/src/controller/CHIPDeviceController.cpp:1075: CHIP Error 0x000000AC: Internal error'
          [1684494307.864844][176412:176414] CHIP:CTL: Expiring failsafe on proxy 0x7f2308036bd0
          [1684494307.864860][176412:176414] CHIP:DMG: ICR moving to [AddingComm]
          [1684494307.864865][176412:176414] CHIP:DMG: ICR moving to [AddedComma]
          [1684494307.864945][176412:176414] CHIP:EM: <<< [E:6835i M:18286748] (S) Msg TX to 0:FFFFFFFB00000000 [0000] --- Type 0001:08 (IM:InvokeCommandRequest)





          3. Similarly for condition 3 Commissionee provides DAC with validity period that is not in range of PAA/PAI follow below steps

          Commissionee provides DAC with validity period that is not in range of PAA/PAI
          Use the folder  - connectedhomeip/credentials/development/commissioner_dut/struct_dac_valid_in_past & use the sample json test_case_vector.json

          Commission TH to DUT by using --dac_provider parameter


          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 ~/connectedhomeip/credentials/development/commissioner_dut/struct_dac_valid_in_past/test_case_vector.json

          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


          If the DUT(chip-tool) has to provision to verify the logs:- verify the below mentioned same behaviour log on the DUT (chip-tool):
          [1684494415.854066][176461:176463] CHIP:CTL: Received Attestation Information from the device
          [1684494415.854069][176461:176463] CHIP:CTL: Successfully finished commissioning step 'SendAttestationRequest'
          [1684494415.854072][176461:176463] CHIP:CTL: AutoCommissioner setting attestationElements buffer size 278/278
          [1684494415.854080][176461:176463] CHIP:CTL: Commissioning stage next step: 'SendAttestationRequest' -> 'AttestationVerification'
          [1684494415.854085][176461:176463] CHIP:CTL: Performing next commissioning step 'AttestationVerification'
          [1684494415.854088][176461:176463] CHIP:CTL: Verifying attestation
          [1684494415.860949][176461:176463] CHIP:CTL: Failed in verifying 'Attestation Information' command received from the device: err 300. Look at AttestationVerificationResult enum to understand the errors
          [1684494415.860970][176461:176463] CHIP:CTL: Error on commissioning step 'AttestationVerification': '../../third_party/connectedhomeip/src/controller/CHIPDeviceController.cpp:1075: CHIP Error 0x000000AC: Internal error'
          [1684494415.860974][176461:176463] CHIP:CTL: Failed to perform commissioning step 8
          [1684494415.860978][176461:176463] CHIP:CTL: Going from commissioning step 'AttestationVerification' with lastErr = '../../third_party/connectedhomeip/src/controller/CHIPDeviceController.cpp:1075: CHIP Error 0x000000AC: Internal error' -> 'Cleanup'
          [1684494415.860990][176461:176463] CHIP:CTL: Performing next commissioning step 'Cleanup' with completion status = '../../third_party/connectedhomeip/src/controller/CHIPDeviceController.cpp:1075: CHIP Error 0x000000AC: Internal error'
          [1684494415.860994][176461:176463] CHIP:CTL: Expiring failsafe on proxy 0x7f617c036bd0
      disabled: true

    - label:
          "Repeat step 1 to step 7 and for step 5 set different error condition:
          Certification Declaration has only one of the following fields
          dac_origin_vendor_id dac_origin_product_id vendor_id field in the
          Certification Declaration does not match with the VendorID attribute
          found in the Basic Information cluster The Vendor ID in the DAC does
          not match the vendor_id field in the Certification Declaration. The
          Product ID (PID) the DAC is not present in the product_id_array field
          in the Certification Declaration"
      verification: |
          For each error scenario  Factory reset on TH1(all-clusters-app)  as explained in step 6

          1. To Execute ths step for error condition 1 Certification Declaration has only one of the following fields dac_origin_vendor_id dac_origin_product_id follow the below steps

          All  sample error scenario certificate has generated and presented in ~/connectedhomeip/credentials/development/commissioner_dut/
          Use the appropriate folder to test different scenarios.

          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 ~/connectedhomeip/credentials/development/commissioner_dut/struct_cd_dac_origin_vid_missing_pid_present/test_case_vector.json

          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

          If the DUT(chip-tool) has to provision to verify the logs:- verify the below mentioned same behaviour log on the DUT (chip-tool):
          [1662459904.540345][32873:32878] CHIP:DMG: Received Command Response Data, Endpoint=0 Cluster=0x0000_003E Command=0x0000_0001
          [1662459904.540349][32873:32878] CHIP:CTL: Received Attestation Information from the device
          [1662459904.540352][32873:32878] CHIP:CTL: Successfully finished commissioning step 'SendAttestationRequest'
          [1662459904.540358][32873:32878] CHIP:CTL: Commissioning stage next step: 'SendAttestationRequest' -> 'AttestationVerification'
          [1662459904.540361][32873:32878] CHIP:CTL: Performing next commissioning step 'AttestationVerification'
          [1662459904.540363][32873:32878] CHIP:CTL: Verifying attestation
          [1662459904.541210][32873:32878] CHIP:CTL: Failed in verifying 'Attestation Information' command received from the device: err 603. Look at AttestationVerificationResult enum to understand the errors
          [1662459904.541219][32873:32878] CHIP:CTL: Error on commissioning step 'AttestationVerification': '../../third_party/connectedhomeip/src/controller/CHIPDeviceController.cpp:1027: CHIP Error 0x000000AC: Internal error'
          [1662459904.541221][32873:32878] CHIP:CTL: Failed to perform commissioning step 8
          [1662459904.541223][32873:32878] CHIP:CTL: Going from commissioning step 'AttestationVerification' with lastErr = '../../third_party/connectedhomeip/src/controller/CHIPDeviceController.cpp:1027: CHIP Error 0x000000AC: Internal error' -> 'Cleanup'
          [1662459904.541229][32873:32878] CHIP:CTL: Performing next commissioning step 'Cleanup' with completion status = '../../third_party/connectedhomeip/src/controller/CHIPDeviceController.cpp:1027: CHIP Error 0x000000AC: Internal error'
          [1662459904.541231][32873:32878] CHIP:CTL: Expiring failsafe on proxy 0x7f1b8c023460
          [1662459904.541240][32873:32878] CHIP:DMG: ICR moving to [AddingComm]
          [1662459904.541244][32873:32878] CHIP:DMG: ICR moving to [AddedComma]
          [1662459904.541289][32873:32878] CHIP:IN: Prepared secure message 0x7f1b8c02d208 to 0xFFFFFFFB00000000 (0)  of type 0x8 and protocolId (0, 1) on exchange 3056i with MessageCounter:44223388.
          [1662459904.541294][32873:32878] CHIP:IN: Sending encrypted msg 0x7f1b8c02d208 with MessageCounter:44223388 to 0xFFFFFFFB00000000 (0) at monotonic time: 0000000003C6523D msec
          [1662459904.541346][32873:32878] CHIP:DMG: >> to UDP:[fe80::b7b8:ff3e:9ace:3e12%wlp0s20f3]:5540 | 44223388 | [Interaction Model  (1) / InvokeCommandRequest (0x08) / Session = 16788 / Exchange = 3056]



          2. Similarly for 2nd error condition i.e. vendor_id field in the Certification Declaration does not match with the VendorID attribute found in the Basic Information cluster , follow the below steps

          All  sample error scenario certificate has generated and present in ~/connectedhomeip/credentials/development/commissioner_dut/
          Use the appropriate folder to test different scenario.

          vendor_id field in the Certification Declaration does not match with the VendorID attribute found in the Basic Information cluster
          connectedhomeip/credentials/development/commissioner_dut/struct_cd_vid_mismatch
          & use the sample json test_case_vector.json

          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 ~/connectedhomeip/credentials/development/commissioner_dut/struct_cd_vid_mismatch/test_case_vector.json

          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
          If the DUT(chip-tool) has to provision to verify the logs:- verify the below mentioned same behaviour log on the DUT (chip-tool):
          [1684495876.434738][176910:176912] CHIP:DMG: },
          [1684495876.434750][176910:176912] CHIP:DMG: Received Command Response Data, Endpoint=0 Cluster=0x0000_003E Command=0x0000_0001
          [1684495876.434754][176910:176912] CHIP:CTL: Received Attestation Information from the device
          [1684495876.434758][176910:176912] CHIP:CTL: Successfully finished commissioning step 'SendAttestationRequest'
          [1684495876.434761][176910:176912] CHIP:CTL: AutoCommissioner setting attestationElements buffer size 278/278
          [1684495876.434768][176910:176912] CHIP:CTL: Commissioning stage next step: 'SendAttestationRequest' -> 'AttestationVerification'
          [1684495876.434772][176910:176912] CHIP:CTL: Performing next commissioning step 'AttestationVerification'
          [1684495876.434774][176910:176912] CHIP:CTL: Verifying attestation
          [1684495876.441867][176910:176912] CHIP:CTL: Failed in verifying 'Attestation Information' command received from the device: err 604. Look at AttestationVerificationResult enum to understand the errors
          [1684495876.441878][176910:176912] CHIP:CTL: Error on commissioning step 'AttestationVerification': '../../third_party/connectedhomeip/src/controller/CHIPDeviceController.cpp:1075: CHIP Error 0x000000AC: Internal error'
          [1684495876.441881][176910:176912] CHIP:CTL: Failed to perform commissioning step 8
          [1684495876.441885][176910:176912] CHIP:CTL: Going from commissioning step 'AttestationVerification' with lastErr = '../../third_party/connectedhomeip/src/controller/CHIPDeviceController.cpp:1075: CHIP Error 0x000000AC: Internal error' -> 'Cleanup'
          [1684495876.441891][176910:176912] CHIP:CTL: Performing next commissioning step 'Cleanup' with completion status = '../../third_party/connectedhomeip/src/controller/CHIPDeviceController.cpp:1075: CHIP Error 0x000000AC: Internal error'
          [1684495876.441894][176910:176912] CHIP:CTL: Expiring failsafe on proxy 0x7f1fc0036bd0
          [1684495876.441907][176910:176912] CHIP:DMG: ICR moving to [AddingComm]
          [1684495876.441912][176910:176912] CHIP:DMG: ICR moving to [AddedComma]
          [1684495876.441967][176910:176912] CHIP:EM: <<< [E:25914i M:173255705] (S) Msg TX to 0:FFFFFFFB00000000 [0000] --- Type 0001:08 (IM:InvokeCommandRequest)
          [1684495876.441973][176910:176912] CHIP:IN: (S) Sending msg 173255705 on secure session with LSID: 21068
          [1684495876.442029][176910:176912] CHIP:DMG: >> to UDP:[fe80::529f:9f59:cfec:7130%wlp0s20f3]:5540 | 173255705 | [Interaction Model  (1) / InvokeCommandRequest





          3. Similary for 3rd error condition follow the below steps
          All  sample error scenario certificate has generated and present in ~/connectedhomeip/credentials/development/commissioner_dut/
          Use the appropriate folder to test different scenario.

          vendor_id field in the Certification Declaration does not match with the VendorID attribute found in the Basic Information cluster
          connectedhomeip/credentials/development/commissioner_dut/struct_cd_vid_mismatch
          & use the sample json test_case_vector.json

          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 ~/connectedhomeip/credentials/development/commissioner_dut/struct_cd_vid_mismatch/test_case_vector.json

          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
          If the DUT(chip-tool) has to provision to verify the logs:- verify the below mentioned same behaviour log on the DUT (chip-tool):
          [1684495930.801406][176931:176933] CHIP:CTL: Received Attestation Information from the device
          [1684495930.801409][176931:176933] CHIP:CTL: Successfully finished commissioning step 'SendAttestationRequest'
          [1684495930.801411][176931:176933] CHIP:CTL: AutoCommissioner setting attestationElements buffer size 278/278
          [1684495930.801417][176931:176933] CHIP:CTL: Commissioning stage next step: 'SendAttestationRequest' -> 'AttestationVerification'
          [1684495930.801420][176931:176933] CHIP:CTL: Performing next commissioning step 'AttestationVerification'
          [1684495930.801421][176931:176933] CHIP:CTL: Verifying attestation
          [1684495930.808506][176931:176933] CHIP:CTL: Failed in verifying 'Attestation Information' command received from the device: err 604. Look at AttestationVerificationResult enum to understand the errors
          [1684495930.808521][176931:176933] CHIP:CTL: Error on commissioning step 'AttestationVerification': '../../third_party/connectedhomeip/src/controller/CHIPDeviceController.cpp:1075: CHIP Error 0x000000AC: Internal error'
          [1684495930.808524][176931:176933] CHIP:CTL: Failed to perform commissioning step 8
          [1684495930.808526][176931:176933] CHIP:CTL: Going from commissioning step 'AttestationVerification' with lastErr = '../../third_party/connectedhomeip/src/controller/CHIPDeviceController.cpp:1075: CHIP Error 0x000000AC: Internal error' -> 'Cleanup'
          [1684495930.808533][176931:176933] CHIP:CTL: Performing next commissioning step 'Cleanup' with completion status = '../../third_party/connectedhomeip/src/controller/CHIPDeviceController.cpp:1075: CHIP Error 0x000000AC: Internal error'
          [1684495930.808535][176931:176933] CHIP:CTL: Expiring failsafe on proxy 0x7fc730036bd0
          [1684495930.808548][176931:176933] CHIP:DMG: ICR moving to [AddingComm]
          [1684495930.808551][176931:176933] CHIP:DMG: ICR moving to [AddedComma]
          [1684495930.808609][176931:176933] CHIP:EM: <<< [E:8667i M:71525087] (S) Msg TX to 0:FFFFFFFB00000000 [0000] --- Type 0001:08 (IM:InvokeCommandRequest)
          [1684495930.808614][176931:176933] CHIP:IN: (S) Sending msg 71525087 on secure session with LSID: 21274




          4. Similary for 4th error condition follow the below steps

          All  sample error scenario certificate has generated and present in ~/connectedhomeip/credentials/development/commissioner_dut/
          Use the appropriate folder to test different scenario.

          The Vendor ID in the DAC does not match the vendor_id field in the Certification Declaration.
          connectedhomeip/credentials/development/commissioner_dut/struct_cd_pid_array_count01_mismatch
          & use the sample json test_case_vector.json

          Commission TH to DUT by using --dac_provider parameter

          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 ~/connectedhomeip/credentials/development/commissioner_dut/struct_cd_pid_array_count10_mismatch/test_case_vector.json

          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
          If the DUT(chip-tool) has to provision to verify the logs:- verify the below mentioned same behaviour log on the DUT (chip-tool):
          [1684496002.435208][176959:176961] CHIP:CTL: Performing next commissioning step 'AttestationVerification'
          [1684496002.435210][176959:176961] CHIP:CTL: Verifying attestation
          [1684496002.442231][176959:176961] CHIP:CTL: Failed in verifying 'Attestation Information' command received from the device: err 605. Look at AttestationVerificationResult enum to understand the errors
          [1684496002.442244][176959:176961] CHIP:CTL: Error on commissioning step 'AttestationVerification': '../../third_party/connectedhomeip/src/controller/CHIPDeviceController.cpp:1075: CHIP Error 0x000000AC: Internal error'
          [1684496002.442248][176959:176961] CHIP:CTL: Failed to perform commissioning step 8
          [1684496002.442252][176959:176961] CHIP:CTL: Going from commissioning step 'AttestationVerification' with lastErr = '../../third_party/connectedhomeip/src/controller/CHIPDeviceController.cpp:1075: CHIP Error 0x000000AC: Internal error' -> 'Cleanup'
          [1684496002.442259][176959:176961] CHIP:CTL: Performing next commissioning step 'Cleanup' with completion status = '../../third_party/connectedhomeip/src/controller/CHIPDeviceController.cpp:1075: CHIP Error 0x000000AC: Internal error'
          [1684496002.442262][176959:176961] CHIP:CTL: Expiring failsafe on proxy 0x7f0354036bd0
          [1684496002.442275][176959:176961] CHIP:DMG: ICR moving to [AddingComm]
          [1684496002.442279][176959:176961] CHIP:DMG: ICR moving to [AddedComma]
          [1684496002.442334][176959:176961] CHIP:EM: <<< [E:26577i M:70580591] (S) Msg TX to 0:FFFFFFFB00000000 [0000] --- Type 0001:08 (IM:InvokeCommandRequest)
          [1684496002.442340][176959:176961] CHIP:IN: (S) Sending msg 70580591 on secure session with LSID: 56268
          [1684496002.442397][176959:176961] CHIP:DMG: >> to UDP:[fe80::529f:9f59:cfec:7130%wlp0s20f3]:5540 | 70580591 | [Interaction Model  (1) / InvokeCommandRequest (0x08) / Session = 4448 / Exchange = 26577]
      disabled: true
