diff --git a/VERSION b/VERSION index 62db915f7..84b7a4d7e 100644 --- a/VERSION +++ b/VERSION @@ -1,3 +1,3 @@ version=3.48.0 -artifactVersion=3.48.0.0-SNAPSHOT -sqliteMCVersion=2.0.2 \ No newline at end of file +artifactVersion=3.48.0.0 +sqliteMCVersion=2.0.2 diff --git a/pom.xml b/pom.xml index d077e3e9d..9cf614516 100644 --- a/pom.xml +++ b/pom.xml @@ -4,7 +4,7 @@ 4.0.0 io.github.willena sqlite-jdbc - 3.48.0.0-SNAPSHOT + 3.48.0.0 SQLite JDBC SQLite JDBC library with encryption and authentication support https://github.com/Willena/sqlite-jdbc-crypt diff --git a/src/main/java/org/sqlite/SQLiteConfig.java b/src/main/java/org/sqlite/SQLiteConfig.java index d4c6707d9..f56190398 100755 --- a/src/main/java/org/sqlite/SQLiteConfig.java +++ b/src/main/java/org/sqlite/SQLiteConfig.java @@ -633,18 +633,22 @@ public enum Pragma { "plaintext_header_size", "Allows to configure the cipher scheme to keep the database header partially unencrypted", null), - TCOST("tcost", - "Allows to specify the number of iterations used to derive the key material with the Argon2id function.", - null), - MCOST("mcost", - "Allows to specify the amount of memory used to derive the key material with the Argon2id function. The amount is specified as the number of kB memory blocks.", - null), - PCOST("pcost", - "Allows to modify the parallelism aka the number of threads used to derive the key material with the Argon2id function. The value corresponds to the hash algoritm for HMAC calculation" , - null), - ALGORITHM("algorithm", - "Allows to modify the AEGIS algorithm variant used for encryption", - null); + TCOST( + "tcost", + "Allows to specify the number of iterations used to derive the key material with the Argon2id function.", + null), + MCOST( + "mcost", + "Allows to specify the amount of memory used to derive the key material with the Argon2id function. The amount is specified as the number of kB memory blocks.", + null), + PCOST( + "pcost", + "Allows to modify the parallelism aka the number of threads used to derive the key material with the Argon2id function. The value corresponds to the hash algoritm for HMAC calculation", + null), + ALGORITHM( + "algorithm", + "Allows to modify the AEGIS algorithm variant used for encryption", + null); public final String pragmaName; public final String[] choices; diff --git a/src/main/java/org/sqlite/mc/SQLiteMCAegisConfig.java b/src/main/java/org/sqlite/mc/SQLiteMCAegisConfig.java index 3e71f491b..d3be105e8 100644 --- a/src/main/java/org/sqlite/mc/SQLiteMCAegisConfig.java +++ b/src/main/java/org/sqlite/mc/SQLiteMCAegisConfig.java @@ -28,7 +28,7 @@ public SQLiteMCAegisConfig setAegisAlgorithm(AegisAlgorithm algorithm) { } public static SQLiteMCAegisConfig getDefault() { - return new SQLiteMCAegisConfig() + return new SQLiteMCAegisConfig() .setAegisAlgorithm(AegisAlgorithm.AEGIS_256) .setTCost(2) .setMCost(19456) diff --git a/src/main/java/org/sqlite/mc/SQLiteMCConfig.java b/src/main/java/org/sqlite/mc/SQLiteMCConfig.java index dfc51473c..46e28531b 100644 --- a/src/main/java/org/sqlite/mc/SQLiteMCConfig.java +++ b/src/main/java/org/sqlite/mc/SQLiteMCConfig.java @@ -9,7 +9,6 @@ import java.util.Map; import java.util.Properties; import java.util.function.Function; - import org.sqlite.SQLiteConfig; import org.sqlite.SQLiteConfigFactory; @@ -26,24 +25,24 @@ public class SQLiteMCConfig extends SQLiteConfig { } private static final Pragma[] CIPHER_PRAGMA_ORDER = - new Pragma[]{ - Pragma.CIPHER, - Pragma.LEGACY, - Pragma.HMAC_CHECK, - Pragma.MC_LEGACY_WAL, - Pragma.LEGACY_PAGE_SIZE, - Pragma.KDF_ITER, - Pragma.FAST_KDF_ITER, - Pragma.HMAC_USE, - Pragma.HMAC_PGNO, - Pragma.HMAC_SALT_MASK, - Pragma.KDF_ALGORITHM, - Pragma.HMAC_ALGORITHM, - Pragma.PLAINTEXT_HEADER_SIZE, - Pragma.TCOST, - Pragma.MCOST, - Pragma.PCOST, - Pragma.ALGORITHM + new Pragma[] { + Pragma.CIPHER, + Pragma.LEGACY, + Pragma.HMAC_CHECK, + Pragma.MC_LEGACY_WAL, + Pragma.LEGACY_PAGE_SIZE, + Pragma.KDF_ITER, + Pragma.FAST_KDF_ITER, + Pragma.HMAC_USE, + Pragma.HMAC_PGNO, + Pragma.HMAC_SALT_MASK, + Pragma.KDF_ALGORITHM, + Pragma.HMAC_ALGORITHM, + Pragma.PLAINTEXT_HEADER_SIZE, + Pragma.TCOST, + Pragma.MCOST, + Pragma.PCOST, + Pragma.ALGORITHM }; private SQLiteMCConfig(Properties existingProperties) { @@ -89,9 +88,12 @@ protected void setupConnection( String property = pragmaTable.getProperty(pragma.getPragmaName(), null); if (property != null) { - Function converter = CONVERTERS.getOrDefault(pragma, IDENTITY_CONVERTER); + Function converter = + CONVERTERS.getOrDefault(pragma, IDENTITY_CONVERTER); statement.execute( - String.format("PRAGMA %s = %s", pragma.getPragmaName(), converter.apply(property))); + String.format( + "PRAGMA %s = %s", + pragma.getPragmaName(), converter.apply(property))); } } } diff --git a/src/main/java/org/sqlite/mc/SQLiteMCSqlCipherConfig.java b/src/main/java/org/sqlite/mc/SQLiteMCSqlCipherConfig.java index 0172e67a0..f03b49b63 100644 --- a/src/main/java/org/sqlite/mc/SQLiteMCSqlCipherConfig.java +++ b/src/main/java/org/sqlite/mc/SQLiteMCSqlCipherConfig.java @@ -76,7 +76,8 @@ public SQLiteMCSqlCipherConfig setHmacAlgorithm(HmacAlgorithm value) { @Override public SQLiteMCSqlCipherConfig setPlaintextHeaderSize(int value) { if (!isValid(value, 0, 100) || value % 16 != 0) { - throw new IllegalArgumentException("PlainTextHeaderSize must be a multiple of 16 and between 0 and 100"); + throw new IllegalArgumentException( + "PlainTextHeaderSize must be a multiple of 16 and between 0 and 100"); } super.setPlaintextHeaderSize(value); return this; diff --git a/src/test/java/org/sqlite/mc/AegisAlgorithmTest.java b/src/test/java/org/sqlite/mc/AegisAlgorithmTest.java index 443fa43b6..7790ac4f4 100644 --- a/src/test/java/org/sqlite/mc/AegisAlgorithmTest.java +++ b/src/test/java/org/sqlite/mc/AegisAlgorithmTest.java @@ -1,10 +1,10 @@ package org.sqlite.mc; -import org.junit.jupiter.api.Test; - import static org.assertj.core.api.AssertionsForClassTypes.assertThat; import static org.junit.jupiter.api.Assertions.*; +import org.junit.jupiter.api.Test; + class AegisAlgorithmTest { @Test @@ -12,4 +12,4 @@ void getValue() { assertThat(AegisAlgorithm.AEGIS_256X4.getStringValue()).isEqualTo("aegis-256x4"); assertThat(AegisAlgorithm.AEGIS_256X4.getInValue()).isEqualTo(6); } -} \ No newline at end of file +} diff --git a/src/test/java/org/sqlite/mc/CipherAlgorithmTest.java b/src/test/java/org/sqlite/mc/CipherAlgorithmTest.java index 1c6685471..963b6a6a2 100644 --- a/src/test/java/org/sqlite/mc/CipherAlgorithmTest.java +++ b/src/test/java/org/sqlite/mc/CipherAlgorithmTest.java @@ -1,14 +1,14 @@ package org.sqlite.mc; -import org.junit.jupiter.api.Test; - import static org.assertj.core.api.AssertionsForClassTypes.assertThat; import static org.junit.jupiter.api.Assertions.*; +import org.junit.jupiter.api.Test; + class CipherAlgorithmTest { @Test void getValue() { assertThat(CipherAlgorithm.AEGIS.getValue()).isEqualTo("aegis"); } -} \ No newline at end of file +} diff --git a/src/test/java/org/sqlite/mc/HmacAlgorithmTest.java b/src/test/java/org/sqlite/mc/HmacAlgorithmTest.java index 65a039834..3ac38c7f4 100644 --- a/src/test/java/org/sqlite/mc/HmacAlgorithmTest.java +++ b/src/test/java/org/sqlite/mc/HmacAlgorithmTest.java @@ -1,14 +1,14 @@ package org.sqlite.mc; -import org.junit.jupiter.api.Test; - import static org.assertj.core.api.AssertionsForClassTypes.assertThat; import static org.junit.jupiter.api.Assertions.*; +import org.junit.jupiter.api.Test; + class HmacAlgorithmTest { @Test void getValue() { assertThat(HmacAlgorithm.SHA256.getValue()).isEqualTo(1); } -} \ No newline at end of file +} diff --git a/src/test/java/org/sqlite/mc/HmacPgnoTest.java b/src/test/java/org/sqlite/mc/HmacPgnoTest.java index 796c16331..fcd7d3674 100644 --- a/src/test/java/org/sqlite/mc/HmacPgnoTest.java +++ b/src/test/java/org/sqlite/mc/HmacPgnoTest.java @@ -1,14 +1,14 @@ package org.sqlite.mc; -import org.junit.jupiter.api.Test; - import static org.assertj.core.api.AssertionsForClassTypes.assertThat; import static org.junit.jupiter.api.Assertions.*; +import org.junit.jupiter.api.Test; + class HmacPgnoTest { @Test void getValue() { assertThat(HmacPgno.LITTLE_ENDIAN.getValue()).isEqualTo(1); } -} \ No newline at end of file +} diff --git a/src/test/java/org/sqlite/mc/KdfAlgorithmTest.java b/src/test/java/org/sqlite/mc/KdfAlgorithmTest.java index fc25b6154..f0eb71e82 100644 --- a/src/test/java/org/sqlite/mc/KdfAlgorithmTest.java +++ b/src/test/java/org/sqlite/mc/KdfAlgorithmTest.java @@ -1,14 +1,14 @@ package org.sqlite.mc; -import org.junit.jupiter.api.Test; - import static org.assertj.core.api.AssertionsForClassTypes.assertThat; import static org.junit.jupiter.api.Assertions.*; +import org.junit.jupiter.api.Test; + class KdfAlgorithmTest { @Test void getValue() { assertThat(KdfAlgorithm.SHA256.getValue()).isEqualTo(1); } -} \ No newline at end of file +} diff --git a/src/test/java/org/sqlite/mc/SQLiteMCAegisConfigTest.java b/src/test/java/org/sqlite/mc/SQLiteMCAegisConfigTest.java index 1fe34b61e..81cbef81b 100644 --- a/src/test/java/org/sqlite/mc/SQLiteMCAegisConfigTest.java +++ b/src/test/java/org/sqlite/mc/SQLiteMCAegisConfigTest.java @@ -1,20 +1,20 @@ package org.sqlite.mc; -import org.junit.jupiter.api.Test; -import org.sqlite.SQLiteConfig; - -import java.util.Properties; - import static org.assertj.core.api.AssertionsForClassTypes.assertThat; import static org.assertj.core.api.AssertionsForClassTypes.assertThatThrownBy; import static org.junit.jupiter.api.Assertions.*; +import java.util.Properties; +import org.junit.jupiter.api.Test; +import org.sqlite.SQLiteConfig; + class SQLiteMCAegisConfigTest { @Test void setMCost() { SQLiteMCAegisConfig aegisConfig = new SQLiteMCAegisConfig(); - assertThatThrownBy( () -> aegisConfig.setMCost(0)).isInstanceOf(IllegalArgumentException.class); + assertThatThrownBy(() -> aegisConfig.setMCost(0)) + .isInstanceOf(IllegalArgumentException.class); aegisConfig.setMCost(2); Properties props = aegisConfig.build().toProperties(); @@ -24,7 +24,8 @@ void setMCost() { @Test void setPCost() { SQLiteMCAegisConfig aegisConfig = new SQLiteMCAegisConfig(); - assertThatThrownBy( () -> aegisConfig.setPCost(0)).isInstanceOf(IllegalArgumentException.class); + assertThatThrownBy(() -> aegisConfig.setPCost(0)) + .isInstanceOf(IllegalArgumentException.class); aegisConfig.setPCost(2); Properties props = aegisConfig.build().toProperties(); @@ -34,7 +35,8 @@ void setPCost() { @Test void setTCost() { SQLiteMCAegisConfig aegisConfig = new SQLiteMCAegisConfig(); - assertThatThrownBy( () -> aegisConfig.setTCost(0)).isInstanceOf(IllegalArgumentException.class); + assertThatThrownBy(() -> aegisConfig.setTCost(0)) + .isInstanceOf(IllegalArgumentException.class); aegisConfig.setTCost(2); Properties props = aegisConfig.build().toProperties(); @@ -47,18 +49,20 @@ void setAegisAlgorithm() { aegisConfig.setAegisAlgorithm(AegisAlgorithm.AEGIS_256X2); Properties props = aegisConfig.build().toProperties(); - assertThat(props.get(SQLiteConfig.Pragma.ALGORITHM.pragmaName)).isEqualTo(AegisAlgorithm.AEGIS_256X2.getStringValue()); + assertThat(props.get(SQLiteConfig.Pragma.ALGORITHM.pragmaName)) + .isEqualTo(AegisAlgorithm.AEGIS_256X2.getStringValue()); } @Test void getDefault() { SQLiteMCAegisConfig defaultConfig = SQLiteMCAegisConfig.getDefault(); Properties props = defaultConfig.build().toProperties(); - assertThat(props.get(SQLiteConfig.Pragma.ALGORITHM.pragmaName)).isEqualTo(AegisAlgorithm.AEGIS_256.getStringValue()); + assertThat(props.get(SQLiteConfig.Pragma.ALGORITHM.pragmaName)) + .isEqualTo(AegisAlgorithm.AEGIS_256.getStringValue()); assertThat(props.get(SQLiteConfig.Pragma.TCOST.pragmaName)).isEqualTo("2"); assertThat(props.get(SQLiteConfig.Pragma.MCOST.pragmaName)).isEqualTo("19456"); assertThat(props.get(SQLiteConfig.Pragma.PCOST.pragmaName)).isEqualTo("1"); assertThat(props.get(SQLiteConfig.Pragma.CIPHER.pragmaName)).isEqualTo("aegis"); } -} \ No newline at end of file +} diff --git a/src/test/java/org/sqlite/mc/SQLiteMCAscon128ConfigTest.java b/src/test/java/org/sqlite/mc/SQLiteMCAscon128ConfigTest.java index 01970d5d1..31f341aba 100644 --- a/src/test/java/org/sqlite/mc/SQLiteMCAscon128ConfigTest.java +++ b/src/test/java/org/sqlite/mc/SQLiteMCAscon128ConfigTest.java @@ -1,32 +1,31 @@ package org.sqlite.mc; -import org.junit.jupiter.api.Test; -import org.sqlite.SQLiteConfig; - -import java.util.Properties; - import static org.assertj.core.api.AssertionsForClassTypes.assertThat; import static org.assertj.core.api.AssertionsForClassTypes.assertThatThrownBy; import static org.junit.jupiter.api.Assertions.*; +import java.util.Properties; +import org.junit.jupiter.api.Test; +import org.sqlite.SQLiteConfig; + class SQLiteMCAscon128ConfigTest { @Test void setKdfIter() { SQLiteMCAscon128Config config = new SQLiteMCAscon128Config(); - assertThatThrownBy( () -> config.setKdfIter(0)).isInstanceOf(IllegalArgumentException.class); + assertThatThrownBy(() -> config.setKdfIter(0)).isInstanceOf(IllegalArgumentException.class); config.setKdfIter(2); Properties props = config.build().toProperties(); - assertThat(props.get(SQLiteConfig.Pragma.KDF_ITER.pragmaName)).isEqualTo( "2"); + assertThat(props.get(SQLiteConfig.Pragma.KDF_ITER.pragmaName)).isEqualTo("2"); } @Test void getDefault() { SQLiteMCAscon128Config config = SQLiteMCAscon128Config.getDefault(); Properties props = config.build().toProperties(); - assertThat(props.get(SQLiteConfig.Pragma.KDF_ITER.pragmaName)).isEqualTo( "64007"); - assertThat(props.get(SQLiteConfig.Pragma.CIPHER.pragmaName)).isEqualTo( "ascon128"); + assertThat(props.get(SQLiteConfig.Pragma.KDF_ITER.pragmaName)).isEqualTo("64007"); + assertThat(props.get(SQLiteConfig.Pragma.CIPHER.pragmaName)).isEqualTo("ascon128"); } -} \ No newline at end of file +} diff --git a/src/test/java/org/sqlite/mc/SQLiteMCChacha20ConfigTest.java b/src/test/java/org/sqlite/mc/SQLiteMCChacha20ConfigTest.java index b3f85ce0b..cd6419a95 100644 --- a/src/test/java/org/sqlite/mc/SQLiteMCChacha20ConfigTest.java +++ b/src/test/java/org/sqlite/mc/SQLiteMCChacha20ConfigTest.java @@ -3,11 +3,9 @@ import static org.assertj.core.api.Assertions.assertThat; import static org.assertj.core.api.Assertions.assertThatExceptionOfType; import static org.assertj.core.api.AssertionsForClassTypes.assertThatThrownBy; -import static org.junit.jupiter.api.Assertions.assertThrows; import java.math.BigInteger; import java.util.Properties; - import org.junit.jupiter.api.Test; import org.junit.jupiter.api.condition.DisabledIfSystemProperty; import org.sqlite.SQLiteConfig; @@ -40,11 +38,11 @@ private static byte[] toBytes(String hexString) { return byteArray; } - @Test void setLegacy() { SQLiteMCChacha20Config config = new SQLiteMCChacha20Config(); - assertThatThrownBy(() -> config.setLegacy(5555)).isInstanceOf(IllegalArgumentException.class); + assertThatThrownBy(() -> config.setLegacy(5555)) + .isInstanceOf(IllegalArgumentException.class); assertThatThrownBy(() -> config.setLegacy(-1)).isInstanceOf(IllegalArgumentException.class); config.setLegacy(1); @@ -56,8 +54,10 @@ void setLegacy() { @Test void setLegacyPageSize() { SQLiteMCChacha20Config config = new SQLiteMCChacha20Config(); - assertThatThrownBy(() -> config.setLegacyPageSize(65537)).isInstanceOf(IllegalArgumentException.class); - assertThatThrownBy(() -> config.setLegacyPageSize(-1)).isInstanceOf(IllegalArgumentException.class); + assertThatThrownBy(() -> config.setLegacyPageSize(65537)) + .isInstanceOf(IllegalArgumentException.class); + assertThatThrownBy(() -> config.setLegacyPageSize(-1)) + .isInstanceOf(IllegalArgumentException.class); config.setLegacyPageSize(1); Properties props = config.build().toProperties(); @@ -68,7 +68,8 @@ void setLegacyPageSize() { @Test void setKdfIter() { SQLiteMCChacha20Config config = new SQLiteMCChacha20Config(); - assertThatThrownBy(() -> config.setKdfIter(-1)).isInstanceOf(IllegalArgumentException.class); + assertThatThrownBy(() -> config.setKdfIter(-1)) + .isInstanceOf(IllegalArgumentException.class); config.setKdfIter(1); Properties props = config.build().toProperties(); @@ -106,7 +107,6 @@ void getDefault() { assertThat(props.get(SQLiteConfig.Pragma.KDF_ITER.pragmaName)).isEqualTo("64007"); assertThat(props.get(SQLiteConfig.Pragma.LEGACY_PAGE_SIZE.pragmaName)).isEqualTo("4096"); assertThat(props.get(SQLiteConfig.Pragma.CIPHER.pragmaName)).isEqualTo("chacha20"); - } @Test @@ -118,7 +118,5 @@ void getSqlleetDefaults() { assertThat(props.get(SQLiteConfig.Pragma.KDF_ITER.pragmaName)).isEqualTo("12345"); assertThat(props.get(SQLiteConfig.Pragma.LEGACY_PAGE_SIZE.pragmaName)).isEqualTo("4096"); assertThat(props.get(SQLiteConfig.Pragma.CIPHER.pragmaName)).isEqualTo("chacha20"); - } - } diff --git a/src/test/java/org/sqlite/mc/SQLiteMCConfigTest.java b/src/test/java/org/sqlite/mc/SQLiteMCConfigTest.java index 94a275443..0464894ec 100644 --- a/src/test/java/org/sqlite/mc/SQLiteMCConfigTest.java +++ b/src/test/java/org/sqlite/mc/SQLiteMCConfigTest.java @@ -5,7 +5,6 @@ import static org.sqlite.SQLiteConfig.Pragma.LEGACY_PAGE_SIZE; import java.util.Properties; - import org.junit.jupiter.api.Test; import org.sqlite.SQLiteConfig; import org.sqlite.SQLiteConfigFactory; @@ -42,7 +41,7 @@ void isValid() { @Test void toHexString() { - assertThat(SQLiteMCConfig.Builder.toHexString(new byte[]{12})).isEqualTo("0c"); + assertThat(SQLiteMCConfig.Builder.toHexString(new byte[] {12})).isEqualTo("0c"); } @Test @@ -56,8 +55,10 @@ void fromProperties() { @Test void setPlaintextHeaderSize() { - Properties props = new SQLiteMCConfig.Builder().setPlaintextHeaderSize(12).build().toProperties(); - assertThat(props.get(SQLiteConfig.Pragma.PLAINTEXT_HEADER_SIZE.getPragmaName())).isEqualTo("12"); + Properties props = + new SQLiteMCConfig.Builder().setPlaintextHeaderSize(12).build().toProperties(); + assertThat(props.get(SQLiteConfig.Pragma.PLAINTEXT_HEADER_SIZE.getPragmaName())) + .isEqualTo("12"); } @Test @@ -74,7 +75,11 @@ void setKdfIter() { @Test void setKdfAlgorithm() { - Properties props = new SQLiteMCConfig.Builder().setKdfAlgorithm(KdfAlgorithm.SHA512).build().toProperties(); + Properties props = + new SQLiteMCConfig.Builder() + .setKdfAlgorithm(KdfAlgorithm.SHA512) + .build() + .toProperties(); assertThat(props.get(SQLiteConfig.Pragma.KDF_ALGORITHM.getPragmaName())).isEqualTo("2"); } @@ -92,13 +97,21 @@ void setHmacSaltMask() { @Test void setHmacPgno() { - Properties props = new SQLiteMCConfig.Builder().setHmacPgno(HmacPgno.LITTLE_ENDIAN).build().toProperties(); + Properties props = + new SQLiteMCConfig.Builder() + .setHmacPgno(HmacPgno.LITTLE_ENDIAN) + .build() + .toProperties(); assertThat(props.get(SQLiteConfig.Pragma.HMAC_PGNO.getPragmaName())).isEqualTo("1"); } @Test void setHmacAlgorithm() { - Properties props = new SQLiteMCConfig.Builder().setHmacAlgorithm(HmacAlgorithm.SHA512).build().toProperties(); + Properties props = + new SQLiteMCConfig.Builder() + .setHmacAlgorithm(HmacAlgorithm.SHA512) + .build() + .toProperties(); assertThat(props.get(SQLiteConfig.Pragma.HMAC_ALGORITHM.getPragmaName())).isEqualTo("2"); } @@ -110,7 +123,8 @@ void setFastKdfIter() { @Test void setCipher() { - Properties props = new SQLiteMCConfig.Builder().setCipher(CipherAlgorithm.RC4).build().toProperties(); + Properties props = + new SQLiteMCConfig.Builder().setCipher(CipherAlgorithm.RC4).build().toProperties(); assertThat(props.get(SQLiteConfig.Pragma.CIPHER.getPragmaName())).isEqualTo("rc4"); } @@ -134,13 +148,18 @@ void setPCost() { @Test void setAegisAlgorithm() { - Properties props = new SQLiteMCConfig.Builder().setAegisAlgorithm(AegisAlgorithm.AEGIS_256).build().toProperties(); + Properties props = + new SQLiteMCConfig.Builder() + .setAegisAlgorithm(AegisAlgorithm.AEGIS_256) + .build() + .toProperties(); assertThat(props.get(SQLiteConfig.Pragma.ALGORITHM.getPragmaName())).isEqualTo("aegis-256"); } @Test void withHexKey() { - Properties props = new SQLiteMCConfig.Builder().withHexKey(new byte[]{1, 2}).build().toProperties(); + Properties props = + new SQLiteMCConfig.Builder().withHexKey(new byte[] {1, 2}).build().toProperties(); assertThat(props.get(SQLiteConfig.Pragma.HEXKEY_MODE.getPragmaName())).isEqualTo("SSE"); assertThat(props.get(SQLiteConfig.Pragma.PASSWORD.getPragmaName())).isEqualTo("0102"); assertThat(props.get(SQLiteConfig.Pragma.KEY.getPragmaName())).isEqualTo("0102"); @@ -162,8 +181,7 @@ void withKey() { @Test void toProperties() { Properties props = new SQLiteMCConfig.Builder().build().toProperties(); - assertThat(props.get(SQLiteConfigFactory.CONFIG_CLASS_NAME)).isEqualTo("org.sqlite.mc.SQLiteMCConfig"); + assertThat(props.get(SQLiteConfigFactory.CONFIG_CLASS_NAME)) + .isEqualTo("org.sqlite.mc.SQLiteMCConfig"); } - - } diff --git a/src/test/java/org/sqlite/mc/SQLiteMCOpenUsingPragmaTest.java b/src/test/java/org/sqlite/mc/SQLiteMCOpenUsingPragmaTest.java index 8ae83e763..7b567cac2 100644 --- a/src/test/java/org/sqlite/mc/SQLiteMCOpenUsingPragmaTest.java +++ b/src/test/java/org/sqlite/mc/SQLiteMCOpenUsingPragmaTest.java @@ -5,7 +5,6 @@ import java.io.File; import java.io.IOException; import java.sql.*; - import org.junit.jupiter.api.Test; import org.junit.jupiter.api.condition.DisabledIfSystemProperty; import org.sqlite.SQLiteConfig; @@ -146,7 +145,6 @@ public void plainDatabaseTest() throws IOException, SQLException { c.close(); } - @Test public void chacha20DatabaseTest() throws SQLException, IOException { genericDatabaseTest(SQLiteMCChacha20Config.getDefault()); @@ -246,10 +244,9 @@ public void crossCipherAlgorithmTest() throws IOException, SQLException { String key = "key"; cipherDatabaseCreate(new SQLiteMCConfig.Builder(), dbfile, key); - //Crosstest : Should be able to read the base db + // Crosstest : Should be able to read the base db Connection c = cipherDatabaseOpen(new SQLiteMCConfig.Builder(), dbfile, key); - assertThat(databaseIsReadable(c)) - .isTrue(); + assertThat(databaseIsReadable(c)).isTrue(); c.close(); // Should not be readable with RC4 @@ -298,10 +295,7 @@ public void settingsBeforeDbCreationMcConfig() throws Exception { File testDB = File.createTempFile("test.db", "", new File("target")); testDB.deleteOnExit(); - SQLiteMCConfig config = - new SQLiteMCConfig.Builder() - .withKey("abc") - .build(); + SQLiteMCConfig config = new SQLiteMCConfig.Builder().withKey("abc").build(); config.setPageSize(65536); config.setAutoVacuum(SQLiteConfig.AutoVacuum.INCREMENTAL); config.setEncoding(SQLiteConfig.Encoding.UTF_16LE); @@ -309,7 +303,7 @@ public void settingsBeforeDbCreationMcConfig() throws Exception { String url = String.format("jdbc:sqlite:%s", testDB); try (Connection conn = DriverManager.getConnection(url, config.toProperties()); - Statement stat = conn.createStatement()) { + Statement stat = conn.createStatement()) { try (ResultSet rs = stat.executeQuery("pragma page_size")) { assertThat(rs.getString(1)).isEqualTo("65536"); } diff --git a/src/test/java/org/sqlite/mc/SQLiteMCOpenUsingURIInterfaceTest.java b/src/test/java/org/sqlite/mc/SQLiteMCOpenUsingURIInterfaceTest.java index 2bf9b89c4..b501bd9a6 100644 --- a/src/test/java/org/sqlite/mc/SQLiteMCOpenUsingURIInterfaceTest.java +++ b/src/test/java/org/sqlite/mc/SQLiteMCOpenUsingURIInterfaceTest.java @@ -6,7 +6,6 @@ import java.io.IOException; import java.net.URLEncoder; import java.sql.*; - import org.junit.jupiter.api.Test; import org.junit.jupiter.api.condition.DisabledIfSystemProperty; import org.sqlite.SQLiteException; @@ -98,7 +97,6 @@ void plainDatabaseTest() throws IOException, SQLException { c.close(); } - public void genericDatabaseTest(SQLiteMCConfig.Builder config) throws IOException, SQLException { String path = createFile(); diff --git a/src/test/java/org/sqlite/mc/SQLiteMCRC4ConfigTest.java b/src/test/java/org/sqlite/mc/SQLiteMCRC4ConfigTest.java index ab3aa0abe..82994f918 100644 --- a/src/test/java/org/sqlite/mc/SQLiteMCRC4ConfigTest.java +++ b/src/test/java/org/sqlite/mc/SQLiteMCRC4ConfigTest.java @@ -1,46 +1,46 @@ package org.sqlite.mc; -import org.junit.jupiter.api.Test; -import org.sqlite.SQLiteConfig; - -import java.util.Properties; - import static org.assertj.core.api.AssertionsForClassTypes.assertThat; import static org.assertj.core.api.AssertionsForClassTypes.assertThatThrownBy; import static org.junit.jupiter.api.Assertions.*; +import java.util.Properties; +import org.junit.jupiter.api.Test; +import org.sqlite.SQLiteConfig; + class SQLiteMCRC4ConfigTest { @Test - void setLegacy(){ + void setLegacy() { SQLiteMCRC4Config config = new SQLiteMCRC4Config(); - assertThatThrownBy( () -> config.setLegacy(0)).isInstanceOf(IllegalArgumentException.class); - assertThatThrownBy( () -> config.setLegacy(2)).isInstanceOf(IllegalArgumentException.class); + assertThatThrownBy(() -> config.setLegacy(0)).isInstanceOf(IllegalArgumentException.class); + assertThatThrownBy(() -> config.setLegacy(2)).isInstanceOf(IllegalArgumentException.class); config.setLegacy(1); Properties props = config.build().toProperties(); - assertThat(props.get(SQLiteConfig.Pragma.LEGACY.pragmaName)).isEqualTo( "1"); + assertThat(props.get(SQLiteConfig.Pragma.LEGACY.pragmaName)).isEqualTo("1"); } @Test - void setLegacyPageSize(){ + void setLegacyPageSize() { SQLiteMCRC4Config config = new SQLiteMCRC4Config(); - assertThatThrownBy( () -> config.setLegacyPageSize(65537)).isInstanceOf(IllegalArgumentException.class); - assertThatThrownBy( () -> config.setLegacyPageSize(-1)).isInstanceOf(IllegalArgumentException.class); + assertThatThrownBy(() -> config.setLegacyPageSize(65537)) + .isInstanceOf(IllegalArgumentException.class); + assertThatThrownBy(() -> config.setLegacyPageSize(-1)) + .isInstanceOf(IllegalArgumentException.class); config.setLegacyPageSize(1); Properties props = config.build().toProperties(); - assertThat(props.get(SQLiteConfig.Pragma.LEGACY_PAGE_SIZE.pragmaName)).isEqualTo( "1"); + assertThat(props.get(SQLiteConfig.Pragma.LEGACY_PAGE_SIZE.pragmaName)).isEqualTo("1"); } @Test void getDefault() { Properties props = SQLiteMCRC4Config.getDefault().build().toProperties(); - assertThat(props.get(SQLiteConfig.Pragma.LEGACY.pragmaName)).isEqualTo( "1"); - assertThat(props.get(SQLiteConfig.Pragma.LEGACY_PAGE_SIZE.pragmaName)).isEqualTo( "0"); - - assertThat(props.get(SQLiteConfig.Pragma.CIPHER.pragmaName)).isEqualTo( "rc4"); + assertThat(props.get(SQLiteConfig.Pragma.LEGACY.pragmaName)).isEqualTo("1"); + assertThat(props.get(SQLiteConfig.Pragma.LEGACY_PAGE_SIZE.pragmaName)).isEqualTo("0"); + assertThat(props.get(SQLiteConfig.Pragma.CIPHER.pragmaName)).isEqualTo("rc4"); } -} \ No newline at end of file +} diff --git a/src/test/java/org/sqlite/mc/SQLiteMCSqlCipherConfigTest.java b/src/test/java/org/sqlite/mc/SQLiteMCSqlCipherConfigTest.java index ac631bf5d..81433f33e 100644 --- a/src/test/java/org/sqlite/mc/SQLiteMCSqlCipherConfigTest.java +++ b/src/test/java/org/sqlite/mc/SQLiteMCSqlCipherConfigTest.java @@ -1,19 +1,17 @@ package org.sqlite.mc; +import static org.assertj.core.api.Assertions.*; + import java.io.File; import java.io.IOException; import java.math.BigInteger; import java.sql.Connection; import java.sql.SQLException; import java.util.Properties; - import org.junit.jupiter.api.Test; import org.junit.jupiter.api.condition.DisabledIfSystemProperty; import org.sqlite.SQLiteConfig; -import static org.assertj.core.api.Assertions.*; -import static org.junit.jupiter.api.Assertions.assertThrows; - @DisabledIfSystemProperty( disabledReason = "SQLite3 binary not compatible with that test", named = "disableCipherTests", @@ -48,8 +46,8 @@ private static byte[] toBytes(String hexString) { @Test void setLegacy() { SQLiteMCSqlCipherConfig config = new SQLiteMCSqlCipherConfig(); - assertThatThrownBy( () -> config.setLegacy(10)).isInstanceOf(IllegalArgumentException.class); - assertThatThrownBy( () -> config.setLegacy(-1)).isInstanceOf(IllegalArgumentException.class); + assertThatThrownBy(() -> config.setLegacy(10)).isInstanceOf(IllegalArgumentException.class); + assertThatThrownBy(() -> config.setLegacy(-1)).isInstanceOf(IllegalArgumentException.class); Properties props = config.setLegacy(1).build().toProperties(); assertThat(props.get(SQLiteConfig.Pragma.LEGACY.pragmaName)).isEqualTo("1"); @@ -58,9 +56,12 @@ void setLegacy() { @Test void setLegacyPageSize() { SQLiteMCSqlCipherConfig config = new SQLiteMCSqlCipherConfig(); - assertThatThrownBy( () -> config.setLegacyPageSize(3)).isInstanceOf(IllegalArgumentException.class); - assertThatThrownBy( () -> config.setLegacyPageSize(-1)).isInstanceOf(IllegalArgumentException.class); - assertThatThrownBy( () -> config.setLegacyPageSize(65537)).isInstanceOf(IllegalArgumentException.class); + assertThatThrownBy(() -> config.setLegacyPageSize(3)) + .isInstanceOf(IllegalArgumentException.class); + assertThatThrownBy(() -> config.setLegacyPageSize(-1)) + .isInstanceOf(IllegalArgumentException.class); + assertThatThrownBy(() -> config.setLegacyPageSize(65537)) + .isInstanceOf(IllegalArgumentException.class); Properties props = config.setLegacyPageSize(2).build().toProperties(); assertThat(props.get(SQLiteConfig.Pragma.LEGACY_PAGE_SIZE.pragmaName)).isEqualTo("2"); @@ -69,7 +70,8 @@ void setLegacyPageSize() { @Test void setKdfIter() { SQLiteMCSqlCipherConfig config = new SQLiteMCSqlCipherConfig(); - assertThatThrownBy( () -> config.setKdfIter(-1)).isInstanceOf(IllegalArgumentException.class); + assertThatThrownBy(() -> config.setKdfIter(-1)) + .isInstanceOf(IllegalArgumentException.class); Properties props = config.setKdfIter(1).build().toProperties(); assertThat(props.get(SQLiteConfig.Pragma.KDF_ITER.pragmaName)).isEqualTo("1"); @@ -78,7 +80,8 @@ void setKdfIter() { @Test void setFastKdfIter() { SQLiteMCSqlCipherConfig config = new SQLiteMCSqlCipherConfig(); - assertThatThrownBy( () -> config.setFastKdfIter(-1)).isInstanceOf(IllegalArgumentException.class); + assertThatThrownBy(() -> config.setFastKdfIter(-1)) + .isInstanceOf(IllegalArgumentException.class); Properties props = config.setFastKdfIter(1).build().toProperties(); assertThat(props.get(SQLiteConfig.Pragma.FAST_KDF_ITER.pragmaName)).isEqualTo("1"); @@ -103,8 +106,10 @@ void setHmacPgno() { @Test void setHmacSaltMask() { SQLiteMCSqlCipherConfig config = new SQLiteMCSqlCipherConfig(); - assertThatThrownBy( () -> config.setHmacSaltMask(360)).isInstanceOf(IllegalArgumentException.class); - assertThatThrownBy( () -> config.setHmacSaltMask(-1)).isInstanceOf(IllegalArgumentException.class); + assertThatThrownBy(() -> config.setHmacSaltMask(360)) + .isInstanceOf(IllegalArgumentException.class); + assertThatThrownBy(() -> config.setHmacSaltMask(-1)) + .isInstanceOf(IllegalArgumentException.class); Properties props = config.setHmacSaltMask(1).build().toProperties(); assertThat(props.get(SQLiteConfig.Pragma.HMAC_SALT_MASK.pragmaName)).isEqualTo("1"); @@ -129,9 +134,12 @@ void setHmacAlgorithm() { @Test void setPlaintextHeaderSize() { SQLiteMCSqlCipherConfig config = new SQLiteMCSqlCipherConfig(); - assertThatThrownBy( () -> config.setPlaintextHeaderSize(122)).isInstanceOf(IllegalArgumentException.class); - assertThatThrownBy( () -> config.setPlaintextHeaderSize(-1)).isInstanceOf(IllegalArgumentException.class); - assertThatThrownBy( () -> config.setPlaintextHeaderSize(14)).isInstanceOf(IllegalArgumentException.class); + assertThatThrownBy(() -> config.setPlaintextHeaderSize(122)) + .isInstanceOf(IllegalArgumentException.class); + assertThatThrownBy(() -> config.setPlaintextHeaderSize(-1)) + .isInstanceOf(IllegalArgumentException.class); + assertThatThrownBy(() -> config.setPlaintextHeaderSize(14)) + .isInstanceOf(IllegalArgumentException.class); Properties props = config.setPlaintextHeaderSize(32).build().toProperties(); assertThat(props.get(SQLiteConfig.Pragma.PLAINTEXT_HEADER_SIZE.pragmaName)).isEqualTo("32"); @@ -213,8 +221,6 @@ void getDefault() { assertThat(props.get(SQLiteConfig.Pragma.PLAINTEXT_HEADER_SIZE.pragmaName)).isEqualTo("0"); assertThat(props.get(SQLiteConfig.Pragma.CIPHER.pragmaName)).isEqualTo("sqlcipher"); - - } @Test @@ -230,7 +236,6 @@ void getV1Defaults() { assertThat(props.get(SQLiteConfig.Pragma.HMAC_ALGORITHM.pragmaName)).isEqualTo("0"); assertThat(props.get(SQLiteConfig.Pragma.CIPHER.pragmaName)).isEqualTo("sqlcipher"); - } @Test @@ -248,7 +253,6 @@ void getV2Defaults() { assertThat(props.get(SQLiteConfig.Pragma.HMAC_ALGORITHM.pragmaName)).isEqualTo("0"); assertThat(props.get(SQLiteConfig.Pragma.CIPHER.pragmaName)).isEqualTo("sqlcipher"); - } @Test @@ -266,7 +270,6 @@ void getV3Defaults() { assertThat(props.get(SQLiteConfig.Pragma.HMAC_ALGORITHM.pragmaName)).isEqualTo("0"); assertThat(props.get(SQLiteConfig.Pragma.CIPHER.pragmaName)).isEqualTo("sqlcipher"); - } @Test @@ -285,6 +288,5 @@ void getV4Defaults() { assertThat(props.get(SQLiteConfig.Pragma.PLAINTEXT_HEADER_SIZE.pragmaName)).isEqualTo("0"); assertThat(props.get(SQLiteConfig.Pragma.CIPHER.pragmaName)).isEqualTo("sqlcipher"); - } } diff --git a/src/test/java/org/sqlite/mc/SQLiteMCWxAES128ConfigTest.java b/src/test/java/org/sqlite/mc/SQLiteMCWxAES128ConfigTest.java index e1697354e..25faffd2e 100644 --- a/src/test/java/org/sqlite/mc/SQLiteMCWxAES128ConfigTest.java +++ b/src/test/java/org/sqlite/mc/SQLiteMCWxAES128ConfigTest.java @@ -1,42 +1,40 @@ package org.sqlite.mc; -import org.junit.jupiter.api.Test; -import org.sqlite.SQLiteConfig; - -import java.util.Properties; - import static org.assertj.core.api.AssertionsForClassTypes.assertThat; import static org.assertj.core.api.AssertionsForClassTypes.assertThatThrownBy; import static org.junit.jupiter.api.Assertions.*; +import java.util.Properties; +import org.junit.jupiter.api.Test; +import org.sqlite.SQLiteConfig; + class SQLiteMCWxAES128ConfigTest { @Test void setLegacy() { SQLiteMCWxAES128Config config = new SQLiteMCWxAES128Config(); - assertThatThrownBy( () -> config.setLegacy(3)).isInstanceOf(IllegalArgumentException.class); + assertThatThrownBy(() -> config.setLegacy(3)).isInstanceOf(IllegalArgumentException.class); Properties props = config.setLegacy(1).build().toProperties(); - assertThat( props.get(SQLiteConfig.Pragma.LEGACY.pragmaName)).isEqualTo("1"); + assertThat(props.get(SQLiteConfig.Pragma.LEGACY.pragmaName)).isEqualTo("1"); } @Test void setLegacyPageSize() { SQLiteMCWxAES128Config config = new SQLiteMCWxAES128Config(); - assertThatThrownBy( () -> config.setLegacy(-3)).isInstanceOf(IllegalArgumentException.class); - assertThatThrownBy( () -> config.setLegacy(3)).isInstanceOf(IllegalArgumentException.class); + assertThatThrownBy(() -> config.setLegacy(-3)).isInstanceOf(IllegalArgumentException.class); + assertThatThrownBy(() -> config.setLegacy(3)).isInstanceOf(IllegalArgumentException.class); Properties props = config.setLegacyPageSize(2).build().toProperties(); - assertThat( props.get(SQLiteConfig.Pragma.LEGACY_PAGE_SIZE.pragmaName)).isEqualTo("2"); + assertThat(props.get(SQLiteConfig.Pragma.LEGACY_PAGE_SIZE.pragmaName)).isEqualTo("2"); } @Test void getDefault() { Properties props = SQLiteMCWxAES128Config.getDefault().build().toProperties(); - assertThat( props.get(SQLiteConfig.Pragma.LEGACY.pragmaName)).isEqualTo("0"); - assertThat( props.get(SQLiteConfig.Pragma.LEGACY_PAGE_SIZE.pragmaName)).isEqualTo("0"); - assertThat( props.get(SQLiteConfig.Pragma.CIPHER.pragmaName)).isEqualTo("aes128cbc"); - + assertThat(props.get(SQLiteConfig.Pragma.LEGACY.pragmaName)).isEqualTo("0"); + assertThat(props.get(SQLiteConfig.Pragma.LEGACY_PAGE_SIZE.pragmaName)).isEqualTo("0"); + assertThat(props.get(SQLiteConfig.Pragma.CIPHER.pragmaName)).isEqualTo("aes128cbc"); } -} \ No newline at end of file +} diff --git a/src/test/java/org/sqlite/mc/SQLiteMCWxAES256ConfigTest.java b/src/test/java/org/sqlite/mc/SQLiteMCWxAES256ConfigTest.java index 5ad337b96..19a188f15 100644 --- a/src/test/java/org/sqlite/mc/SQLiteMCWxAES256ConfigTest.java +++ b/src/test/java/org/sqlite/mc/SQLiteMCWxAES256ConfigTest.java @@ -1,55 +1,50 @@ package org.sqlite.mc; -import org.junit.jupiter.api.Test; -import org.sqlite.SQLiteConfig; - -import java.util.Properties; - import static org.assertj.core.api.AssertionsForClassTypes.assertThat; import static org.assertj.core.api.AssertionsForClassTypes.assertThatThrownBy; import static org.junit.jupiter.api.Assertions.*; -class SQLiteMCWxAES256ConfigTest { +import java.util.Properties; +import org.junit.jupiter.api.Test; +import org.sqlite.SQLiteConfig; +class SQLiteMCWxAES256ConfigTest { @Test void setLegacy() { SQLiteMCWxAES256Config config = new SQLiteMCWxAES256Config(); - assertThatThrownBy( () -> config.setLegacy(3)).isInstanceOf(IllegalArgumentException.class); + assertThatThrownBy(() -> config.setLegacy(3)).isInstanceOf(IllegalArgumentException.class); Properties props = config.setLegacy(1).build().toProperties(); - assertThat( props.get(SQLiteConfig.Pragma.LEGACY.pragmaName)).isEqualTo("1"); + assertThat(props.get(SQLiteConfig.Pragma.LEGACY.pragmaName)).isEqualTo("1"); } @Test void setLegacyPageSize() { SQLiteMCWxAES256Config config = new SQLiteMCWxAES256Config(); - assertThatThrownBy( () -> config.setLegacy(-3)).isInstanceOf(IllegalArgumentException.class); - assertThatThrownBy( () -> config.setLegacy(3)).isInstanceOf(IllegalArgumentException.class); + assertThatThrownBy(() -> config.setLegacy(-3)).isInstanceOf(IllegalArgumentException.class); + assertThatThrownBy(() -> config.setLegacy(3)).isInstanceOf(IllegalArgumentException.class); Properties props = config.setLegacyPageSize(2).build().toProperties(); - assertThat( props.get(SQLiteConfig.Pragma.LEGACY_PAGE_SIZE.pragmaName)).isEqualTo("2"); + assertThat(props.get(SQLiteConfig.Pragma.LEGACY_PAGE_SIZE.pragmaName)).isEqualTo("2"); } - @Test void setKdfIter() { SQLiteMCWxAES256Config config = new SQLiteMCWxAES256Config(); - assertThatThrownBy( () -> config.setLegacy(-3)).isInstanceOf(IllegalArgumentException.class); + assertThatThrownBy(() -> config.setLegacy(-3)).isInstanceOf(IllegalArgumentException.class); Properties props = config.setKdfIter(2).build().toProperties(); - assertThat( props.get(SQLiteConfig.Pragma.KDF_ITER.pragmaName)).isEqualTo("2"); + assertThat(props.get(SQLiteConfig.Pragma.KDF_ITER.pragmaName)).isEqualTo("2"); } - @Test void getDefault() { Properties props = SQLiteMCWxAES256Config.getDefault().build().toProperties(); - assertThat( props.get(SQLiteConfig.Pragma.LEGACY.pragmaName)).isEqualTo("0"); - assertThat( props.get(SQLiteConfig.Pragma.LEGACY_PAGE_SIZE.pragmaName)).isEqualTo("0"); - assertThat( props.get(SQLiteConfig.Pragma.KDF_ITER.pragmaName)).isEqualTo("4001"); - assertThat( props.get(SQLiteConfig.Pragma.CIPHER.pragmaName)).isEqualTo("aes256cbc"); - + assertThat(props.get(SQLiteConfig.Pragma.LEGACY.pragmaName)).isEqualTo("0"); + assertThat(props.get(SQLiteConfig.Pragma.LEGACY_PAGE_SIZE.pragmaName)).isEqualTo("0"); + assertThat(props.get(SQLiteConfig.Pragma.KDF_ITER.pragmaName)).isEqualTo("4001"); + assertThat(props.get(SQLiteConfig.Pragma.CIPHER.pragmaName)).isEqualTo("aes256cbc"); } -} \ No newline at end of file +}