Cryptomator Documentation
A Java library for storing secrets under linux in the gnome-keyring over D-Bus. Like libsecret, but for Java.
The Dagger coffee example applied to a JavaFX application
Switching main and background threads in JavaFX made easy.
Lean mootools-based framework for hashbang-routing and JSON-based DOM definitions.
Playground for a jade multi agent project
overheadhunter/CreateAppStoreBill 1
Simple Shell/AWK scripts and tex files to create bills for the German tax office from Apple's financial reports. Extends the original Perl-based script.
The missing package manager for OS X.
Experimental Students Project
overheadhunter/appimage.github.io 0
Given an URL to an AppImage, AppImageHub inspects the AppImage and puts it into a community-maintained catalog
issue commentcryptomator/cryptomator
ElementaryOS: Windows are not decorated and not clickable
@infeo Are you sure this depends on https://github.com/elementary/gala/issues/693 ? Still having this issue on elementaryOS
comment created time in 11 hours
Pull request review commentcryptomator/cryptofs
Health-API: Implement OrphanDir.fix()
private CiphertextFileType determineCiphertextFileType(Path ciphertextPath) { return CiphertextFileType.FILE; } }++ private static MessageDigest getSha1MessageDigest() {+ try {+ return MessageDigest.getInstance("SHA1");+ } catch (NoSuchAlgorithmException e) {+ throw new InstantiationError("Every JVM needs to provide a SHA1 implementation.");
Fixed in 06d7933
comment created time in 14 hours
push eventcryptomator/cryptofs
commit sha 06d79336643ae1b0b5c0e374e4116a00ee5b956d
Throw exception instead of error.
push time in 14 hours
Pull request review commentcryptomator/cryptofs
Health-API: Implement OrphanDir.fix()
*/ public class OrphanDir implements DiagnosticResult { + private static final String FILE_PREFIX = "file";+ private static final String DIR_PREFIX = "directory";+ private static final String SYMLINK_PREFIX = "symlink";+ private static final String LONG_NAME_SUFFIX_BASE = "_withVeryLongName";+ private static final MessageDigest SHA1_HASHER;
Fixed in 833d613
comment created time in 15 hours
push eventcryptomator/cryptofs
commit sha 833d61324bd1d847214f6ccd4f948bfde8b0ac6e
create new message digest sha1 for every fix() call & make some state independet methods static
push time in 15 hours
issue commentcryptomator/cryptomator
File Conflict with Indesign 2021: Saved Files get corrupted while working with them
An alternative to WebDAV would be WinFSP.
A guide how to install and use it can be found here: https://community.cryptomator.org/t/winfsp-how-to-use-it/7980
comment created time in 15 hours
issue commentcryptomator/cryptomator
File Conflict with Indesign 2021: Saved Files get corrupted while working with them
Same issue running cryptomator 1.5.16 on win10. Solved switching from dokany to webdav.
comment created time in 16 hours
push eventcryptomator/android
commit sha ae053b34d0e3fd836f883144c5b7b409685d9ac3
Fix build -.-
push time in 17 hours
push eventcryptomator/cryptofs
commit sha 6eec2c360beb0cb571493713686a3a5486510ab9
if step parent already exists, use it
commit sha 812135176d1fc47d15cfb90be3a7b0319f4897fb
add test that stepparent name is deterministically derived from orphan
push time in 17 hours
issue closedcryptomator/android
Can't create bew vault in pcloud using google sign in Error 403: disallowed_useragent
Description
System Setup
- Android version: x
- Cryptomator version: 1.5.x
- Cloud type: pCloud
Steps to Reproduce
- Add existing or create new vault
- Choose pCloud
- Add pCloud location
- Choose Google as sign in option
Expected Behavior
Cloud authentication takes place
Actual Behavior
<img src="https://user-images.githubusercontent.com/1786772/118472567-424f1600-b709-11eb-87a1-aa1fcb647046.png" height="600" />
Reproducibility
Always
closed time in 17 hours
jeremijulianpush eventcryptomator/android
commit sha 46aec2022ad6acc1ebd4103258ef56807b59239e
#316 fix OAuth login in pCloud using Google By switching from WebView to real browser
push time in 17 hours
Pull request review commentcryptomator/cryptofs
Health-API: Implement OrphanDir.fix()
public String toString() { } // fix: create new dirId inside of L+F dir and rename existing dir accordingly.+ @Override+ public void fix(Path pathToVault, VaultConfig config, Masterkey masterkey, Cryptor cryptor) throws IOException {+ Path orphanedDir = pathToVault.resolve(Constants.DATA_DIR_NAME).resolve(this.dir);+ String orphanHash = dir.getParent().getFileName().toString() + dir.getFileName().toString(); //TODO: is this the way? -> if the process is midterm aborted and later retried files already exist!++ var stepParentDir = prepareCryptoFilesystem(pathToVault, cryptor.fileNameCryptor(), orphanHash);++ try (var orphanedContentStream = Files.newDirectoryStream(orphanedDir)) {+ //move resource to unfiddled dir in l+f and rename resource (use dirId for associated data)+ AtomicInteger fileCounter = new AtomicInteger(1);+ AtomicInteger dirCounter = new AtomicInteger(1);+ AtomicInteger symlinkCounter = new AtomicInteger(1);+ String longNameSuffix = createClearnameToBeShortened(config.getShorteningThreshold());++ for (Path orphanedResource : orphanedContentStream) {+ var newClearName = switch (determineCiphertextFileType(orphanedResource)) {+ case FILE -> FILE_PREFIX + fileCounter.getAndIncrement();+ case DIRECTORY -> DIR_PREFIX + dirCounter.getAndIncrement();+ case SYMLINK -> SYMLINK_PREFIX + symlinkCounter.getAndIncrement();+ };+ adoptOrphanedResource(new Adoption(newClearName, orphanedResource), stepParentDir, cryptor.fileNameCryptor(), longNameSuffix);+ }+ }+ Files.delete(orphanedDir);+ }++ /* visisble for testing */+ CryptoPathMapper.CiphertextDirectory prepareCryptoFilesystem(Path pathToVault, FileNameCryptor cryptor, String clearStepParentDirName) throws IOException {+ Path dataDir = pathToVault.resolve(Constants.DATA_DIR_NAME);+ String rootDirHash = cryptor.hashDirectoryId(Constants.ROOT_DIR_ID);+ Path vaultCipherRootPath = dataDir.resolve(rootDirHash.substring(0, 2)).resolve(rootDirHash.substring(2)).toAbsolutePath();++ //create if not existent with constant id+ String cipherRecoveryDirName = convertClearToCiphertext(cryptor, Constants.RECOVERY_DIR_NAME, Constants.ROOT_DIR_ID);+ Path cipherRecoveryDirFile = vaultCipherRootPath.resolve(cipherRecoveryDirName + "/" + Constants.DIR_FILE_NAME);+ if (Files.notExists(cipherRecoveryDirFile, LinkOption.NOFOLLOW_LINKS)) {+ Files.createDirectory(cipherRecoveryDirFile.getParent());+ Files.writeString(cipherRecoveryDirFile, Constants.RECOVERY_DIR_ID, StandardCharsets.UTF_8, StandardOpenOption.CREATE_NEW, StandardOpenOption.WRITE);+ } else {+ String uuid = Files.readString(cipherRecoveryDirFile, StandardCharsets.UTF_8);+ if (!uuid.equals(Constants.RECOVERY_DIR_ID)) {+ throw new FileAlreadyExistsException("Directory /" + Constants.RECOVERY_DIR_NAME + " already exists, but with wrong directory id.");+ }+ }+ String recoveryDirHash = cryptor.hashDirectoryId(Constants.RECOVERY_DIR_ID);+ Path cipherRecoveryDir = dataDir.resolve(recoveryDirHash.substring(0, 2)).resolve(recoveryDirHash.substring(2)).toAbsolutePath();+ Files.createDirectories(cipherRecoveryDir);++ //create deorphanedDirectory+ String cipherStepParentDirName = convertClearToCiphertext(cryptor, clearStepParentDirName, Constants.RECOVERY_DIR_ID);+ Path cipherStepParentDirFile = cipherRecoveryDir.resolve(cipherStepParentDirName + "/" + Constants.DIR_FILE_NAME);+ Files.createDirectory(cipherStepParentDirFile.getParent());+ var stepParentUUID = UUID.randomUUID().toString();+ Files.writeString(cipherStepParentDirFile, stepParentUUID, StandardCharsets.UTF_8, StandardOpenOption.CREATE_NEW, StandardOpenOption.WRITE);+ String stepParentDirHash = cryptor.hashDirectoryId(stepParentUUID);+ Path stepParentDir = dataDir.resolve(stepParentDirHash.substring(0, 2)).resolve(stepParentDirHash.substring(2)).toAbsolutePath();+ Files.createDirectories(stepParentDir);+ return new CryptoPathMapper.CiphertextDirectory(stepParentUUID, stepParentDir);+ }++ // visible for testing+ void adoptOrphanedResource(Adoption adoption, CryptoPathMapper.CiphertextDirectory stepParentDir, FileNameCryptor cryptor, String longNameSuffix) throws IOException {+ if (adoption.oldCipherPath.toString().endsWith(Constants.DEFLATED_FILE_SUFFIX)) {+ var newCipherName = convertClearToCiphertext(cryptor, adoption.newClearname + longNameSuffix, stepParentDir.dirId);+ var deflatedName = BaseEncoding.base64Url().encode(SHA1_HASHER.digest(newCipherName.getBytes(StandardCharsets.UTF_8))) + Constants.DEFLATED_FILE_SUFFIX;+ Path targetPath = stepParentDir.path.resolve(deflatedName);+ Files.move(adoption.oldCipherPath, targetPath, StandardCopyOption.ATOMIC_MOVE);++ //adjust name.c9s+ try (var fc = Files.newByteChannel(targetPath.resolve(Constants.INFLATED_FILE_NAME), StandardOpenOption.WRITE, StandardOpenOption.CREATE, StandardOpenOption.TRUNCATE_EXISTING)) {+ fc.write(ByteBuffer.wrap(newCipherName.getBytes(StandardCharsets.UTF_8)));+ }+ } else {+ var newCipherName = convertClearToCiphertext(cryptor, adoption.newClearname, stepParentDir.dirId);+ Path targetPath = stepParentDir.path.resolve(newCipherName);+ Files.move(adoption.oldCipherPath, targetPath, StandardCopyOption.ATOMIC_MOVE);+ }+ }++ // visible for testing+ record Adoption(String newClearname, Path oldCipherPath) {}++ private String createClearnameToBeShortened(int threshold) {+ int neededLength = threshold / 4 * 3 - 16;
Fixed in 6af26a6
comment created time in 19 hours
push eventcryptomator/cryptofs
commit sha fa044d21eca97f379041d5c5a305943c01fa016c
adjust inline comments
commit sha 242e16e153260d1f130b813ba3b71c970a22091e
append to recovered files a run id to make continuation of runs possible
commit sha 6af26a62b8de23d8f1be9a9d346aefede37854d5
adjust exceed shortening threshold computation
push time in 19 hours
push eventcryptomator/integrations-mac
commit sha 54c6b02af69808689e732996a4dcfda7a34b0342
New translations MacIntegrationsBundle.properties (Greek) [ci skip]
push time in a day
issue openedcryptomator/cryptofs
Reflictive access for dependencies in test runs
TODO
created time in 2 days
Pull request review commentcryptomator/cryptofs
Health-API: Implement OrphanDir.fix()
public void fix(Path pathToVault, VaultConfig config, Masterkey masterkey, Crypt Files.delete(orphanedDir); } + CryptoPathMapper.CiphertextDirectory prepareCryptoFilesystem(Path pathToVault, FileNameCryptor cryptor, String clearStepParentDirName) throws IOException {+ Path dataDir = pathToVault.resolve(Constants.DATA_DIR_NAME);+ String rootDirHash = cryptor.hashDirectoryId(Constants.ROOT_DIR_ID);+ Path vaultCipherRootPath = dataDir.resolve(rootDirHash.substring(0, 2)).resolve(rootDirHash.substring(2)).toAbsolutePath();++ //create if not existent with constant id+ String cipherRecoveryDirName = convertClearToCiphertext(cryptor, Constants.RECOVERY_DIR_NAME, Constants.ROOT_DIR_ID);+ Path cipherRecoveryDirFile = vaultCipherRootPath.resolve(cipherRecoveryDirName + "/" + Constants.DIR_FILE_NAME);+ Files.createDirectory(cipherRecoveryDirFile.getParent());
Fixed in 1d0be7d
comment created time in 2 days
push eventcryptomator/cryptofs
commit sha ea25de5f51341f346e612fed809b0c8e50da6658
move sha1 computer into static variable
commit sha 3073111ee6e156c52e5e93afb6341b8309da35de
Add unit test
commit sha 1d0be7d36aa342581ce37f07a6cfa47f1fbb2a1a
throw exeception if a directory with recovery name but not recovery id exists
commit sha 3aca38c02886007a40aaa0f2f09ce78f0bb1e5f6
refactor fix method and add unit tests
commit sha 3c9afde5cbb6f357ded923f43ca3331763ef2a0e
add unit tests and clean up
commit sha 4ae135c54d916809b5a7ffd7e0cf6c6980fcd79a
don't follow links in messed up vaults
commit sha a1d5bc8cf5f5226922bdfd1e8d493dc8b0ed5978
more cleanup in unit tests
commit sha 979bfb341864909d774b39a60ebc9f2a1f5b874a
add unit test for fix()
push time in 2 days
push eventcryptomator/cryptofs
commit sha 58cec8ee3d2781ee192dfefedbf4794ddaeeab01
Introduce new constant dir id and Change preparation of fs for orphan dir fix * recovery dir for orphaned dirs gets special, constant dirID * don't open cryptofilesystem but do manual encryption
push time in 3 days
push eventcryptomator/cryptomator
commit sha f2fadafa6629f075fad535a1b434b7683a3273f2
Fix snyk.io badge in README due to switch to single maven module
push time in 3 days
delete branch cryptomator/cryptomator
delete branch : feature/sign-src-tarball
delete time in 3 days
push eventcryptomator/cryptomator
commit sha 74355b128a8ea1f0defe630e53efb69717b016b9
Sign tarball in release using GPG
commit sha b15cda260e35ca7f6a9a0cf4fa94c07ead89439c
Apply suggestions from code review Co-authored-by: Sebastian Stenzel <[email protected]>
commit sha 08cbfd47eaa7f086afd4bd3fa0574e699f07c7a6
Prefix signature of tarball in release with cryptomator To apply convention of the other release assets
commit sha 067673279614fbed2de08182c79e43c30bf99eb2
Merge pull request #1693 from cryptomator/feature/sign-src-tarball Sign tarball in release using GPG
push time in 3 days
PR merged cryptomator/cryptomator
As some users build this project from source using a package manager like pacman on arch based linux distros, we could provide a GPG signature next to the source tarball, so that those package managers can automatically verify the signature of the downloaded sources and not check the SHA256 provided by the packager.
With this PR, a cryptomator-${{ github.ref }}.tar.gz.asc file e.g. cryptomator-1.6.0.tar.gz.asc will be added to the release assets.
pr closed time in 3 days
push eventcryptomator/cryptomator
commit sha 08cbfd47eaa7f086afd4bd3fa0574e699f07c7a6
Prefix signature of tarball in release with cryptomator To apply convention of the other release assets
push time in 3 days
push eventcryptomator/cryptomator
commit sha b15cda260e35ca7f6a9a0cf4fa94c07ead89439c
Apply suggestions from code review Co-authored-by: Sebastian Stenzel <[email protected]>
push time in 3 days
PR opened cryptomator/cryptomator
As some users build this project from source using a package manager like pacman on arch based linux distros, we could provide a GPG signature next to the source tarball, so that those package managers can automatically verify the signature of the downloaded sources and not check the SHA256 provided by the packager.
pr created time in 3 days
push eventcryptomator/cryptomator
commit sha 74355b128a8ea1f0defe630e53efb69717b016b9
Sign tarball in release using GPG
push time in 3 days
create barnchcryptomator/cryptomator
branch : feature/sign-src-tarball
created branch time in 3 days
A customizable Cookie Consent Banner for Angular. Built with Tailwind. GDPR & EU ready! (WIP)
https://garygrossgarten.github.io/cookiemonster/
fork in 3 days
push eventcryptomator/integrations-mac
commit sha db150e8a718605087a14b02d8f6a067fc843f9de
New translations MacIntegrationsBundle.properties (Japanese) [ci skip]
push time in 4 days