diff --git a/pom.xml b/pom.xml
index 3807a06..c269d05 100644
--- a/pom.xml
+++ b/pom.xml
@@ -3,7 +3,7 @@
4.0.0
org.cryptomator
siv-mode
- 1.4.2
+ 1.4.3
SIV Mode
RFC 5297 SIV mode: deterministic authenticated encryption
@@ -37,12 +37,12 @@
UTF-8
- 1.68
+ 1.69
- 5.7.1
- 3.10.0
- 1.31
+ 5.7.2
+ 3.11.2
+ 1.32
2.2
30.1.1-jre
@@ -174,7 +174,7 @@
maven-javadoc-plugin
- 3.2.0
+ 3.3.0
attach-javadocs
@@ -235,7 +235,7 @@
org.owasp
dependency-check-maven
- 6.1.0
+ 6.2.2
24
0
@@ -259,7 +259,7 @@
org.jacoco
jacoco-maven-plugin
- 0.8.6
+ 0.8.7
prepare-agent
@@ -268,6 +268,12 @@
+
+
+
+ META-INF/**
+
+
@@ -279,7 +285,7 @@
maven-gpg-plugin
- 1.6
+ 3.0.1
sign-artifacts
diff --git a/src/main/java/org/cryptomator/siv/SivMode.java b/src/main/java/org/cryptomator/siv/SivMode.java
index fc1a6d2..3f8e635 100644
--- a/src/main/java/org/cryptomator/siv/SivMode.java
+++ b/src/main/java/org/cryptomator/siv/SivMode.java
@@ -51,7 +51,7 @@ public SivMode() {
* @see #SivMode(BlockCipherFactory)
*/
public SivMode(final Provider jceSecurityProvider) {
- this(ThreadLocal.withInitial(() -> new JceAesBlockCipher(jceSecurityProvider)), new JceAesCtrComputer(jceSecurityProvider));
+ this(ThreadLocals.withInitial(() -> new JceAesBlockCipher(jceSecurityProvider)), new JceAesCtrComputer(jceSecurityProvider));
}
/**
@@ -60,7 +60,7 @@ public SivMode(final Provider jceSecurityProvider) {
* @param cipherFactory A factory method creating a Blockcipher.get(). Must use a block size of 128 bits (16 bytes).
*/
public SivMode(final BlockCipherFactory cipherFactory) {
- this(ThreadLocal.withInitial(() -> cipherFactory.create()));
+ this(ThreadLocals.withInitial(() -> cipherFactory.create()));
}
private SivMode(final ThreadLocal threadLocalCipher) {
diff --git a/src/main/java/org/cryptomator/siv/ThreadLocals.java b/src/main/java/org/cryptomator/siv/ThreadLocals.java
new file mode 100644
index 0000000..287c23d
--- /dev/null
+++ b/src/main/java/org/cryptomator/siv/ThreadLocals.java
@@ -0,0 +1,17 @@
+package org.cryptomator.siv;
+
+import java.util.function.Supplier;
+
+class ThreadLocals {
+
+ static ThreadLocal withInitial(Supplier supplier) {
+ // ThreadLocal.withInitial is unavailable on Android 7.x
+ return new ThreadLocal() {
+ @Override
+ protected S initialValue() {
+ return supplier.get();
+ }
+ };
+ }
+
+}
diff --git a/src/main/java9/org.cryptomator.siv/ThreadLocals.java b/src/main/java9/org.cryptomator.siv/ThreadLocals.java
new file mode 100644
index 0000000..fc5fe82
--- /dev/null
+++ b/src/main/java9/org.cryptomator.siv/ThreadLocals.java
@@ -0,0 +1,11 @@
+package org.cryptomator.siv;
+
+import java.util.function.Supplier;
+
+class ThreadLocals {
+
+ static ThreadLocal withInitial(Supplier supplier) {
+ return ThreadLocal.withInitial(supplier);
+ }
+
+}