64class DefinitionCache {
68 bool save(uint32_t definitionId,
69 uint16_t definitionVersion,
71 const uint8_t *expectedSha256);
72 bool load(uint32_t definitionId,
73 uint16_t definitionVersion,
77 bool contains(uint32_t definitionId, uint16_t definitionVersion)
const;
78 bool erase(uint32_t definitionId, uint16_t definitionVersion);
81 bool beginStagedSave(uint32_t definitionId,
82 uint16_t definitionVersion,
84 const uint8_t *sha256,
91 uint32_t definitionId,
92 uint16_t definitionVersion,
97 uint32_t definitionId,
98 uint16_t definitionVersion,
100 const uint8_t *sha256);
104 bool calculateAndVerify(
const char *json,
106 const uint8_t *expectedSha256,
107 uint8_t *calculatedSha256)
const;
108 bool readActiveHeader(uint8_t index,
110 uint8_t *activeVariant =
nullptr,
111 uint16_t *chunkCount =
nullptr,
112 uint16_t *chunkSize =
nullptr)
const;
113 bool loadAndRepairActiveHeader(uint8_t index,
115 uint8_t *activeVariant =
nullptr,
116 uint16_t *chunkCount =
nullptr,
117 uint16_t *chunkSize =
nullptr)
const;
118 bool loadHeader(uint8_t index,
121 uint16_t *chunkCount =
nullptr,
122 uint16_t *chunkSize =
nullptr)
const;
123 bool saveSlot(uint8_t index,
124 uint32_t definitionId,
125 uint16_t definitionVersion,
128 const uint8_t *sha256);
129 bool saveHeader(uint8_t index,
134 bool loadPayload(uint8_t slot,
140 size_t jsonSize)
const;
141 bool eraseChunks(uint8_t index, uint8_t variant);
142 bool eraseVariant(uint8_t index, uint8_t variant);
143 bool eraseLegacySlot(uint8_t index);
144 bool eraseSlot(uint8_t index);
145 bool setActiveVariant(uint8_t index, uint8_t variant);
146 bool variantExists(uint8_t index, uint8_t variant)
const;
147 bool slotExists(uint8_t index)
const;
148 int findSlot(uint32_t definitionId,
149 uint16_t definitionVersion,
151 int findFreeSlot()
const;
152 static uint8_t otherVariant(uint8_t variant);
153 static bool isValidVariant(uint8_t variant);
155 static bool makeActKey(uint8_t index,
char *output,
size_t outputSize);
156 static bool makeHeaderKey(uint8_t index,
160 static bool makeChunkKey(uint8_t index,
165 static bool makeLegacyHeaderKey(uint8_t index,
168 static bool makeLegacyChunkKey(uint8_t index,