From a755779c5763adfa3d43679f20ec2fd1476c4875 Mon Sep 17 00:00:00 2001 From: crschnick Date: Wed, 14 Feb 2024 12:20:20 +0000 Subject: [PATCH] Secret retention fixes --- .../io/xpipe/app/storage/DataStorageEncryption.java | 4 ++++ .../main/java/io/xpipe/app/util/SecretManager.java | 11 +++++++++-- .../java/io/xpipe/core/process/ProcessControl.java | 2 ++ 3 files changed, 15 insertions(+), 2 deletions(-) diff --git a/app/src/main/java/io/xpipe/app/storage/DataStorageEncryption.java b/app/src/main/java/io/xpipe/app/storage/DataStorageEncryption.java index ce2403395..509c18d31 100644 --- a/app/src/main/java/io/xpipe/app/storage/DataStorageEncryption.java +++ b/app/src/main/java/io/xpipe/app/storage/DataStorageEncryption.java @@ -32,6 +32,10 @@ public class DataStorageEncryption { } var read = secret.getInternalSecret().mapSecretValueFailable(chars -> { + if (chars.length == 0) { + return JsonNodeFactory.instance.missingNode(); + } + return JacksonMapper.getDefault().readTree(new CharArrayReader(chars)); }); if (read != null) { diff --git a/app/src/main/java/io/xpipe/app/util/SecretManager.java b/app/src/main/java/io/xpipe/app/util/SecretManager.java index 84196f526..248c066fd 100644 --- a/app/src/main/java/io/xpipe/app/util/SecretManager.java +++ b/app/src/main/java/io/xpipe/app/util/SecretManager.java @@ -51,8 +51,15 @@ public class SecretManager { return null; } - var p = expectAskpass(UUID.randomUUID(), UuidHelper.generateFromObject(store, sub), List.of(strategy.query()), SecretQuery.prompt(false), CountDown.of()); - return p.process(prompt); + var uuid = UUID.randomUUID(); + var p = expectAskpass(uuid, UuidHelper.generateFromObject(store, sub), List.of(strategy.query()), SecretQuery.prompt(false), CountDown.of()); + var r = p.process(prompt); + completeRequest(uuid); + return r; + } + + public static void completeRequest(UUID request) { + progress.removeIf(secretQueryProgress -> secretQueryProgress.getRequestId().equals(request)); } public static void clearAll(Object store) { diff --git a/core/src/main/java/io/xpipe/core/process/ProcessControl.java b/core/src/main/java/io/xpipe/core/process/ProcessControl.java index b6911ab2b..66c3d7bf3 100644 --- a/core/src/main/java/io/xpipe/core/process/ProcessControl.java +++ b/core/src/main/java/io/xpipe/core/process/ProcessControl.java @@ -6,6 +6,7 @@ import java.io.IOException; import java.io.InputStream; import java.io.OutputStream; import java.nio.charset.Charset; +import java.util.UUID; public interface ProcessControl extends AutoCloseable { @@ -14,6 +15,7 @@ public interface ProcessControl extends AutoCloseable { T convert(T t); } + UUID getUuid(); ProcessControl withExceptionConverter(ExceptionConverter converter);