Complete System Documentation (Desktop Server + Mobile App)
| Item | Value |
|---|---|
| App Name | OpenDrop |
| Version | 0.6.91 |
| Platforms | iOS, Android, macOS, Windows, Linux |
| Uses Encryption | Yes |
| Proprietary Encryption | No |
| Exemption Claimed | EAR 740.17(b)(1) - Mass Market |
| Component | Encryption Type | Standard | Implementation |
|---|---|---|---|
| Network Communication | TLS 1.2/1.3 | IETF RFC 8446 | Platform SSL/TLS |
| Authentication | OAuth 2.0 | IETF RFC 6749 | Firebase Auth, Google Sign-In |
| ID Tokens | JWT | IETF RFC 7519 | Firebase ID Tokens |
| In-App Purchases | TLS | Platform Standard | RevenueCat SDK |
| Cloud Sync | HTTPS | IETF RFC 2818 | Cloudflare Workers |
| Tunnel | QUIC/TLS 1.3 | IETF RFC 9000 | cloudflared |
Library: firebase_auth (Flutter)
Purpose: User authentication and session management
Encryption: TLS 1.2/1.3 (platform-provided)
Standards: OAuth 2.0 (RFC 6749), JWT (RFC 7519)
Usage in Code:
auth_service.dart: Firebase Auth for user sign-inLibrary: google_sign_in (Flutter)
Purpose: OAuth 2.0 authentication with Google
Encryption: TLS via platform SDK
Standards: OAuth 2.0 (RFC 6749, RFC 6750)
Usage in Code:
auth_service.dart: GoogleSignIn class for OAuth flowLibrary: purchases_flutter
Purpose: Subscription management and purchase verification
Encryption: TLS 1.2/1.3 (SDK-provided)
Standards: HTTPS, platform billing APIs
Usage in Code:
subscription_service.dart: Subscription status checkingmain.dart: SDK initializationconfig.dart: API key configurationLibrary: dio (Dart)
Purpose: API calls to OpenDrop desktop server
Encryption: TLS via platform SSL/TLS stack
Standards: HTTPS (RFC 2818)
Usage in Code:
api_service.dart: All server communicationfile_uploader.dart: Chunked file uploadsLibrary: mobile_scanner
Purpose: Scan QR codes for connection setup
Encryption: None (camera input only)
Note: QR scanning itself does not use encryption. The scanned data (connection URL and secret) is transmitted over HTTPS.
| File | Component | Encryption Used |
|---|---|---|
main.dart |
Firebase init, RevenueCat init | TLS (platform) |
auth_service.dart |
Firebase Auth, Google Sign-In | OAuth 2.0, TLS |
subscription_service.dart |
RevenueCat purchases | TLS (SDK) |
api_service.dart |
Server API calls | HTTPS/TLS |
file_uploader.dart |
File upload | HTTPS/TLS |
firebase_options.dart |
Firebase config | N/A (config only) |
qr_scan_page.dart |
QR scanning | None |
Library: requests (Python)
Purpose: Sync data to Cloudflare Worker
Encryption: TLS 1.2/1.3 via OS SSL stack
Standards: HTTPS (RFC 2818)
Usage in Code:
cloud_sync.py: sync_to_cloud(), _heartbeat_loop()Library: google-auth-oauthlib
Purpose: Google Sign-In for desktop
Encryption: TLS via requests library
Standards: OAuth 2.0 (RFC 6749, RFC 6750)
Usage in Code:
auth.py: Credential management and token refreshBinary: cloudflared
Purpose: Secure tunnel exposing local server
Encryption: QUIC with TLS 1.3
Standards: QUIC (RFC 9000), TLS 1.3 (RFC 8446)
Usage in Code:
tunnel.py: Tunnel initialization and managementImplementation: Server-generated tokens
Purpose: Authenticated session continuity
Transmission: HTTPS headers
Usage in Code:
middleware.py: Session validationhealth.py: Session creation| File | Component | Encryption Used |
|---|---|---|
cloud_sync.py |
Worker sync, heartbeat | HTTPS/TLS |
tunnel.py |
Cloudflare tunnel | TLS 1.3/QUIC |
middleware.py |
Session validation | None (token comparison) |
health.py |
Session creation | None (token generation) |
paths.py |
Token file storage | None (plaintext JSON) |
| SDK | Provider | Encryption | Documentation |
|---|---|---|---|
| Firebase | TLS 1.2+ | Firebase Security | |
| RevenueCat | RevenueCat | TLS 1.2+ | RevenueCat Security |
| Google Sign-In | OAuth 2.0/TLS | Google Identity | |
| Cloudflare | Cloudflare | TLS 1.3 | Cloudflare Security |
| Dio | pub.dev | Platform TLS | Uses system certificates |
All third-party SDKs use standard encryption provided by their respective platforms and comply with international encryption standards.
Q1: Does your app use encryption?
Yes
Q2: Does your app qualify for any exemptions provided in Category 5, Part 2 of the EAR?
Yes - Mass market exemption under EAR 740.17(b)(1)
Q3: Does your app implement any proprietary or non-standard cryptographic algorithms?
No - All encryption uses industry-standard algorithms
Q4: Does your app only use encryption provided by the operating system?
No - The app uses additional standard third-party libraries, but all implement standard algorithms
Q5: Is your app available without restriction?
Yes - Available to general public
Q6: Is the encryption user-configurable?
No - Users cannot modify encryption settings
Q7: Is your app designed for government use?
No - Consumer file sharing application
| Requirement | Status | Evidence |
|---|---|---|
| Uses standard encryption | ✅ Met | TLS, OAuth 2.0, JWT only |
| Available to general public | ✅ Met | App Store / Play Store distribution |
| No government-specific features | ✅ Met | General file sharing utility |
| Encryption not user-modifiable | ✅ Met | No encryption settings exposed |
| Not for military/intelligence | ✅ Met | Consumer application |
| Mass market distribution | ✅ Met | Available worldwide |
When submitting your app to App Store Connect, you will be asked about export compliance. Use these answers:
"Does your app use encryption?"
Select: Yes
"Does your app qualify for any of the exemptions provided in Category 5, Part 2 of the U.S. Export Administration Regulations?"
Select: Yes
"Does your app contain, use, or access third-party encryption?"
Select: Yes
"Does your app implement or use cryptography that is proprietary or not accepted as standard by international standard bodies (IEEE, IETF, ITU, etc.)?"
Select: No
"Is your app going to be available on the French App Store?"
Select: Yes (app qualifies for all territories)
If required, use BIS classification:
OpenDrop version 0.6.91 uses encryption exclusively for:
- Secure network communication via HTTPS using standard TLS 1.2/1.3 protocols
- User authentication via OAuth 2.0 (Google Sign-In) and Firebase Authentication
- In-app purchase verification via RevenueCat SDK using platform billing APIs
- Secure tunneling via Cloudflare's publicly available tunnel software
- JWT token handling for session management using standard RFC 7519 format
No proprietary encryption algorithms are implemented. All cryptographic functionality is provided by:
- Apple's Security framework and App Transport Security
- Firebase SDK (Google)
- RevenueCat SDK
- Platform-provided TLS/SSL implementations
This application qualifies for the mass market encryption exemption under U.S. Export Administration Regulations section 740.17(b)(1).
OpenDrop uses encryption for secure data transmission only. All encryption is provided by:
- Android platform TLS/SSL
- Firebase Authentication SDK
- RevenueCat Purchases SDK
- Standard HTTPS for API communication
No custom or proprietary encryption algorithms are used.
┌─────────────────────────────────────────────────────────────────┐ │ OPENDROP SYSTEM │ ├─────────────────────────────────────────────────────────────────┤ │ │ │ ┌─────────────────┐ HTTPS/TLS ┌────────────┐ │ │ │ Mobile App │◄──────────────────────────►│ Firebase │ │ │ │ (Flutter) │ OAuth 2.0 │ Auth │ │ │ └────────┬────────┘ └────────────┘ │ │ │ │ │ │ HTTPS/TLS │ │ │ │ │ ▼ │ │ ┌─────────────────┐ HTTPS/TLS ┌────────────┐ │ │ │ RevenueCat │◄──────────────────────────►│ Store │ │ │ │ SDK │ │ APIs │ │ │ └─────────────────┘ └────────────┘ │ │ │ │ ┌─────────────────┐ TLS 1.3/QUIC ┌────────────┐ │ │ │ Desktop Server │◄──────────────────────────►│ Cloudflare │ │ │ │ (Python) │ Tunnel │ Edge │ │ │ └────────┬────────┘ └────────────┘ │ │ │ │ │ │ HTTPS/TLS │ │ ▼ │ │ ┌─────────────────┐ ┌────────────┐ │ │ │ Cloudflare │◄──────────────────────────►│ Mobile │ │ │ │ Worker │ HTTPS/TLS │ App │ │ │ └─────────────────┘ └────────────┘ │ │ │ │ ┌─────────────────────────────────────────────────────────┐ │ │ │ ENCRYPTION STANDARDS │ │ │ │ • TLS 1.2/1.3 (IETF RFC 8446) │ │ │ │ • OAuth 2.0 (IETF RFC 6749) │ │ │ │ • JWT (IETF RFC 7519) │ │ │ │ • HTTPS (IETF RFC 2818) │ │ │ │ • QUIC (IETF RFC 9000) │ │ │ └─────────────────────────────────────────────────────────┘ │ │ │ └─────────────────────────────────────────────────────────────────┘ All connections use standard encryption - NO proprietary algorithms
| Field | Value |
|---|---|
| Document Version | 2.0 |
| Created | January 2026 |
| App Version | 0.6.91 |
| Author | NFDGames |
| Covers | Desktop Server + Mobile App |
| File | Encryption Relevance |
|---|---|
main.dart | Firebase & RevenueCat initialization |
auth_service.dart | OAuth 2.0 flows, Firebase Auth |
subscription_service.dart | RevenueCat purchase verification |
api_service.dart | HTTPS API communication |
file_uploader.dart | HTTPS file transfer |
config.dart | API keys (no encryption code) |
firebase_options.dart | Firebase config (no encryption code) |
qr_scan_page.dart | No encryption |
connection_status.dart | No encryption (enum only) |
main_screen.dart | No encryption (UI only) |
open_drop_app.dart | No encryption (UI only) |
files_tab.dart | Uses ApiService (HTTPS) |
upload_tab.dart | Uses ApiService (HTTPS) |
shared_folders_tab.dart | Uses ApiService (HTTPS) |
recently_deleted_screen.dart | Uses ApiService (HTTPS) |
auth_screen.dart | Uses AuthService (OAuth) |
file_action_menu.dart | No encryption (UI only) |
| File | Encryption Relevance |
|---|---|
cloud_sync.py | HTTPS requests |
tunnel.py | cloudflared TLS tunnel |
auth.py | OAuth 2.0 token management |
middleware.py | Session token validation |
health.py | Session token creation |
app.py | No encryption (routing) |
config.py | No encryption (config) |
paths.py | No encryption (file paths) |
files.py | No encryption (file ops) |
folders.py | No encryption (folder ops) |
trash.py | No encryption (trash ops) |
settings.py | No encryption (settings) |
utils.py | No encryption (utilities) |
validation.py | No encryption (validation) |
gui_app.py | No encryption (UI) |
gui_styles.py | No encryption (UI) |
updater.py | HTTPS for update checks |
Before submission, verify: