Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Refactor DeviceAttestationVerifier to have Async interface #11917

Closed
tcarmelveilleux opened this issue Nov 17, 2021 · 2 comments
Closed

Refactor DeviceAttestationVerifier to have Async interface #11917

tcarmelveilleux opened this issue Nov 17, 2021 · 2 comments
Assignees
Labels
attestation maybe done? Isssue may be complete/obsolete/not relevant anymore. Needs review to determine if to close or not. V1.0

Comments

@tcarmelveilleux
Copy link
Contributor

Problem

Since the DeviceAttestation procedure relies on data that may be remote (e.g. DCL or equivalent), we need the DeviceAttestationVerifier APIs to be asynchronous (non-blocking) so that long running processes do not block the main SDK event loop

Proposed Solution

  • Introduce a delegate API to VerifyAttestationInformation so that the outcome is provided through the delegate, rather than awaiting a blocking synchronous return value to the call
@vijs vijs self-assigned this Dec 7, 2021
msandstedt added a commit to msandstedt/connectedhomeip that referenced this issue Dec 22, 2021
The commissioning state machine operates without dependence on the
chip::Controller::DeviceCommissioner, CommissioneeDeviceProxy,
CASEClient or CASESessionManager objects.  And using the recently
introduced StateMachine utility in src/lib, the needed flexibility
for ecosystem-specific commissioning flows is available.

The state machine is separated into two primary resources:

* CommissioningStates.h with templates that can support all commissioners
* ExampleCommissioningStateMachine.h, a concrete implementation that
  uses the states and provides an example that apps can copy, modify,
  and extend

App implementations can add, remove and reorder states as necessary.
Arbitrarily complex async UI logic is also easily achieved without the
need to define any callback delegate interfaces.  This implicitly fixes
issues like project-chip#11917 (Refactor DeviceAttestationVerifier to have Async
interface).

ExampleCommissioningStateMachine takes the place of DeviceCommissioner
in chip-tool, providing feature parity.  chip-tool now uses the new code
to commission devices, and on success then places them into a
DeviceController for persistence and subsequent interaction.

Fixes project-chip#7951
msandstedt added a commit to msandstedt/connectedhomeip that referenced this issue Dec 22, 2021
The commissioning state machine operates without dependence on the
chip::Controller::DeviceCommissioner, CommissioneeDeviceProxy,
CASEClient or CASESessionManager objects.  And using the recently
introduced StateMachine utility in src/lib, the needed flexibility
for ecosystem-specific commissioning flows is available.

The state machine is separated into two primary resources:

* CommissioningStates.h with templates that can support all commissioners
* ExampleCommissioningStateMachine.h, a concrete implementation that
  uses the states and provides an example that apps can copy, modify,
  and extend

App implementations can add, remove and reorder states as necessary.
Arbitrarily complex async UI logic is also easily achieved without the
need to define any callback delegate interfaces.  This implicitly fixes
issues like project-chip#11917 (Refactor DeviceAttestationVerifier to have Async
interface).

ExampleCommissioningStateMachine takes the place of DeviceCommissioner
in chip-tool, providing feature parity.  chip-tool now uses the new code
to commission devices, and on success then places them into a
DeviceController for persistence and subsequent interaction.

Fixes project-chip#7951
msandstedt added a commit to msandstedt/connectedhomeip that referenced this issue Dec 22, 2021
The commissioning state machine operates without dependence on the
chip::Controller::DeviceCommissioner, CommissioneeDeviceProxy,
CASEClient or CASESessionManager objects.  And using the recently
introduced StateMachine utility in src/lib, the needed flexibility
for ecosystem-specific commissioning flows is available.

The state machine is separated into two primary resources:

* CommissioningStates.h with templates that can support all commissioners
* ExampleCommissioningStateMachine.h, a concrete implementation that
  uses the states and provides an example that apps can copy, modify,
  and extend

App implementations can add, remove and reorder states as necessary.
Arbitrarily complex async UI logic is also easily achieved without the
need to define any callback delegate interfaces.  This implicitly fixes
issues like project-chip#11917 (Refactor DeviceAttestationVerifier to have Async
interface).

ExampleCommissioningStateMachine takes the place of DeviceCommissioner
in chip-tool, providing feature parity.  chip-tool now uses the new code
to commission devices, and on success then places them into a
DeviceController for persistence and subsequent interaction.

Fixes project-chip#7951
msandstedt added a commit to msandstedt/connectedhomeip that referenced this issue Dec 22, 2021
The commissioning state machine operates without dependence on the
chip::Controller::DeviceCommissioner, CommissioneeDeviceProxy,
CASEClient or CASESessionManager objects.  And using the recently
introduced StateMachine utility in src/lib, the needed flexibility
for ecosystem-specific commissioning flows is available.

The state machine is separated into two primary resources:

* CommissioningStates.h with templates that can support all commissioners
* ExampleCommissioningStateMachine.h, a concrete implementation that
  uses the states and provides an example that apps can copy, modify,
  and extend

App implementations can add, remove and reorder states as necessary.
Arbitrarily complex async UI logic is also easily achieved without the
need to define any callback delegate interfaces.  This implicitly fixes
issues like project-chip#11917 (Refactor DeviceAttestationVerifier to have Async
interface).

ExampleCommissioningStateMachine takes the place of DeviceCommissioner
in chip-tool, providing feature parity.  chip-tool now uses the new code
to commission devices, and on success then places them into a
DeviceController for persistence and subsequent interaction.

Fixes project-chip#7951
msandstedt added a commit to msandstedt/connectedhomeip that referenced this issue Dec 22, 2021
The commissioning state machine operates without dependence on the
chip::Controller::DeviceCommissioner, CommissioneeDeviceProxy,
CASEClient or CASESessionManager objects.  And using the recently
introduced StateMachine utility in src/lib, the needed flexibility
for ecosystem-specific commissioning flows is available.

The state machine is separated into two primary resources:

* CommissioningStates.h with templates that can support all commissioners
* ExampleCommissioningStateMachine.h, a concrete implementation that
  uses the states and provides an example that apps can copy, modify,
  and extend

App implementations can add, remove and reorder states as necessary.
Arbitrarily complex async UI logic is also easily achieved without the
need to define any callback delegate interfaces.  This implicitly fixes
issues like project-chip#11917 (Refactor DeviceAttestationVerifier to have Async
interface).

ExampleCommissioningStateMachine takes the place of DeviceCommissioner
in chip-tool, providing feature parity.  chip-tool now uses the new code
to commission devices, and on success then places them into a
DeviceController for persistence and subsequent interaction.

Fixes project-chip#7951
msandstedt added a commit to msandstedt/connectedhomeip that referenced this issue Dec 22, 2021
The commissioning state machine operates without dependence on the
chip::Controller::DeviceCommissioner, CommissioneeDeviceProxy,
CASEClient or CASESessionManager objects.  And using the recently
introduced StateMachine utility in src/lib, the needed flexibility
for ecosystem-specific commissioning flows is available.

The state machine is separated into two primary resources:

* CommissioningStates.h with templates that can support all commissioners
* ExampleCommissioningStateMachine.h, a concrete implementation that
  uses the states and provides an example that apps can copy, modify,
  and extend

App implementations can add, remove and reorder states as necessary.
Arbitrarily complex async UI logic is also easily achieved without the
need to define any callback delegate interfaces.  This implicitly fixes
issues like project-chip#11917 (Refactor DeviceAttestationVerifier to have Async
interface).

ExampleCommissioningStateMachine takes the place of DeviceCommissioner
in chip-tool, providing feature parity.  chip-tool now uses the new code
to commission devices, and on success then places them into a
DeviceController for persistence and subsequent interaction.

Fixes project-chip#7951
msandstedt added a commit to msandstedt/connectedhomeip that referenced this issue Dec 22, 2021
The commissioning state machine operates without dependence on the
chip::Controller::DeviceCommissioner, CommissioneeDeviceProxy,
CASEClient or CASESessionManager objects.  And using the recently
introduced StateMachine utility in src/lib, the needed flexibility
for ecosystem-specific commissioning flows is available.

The state machine is separated into two primary resources:

* CommissioningStates.h with templates that can support all commissioners
* ExampleCommissioningStateMachine.h, a concrete implementation that
  uses the states and provides an example that apps can copy, modify,
  and extend

App implementations can add, remove and reorder states as necessary.
Arbitrarily complex async UI logic is also easily achieved without the
need to define any callback delegate interfaces.  This implicitly fixes
issues like project-chip#11917 (Refactor DeviceAttestationVerifier to have Async
interface).

ExampleCommissioningStateMachine takes the place of DeviceCommissioner
in chip-tool, providing feature parity.  chip-tool now uses the new code
to commission devices, and on success then places them into a
DeviceController for persistence and subsequent interaction.

Fixes project-chip#7951
msandstedt added a commit to msandstedt/connectedhomeip that referenced this issue Dec 23, 2021
The commissioning state machine operates without dependence on the
chip::Controller::DeviceCommissioner, CommissioneeDeviceProxy,
CASEClient or CASESessionManager objects.  And using the recently
introduced StateMachine utility in src/lib, the needed flexibility
for ecosystem-specific commissioning flows is available.

The state machine is separated into two primary resources:

* CommissioningStates.h with templates that can support all commissioners
* ExampleCommissioningStateMachine.h, a concrete implementation that
  uses the states and provides an example that apps can copy, modify,
  and extend

App implementations can add, remove and reorder states as necessary.
Arbitrarily complex async UI logic is also easily achieved without the
need to define any callback delegate interfaces.  This implicitly fixes
issues like project-chip#11917 (Refactor DeviceAttestationVerifier to have Async
interface).

ExampleCommissioningStateMachine takes the place of DeviceCommissioner
in chip-tool, providing feature parity.  chip-tool now uses the new code
to commission devices, and on success then places them into a
DeviceController for persistence and subsequent interaction.

Fixes project-chip#7951
msandstedt added a commit to msandstedt/connectedhomeip that referenced this issue Dec 23, 2021
The commissioning state machine operates without dependence on the
chip::Controller::DeviceCommissioner, CommissioneeDeviceProxy,
CASEClient or CASESessionManager objects.  And using the recently
introduced StateMachine utility in src/lib, the needed flexibility
for ecosystem-specific commissioning flows is available.

The state machine is separated into two primary resources:

* CommissioningStates.h with templates that can support all commissioners
* ExampleCommissioningStateMachine.h, a concrete implementation that
  uses the states and provides an example that apps can copy, modify,
  and extend

App implementations can add, remove and reorder states as necessary.
Arbitrarily complex async UI logic is also easily achieved without the
need to define any callback delegate interfaces.  This implicitly fixes
issues like project-chip#11917 (Refactor DeviceAttestationVerifier to have Async
interface).

ExampleCommissioningStateMachine takes the place of DeviceCommissioner
in chip-tool, providing feature parity.  chip-tool now uses the new code
to commission devices, and on success then places them into a
DeviceController for persistence and subsequent interaction.

Fixes project-chip#7951
msandstedt added a commit to msandstedt/connectedhomeip that referenced this issue Dec 23, 2021
The commissioning state machine operates without dependence on the
chip::Controller::DeviceCommissioner, CommissioneeDeviceProxy,
CASEClient or CASESessionManager objects.  And using the recently
introduced StateMachine utility in src/lib, the needed flexibility
for ecosystem-specific commissioning flows is available.

The state machine is separated into two primary resources:

* CommissioningStates.h with templates that can support all commissioners
* ExampleCommissioningStateMachine.h, a concrete implementation that
  uses the states and provides an example that apps can copy, modify,
  and extend

App implementations can add, remove and reorder states as necessary.
Arbitrarily complex async UI logic is also easily achieved without the
need to define any callback delegate interfaces.  This implicitly fixes
issues like project-chip#11917 (Refactor DeviceAttestationVerifier to have Async
interface).

ExampleCommissioningStateMachine takes the place of DeviceCommissioner
in chip-tool, providing feature parity.  chip-tool now uses the new code
to commission devices, and on success then places them into a
DeviceController for persistence and subsequent interaction.

Fixes project-chip#7951
msandstedt added a commit to msandstedt/connectedhomeip that referenced this issue Dec 23, 2021
The commissioning state machine operates without dependence on the
chip::Controller::DeviceCommissioner, CommissioneeDeviceProxy,
CASEClient or CASESessionManager objects.  And using the recently
introduced StateMachine utility in src/lib, the needed flexibility
for ecosystem-specific commissioning flows is available.

The state machine is separated into two primary resources:

* CommissioningStates.h with templates that can support all commissioners
* ExampleCommissioningStateMachine.h, a concrete implementation that
  uses the states and provides an example that apps can copy, modify,
  and extend

App implementations can add, remove and reorder states as necessary.
Arbitrarily complex async UI logic is also easily achieved without the
need to define any callback delegate interfaces.  This implicitly fixes
issues like project-chip#11917 (Refactor DeviceAttestationVerifier to have Async
interface).

ExampleCommissioningStateMachine takes the place of DeviceCommissioner
in chip-tool, providing feature parity.  chip-tool now uses the new code
to commission devices, and on success then places them into a
DeviceController for persistence and subsequent interaction.

Fixes project-chip#7951
msandstedt added a commit to msandstedt/connectedhomeip that referenced this issue Dec 23, 2021
The commissioning state machine operates without dependence on the
chip::Controller::DeviceCommissioner, CommissioneeDeviceProxy,
CASEClient or CASESessionManager objects.  And using the recently
introduced StateMachine utility in src/lib, the needed flexibility
for ecosystem-specific commissioning flows is available.

The state machine is separated into two primary resources:

* CommissioningStates.h with templates that can support all commissioners
* ExampleCommissioningStateMachine.h, a concrete implementation that
  uses the states and provides an example that apps can copy, modify,
  and extend

App implementations can add, remove and reorder states as necessary.
Arbitrarily complex async UI logic is also easily achieved without the
need to define any callback delegate interfaces.  This implicitly fixes
issues like project-chip#11917 (Refactor DeviceAttestationVerifier to have Async
interface).

ExampleCommissioningStateMachine takes the place of DeviceCommissioner
in chip-tool, providing feature parity.  chip-tool now uses the new code
to commission devices, and on success then places them into a
DeviceController for persistence and subsequent interaction.

Fixes project-chip#7951
msandstedt added a commit to msandstedt/connectedhomeip that referenced this issue Dec 30, 2021
The commissioning state machine operates without dependence on the
chip::Controller::DeviceCommissioner, CommissioneeDeviceProxy,
CASEClient or CASESessionManager objects.  And using the recently
introduced StateMachine utility in src/lib, the needed flexibility
for ecosystem-specific commissioning flows is available.

The state machine is separated into two primary resources:

* CommissioningStates.h with templates that can support all commissioners
* ExampleCommissioningStateMachine.h, a concrete implementation that
  uses the states and provides an example that apps can copy, modify,
  and extend

App implementations can add, remove and reorder states as necessary.
Arbitrarily complex async UI logic is also easily achieved without the
need to define any callback delegate interfaces.  This implicitly fixes
issues like project-chip#11917 (Refactor DeviceAttestationVerifier to have Async
interface).

ExampleCommissioningStateMachine takes the place of DeviceCommissioner
in chip-tool, providing feature parity.  chip-tool now uses the new code
to commission devices, and on success then places them into a
DeviceController for persistence and subsequent interaction.

Fixes project-chip#7951
@vijs
Copy link
Collaborator

vijs commented Jan 26, 2022

@tcarmelveilleux Can this issue be closed? Is there anything pending?

@kpschoedel kpschoedel added maybe done? Isssue may be complete/obsolete/not relevant anymore. Needs review to determine if to close or not. v1_secondary_triage and removed v1_triage_split_7 labels Jan 31, 2022
@woody-apple
Copy link
Contributor

@tcarmelveilleux Please re-open if needed

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
attestation maybe done? Isssue may be complete/obsolete/not relevant anymore. Needs review to determine if to close or not. V1.0
Projects
None yet
Development

No branches or pull requests

6 participants