in uf2tool/tool.c [153:175]
void verify(HID_Dev *cmd, uint8_t *buf, int size, int offset) {
int maxSize = (cmd->pageSize / 2 - 12) * cmd->pageSize;
while (size > maxSize) {
verify(cmd, buf, maxSize, offset);
buf += maxSize;
offset += maxSize;
size -= maxSize;
}
int numpages = size / cmd->pageSize;
write32(cmd->buf + 8, offset);
write32(cmd->buf + 12, numpages);
talk_hid(cmd, HF2_CMD_CHKSUM_PAGES, 0, 8);
for (int i = 0; i < numpages; ++i) {
int sum = read16(cmd->buf + 4 + i * 2);
uint16_t crc = 0;
for (int j = 0; j < cmd->pageSize; ++j) {
crc = add_crc(buf[j], crc);
}
if (sum != crc)
fatal("verification failed");
buf += cmd->pageSize;
}
}