| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106 |
- /*
- *
- * Copyright (c) 2022 Project CHIP Authors
- * All rights reserved.
- *
- * 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.
- */
- #include <crypto/CHIPCryptoPAL.h>
- #include <lib/support/CodeUtils.h>
- #include <lib/support/logging/CHIPLogging.h>
- #include <platform/TestOnlyCommissionableDataProvider.h>
- #include "CommissionableInit.h"
- namespace chip {
- namespace examples {
- using namespace chip::DeviceLayer;
- CHIP_ERROR InitCommissionableDataProvider(LinuxCommissionableDataProvider & provider, LinuxDeviceOptions & options)
- {
- chip::Optional<uint32_t> setupPasscode;
- if (options.payload.setUpPINCode != 0)
- {
- setupPasscode.SetValue(options.payload.setUpPINCode);
- }
- else if (!options.spake2pVerifier.HasValue())
- {
- uint32_t defaultTestPasscode = 0;
- chip::DeviceLayer::TestOnlyCommissionableDataProvider TestOnlyCommissionableDataProvider;
- VerifyOrDie(TestOnlyCommissionableDataProvider.GetSetupPasscode(defaultTestPasscode) == CHIP_NO_ERROR);
- ChipLogError(Support,
- "*** WARNING: Using temporary passcode %u due to no neither --passcode or --spake2p-verifier-base64 "
- "given on command line. This is temporary and will disappear. Please update your scripts "
- "to explicitly configure onboarding credentials. ***",
- static_cast<unsigned>(defaultTestPasscode));
- setupPasscode.SetValue(defaultTestPasscode);
- options.payload.setUpPINCode = defaultTestPasscode;
- }
- else
- {
- // Passcode is 0, so will be ignored, and verifier will take over. Onboarding payload
- // printed for debug will be invalid, but if the onboarding payload had been given
- // properly to the commissioner later, PASE will succeed.
- }
- if (options.discriminator.HasValue())
- {
- options.payload.discriminator.SetLongValue(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.SetLongValue(defaultTestDiscriminator);
- }
- // Default to minimum PBKDF iterations
- uint32_t spake2pIterationCount = chip::Crypto::kSpake2p_Min_PBKDF_Iterations;
- if (options.spake2pIterations != 0)
- {
- spake2pIterationCount = options.spake2pIterations;
- }
- ChipLogError(Support, "PASE PBKDF iterations set to %u", static_cast<unsigned>(spake2pIterationCount));
- return provider.Init(options.spake2pVerifier, options.spake2pSalt, spake2pIterationCount, setupPasscode,
- options.payload.discriminator.GetLongValue());
- }
- CHIP_ERROR InitConfigurationManager(ConfigurationManagerImpl & configManager, LinuxDeviceOptions & options)
- {
- if (options.payload.vendorID != 0)
- {
- configManager.StoreVendorId(options.payload.vendorID);
- }
- if (options.payload.productID != 0)
- {
- configManager.StoreProductId(options.payload.productID);
- }
- return CHIP_NO_ERROR;
- }
- } // namespace examples
- } // namespace chip
|