# 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"
    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  ~/Aug30_cntr/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 ~/Aug30_cntr/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):
          [1662456484.492166][32193:32198] CHIP:DMG: Received Command Response Data, Endpoint=0 Cluster=0x0000_003E Command=0x0000_0001
          [1662456484.492170][32193:32198] CHIP:CTL: Received Attestation Information from the device
          [1662456484.492173][32193:32198] CHIP:CTL: Successfully finished commissioning step "SendAttestationRequest"
          [1662456484.492179][32193:32198] CHIP:CTL: Commissioning stage next step: "SendAttestationRequest" -> "AttestationVerification"
          [1662456484.492181][32193:32198] CHIP:CTL: Performing next commissioning step "AttestationVerification"
          [1662456484.492183][32193:32198] CHIP:CTL: Verifying attestation
          [1662456484.492990][32193:32198] CHIP:CTL: Failed in verifying "Attestation Information" command received from the device: err 605. Look at AttestationVerificationResult enum to understand the errors
          [1662456484.493000][32193:32198] CHIP:CTL: Error on commissioning step "AttestationVerification": "../../third_party/connectedhomeip/src/controller/CHIPDeviceController.cpp:1027: CHIP Error 0x000000AC: Internal error"
          [1662456484.493005][32193:32198] CHIP:CTL: Failed to perform commissioning step 8
          [1662456484.493007][32193:32198] CHIP:CTL: Going from commissioning step "AttestationVerification" with lastErr = "../../third_party/connectedhomeip/src/controller/CHIPDeviceController.cpp:1027: CHIP Error 0x000000AC: Internal error" -> "Cleanup"
          [1662456484.493011][32193:32198] CHIP:CTL: Performing next commissioning step "Cleanup" with completion status = "../../third_party/connectedhomeip/src/controller/CHIPDeviceController.cpp:1027: CHIP Error 0x000000AC: Internal error"
          [1662456484.493013][32193:32198] CHIP:CTL: Expiring failsafe on proxy 0x7fd0a40236a0
          [1662456484.493022][32193:32198] CHIP:DMG: ICR moving to [AddingComm]
          [1662456484.493026][32193:32198] CHIP:DMG: ICR moving to [AddedComma]
          [1662456484.493070][32193:32198] CHIP:IN: Prepared secure message 0x7fd0a4031c78 to 0xFFFFFFFB00000000 (0)  of type 0x8 and protocolId (0, 1) on exchange 58630i with MessageCounter:1810755.
          [1662456484.493076][32193:32198] CHIP:IN: Sending encrypted msg 0x7fd0a4031c78 with MessageCounter:1810755 to 0xFFFFFFFB00000000 (0) at monotonic time: 00000000039222AD msec
          [1662456484.493127][32193:32198] CHIP:DMG: >> to UDP:[fe80::b7b8:ff3e:9ace:3e12%wlp0s20f3]:5540 | 1810755 | [Interaction Model  (1) / InvokeCommandRequest (0x08) / Session = 29920 / Exchange = 58630]
          [1662456484.493132][32193:32198] CHIP:DMG: Header Flags =




          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 ~/Aug30_cntr/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):
          [1662459474.547436][32792:32797] CHIP:DMG: Received Command Response Data, Endpoint=0 Cluster=0x0000_003E Command=0x0000_0001
          [1662459474.547441][32792:32797] CHIP:CTL: Received Attestation Information from the device
          [1662459474.547445][32792:32797] CHIP:CTL: Successfully finished commissioning step "SendAttestationRequest"
          [1662459474.547452][32792:32797] CHIP:CTL: Commissioning stage next step: "SendAttestationRequest" -> "AttestationVerification"
          [1662459474.547456][32792:32797] CHIP:CTL: Performing next commissioning step "AttestationVerification"
          [1662459474.547458][32792:32797] CHIP:CTL: Verifying attestation
          [1662459474.548034][32792:32797] CHIP:CTL: Failed in verifying "Attestation Information" command received from the device: err 301. Look at AttestationVerificationResult enum to understand the errors
          [1662459474.548043][32792:32797] CHIP:CTL: Error on commissioning step "AttestationVerification": "../../third_party/connectedhomeip/src/controller/CHIPDeviceController.cpp:1027: CHIP Error 0x000000AC: Internal error"
          [1662459474.548047][32792:32797] CHIP:CTL: Failed to perform commissioning step 8
          [1662459474.548051][32792:32797] CHIP:CTL: Going from commissioning step "AttestationVerification" with lastErr = "../../third_party/connectedhomeip/src/controller/CHIPDeviceController.cpp:1027: CHIP Error 0x000000AC: Internal error" -> "Cleanup"
          [1662459474.548055][32792:32797] CHIP:CTL: Performing next commissioning step "Cleanup" with completion status = "../../third_party/connectedhomeip/src/controller/CHIPDeviceController.cpp:1027: CHIP Error 0x000000AC: Internal error"
          [1662459474.548059][32792:32797] CHIP:CTL: Expiring failsafe on proxy 0x7f71200236a0
          [1662459474.548073][32792:32797] CHIP:DMG: ICR moving to [AddingComm]
          [1662459474.548077][32792:32797] CHIP:DMG: ICR moving to [AddedComma]
          [1662459474.548122][32792:32797] CHIP:IN: Prepared secure message 0x7f7120031f38 to 0xFFFFFFFB00000000 (0)  of type 0x8 and protocolId (0, 1) on exchange 51350i with MessageCounter:196537634.
          [1662459474.548128][32792:32797] CHIP:IN: Sending encrypted msg 0x7f7120031f38 with MessageCounter:196537634 to 0xFFFFFFFB00000000 (0) at monotonic time: 0000000003BFC294 msec
          [1662459474.548181][32792:32797] CHIP:DMG: >> to UDP:[fe80::b7b8:ff3e:9ace:3e12%wlp0s20f3]:5540 | 196537634 | [Interaction Model  (1) / InvokeCommandRequest (0x08) / Session = 10880 / Exchange = 51350]
      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 ~/Aug30_cntr/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 ~/Aug30_cntr/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):
          [1662460172.864493][32929:32934] CHIP:DMG: Received Command Response Data, Endpoint=0 Cluster=0x0000_003E Command=0x0000_0001
          [1662460172.864502][32929:32934] CHIP:CTL: Received Attestation Information from the device
          [1662460172.864510][32929:32934] CHIP:CTL: Successfully finished commissioning step "SendAttestationRequest"
          [1662460172.864522][32929:32934] CHIP:CTL: Commissioning stage next step: "SendAttestationRequest" -> "AttestationVerification"
          [1662460172.864526][32929:32934] CHIP:CTL: Performing next commissioning step "AttestationVerification"
          [1662460172.864528][32929:32934] CHIP:CTL: Verifying attestation
          [1662460172.865422][32929:32934] CHIP:CTL: Failed in verifying "Attestation Information" command received from the device: err 603. Look at AttestationVerificationResult enum to understand the errors
          [1662460172.865435][32929:32934] CHIP:CTL: Error on commissioning step "AttestationVerification": "../../third_party/connectedhomeip/src/controller/CHIPDeviceController.cpp:1027: CHIP Error 0x000000AC: Internal error"
          [1662460172.865439][32929:32934] CHIP:CTL: Failed to perform commissioning step 8
          [1662460172.865442][32929:32934] CHIP:CTL: Going from commissioning step "AttestationVerification" with lastErr = "../../third_party/connectedhomeip/src/controller/CHIPDeviceController.cpp:1027: CHIP Error 0x000000AC: Internal error" -> "Cleanup"
          [1662460172.865447][32929:32934] CHIP:CTL: Performing next commissioning step "Cleanup" with completion status = "../../third_party/connectedhomeip/src/controller/CHIPDeviceController.cpp:1027: CHIP Error 0x000000AC: Internal error"
          [1662460172.865449][32929:32934] CHIP:CTL: Expiring failsafe on proxy 0x7fa380023460




          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 ~/Aug30_cntr/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):
          [1662460606.271896][33030:33035] CHIP:DMG: Received Command Response Data, Endpoint=0 Cluster=0x0000_003E Command=0x0000_0001
          [1662460606.271904][33030:33035] CHIP:CTL: Received Attestation Information from the device
          [1662460606.271914][33030:33035] CHIP:CTL: Successfully finished commissioning step "SendAttestationRequest"
          [1662460606.271930][33030:33035] CHIP:CTL: Commissioning stage next step: "SendAttestationRequest" -> "AttestationVerification"
          [1662460606.271938][33030:33035] CHIP:CTL: Performing next commissioning step "AttestationVerification"
          [1662460606.271942][33030:33035] CHIP:CTL: Verifying attestation
          [1662460606.272912][33030:33035] CHIP:CTL: Failed in verifying "Attestation Information" command received from the device: err 603. Look at AttestationVerificationResult enum to understand the errors
          [1662460606.272924][33030:33035] CHIP:CTL: Error on commissioning step "AttestationVerification": "../../third_party/connectedhomeip/src/controller/CHIPDeviceController.cpp:1027: CHIP Error 0x000000AC: Internal error"
          [1662460606.272927][33030:33035] CHIP:CTL: Failed to perform commissioning step 8
          [1662460606.272932][33030:33035] CHIP:CTL: Going from commissioning step "AttestationVerification" with lastErr = "../../third_party/connectedhomeip/src/controller/CHIPDeviceController.cpp:1027: CHIP Error 0x000000AC: Internal error" -> "Cleanup"



          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 ~/Aug30_cntr/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):
          [1662460943.774883][33107:33112] CHIP:CTL: Commissioning stage next step: "SendAttestationRequest" -> "AttestationVerification"
          [1662460943.774887][33107:33112] CHIP:CTL: Performing next commissioning step "AttestationVerification"
          [1662460943.774889][33107:33112] CHIP:CTL: Verifying attestation
          [1662460943.775749][33107:33112] CHIP:CTL: Failed in verifying "Attestation Information" command received from the device: err 603. Look at AttestationVerificationResult enum to understand the errors
          [1662460943.775757][33107:33112] CHIP:CTL: Error on commissioning step "AttestationVerification": "../../third_party/connectedhomeip/src/controller/CHIPDeviceController.cpp:1027: CHIP Error 0x000000AC: Internal error"
          [1662460943.775760][33107:33112] CHIP:CTL: Failed to perform commissioning step 8
          [1662460943.775763][33107:33112] CHIP:CTL: Going from commissioning step "AttestationVerification" with lastErr = "../../third_party/connectedhomeip/src/controller/CHIPDeviceController.cpp:1027: CHIP Error 0x000000AC: Internal error" -> "Cleanup
      disabled: true
