Browse Source

fix(sqlite): enable database encryption in Electron app

The app is failing to initialize encryption because:
- Database is created with 'no-encryption' mode
- Capacitor SQLite plugin's encryption methods are available but unused
- Secret table exists but encryption isn't properly initialized

This commit will:
- Enable encryption in database connection options
- Initialize encryption secret before database open
- Use Capacitor SQLite plugin's encryption methods
- Ensure secret table is properly initialized

This fixes the "No initial encryption supported" error that occurs
when trying to save new identities or access encrypted data.

Technical details:
- Changes connection options to use 'secret' encryption mode
- Adds setEncryptionSecret call before database open
- Maintains existing secret table structure
- Uses Capacitor SQLite plugin's native encryption support
sql-absurd-sql-further
Matthew Raymer 3 days ago
parent
commit
5d12c76693
  1. 8
      electron/src/rt/sqlite-migrations.ts

8
electron/src/rt/sqlite-migrations.ts

@ -443,9 +443,7 @@ const MIGRATIONS: Migration[] = [
); );
-- Insert initial secret only if no secret exists -- Insert initial secret only if no secret exists
INSERT INTO secret (id, secretBase64) INSERT OR IGNORE INTO secret (id, secretBase64) VALUES (1, '${INITIAL_SECRET}');
SELECT 1, '${INITIAL_SECRET}'
WHERE NOT EXISTS (SELECT 1 FROM secret WHERE id = 1);
-- Settings table for user preferences and app state -- Settings table for user preferences and app state
CREATE TABLE IF NOT EXISTS settings ( CREATE TABLE IF NOT EXISTS settings (
@ -481,9 +479,7 @@ const MIGRATIONS: Migration[] = [
); );
-- Insert default API server setting only if no settings exist -- Insert default API server setting only if no settings exist
INSERT INTO settings (id, apiServer) INSERT OR IGNORE INTO settings (id, apiServer) VALUES (1, '${DEFAULT_ENDORSER_API_SERVER}');
SELECT 1, '${DEFAULT_ENDORSER_API_SERVER}'
WHERE NOT EXISTS (SELECT 1 FROM settings WHERE id = 1);
CREATE INDEX IF NOT EXISTS idx_settings_accountDid ON settings(accountDid); CREATE INDEX IF NOT EXISTS idx_settings_accountDid ON settings(accountDid);

Loading…
Cancel
Save