Skip to content

Commit

Permalink
Fix Linux example discriminators to default to 3840 (project-chip#16477)
Browse files Browse the repository at this point in the history
* Fix Linux example discriminators to default to 3840

- Previous change lost the "default" discriminator people
  were using for a long time (3840) from when all-clusters-app
  is run without specifying the discriminator argument.
- All users should always specify a non-default discriminator,
  but bringing back the "default" temporarily to avoid
  issues in test procedures.
- Cert tests and proper usage of testing scripts always explicitly
  set discriminator, so the issue does not arise in CI

Testing done:

- Running all-clusters-app with no args uses 3840
- Cert tests pass

* Restyled by clang-format

Co-authored-by: Restyled.io <commits@restyled.io>
  • Loading branch information
tcarmelveilleux and restyled-commits authored Mar 20, 2022
1 parent 01503be commit 193b4d0
Show file tree
Hide file tree
Showing 3 changed files with 20 additions and 1 deletion.
18 changes: 18 additions & 0 deletions examples/platform/linux/AppMain.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -177,6 +177,24 @@ CHIP_ERROR InitCommissionableDataProvider(LinuxCommissionableDataProvider & prov
// properly to the commissioner later, PASE will succeed.
}

if (options.discriminator.HasValue())
{
options.payload.discriminator = options.discriminator.Value();
}
else
{
uint16_t defaultTestDiscriminator = 0;
chip::DeviceLayer::TestOnlyCommissionableDataProvider TestOnlyCommissionableDataProvider;
VerifyOrDie(TestOnlyCommissionableDataProvider.GetSetupDiscriminator(defaultTestDiscriminator) == CHIP_NO_ERROR);

ChipLogError(Support,
"*** WARNING: Using temporary test discriminator %u due to --discriminator not "
"given on command line. This is temporary and will disappear. Please update your scripts "
"to explicitly configure discriminator. ***",
static_cast<unsigned>(defaultTestDiscriminator));
options.payload.discriminator = defaultTestDiscriminator;
}

// Default to minimum PBKDF iterations
uint32_t spake2pIterationCount = chip::Crypto::kSpake2p_Min_PBKDF_Iterations;
if (options.spake2pIterations != 0)
Expand Down
2 changes: 1 addition & 1 deletion examples/platform/linux/Options.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -239,7 +239,7 @@ bool HandleOption(const char * aProgram, OptionSet * aOptions, int aIdentifier,
}
else
{
LinuxDeviceOptions::GetInstance().payload.discriminator = value;
LinuxDeviceOptions::GetInstance().discriminator.SetValue(value);
}
break;
}
Expand Down
1 change: 1 addition & 0 deletions examples/platform/linux/Options.h
Original file line number Diff line number Diff line change
Expand Up @@ -36,6 +36,7 @@
struct LinuxDeviceOptions
{
chip::SetupPayload payload;
chip::Optional<uint16_t> discriminator;
chip::Optional<std::vector<uint8_t>> spake2pVerifier;
chip::Optional<std::vector<uint8_t>> spake2pSalt;
uint32_t spake2pIterations = 0; // When not provided (0), will default elsewhere
Expand Down

0 comments on commit 193b4d0

Please sign in to comment.