From fc2b111b53f97c30cdeeb24affb646375f88e633 Mon Sep 17 00:00:00 2001 From: crschnick Date: Sat, 4 Jan 2025 03:10:43 +0000 Subject: [PATCH] Fix NPE for vault key --- app/src/main/java/io/xpipe/app/storage/DataStorage.java | 6 ++++++ app/src/main/java/io/xpipe/app/storage/StandardStorage.java | 2 ++ app/src/main/java/io/xpipe/app/util/EncryptionToken.java | 2 +- .../main/java/io/xpipe/app/util/VaultKeySecretValue.java | 2 +- 4 files changed, 10 insertions(+), 2 deletions(-) diff --git a/app/src/main/java/io/xpipe/app/storage/DataStorage.java b/app/src/main/java/io/xpipe/app/storage/DataStorage.java index a0d6e81e8..6e9dc17da 100644 --- a/app/src/main/java/io/xpipe/app/storage/DataStorage.java +++ b/app/src/main/java/io/xpipe/app/storage/DataStorage.java @@ -32,6 +32,12 @@ import javax.crypto.SecretKey; public abstract class DataStorage { + protected static SecretKey secretKey; + + public static SecretKey getSecretKey() { + return get() != null ? get().getVaultKey() : secretKey; + } + public static final UUID ALL_CONNECTIONS_CATEGORY_UUID = UUID.fromString("bfb0b51a-e7a3-4ce4-8878-8d4cb5828d6c"); public static final UUID ALL_SCRIPTS_CATEGORY_UUID = UUID.fromString("19024cf9-d192-41a9-88a6-a22694cf716a"); public static final UUID PREDEFINED_SCRIPTS_CATEGORY_UUID = UUID.fromString("5faf1d71-0efc-4293-8b70-299406396973"); diff --git a/app/src/main/java/io/xpipe/app/storage/StandardStorage.java b/app/src/main/java/io/xpipe/app/storage/StandardStorage.java index 5bc67b562..96ed896a0 100644 --- a/app/src/main/java/io/xpipe/app/storage/StandardStorage.java +++ b/app/src/main/java/io/xpipe/app/storage/StandardStorage.java @@ -483,11 +483,13 @@ public class StandardStorage extends DataStorage { var s = Files.readString(file); var id = new String(Base64.getDecoder().decode(s), StandardCharsets.UTF_8); vaultKey = EncryptionKey.getVaultSecretKey(id); + secretKey = vaultKey; } else { FileUtils.forceMkdir(dir.toFile()); var id = UUID.randomUUID().toString(); Files.writeString(file, Base64.getEncoder().encodeToString(id.getBytes(StandardCharsets.UTF_8))); vaultKey = EncryptionKey.getVaultSecretKey(id); + secretKey = vaultKey; } } diff --git a/app/src/main/java/io/xpipe/app/util/EncryptionToken.java b/app/src/main/java/io/xpipe/app/util/EncryptionToken.java index da76213f9..14e67c61e 100644 --- a/app/src/main/java/io/xpipe/app/util/EncryptionToken.java +++ b/app/src/main/java/io/xpipe/app/util/EncryptionToken.java @@ -101,7 +101,7 @@ public class EncryptionToken { return isVault; } - var key = DataStorage.get().getVaultKey(); + var key = DataStorage.getSecretKey(); var s = decode(key); return (isVault = s.equals("xpipe")); } diff --git a/app/src/main/java/io/xpipe/app/util/VaultKeySecretValue.java b/app/src/main/java/io/xpipe/app/util/VaultKeySecretValue.java index d03c4b8ce..d0f7ee10c 100644 --- a/app/src/main/java/io/xpipe/app/util/VaultKeySecretValue.java +++ b/app/src/main/java/io/xpipe/app/util/VaultKeySecretValue.java @@ -28,7 +28,7 @@ public class VaultKeySecretValue extends AesSecretValue { @Override protected SecretKey getSecretKey() throws InvalidKeySpecException { - return DataStorage.get().getVaultKey(); + return DataStorage.getSecretKey(); } @Override