Skip to content

justinsz/dahkline

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

4 Commits
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Dahkline

Dahkline is a privacy-focused, iOS-native, peer-to-peer encrypted communication app. It allows users to exchange short, Morse-style messages over encrypted TLS connections using asymmetric keys for end-to-end encryption. The app is designed to be fully peer-to-peer with no servers or cloud dependencies.

Features Implemented

  • PeerIdentity

    • Struct to manage user identity with properties for username, public key, and signature.
    • Initialization method that signs the username and public key with a private key.
    • Method to verify the signature.
  • DahklineConnection

    • Class to handle outgoing connections.
    • Opens a TLS connection using NWConnection.
    • Derives a shared key using CryptoKit.
    • Encrypts and sends messages using AES-GCM.
  • DahklineListener

    • Class to listen for incoming connections.
    • Decrypts received messages using a shared secret derived from a private key and peer's public key.
    • Updated to require peer's public key for starting the listener.
  • AddPeerView

    • SwiftUI view to add a peer by entering their information and sending a message.
    • Option to save peers to trusted contacts.
    • Accepts myPrivateKey for secure communication.
  • TrustedContactsView

    • Displays a list of trusted contacts.
    • Allows navigation to ConversationView for messaging.
  • ConversationView

    • Enables messaging with a selected trusted contact.
    • Displays chat history and allows sending new messages.
    • Plays Morse code tones for messages.

Features Missing

  • User Interface Enhancements

    • Further improvements to the chat UI and user experience.
  • Peer Discovery

    • QR-code-based peer discovery for easier connection setup.
  • macOS Support

    • Extend support to macOS platforms.
  • Additional Security Features

    • Further enhancements to secure identity management and connection handling.

Getting Started

To get started with Dahkline, clone the repository and open the project in Xcode. Ensure you have the latest version of Xcode and iOS SDK installed.

git clone <repository-url>
cd dahkline
open dahkline.xcodeproj

Contributing

Contributions are welcome! Please fork the repository and submit a pull request for any improvements or bug fixes.

License

This project is licensed under the MIT License - see the LICENSE file for details.

Note

Please note that the current UI is still under development and is not ready for production use. Further enhancements and testing are required to ensure a stable and user-friendly experience.

About

Encrypted. Minimal. Morse.

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages