|
17 | 17 | #include <tinycrypt/ecc_dsa.h> |
18 | 18 | #endif |
19 | 19 |
|
| 20 | +#if SL_MATTER_USE_FLASH_STORE |
| 21 | +#include <headers/ProvisionStorage.h> |
| 22 | +#include <provision/flash/ProvisionStorageFlash.h> |
| 23 | +#endif // SL_MATTER_USE_FLASH_STORE |
| 24 | + |
20 | 25 | #include <cstdio> |
21 | 26 | #include <cstring> |
22 | 27 |
|
@@ -64,10 +69,27 @@ CHIP_ERROR FormatMatterOidUtf8DerHex(char * destination, size_t destinationSize, |
64 | 69 |
|
65 | 70 | CHIP_ERROR ReadKey(MutableByteSpan & key) |
66 | 71 | { |
| 72 | +#if SL_MATTER_USE_FLASH_STORE == 1 |
| 73 | + size_t size = 0; |
| 74 | + CHIP_ERROR err = Flash::Get(Parameters::ID::kDacKey, key.data(), key.size(), size); |
| 75 | + ReturnErrorOnFailure(err); |
| 76 | + key.reduce_size(size); |
| 77 | + return err; |
| 78 | +#else |
67 | 79 | size_t size = 0; |
68 | 80 | ReturnErrorOnFailure(SilabsConfig::ReadConfigValueBin(SilabsConfig::kConfigKey_Creds_KeyId, key.data(), key.size(), size)); |
69 | 81 | key.reduce_size(size); |
70 | 82 | return CHIP_NO_ERROR; |
| 83 | +#endif // SL_MATTER_USE_FLASH_STORE |
| 84 | +} |
| 85 | + |
| 86 | +CHIP_ERROR WriteKey(ByteSpan key) |
| 87 | +{ |
| 88 | +#if SL_MATTER_USE_FLASH_STORE == 1 |
| 89 | + return Flash::Set(Parameters::ID::kDacKey, key.data(), key.size()); |
| 90 | +#else |
| 91 | + return SilabsConfig::WriteConfigValueBin(SilabsConfig::kConfigKey_Creds_KeyId, key.data(), key.size()); |
| 92 | +#endif // SL_MATTER_USE_FLASH_STORE |
71 | 93 | } |
72 | 94 |
|
73 | 95 | #if defined(SLI_SI91X_MCU_INTERFACE) && defined(SL_MBEDTLS_USE_TINYCRYPT) && SL_MBEDTLS_USE_TINYCRYPT |
@@ -146,7 +168,7 @@ CHIP_ERROR ProvisionCrypto::Hash256(const ByteSpan & input, MutableByteSpan & ou |
146 | 168 | CHIP_ERROR ProvisionCrypto::ImportDeviceAttestationKey(const ByteSpan & key) |
147 | 169 | { |
148 | 170 | VerifyOrReturnError(!key.empty() && key.size() <= kDeviceAttestationKeySizeMax, CHIP_ERROR_INVALID_ARGUMENT); |
149 | | - return SilabsConfig::WriteConfigValueBin(SilabsConfig::kConfigKey_Creds_KeyId, key.data(), key.size()); |
| 171 | + return WriteKey(key); |
150 | 172 | } |
151 | 173 |
|
152 | 174 | CHIP_ERROR ProvisionCrypto::GenerateDeviceAttestationCSR(uint16_t vid, uint16_t pid, const CharSpan & commonName, |
@@ -201,8 +223,7 @@ CHIP_ERROR ProvisionCrypto::GenerateDeviceAttestationCSR(uint16_t vid, uint16_t |
201 | 223 | uint8_t encodedKey[kDeviceAttestationKeySizeMax] = { 0 }; |
202 | 224 | const int encodedSize = mbedtls_pk_write_key_der(&key.context, encodedKey, sizeof(encodedKey)); |
203 | 225 | VerifyOrReturnError(encodedSize > 0 && static_cast<size_t>(encodedSize) <= sizeof(encodedKey), CHIP_ERROR_INTERNAL); |
204 | | - return SilabsConfig::WriteConfigValueBin(SilabsConfig::kConfigKey_Creds_KeyId, encodedKey + sizeof(encodedKey) - encodedSize, |
205 | | - encodedSize); |
| 226 | + return WriteKey(ByteSpan(encodedKey + sizeof(encodedKey) - encodedSize, static_cast<size_t>(encodedSize))); |
206 | 227 | #endif |
207 | 228 | } |
208 | 229 |
|
|
0 commit comments