Skip to content

Commit 17a4f69

Browse files
committed
Keep migrated items
Give it a higher priority Use latest Secret Service library
1 parent 1c54f97 commit 17a4f69

File tree

2 files changed

+11
-4
lines changed

2 files changed

+11
-4
lines changed

pom.xml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -43,7 +43,7 @@
4343
<api.version>1.7.0</api.version>
4444
<secret-service.version>2.0.1-alpha</secret-service.version>
4545
<kdewallet.version>1.4.0</kdewallet.version>
46-
<secret-service-02.version>1.0.0</secret-service-02.version>
46+
<secret-service-02.version>1.0.1</secret-service-02.version>
4747
<slf4j.version>2.0.17</slf4j.version>
4848
<appindicator.version>1.4.2</appindicator.version>
4949

src/main/java/org/cryptomator/linux/keychain/SecretServiceKeychainAccess.java

Lines changed: 10 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -20,10 +20,11 @@
2020
import java.security.InvalidKeyException;
2121
import java.security.NoSuchAlgorithmException;
2222
import java.util.ArrayList;
23+
import java.util.HashMap;
2324
import java.util.List;
2425
import java.util.Map;
2526

26-
@Priority(900)
27+
@Priority(1100)
2728
@OperatingSystem(OperatingSystem.Value.LINUX)
2829
@DisplayName("Secret Service")
2930
public class SecretServiceKeychainAccess implements KeychainAccessProvider {
@@ -176,15 +177,21 @@ private void migrateKDEWalletEntries() {
176177
session.getService().ensureUnlocked(i);
177178
var item = new Item(i);
178179
var secret = item.getSecret(session.getSession());
180+
Map<String, String> newAttribs = new HashMap<>(attribs.value());
181+
newAttribs.put("server", "Cryptomator - already migrated");
182+
var label = item.getLabel().value();
183+
var itemProps = Item.createProperties(label, newAttribs);
184+
var replace = collection.createItem(itemProps, secret, true);
185+
assert replace.isSuccess() : "Replacing migrated item failed";
186+
item.delete();
179187
try {
180188
storePassphrase(attribs.value().get("user"), "Cryptomator", new String(session.decrypt(secret)));
189+
LOG.info("Successfully migrated password for vault {}", attribs.value().get("user"));
181190
} catch (KeychainAccessException | NoSuchPaddingException | NoSuchAlgorithmException |
182191
InvalidAlgorithmParameterException | InvalidKeyException | BadPaddingException |
183192
IllegalBlockSizeException e) {
184193
LOG.error("Migrating entry {} for vault {} failed", i.getPath(), attribs.value().get("user"));
185194
}
186-
item.delete();
187-
LOG.info("Successfully migrated password for vault {}", attribs.value().get("user"));
188195
}
189196
}
190197
}

0 commit comments

Comments
 (0)