Coder Social home page Coder Social logo

cryptomator / cryptomator-objc-cryptor Goto Github PK

View Code? Open in Web Editor NEW
36.0 36.0 19.0 4.3 MB

iOS crypto library to access Cryptomator vaults

Home Page: https://cryptomator.org/

License: GNU Affero General Public License v3.0

Objective-C 66.22% Ruby 0.83% C 32.95%

cryptomator-objc-cryptor's Introduction

cryptomator

Build Known Vulnerabilities Quality Gate Status Twitter Crowdin Latest Release Community

Supporting Cryptomator

Cryptomator is provided free of charge as an open-source project despite the high development effort and is therefore dependent on donations. If you are also interested in further development, we offer you the opportunity to support us:

Gold Sponsors

gee-whiz

Silver Sponsors

Mow Capital Hassmann IT-Forensik

Special Shoutout

Continuous integration hosting for ARM64 builds is provided by MacStadium.

MacStadium


Introduction

Cryptomator offers multi-platform transparent client-side encryption of your files in the cloud.

Download native binaries of Cryptomator on cryptomator.org or clone and build Cryptomator using Maven (instructions below).

Features

  • Works with Dropbox, Google Drive, OneDrive, MEGA, pCloud, ownCloud, Nextcloud and any other cloud storage service which synchronizes with a local directory
  • Open Source means: No backdoors, control is better than trust
  • Client-side: No accounts, no data shared with any online service
  • Totally transparent: Just work on the virtual drive as if it were a USB flash drive
  • AES encryption with 256-bit key length
  • File names get encrypted
  • Folder structure gets obfuscated
  • Use as many vaults in your Dropbox as you want, each having individual passwords
  • Four thousand commits for the security of your data!! ๐ŸŽ‰

Privacy

  • 256-bit keys (unlimited strength policy bundled with native binaries)
  • Scrypt key derivation
  • Cryptographically secure random numbers for salts, IVs and the masterkey of course
  • Sensitive data is wiped from the heap asap
  • Lightweight: Complexity kills security

Consistency

  • Authenticated encryption is used for file content to recognize changed ciphertext before decryption
  • I/O operations are transactional and atomic, if the filesystems support it
  • Each file contains all information needed for decryption (except for the key of course), no common metadata means no SPOF

Security Architecture

For more information on the security details visit cryptomator.org.

Building

Dependencies

  • JDK 22 (e.g. temurin, zulu)
  • Maven 3

Run Maven

mvn clean install
# or mvn clean install -Pwin
# or mvn clean install -Pmac
# or mvn clean install -Plinux

This will build all the jars and bundle them together with their OS-specific dependencies under target. This can now be used to build native packages.

License

This project is dual-licensed under the GPLv3 for FOSS projects as well as a commercial license for independent software vendors and resellers. If you want to modify this application under different conditions, feel free to contact our support team.

cryptomator-objc-cryptor's People

Contributors

tobihagemann avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

cryptomator-objc-cryptor's Issues

Pod not usable with dynamic frameworks through cocoapods

Hi guys,

first of all: awesome work!

I was just playing around with the repository in a swift project but couldn't get it to work with my current podfile since there's a transitive dependencies that uses static binaries which can't be provided as a dynamic framwork with use_frameworks! through cocoapods.

I found the OpenSSL-Universal pod you rely on to be the cause, so I guess you could either fork it and restructure the project, find an alternative ssl implementation for iOS or I could contact the developer and ask for their support?

Thanks!

Sample code

Hello,

thank you for your work on Cryptomator.

Could you please consider sharing the code of the current Cryptomator iOS app or providing some sample code for this library?

I tried to use the library but failed.

#import <ObjectiveDropboxOfficial/ObjectiveDropboxOfficial.h>
//#import <SETOCryptomatorCryptor/SETOCryptomatorCryptor.h>
#import <SETOCryptomatorCryptor/SETOCryptorProvider.h>
#import <SETOCryptomatorCryptor/SETOCryptor.h>
#import <SETOCryptomatorCryptor/SETOAsyncCryptor.h>
#import <SETOCryptomatorCryptor/SETOMasterKey.h>

DBUserClient *client = [[DBUserClient alloc] initWithAccessToken:@"dropboxToken"];
[[[client.filesRoutes downloadData:@"/Tresor/masterkey.cryptomator"]
  setResponseBlock:^(DBFILESFileMetadata *result, DBFILESDownloadError *routeError, DBRequestError *networkError, NSData *fileContents) {
      if (result) {
          NSLog(@"%@\n", result);
          NSString *dataStr = [[NSString alloc] initWithData:fileContents encoding:NSUTF8StringEncoding];
          NSLog(@"%@\n", dataStr);

          NSString *password = @"secretCryptomatorPassword";
          SETOMasterKey *masterKey = [[SETOMasterKey alloc] init];
          [masterKey updateFromJSONData:fileContents];

          NSError *masterkeyPasswordError;
          SETOCryptor *cryptor = [SETOCryptorProvider cryptorFromMasterKey:masterKey withPassword:password error:&masterkeyPasswordError];
          if (masterkeyPasswordError) {
              NSLog(@"%@", masterkeyPasswordError);
          }

          NSString *decryptedFilename = [cryptor decryptFilename:@"...KMQBNSUA4NRU===" insideDirectoryWithId:@"/Tresor/d/ZA/...QT7IB5WEIT"];
          NSLog(@"decryptedFilename: %@", decryptedFilename);
      } else {
          NSLog(@"Error: %@\n%@\n", routeError, networkError);
      }
  }] setProgressBlock:^(int64_t bytesDownloaded, int64_t totalBytesDownloaded, int64_t totalBytesExpectedToDownload) {
      NSLog(@"%lld\n%lld\n%lld\n", bytesDownloaded, totalBytesDownloaded, totalBytesExpectedToDownload);
  }];

Encrypt images

Is it possible to encrypt images, then save the encrypted image into the documents bundle?

Swift version

Is there any reason that would prohibit a port/rewrite in swift?

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.