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.
.
├── 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
Swift 5.0
macOS 12.4
iOS 15.5
- 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
git clone --recurse-submodules https://github.com/Steve-Xyh/Anonymity-client-iOS.git
- Build & run using Xcode
- main page
- chat page
- user profile page
- settings page
- contacts page
- sign in page
- 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
- Unit Test
- Dependency Injection
- 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
Developed by Steve X © 2017 - 2022