Skip to content

Anonymity iOS client side. This is an end-to-end encryption chat app for partial fulfillment of Steve's MSc Project and the degree of MSc Cyber Security.

License

Notifications You must be signed in to change notification settings

stevexyh/Anonymity-client-iOS

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Anonymity client-iOS

Anonymity iOS client side. This is an end-to-end encryption chat app for partial fulfillment of Steve's MSc Project and the degree of MSc Cyber Security.

Files

.
├── README.md
├── imgs
│   ├── ver0.1-sketch/...
│   ├── ver0.2-sketch/...
│   └── ver0.3-sketch/...
├── screenshots-ver0.2.md
└── src
    └── Anonymity
        ├── Anonymity.xcodeproj/...
        ├── Playgrounds
        │   └── Cryptography.playground/...
        ├── Shared
        │   ├── Anonymity.xcdatamodeld/...
        │   ├── AnonymityApp.swift
        │   ├── Assets.xcassets/...
        │   ├── DataServices
        │   │   ├── ChatDataService.swift
        │   │   ├── ContactDataService.swift
        │   │   ├── FileDataService.swift
        │   │   ├── MessageDataService.swift
        │   │   ├── PublicKeyDataService.swift
        │   │   └── UserDataService.swift
        │   ├── Extensions
        │   │   ├── Dictionary.swift
        │   │   └── UIApplication.swift
        │   ├── GoogleService-Info.plist
        │   ├── Managers
        │   │   ├── CryptoManager.swift
        │   │   ├── DicKeyManager.swift
        │   │   ├── FirebaseManager.swift
        │   │   └── UserAuthManager.swift
        │   ├── Models
        │   │   ├── Chat.swift
        │   │   ├── Contact.swift
        │   │   ├── File.swift
        │   │   ├── Message.swift
        │   │   └── User.swift
        │   ├── Persistence.swift
        │   ├── ViewModels
        │   │   ├── ChatViewModel.swift
        │   │   ├── ContactsViewModel.swift
        │   │   └── MessageListViewModel.swift
        │   └── Views
        │       ├── Chat
        │       │   ├── ChatView.swift
        │       │   ├── DownloadProgressView.swift
        │       │   └── MessageBubbleSubView.swift
        │       ├── Components
        │       │   ├── AvatarView.swift
        │       │   ├── ClipboardSubView.swift
        │       │   ├── ContactsAddSheetView.swift
        │       │   └── OnlineStatusView.swift
        │       ├── ContactsView.swift
        │       ├── ContentView.swift
        │       ├── HomePageView.swift
        │       ├── LoginView.swift
        │       ├── MessageListView.swift
        │       ├── SettingsView.swift
        │       └── UserProfileView.swift
        ├── Tests iOS
        │   ├── Tests_iOS.swift
        │   └── Tests_iOSLaunchTests.swift
        ├── Tests macOS
        │   ├── Tests_macOS.swift
        │   └── Tests_macOSLaunchTests.swift
        ├── UnitTests iOS
        │   ├── DataServices_Tests
        │   │   ├── ChatDataService_Tests.swift
        │   │   └── PublicKeyDataService_Tests.swift
        │   ├── Managers_Tests
        │   │   └── CryotoManager_Tests.swift
        │   └── UnitTests_iOS.swift
        └── macOS
            └── macOS.entitlements

45 directories, 84 files

Environment

  • Swift 5.0
  • macOS 12.4
  • iOS 15.5

Usage

  • Register app on Google Firebase
  • Download GoogleService-Info.plist
  • Add file GoogleService-Info.plist in project
  • Build project using Xcode
  • Run app on a simulator

Download

  • git clone --recurse-submodules https://github.com/Steve-Xyh/Anonymity-client-iOS.git

Installation

  • Build & run using Xcode

TODO List

UI

  • main page
  • chat page
  • user profile page
  • settings page
  • contacts page
  • sign in page

Logic

  • sign in
  • add contacts
  • tmp VM Database
  • firebase
  • auth
  • communication
  • encryption
    • ECC key gen & publish
    • AES key distribution
    • AES symmetric encryption & decryption
  • file transfer
    • file encryption & decryption

Learn Next If Possible

  • Unit Test
  • Dependency Injection

Dissertation

  • Abstract
  • Statement of Originality
  • Acknowledgements
  • TOC
  • 1. Introduction
  • 2. Literature Review & Techniques
    • 2.1 MVVM Architecture
    • 2.2 Swift
    • 2.3 Cryptography Algorithms
    • 2.4 Google Firebase
  • 3. Project Plan
  • 4. Sofeware Design
    • 4.1 Module Layers
    • 4.2 Data Models
    • 4.3 Views
  • 5. Implementation
    • 5.1 Project Structure
    • 5.2 Database Fields
    • 5.3 User Services
    • 5.4 Contacts Services
    • 5.5 Communications
    • 5.6 Encryption
  • 6. Unit Tests
    • 6.1 Data Services Tests
    • 6.2 Managers Tests
  • 7. Experiments & Stress Tests
    • 7.1 Stress Tests of Key Generation
    • 7.2 Stress Tests of Encryption & Decryption
  • 8. Conclusion
    • 8.1 Functions implemented
    • 8.2 Project Deficiencies & Future Improvements
  • I. References
  • II. Appendix

Screenshots

Version 0.2-Sketch

1. Home Page

2. Chat Page

3. User Profile Page

4. Contacts Page

5. Settings Page


Developed by Steve X © 2017 - 2022

About

Anonymity iOS client side. This is an end-to-end encryption chat app for partial fulfillment of Steve's MSc Project and the degree of MSc Cyber Security.

Topics

Resources

License

Stars

Watchers

Forks

Packages

No packages published

Languages