Convert Figma logo to code with AI

ChatSecure logoChatSecure-iOS

ChatSecure is a free and open source encrypted chat client for iOS that supports OTR and OMEMO encryption over XMPP.

3,131
1,028
3,131
438

Top Related Projects

A private messenger for iOS.

Quick Overview

ChatSecure-iOS is an open-source, secure messaging app for iOS devices. It provides end-to-end encryption for instant messaging using the XMPP protocol and OTR (Off-the-Record) messaging. The app focuses on privacy and security while offering a user-friendly interface for communication.

Pros

  • Strong encryption: Uses OTR for end-to-end encryption, ensuring message privacy
  • Open-source: Allows for community auditing and contributions to improve security
  • Cross-platform compatibility: Works with other XMPP-based clients
  • Regular updates: Actively maintained with frequent security improvements

Cons

  • Limited features compared to mainstream messaging apps
  • Requires technical knowledge for optimal setup and use
  • Smaller user base compared to popular messaging apps
  • May experience occasional stability issues due to its focus on cutting-edge security features

Code Examples

As ChatSecure-iOS is a full iOS application rather than a code library, specific code examples are not applicable. However, developers interested in contributing or learning from the project can explore the source code on GitHub.

Getting Started

Since ChatSecure-iOS is an iOS application and not a code library, there isn't a traditional "getting started" section for developers to integrate it into their projects. Instead, users can download the app from the App Store or build it from source. For developers interested in contributing or building from source:

  1. Clone the repository:

    git clone https://github.com/ChatSecure/ChatSecure-iOS.git
    
  2. Install dependencies using CocoaPods:

    pod install
    
  3. Open the ChatSecure.xcworkspace file in Xcode

  4. Build and run the project on your iOS device or simulator

For more detailed instructions on building from source or contributing to the project, refer to the repository's README and CONTRIBUTING files.

Competitor Comparisons

A private messenger for iOS.

Pros of Signal-iOS

  • More active development with frequent updates and bug fixes
  • Stronger focus on end-to-end encryption and privacy features
  • Larger user base and community support

Cons of Signal-iOS

  • Less flexible in terms of protocol support (primarily uses Signal Protocol)
  • More closed ecosystem, limiting interoperability with other messaging platforms

Code Comparison

Signal-iOS (Objective-C):

- (void)sendMessage:(TSOutgoingMessage *)message
{
    [self.messageSender enqueueMessage:message success:^{
        // Message sent successfully
    } failure:^(NSError *error) {
        // Handle error
    }];
}

ChatSecure-iOS (Swift):

func sendMessage(_ message: OTROutgoingMessage) {
    xmppManager?.sendMessage(message, completion: { (success, error) in
        if success {
            // Message sent successfully
        } else if let error = error {
            // Handle error
        }
    })
}

Both repositories implement secure messaging functionality, but Signal-iOS focuses more on the Signal Protocol, while ChatSecure-iOS supports multiple protocols, including XMPP. Signal-iOS has a larger codebase and more frequent updates, reflecting its wider user base and active development. ChatSecure-iOS offers more flexibility in terms of protocol support but has a smaller community and less frequent updates.

Convert Figma logo designs to code with AI

Visual Copilot

Introducing Visual Copilot: A new AI model to turn Figma designs to high quality code using your components.

Try Visual Copilot

README

ChatSecure

Build Status

ChatSecure is a free and open source XMPP messaging client for iOS that integrates OTR and OMEMO encrypted messaging support, and has optional integrated support for connectivity via the Tor network.

download chatsecure on the app store

Cost

Redistributing ChatSecure Code on the App Store

Even though this project is open source, this does not mean you can reuse this code when distributing closed source commercial products. Please contact us to discuss licensing options before you start building your product.

If you are an open source project, please contact us to arrange for an App Store redistribution exception. For more information about why this is required, please read this blog post from Open Whisper Systems.

Cost for End Users

Downloading the ChatSecure app is 100% free because it is important that all people around the world have unrestricted access to privacy tools. However, developing and supporting this project is hard work and costs real money. Please help support the development of this project!

Localization

If you would like to contribute/improve a translation:

  1. Visit our Transifex project page and make an account if you don't have one already.
  2. Go to the resources subsites AppStore.strings & Localizable.strings to add a new language or improve an existing translation.
  3. Open an issue on Github notifying us of your translation.

Compatibility

There's a more full list of OTR clients on Wikipedia. A smaller list of clients support the mobile-friendly OMEMO Encryption.

Desktop

  • dino (Linux, macOS, Windows) Supports OMEMO

Mobile

Build Instructions

You'll need CocoaPods installed for most of our dependencies.

$ gem install cocoapods

Download the source code and don't forget to pull down all of the submodules as well.

$ git clone https://github.com/ChatSecure/ChatSecure-iOS.git
$ cd ChatSecure-iOS/
$ git submodule update --init --recursive

Now you'll need to build the dependencies.

$ bash ./Submodules/CPAProxy/scripts/build-all.sh
$ bash ./Submodules/OTRKit/scripts/build-all.sh
$ pod repo update
$ pod install

Next you'll need to create your own version of environment-specific data. Make a copy of Secrets-template.plist as Secrets.plist:

$ cp OTRResources/Secrets-template.plist OTRResources/Secrets.plist

You'll need to manually change the Team ID under Project -> Targets -> ChatSecure -> Signing. The old .xcconfig method doesn't seem to work well anymore.

Open ChatSecure.xcworkspace in Xcode and build.

Note: Don't open the .xcodeproj because we use Cocoapods now!

If you're still having trouble compiling check out the Travis-CI build status and .travis.yml file.

Contributing

Thank you for your interest in contributing to ChatSecure! To avoid potential legal headaches and to allow distribution on Apple's App Store please sign our CLA (Contributors License Agreement).

  1. Sign the CLA (odt, pdf) and email it to chris@chatsecure.org.
  2. Fork the project and (preferably) work in a feature branch.
  3. Open a pull request on GitHub.
  4. Thank you!

License

Software License Agreement (GPLv3+)

Copyright (c) 2015, Chris Ballinger. All rights reserved.

This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.

This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
GNU General Public License for more details.

You should have received a copy of the GNU General Public License
along with this program.  If not, see <http://www.gnu.org/licenses/>.

If you would like to relicense this code to distribute it on the App Store, please contact me at chris@chatsecure.org.

Third-party Libraries

This software additionally references or incorporates the following sources of intellectual property, the license terms for which are set forth in the sources themselves:

The following dependencies are bundled with the ChatSecure, but are under terms of a separate license:

For a more complete list, check the Podfile and Cartfile.

Regenerating Acknowledgements

To regenerate the acknowledgements in Settings.app use LicensePlist and copy the output to Settings.bundle.

$ brew install mono0926/license-plist/license-plist
$ license-plist --add-version-numbers --output-path ChatSecure/Settings.bundle --suppress-opening-directory

Acknowledgements

Thank you to everyone who helped this project become a reality! This project is also supported by the fine folks from The Guardian Project, OpenITP, and the Open Technology Fund.