/*
 *
 *    Copyright (c) 2020 Project CHIP Authors
 *    Copyright (c) 2019-2020 Google LLC.
 *    Copyright (c) 2018 Nest Labs, Inc.
 *
 *    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 <platform/CHIPDeviceLayer.h>

namespace chip {
namespace DeviceLayer {
namespace Internal {

#if CHIP_DEVICE_CONFIG_ENABLE_TEST_DEVICE_IDENTITY
const uint64_t TestDeviceId                       = 12344321;
const uint64_t TestFabricId                       = 0;
const uint8_t TestDeviceCert[]                    = { 0 };
const uint8_t TestDeviceIntermediateCACert[]      = { 0 };
const uint8_t TestDevicePrivateKey[]              = { 0 };
const uint16_t TestDeviceCertLength               = sizeof(TestDeviceCert);
const uint16_t TestDeviceIntermediateCACertLength = sizeof(TestDeviceIntermediateCACert);
const uint16_t TestDevicePrivateKeyLength         = sizeof(TestDevicePrivateKey);
#endif // CHIP_DEVICE_CONFIG_ENABLE_TEST_DEVICE_IDENTITY

} // namespace Internal
} // namespace DeviceLayer
} // namespace chip
