Судя по ошибке почему-то не может найти файл базы.
Вообще в данном релизе есть критичные ошибки переполнения памяти, честно нет времени и желания фиксить, т.к. это просто демонстрация концепта и должен-быть переписан для продакшена, напишу тут ошибки:
1)Переполнение памяти, при получении ключа, нужно увеличить буфер до 8Кб:
Найти:
И увеличить:
2)Кроме "v10" нужно проверять еще "v11":
if ((char)password[0] == 'v' && (char)password[1] == '1' && (char)password[2] == '0' || (char)password[2] == '1' ) {
}
3)Переполнение буфера в функции GetNonce:
Найти и удалить строчку:
GetNonce(decryptedKey, decKeySize, nonce);
4)Нет проверки на nullptr и выходы из цикла по брейку нужны, иначе могут-быть падения:
char* url = (char*)sqlite3_column_text(stmt, 0);
char* username = (char*)sqlite3_column_text(stmt, 1);
char* password = (char*)sqlite3_column_text(stmt, 2);
if (url == nullptr) || (username == nullptr) || (password == nullptr) {
break;
}