?xl9Aj(8%=Ura$6I$PGCYEvp$}wMiha?$?mO#pKmHYAmaw7uGJ>#a&TW
zNnm(&-Oe3Ze6=WL-A>k^YNzjc3|FgB)6?>T`=thq?-$mdgu~OwuBvp8mcJeAKFQ5}
z_4rbeCX>qb{B8p+HZ_s=p8OkyFM=6*_I?%V{m1<7A`X`n$j$0z9rkYb;RA$BmdOT(;QP&J?))&@
zA!}lT0O7*8)iGoxOP0~HD5^J{maMeq#8_8*B1FmV`e^KJ@kmfi@{Qb?2}RRE%1|BM
zq~M+1;Wux3`_8}W5`^`_b!iR9F_}VsUurQ~397Sve(nEe{u9
z7gWj75)GUQ1p&uet!#ijVGj_W3~=Me;yg%L9b;~Rv2nBl@hO=DJF7NW4}hrU>f~f^
z;egv|6#)UqI}Z<){<|X#I@~kX1U6ok0eS%4IDG*92I()yf&V?I4%{lhAF2iJU*W8Kv`LS%rjnx#a9;$t
z(PgG(fdyIGIGSUQ4kCk00oOT_0`@Yu0nYK_pAO&698gY&uJ~X0`nsIfpKb=3TUY{u
z0B7Pi`wv4z@TXe^fj0kg93G_xumCNg>_@E*KMrMp0U079Pz5QFA@B)<9zMc>N8ky5`S1e)!#|1QpOA+iFa(|`
zhbJDj!%IUz@I)~@C%!ohPlU=G5+OM3fIhq;#F1z`5sue@fFH8J@lxRO_;z@G@FVSb
zwXh==ydu#f?ME!K_;&cNK=4vvc%1Mf4fqD4cwwSPAn-UvkHF*ALhx{5M_BM0phqS=
zl5#}Evq14`q4*v_@!f>rKVW!dP<#Uz9t-S<1^*;^#CZfBF9mXB)+0j#Y7bAA|MWCa
zi#m+hf8xx{6@xp9e;C$>(T9sF;2yz0k?(|d!lll`*Pl7`|C=pwp$gnm{J*Ek%Z@;7
z;!@y0DNOLn&r*{)$`Ol8t}Y-$AVmR3;DJJwHu}1w4KAEPKo$W=zz{wvu;H!>{460I
zj*!F43NEC=$~NXMAW}n8e9;MzfxiLE`@jQz$Z0>$0<_)Q)Z{)apf7?AgV=Yzq3x$w8PxS8U2nkdc5r2hwpZ)g+%
literal 0
HcmV?d00001
diff --git a/docs/non-functional_delivrables.md b/gonogo-review/non-functional_delivrables.md
similarity index 100%
rename from docs/non-functional_delivrables.md
rename to gonogo-review/non-functional_delivrables.md
--
2.45.2
From 735785a47a82e419663803aeed6943540b815df0 Mon Sep 17 00:00:00 2001
From: STCB
Date: Mon, 7 Jul 2025 01:07:42 +0200
Subject: [PATCH 3/5] Florian updated UserManual.md
---
docs/UserManual.md | 193 +++++++++++++++++++++++++++++++++++----------
1 file changed, 152 insertions(+), 41 deletions(-)
diff --git a/docs/UserManual.md b/docs/UserManual.md
index 60897c0..2296907 100644
--- a/docs/UserManual.md
+++ b/docs/UserManual.md
@@ -1,71 +1,182 @@
+# User Manual for Icing Dialer
-# User Manual
+## Introduction
+The Icing Dialer is an open-source mobile application designed to enable end-to-end encrypted voice calls over GSM/LTE networks, ensuring privacy without reliance on the internet, servers, or third-party infrastructure. This manual provides comprehensive guidance for three audiences: average users, security experts, and developers. A final section outlines our manual testing policy to ensure the application's reliability and security.
-**Utilization documentation.**
-
-Written with chapters for the average Joe user, security experts, and developers.
-
-The average-user section is only about what the average-user will know from Icing: its dialer reference implementation.
-
-The security expert section will cover all the theory behind our reference implementation, and the Icing protocol. This section can serve as an introduction / transition for the next section:
-
-The developer section will explain our code architecture and concepts, going in-depth inside the reference implementation and the Icing protocol library.
-This library will have dedicated documentation in this section, so any developer can implement it in any desired way.
-
-Lastly, as a continuation of the developer section, the Manual Test section will cover our manual testing policy.
+- **Average User**: Instructions for using the Icing Dialer as a transparent replacement for the default phone dialer.
+- **Security Expert**: Technical details of the Icing protocol, including cryptographic mechanisms and implementation.
+- **Developer**: In-depth explanation of the code architecture, Icing protocol library, and integration guidelines.
+- **Manual Tests**: Overview of the manual testing policy for validating the application and protocol.
---
-
-
## Summary
-
-
-- [Average User](#averageuser)
-
-- [Security Expert](#icingsstrategy)
-
+- [Average User](#average-user)
+- [Security Expert](#security-expert)
- [Developer](#developer)
-
-- [Manual Tests](#manualtests)
-
-
+- [Manual Tests](#manual-tests)
---
-
-
## Average User
-
-Use the Icing dialer like your normal dialer, if you can't do that we can't help, you dumb retard lmfao.
+The Icing Dialer is a privacy-focused mobile application that replaces your default phone dialer, providing secure, end-to-end encrypted voice calls over GSM/LTE networks. It is designed to be intuitive and indistinguishable from a standard dialer, ensuring seamless use for all users.
+### Key Features
+- **Seamless Dialer Replacement**: Functions as a full replacement for your phone’s default dialer, supporting standard call features and encrypted calls.
+- **Cryptographic Key Pair Generation**: Automatically generates an ED25519 key pair during setup for secure communications, stored securely using the Android Keystore.
+- **Secure Contact Sharing**: Adds and shares contacts via QR codes or VCF files, ensuring privacy.
+- **Automatic Call Encryption**: Encrypts calls with compatible Icing Dialer users using the Noise protocol, encoded into the analog audio signal via Codec2 and 4FSK modulation.
+- **On-the-Fly Pairing**: Detects other Icing Dialer users and offers encrypted pairing during calls (optional, under development).
+- **Call Management**: Includes call history, contact management, visual voicemail, and features like mute, speaker, and SIM selection.
+- **Privacy Protection**: Safeguards sensitive communications with secure voice authentication and encrypted voicemail.
+### Getting Started
+1. **Installation**: Install the Icing Dialer from a trusted source (e.g., a partnered AOSP fork or Magisk module for rooted Android devices).
+2. **Setup**: Upon first launch, the app generates an ED25519 key pair using the Android Keystore. Follow prompts to complete setup.
+3. **Adding Contacts**: Use the QR code or VCF import feature to securely add contacts. Scan a contact’s QR code or import a VCF file to establish a secure connection.
+4. **Making Calls**: Dial numbers using the full dialer interface (numbers, *, #). The app uses the Android Telephony API to detect compatible users and automatically encrypts calls when possible.
+5. **Encrypted Calls**: Calls to known contacts with public keys are automatically encrypted. A data rate and error indicator provide real-time feedback. Use the disable encryption button if needed.
+6. **Call History and Contacts**: Access call history with filters for missed, incoming, and outgoing calls. Tap a call to view details or open a contact modal. Manage contacts with search, favorites, and blocklist features.
+7. **Visual Voicemail**: Play, pause, or manage voicemails with quick links to call, text, block, or share numbers.
+8. **Settings**: Configure default SIM, manage public keys, and access the blocklist via the settings menu.
+
+### Troubleshooting
+- **FAQs**: Available on our Reddit and Telegram channels for common issues and setup guidance.
+- **Feedback**: Submit feedback via our anonymous CryptPad form for prompt issue resolution.
+
+### Example Scenarios
+- **Secure Voicemail Access**: Mathilda, 34, uses Icing to securely retrieve a PayPal authentication code from her voicemail, protected by her registered Icing public key.
+- **Authenticated Calls**: Jeff, 70, authenticates with his bank using encrypted DTMF transmission, ensuring secure and verified communication.
+- **Private Communication**: Elise, 42, a journalist, uses Icing to make discreet, encrypted calls despite unreliable or monitored networks.
+- **Emergency Calls Abroad**: Paul, 22, a developer, uses Icing to securely assist colleagues with a critical issue while abroad, relying only on voice calls.
---
-
-
## Security Expert
- SecUriTy eXpeRt
+The Icing Dialer is the reference implementation of the Icing protocol, an open, decentralized encryption protocol for telephony. This section details the cryptographic and technical foundations, focusing on security principles.
+
+### Icing Protocol Overview
+The Icing protocol enables end-to-end encrypted voice calls over GSM/LTE networks by encoding cryptographic data into the analog audio signal. Key components include:
+- **End-to-End Encryption**: Utilizes the Noise protocol with XX (mutual authentication) and XK (known-key) handshake patterns for secure session establishment, using ED25519 key pairs.
+- **Perfect Forward Secrecy**: Ensures session keys are ephemeral and discarded after use, with future sessions salted using pseudo-random values derived from past calls.
+- **Codec2 and 4FSK**: Voice data is compressed using Codec2 and modulated with 4FSK (Four Frequency Shift Keying) for transmission over GSM/LTE.
+- **Secure Contact Pairing**: Uses QR codes or VCF files for secure key exchange, preventing man-in-the-middle attacks.
+- **Encrypted DTMF**: Supports secure transmission of DTMF signals for authentication scenarios.
+- **Forward Error Correction (FEC)**: Detects up to 50% of transmission errors in Alpha 1, with plans for stronger FEC (>80% detection, 20% correction) in future iterations.
+- **Decentralized Design**: Operates without servers or third-party intermediaries, minimizing attack surfaces.
+- **Voice Authentication**: Implements cryptographic voice authentication to verify caller identity.
+
+### Security Implementation
+- **Cryptographic Framework**: Uses ED25519 key pairs for authentication and encryption, generated and stored securely via the Android Keystore. The Noise protocol ensures secure key exchange and session setup. AES-256 and ECC (P-256, ECDH) are employed for data encryption.
+- **Analog Signal Encoding**: Codec2 compresses voice data, and 4FSK modulates encrypted data into the analog audio signal, ensuring compatibility with GSM/LTE networks.
+- **Threat Model**: Protects against eavesdropping, interception, replay attacks, and unauthorized access. Includes replay protection mechanisms and assumes adversaries may control network infrastructure but not device endpoints.
+- **Data Privacy**: Minimizes data storage (only encrypted keys and minimal metadata), with no unencrypted call metadata stored. Sensitive data is encrypted at rest.
+- **Current Status**: Protocol Alpha 1, tested in DryBox, validates peer ping, ephemeral key management, handshakes, real-time encryption, stream compression, and 4FSK transmission. Alpha 2 will enhance FEC and on-the-fly key exchange.
+
+### Future Considerations
+- Develop a full RFC for the Icing protocol, documenting peer ping, handshakes, and FEC.
+- Optimize Codec2 and 4FSK for improved audio quality and transmission reliability.
+- Implement embedded silent data transmission (e.g., DTMF) and on-the-fly key exchange.
+- Enhance interoperability with existing standards (e.g., SIP, WebRTC).
---
-
-
## Developer
-int main;
+The Icing Dialer and its protocol are open-source and extensible. This section explains the code architecture, Icing protocol library, and guidelines for integration into custom applications.
- ---
+### Code Architecture
+The Icing Dialer is developed in two implementations:
+- **Root-app**: For rooted Android devices, deployed via a Magisk module (~85% complete for Alpha 1).
+- **AOSP-app**: Integrated into a custom AOSP fork for native support, pending partnerships with AOSP-based projects (e.g., GrapheneOS, LineageOS).
+
+The application is written in Kotlin, leveraging the Android Telephony API for call management and a modular architecture:
+- **UI Layer**: A responsive, intuitive interface resembling a default phone dialer, with accessibility features, contact management, and call history.
+- **Encryption Layer**: Manages ED25519 key pair generation (via Android Keystore or RAM for export), Noise protocol handshakes (XX and XK), Codec2 compression, and 4FSK modulation.
+- **Network Layer**: Interfaces with GSM/LTE networks via the Android Telephony API to encode encrypted data into analog audio signals.
+
+### Icing Protocol Library
+The Kotlin-based Icing protocol library (~75% complete for Alpha 1) enables third-party applications to implement the Icing protocol. Key components include:
+- **KeyPairGenerator**: Generates and manages ED25519 key pairs, supporting secure (Android Keystore) and insecure (RAM) generation, with export/import capabilities.
+- **NoiseProtocolHandler**: Implements XX and XK handshakes for secure session establishment, ensuring Perfect Forward Secrecy.
+- **QRCodeHandler**: Manages secure contact sharing via QR codes or VCF files.
+- **AudioEncoder**: Compresses voice with Codec2 and modulates encrypted data with 4FSK.
+- **CallManager**: Uses the Android Telephony API to detect peers, initiate calls, and handle DTMF transmission.
+- **FECModule**: Implements basic FEC for detecting 50% of transmission errors, with plans for enhanced detection and correction.
+
+#### Integration Guide
+1. **Include the Library**: Add the Icing protocol library to your project (available upon Beta release).
+2. **Initialize KeyPairGenerator**: Generate an ED25519 key pair using Android Keystore for secure storage or RAM for exportable keys.
+3. **Implement NoiseProtocolHandler**: Configure XX or XK handshakes for authentication and session setup.
+4. **Integrate QRCodeHandler**: Enable contact sharing via QR codes or VCF files.
+5. **Use AudioEncoder**: Compress voice with Codec2 and modulate with 4FSK for GSM/LTE transmission.
+6. **Leverage CallManager**: Manage calls and DTMF via the Android Telephony API.
+7. **Test with DryBox**: Validate implementation using the Python-based DryBox environment for end-to-end call simulation.
+
+### Development Status
+- **Protocol Alpha 1**: Implemented in DryBox, supporting peer ping, ephemeral keys, handshakes, encryption, Codec2 compression, and 4FSK modulation.
+- **Kotlin Library**: 75% complete, with tasks remaining for Alpha 1 completion.
+- **Root-app**: 85% complete, with Magisk deployment in progress.
+- **AOSP-app**: In development, pending AOSP fork partnerships.
+
+Developers can join our Reddit or Telegram communities for updates and to contribute to the open-source project.
+
+---
## Manual Tests
-1. Call grandpa
-2. Receive mum call
-3. Order 150g of 95% pure Bolivian coke without encryption
-4. Order again but with encryption
-5. Compare results
+The Icing project employs a rigorous manual testing policy to ensure the reliability, security, and usability of the Icing Dialer and its protocol. This section outlines our testing approach, incorporating beta testing scenarios and evaluation criteria.
+
+### Testing Environment
+- **DryBox**: A Python-based environment simulating end-to-end encrypted calls over a controlled network, used to validate Protocol Alpha 1 and future iterations.
+- **Root-app Testing**: Conducted on rooted Android devices using Magisk modules.
+- **AOSP-app Testing**: Planned for custom AOSP forks, pending partnerships.
+
+### Manual Testing Policy
+- **Usability Testing**: Beta testers evaluate the dialer’s intuitiveness as a drop-in replacement, testing call initiation, contact management, and voicemail. Initial tests confirm usability without prior instructions.
+- **Encryption Validation**: Tests in DryBox verify end-to-end encryption using Noise protocol (XX/XK handshakes), ED25519 key pairs, Codec2, and 4FSK. Includes encrypted DTMF and FEC (50% error detection).
+- **Contact Pairing**: Tests QR code and VCF-based contact sharing for security and functionality.
+- **Call Scenarios**: Tests include clear calls (to non-Icing and Icing dialers), encrypted calls (to known and unknown contacts), and DTMF transmission.
+- **Performance Testing**: Ensures minimal latency, low bandwidth usage, and high audio quality (clarity, minimal distortion) via Codec2/4FSK.
+- **Privacy Testing**: Verifies encrypted storage of keys and minimal metadata, with no unencrypted call logs stored.
+- **Integration Testing**: Validates Android Telephony API integration, permissions (microphone, camera, contacts), and background operation.
+
+### Beta Testing Scenarios
+- Clear call from Icing Dialer to another dialer (e.g., Google, Apple).
+- Clear call between two Icing Dialers.
+- Clear call to a known contact (with public key) without Icing Dialer.
+- Encrypted call to a known contact with Icing Dialer.
+- Encrypted call to an unknown contact with Icing Dialer (optional, under development).
+- Create/edit/save contacts with/without public keys.
+- Share/import contacts via QR code/VCF.
+- Listen to voicemail and verify encryption.
+- Record and verify encrypted call integrity.
+- Change default SIM.
+
+### Evaluation Criteria
+- **Security**: Validates AES-256/ECC encryption, ED25519 key management, Perfect Forward Secrecy, replay protection, and end-to-end encryption integrity.
+- **Performance**: Measures call setup latency, bandwidth efficiency, and audio quality (clarity, consistency).
+- **Usability**: Ensures intuitive UI, seamless call handling, and robust error recovery.
+- **Interoperability**: Tests compatibility with GSM/LTE networks and potential future integration with SIP/WebRTC.
+- **Privacy**: Confirms encrypted data storage, minimal permissions, and no unencrypted metadata.
+- **Maintainability**: Reviews code quality, modularity, and documentation for the protocol and library.
+
+### Current Testing Status
+- **Protocol Alpha 1**: Validated in DryBox for encryption, handshakes, Codec2/4FSK, and FEC.
+- **Root-app**: 85% complete, undergoing usability, performance, and security testing.
+- **Feedback Channels**: Anonymous feedback via CryptPad and FAQs on Reddit/Telegram inform testing.
+
+### Future Testing Plans
+- Test Protocol Alpha 2 for enhanced FEC and on-the-fly key exchange.
+- Conduct AOSP-app testing with partnered forks.
+- Incorporate NPS/CSAT metrics from AMAs to assess user satisfaction.
+
+---
+
+## Conclusion
+
+The Icing Dialer and its protocol offer a pioneering approach to secure telephony, leveraging ED25519 key pairs, the Noise protocol, Codec2, 4FSK, and the Android Telephony API. This manual provides comprehensive guidance for users, security experts, and developers, supported by a robust testing policy. For further details or to contribute, visit our Reddit or Telegram communities.
--
2.45.2
From 3d98d9c223f43c586f271688921436389c0bc6cc Mon Sep 17 00:00:00 2001
From: stcb <21@stcb.cc>
Date: Tue, 8 Jul 2025 10:31:37 +0200
Subject: [PATCH 4/5] gonogo_review
---
gonogo-review/Beta_Test_Plan.md | 243 --------------------
gonogo-review/Beta_Test_Plan.pdf | Bin 0 -> 32555 bytes
gonogo-review/KPI_Report.md | 0
gonogo-review/Roadmap_PGE-5.md | 69 ------
gonogo-review/Roadmap_PGE-5_fr.pdf | Bin 0 -> 198006 bytes
gonogo-review/demo_material.pdf | Bin 0 -> 2223213 bytes
gonogo-review/kpi_report.pdf | Bin 0 -> 149223 bytes
gonogo-review/kpi_report_fr.pdf | Bin 0 -> 1880143 bytes
gonogo-review/non-functional_delivrables.md | 62 -----
9 files changed, 374 deletions(-)
delete mode 100644 gonogo-review/Beta_Test_Plan.md
create mode 100644 gonogo-review/Beta_Test_Plan.pdf
delete mode 100644 gonogo-review/KPI_Report.md
delete mode 100644 gonogo-review/Roadmap_PGE-5.md
create mode 100644 gonogo-review/Roadmap_PGE-5_fr.pdf
create mode 100644 gonogo-review/demo_material.pdf
create mode 100644 gonogo-review/kpi_report.pdf
create mode 100644 gonogo-review/kpi_report_fr.pdf
delete mode 100644 gonogo-review/non-functional_delivrables.md
diff --git a/gonogo-review/Beta_Test_Plan.md b/gonogo-review/Beta_Test_Plan.md
deleted file mode 100644
index d4d5e4d..0000000
--- a/gonogo-review/Beta_Test_Plan.md
+++ /dev/null
@@ -1,243 +0,0 @@
-# Beta Test Plan
-
-## Core Functionalities
-
----
-### Action Plan review:
-
-In our previous Action Plan, we listed the following functionnal specifications:
-- Phone call encryption between two known pairs, that exchanged keys in person. *Mandatory*
-- Phone dialer that is discret and functional, and should not disturb a normal use (clear phone call). *Mandatory*
-- Phone call encryption between two unknown pairs, with key exchange on the go. Optional.
-- SMS encryption between two known pairs (in person key exchange). Optional.
-
-We now retain only the two first functional specifications.
-
-### Core Functionalities
-
-Based on this review, here are all the core functionnalities we set:
-
-#### Icing protocol
-- Advanced protocol documentation, paving the way for a full RFC.
-
-The protocol definition will include as completed:
-- Peer ping
-- Ephemeral key gestion
-- Perfect Forward Secrecy
-- Handshakes
-- Real-time data-stream encryption (and decryption)
-- Encrypted stream compression
-- Transmission over audio stream (at least one modulation type)
-- First steps in FEC (Forward Error Correction): detecting half of transmission errors
-
-And should include prototype or scratches functionalities, among which:
-- Embedded silent data transmission (such as DTMF)
-- On-the-fly key exchange (does not require prior key exchange, sacrifying some security)
-- Stronger FEC: detecting >80%, correcting 20% of transmission errors
-
-#### The Icing dialer (based on Icing kotlin library, an Icing protocol implementation)
-
-The Icing dialer should be a fully transparent and almost undistinguishable smartphone dialer.
-Any Icing-unaware user should be able to use the dialer smoothly to make calls to anyone.
-The dialer should propose a full set of functionnalities to handle its Icing protocol implementation.
-
-Here is the list of all the functionnalities our dialer will integrate:
-
-- Call
- - Ringtone on incoming call
- - Incoming and ongoing call notification
- - Complete dialer with all numbers, star *, pound #
- - Mute button
- - Speaker button
- - Normal call
- - DTMF transmission
- - SIM choice on call
-
-- Encrypted Call
- - Encrypted call if pair public key is known
- - Encrypted DTMF transmission
- - Data rate indicator
- - Data error indicator
- - Disable encryption button
-
-- Call history
- - Call details (timedate, duration, ring number)
- - Missed calls filter
- - Outgoing calls filter
- - Incoming calls filter
- - Call back function
- - Contact modal on history tap
- - Block call number
-
-- Contacts
- - Sorted contact listing
- - Contact creation / editing buttons
- - Contact sharing via QR code / VCF
- - Contact search bar (application wide)
- - Favorite contacts
- - Contact preview (picture, number, public key...)
-
-- Visual voicemail
- - Play / Pause
- - Notification
- - Quick link to call, text, block, share number...
-
-- Miscellanous
- - Settings menu
- - Version number
- - Storage of user public keys
- - Blocklist gestion (list / add / del / search)
- - Default SIM choice
-
-- Asymetric Keys
- - Secure storage
- - Generation at startup if missing
- - Full key management (list / add / del / search / share)
- - Secure generation (Android Keystore generation)
- - Insecure generation (RAM generation)
- - Exportation on creation (implies insecure generation)
- - Importation
- - Trust shift (shift trust from contacts)
-
-
-## Beta Testing Scenarios
-- Clear call from Icing dialer to another dialer (Google, Apple...)
-- Clear call from Icing dialer to another Icing dialer
-- Clear call from Icing dialer to an icing pubkey-known contact but without Icing dialer
-- Encrypted call from Icing dialer to a known contact with Icing dialer
-- Encrypted call from Icing dialer to an unknown contact with Icing dialer
-- Create / Edit / Save contact with(out) public key
-- Share contact as QR code / Vcard
-- Import contact from QR code / Vcard
-- Listen to voicemail
-- Record encrypted call and check the encryption
-- Change default SIM
-
-## User Journeys
-
-Mathilda, 34 years-old, connects to her PayPal account from a new device.
-To authenticate herself, PayPal sends her a code on her voicemail.
-Mathilda being aware of the risks of this technology, she has set up strong Icing authentication with her network provider by registering a pair of her Icing public keys.
-When she calls her voicemail, Icing protocol is triggered and checks for her key authentication ;
-it will fail if the caller does not pocesses the required Icing keys.
-Mathilda is thus the only one granted access, and she can retreive her PayPal code securely.
-
-Jeff, 70 years-old, calls his bank after he had a problem on his bank app.
-The remote bank advisor asks him to authenticate, making him type his password on the phone dialer.
-By using the Icing protocol, not only would Jeff and the bank be assured that the informations are transmitted safely,
-but also that the call is coming from Jeff's phone and not an impersonator.
-
-Elise, 42 years-old, is a journalist covering sensitive topics.
-Her work draws attention from people who want to know what she's saying - and to whom.
-Forced to stay discreet, with unreliable signal and a likely monitored phone line,
-she uses Icing dialer to make secure calls without exposing herself.
-
-Paul, a 22 years-old developer, is enjoying its vacations abroad.
-But everything goes wrong! The company's product he works on, is failling in the middle of the day and no one is
-qualified to fix it. Paul doesn't have WiFi and his phone plan only covers voice calls in his country.
-With Icing dialer, he can call his collegues and help fix the problem, completely safe.
-
-## Evaluation Criteria
-### Protocol and lib
-1. Security
-- Encryption Strength: Ensure that the encryption algorithms used (AES-256, ECC)
- are up-to-date and secure.
-- Key Management: Evaluate the mechanism for generating, distributing, and
- storing encryption keys (P-256 keys, ECDH).
-- Forward Secrecy: Confirm that the protocol supports forward secrecy, meaning
- that session keys are discarded after use to prevent future decryption of
- past communication, and that future sessions are salted with a pseudo-random salt
- resulting or derived from the past calls.
-- End-to-End Encryption Integrity: Verify that no clear data is exposed
- outside the encryption boundary (client-side only).
-- Replay Protection: Ensure that the protocol includes strong mechanisms to prevent replay
- attacks.
-
-2. Performance
-- Latency: Measure the round-trip time (RTT) for call setup and audio quality
- during the call. The system should aim for the lowes latency possible.
-- Bandwidth Efficiency: Evaluate the protocol’s ability to optimize bandwidth
- usage while maintaining acceptable audio quality.
-- Audio Quality: Assess the audio quality during calls, including clarity,
- consistency, and minimal distortion.
-
-3. Usability
-- Ease of Integration: Evaluate how easy it is to integrate the library into an
- Android application, including the availability of well-documented APIs and
- clear examples.
-- Seamless User Experience: Check for smooth call initiation, handling of
- dropped calls, and reconnection strategies. The app should handle background
- operation gracefully.
-- UI/UX Design: Assess the user interface (UI) of the Android dialer for intuitiveness,
- accessibility, and if it could be a drop-in replacement for the original dialer.
-- Error Handling and Recovery: Evaluate how the system handles unexpected
- errors (e.g., network issues, connection drops) and recovers from them.
-
-4. Interoperability
-- Support for Multiple Protocols: Verify if the protocol can
- integrate with existing standards (e.g., SIP, WebRTC) for interoperability
- with other services.
-- Cross-device Compatibility: Ensure that calls encryption can be initiated and received
- across different devices, operating systems, and network conditions.
-- Backward Compatibility: Test whether the protocol is backward compatible.
-
-5. Privacy
-- Data Storage: Evaluate how the system stores any data (user details, identities).
- Ensure that sensitive information is encrypted.
-- Data Minimization: Ensure that only the minimum necessary data is used
- for the protocol to function.
-- No Call Metadata Storage: Ensure that no metadata (e.g., call logs, duration,
- timestamps) is stored unless necessary, and, if stored, it should be
- encrypted.
-
-6. Maintainability
-- Code Quality: Review the library for clarity, readability, and
- maintainability of the code. It should be modular and well-documented.
-- Documentation: Ensure that the protocol and library come with thorough
- documentation, including how-to guides and troubleshooting resources.
-- Active Development and Community: Check the active development of the
- protocol and library (open-source contributions, GitHub repository activity).
-
-### Dialer
-1. User Interface
-- Design and Layout: Ensure that the dialer interface is simple, intuitive, and
- easy to navigate. Buttons should be appropriately sized, and layout should
- prioritize accessibility.
-- Dialer Search and History: Ensure there’s an efficient contact search,
- history logging, and favorites integration.
-- Visual Feedback: Verify that the app most usefull buttons provides visual feedback for actions,
- such as dialling, calls available interactions for example.
-
-2. Call Management
-- Call Initiation: Test the ease of initiating a call from contact list, recent
- call logs, contact search or direct number input.
-- Incoming Call Handling: Verify the visual and audio prompts when receiving
- calls, including notifications for missed calls.
-- Call Hold/Transfer/Forward: Ensure the dialer supports call hold, transfer,
- and forwarding features.
-- Audio Controls: Check whether the app allows users to adjust speaker volume,
- mute, and switch between earpiece/speakerphone.
-
-3. Integration with System Features
-- Permissions: Ensure the app requests and manages necessary permissions
- (microphone, camera for scanning QR codes, contacts, call history, local storage).
-- Integration with Contacts: Ensure that the app seamlessly integrates with the
- Android contacts and syncs correctly with the address book.
-- Notifications: Ensure that call notifications and ringtone works even when the app is in
- the background or the phone is locked.
-
-4. Resource Management
-- Resource Efficiency: Ensure the app doesn’t excessively consume CPU or memory
- while operating, during idle times or on call.
-
-5. Security and Privacy
-- App Encryption: Ensure that any stored and sensitive data is
- encrypted, or protected.
-- Secure Call Handling: Verify that calls are handled securely through the
- encrypted voice protocol.
-- Minimal Permissions: The app should ask for the least amount of permissions
- necessary to function.
-
-6. Reliability
-- Crash Resistance: Test for the app’s stability, ensuring it doesn't crash or
- freeze during use.
diff --git a/gonogo-review/Beta_Test_Plan.pdf b/gonogo-review/Beta_Test_Plan.pdf
new file mode 100644
index 0000000000000000000000000000000000000000..daa9d3a27f9afe89c4bc3baac0bc6c6967e6ba01
GIT binary patch
literal 32555
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
literal 0
HcmV?d00001
diff --git a/gonogo-review/KPI_Report.md b/gonogo-review/KPI_Report.md
deleted file mode 100644
index e69de29..0000000
diff --git a/gonogo-review/Roadmap_PGE-5.md b/gonogo-review/Roadmap_PGE-5.md
deleted file mode 100644
index dd5824f..0000000
--- a/gonogo-review/Roadmap_PGE-5.md
+++ /dev/null
@@ -1,69 +0,0 @@
-# Context
-
-## Glossary
-
-- DryBox: Our python test environment, simulating a call Initiator and Responder using the protocol through a controlled cellular network.
-- Root-app: A version of the application only installable on rooted Android devices.
-- AOSP-app: A version of the application imbedded in an AOSP fork, coming with an AOSP install.
-- AOSP: Android Open Source Project. The bare-bone of Android maintained by google, currently Open-Source, and forked by many. GrapheneOS, LineageOS, and /e/ are examples of AOSP forks.
-- Magisk module: Magisk is the reference open-source Android rooting tool, a Magisk Module is a script leveraging Magisk's root tools to install or tweak a specific app or setting with special permissions.
-- Alpha 1, 2, Beta: We plan two iterations of Alpha development, leading towards a final Beta protocol and root/AOSP applications release.
-
-## Current status:
-
-Protocol Alpha 1 => DryBox
-
-App => 85% done
-
-Kotlin Lib => 75% Alpha 1 done
-
-Partnerships => Communication engaged
-
-## Remaining steps:
-
-- Design and test Protocol Alpha 2
-- Finish Alpha 1 Lib's implementation
-- Implement Root-app Alpha 1
-- Streamline Root-app tests
-- Develop at least one AOSP fork partnership
-- AOSP forks' local AOSP-app implementation
-- AOSP forks' partnership AOSP-app implementation
-- Magisk Root-app module self-hosted or official deployment
-
-
----
-
-# Plan
-
-Our plan is defined with monthly granularity.
-
-Every month, a recap will be published on Telegram and Reddit about the achieved goals, suprises, and feeling on next month's goal.
-
-- ### September & October
-
- - Finish Alpha 1 lib's and Root-app implementation
- - App features & UI improvements
- - Streamlined Root-app tests
-
-- ### November
-
- - Magisk Root-app module
- - Drybox features improvements
- - Alpha 2 theory and Drybox testing
-
-- ### December
-
- - AOSP forks' local app implementation (AOSP-app)
- - App features & UI improvements
- - IF APPLICABLE: AOSP fork real partnership (i.e GrapheneOS, LineageOS, /e/, etc...)
-
-- ### January
-
- - Root-app & AOSP-app Alpha 2 implementation
- - Entire code audit and Beta Release preparation
- - Enhancement from "Alpha 2" to Beta
-
-- ### February
-
- - Website and community Beta Release preparation
- - Official Beta Release event: Root-app and AOSP-app APK Alpha APK publication
\ No newline at end of file
diff --git a/gonogo-review/Roadmap_PGE-5_fr.pdf b/gonogo-review/Roadmap_PGE-5_fr.pdf
new file mode 100644
index 0000000000000000000000000000000000000000..7e872df855fc7b5ce1017c3fa37fb6d1c5bd5b8e
GIT binary patch
literal 198006
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