● End-to-End Encryption AES-256-GCM Voice Calls Self-Destruct Messages

WhishperLock
Whisper. Lock. Connect.

A privacy-first iOS messenger with encrypted text, files, locations, disappearing messages, and encrypted voice calls — protected by biometrics and built on a zero-knowledge server design.

What is WhishperLock?

WhishperLock is a real-time secure chat app for iPhone and iPad. You add friends, chat in private encrypted rooms, share encrypted files and locations, send self-destructing messages, and place encrypted voice calls. The server stores only encrypted payloads and cannot read your conversations.

💬 Encrypted Chat

Every text message is encrypted on your device with AES-256-GCM before it leaves your phone.

🔥 Self-Destruct

Messages that vanish after being read — from 5 seconds to 24 hours.

📎 Encrypted Files

Photos and documents encrypted before upload; decrypt with Face ID / Touch ID.

📍 Encrypted Location

Share your current location as an encrypted one-time message.

📞 Voice Calls

Real-time encrypted audio via WebSocket; integrated with Apple CallKit.

👥 Friends

Search users, send friend requests, see online status, and start private chats.

1. Getting Started & Sign In

When you first open WhishperLock, you see the authentication screen with a dark glass-style interface.

Create an account (Register)

  1. Tap Sign Up (or switch from Login to Register mode).
  2. Enter a username, email, and password (and confirm password if shown).
  3. Tap the register button. On success, you are logged in automatically.
  4. Grant permissions when prompted: Notifications (recommended), and later Face ID, Microphone, or Location when you use those features.

Log in with email

  1. Stay in Login mode.
  2. Enter your email and password.
  3. Tap Login. Your session token is stored securely in the iOS Keychain.

Sign in with Apple

  1. Tap the Sign in with Apple button.
  2. Complete Apple’s authentication sheet (Face ID / Touch ID or Apple ID password).
  3. Choose whether to share or hide your email per Apple’s options.
  4. You are signed in without creating a separate WhishperLock password.
Tip: If you were logged out due to an expired token, the app attempts to refresh your session automatically when possible.

3. Friends, Search & Friend Requests

The Friends screen has three sub-tabs at the top:

Friends list

  1. Select the Friends tab.
  2. View all accepted friends with avatars and online indicators (green when connected via WebSocket).
  3. Tap a friend to open a private encrypted chat room.
  4. Long-press or swipe (where available) to remove a friend — confirm in the dialog. This removes the friendship on the server.

The list auto-refreshes periodically while the app is active.

Add Friend

  1. Select the Add Friend tab.
  2. Type a username in the search bar.
  3. Results appear as you search. Tap Add or Send Request next to a user.
  4. Wait for them to accept your request before chatting.

Friend Requests

  1. Select the Friend Requests tab.
  2. View incoming requests with sender username.
  3. Tap Accept to become friends and enable private chat.
  4. Tap Decline to reject the request.

When someone sends you a request, you may receive a push notification (if enabled).

4. Private Chat Basics

Each friendship has a unique room ID. Both users derive the same encryption key from this room ID — no key is sent over the network.

Opening a chat

  1. From Friends, tap your friend’s name.
  2. The app connects to the WebSocket for that room and loads message history.
  3. The top bar shows your friend’s username and a phone icon for voice calls.
  4. An End-to-End Encryption status bar appears above the input area.

Sending a text message

  1. Type in the message field at the bottom.
  2. Tap the send button (arrow).
  3. The message is encrypted locally, then sent through the server as ciphertext.
  4. Your message appears in the chat as an encrypted bubble until you or the recipient decrypts it.

Typing indicator

While you type, the other user may see a typing indicator when both are connected.

Deleting messages

  1. Long-press (context menu) on a message you sent or received.
  2. Choose Delete to remove it locally and request deletion on the server.
  3. Deleted messages sync to the other user in real time when connected.

5. Reading Encrypted Messages

Text messages display as locked encrypted bubbles with a shield/lock appearance.

Decrypt a message

  1. Tap the encrypted message bubble.
  2. Authenticate with Face ID, Touch ID, Optic ID, or device passcode when prompted.
  3. The decrypted text appears inside the bubble or in a detail view.
  4. Use Copy from the context menu to copy plaintext to the clipboard.
Important: Decryption happens only on your device. If authentication fails or the room key does not match, decryption will fail — ensure you are in the correct private chat with that friend.

Encryption details screen

After decrypting, you may view encryption metadata (algorithm, room-based key derivation) in the decryption result UI for transparency.

6. Self-Destruct Messages

Self-destruct messages disappear after the recipient reads them and the timer expires.

Send a self-destruct message

  1. In the chat input bar, tap the flame icon (left of the text field).
  2. Choose a timer from the picker sheet:
OptionDuration after read
5 seconds5 sec
10 seconds10 sec
30 seconds30 sec
1 minute60 sec
5 minutes5 min
10 minutes10 min
30 minutes30 min
1 hour1 hour
24 hours24 hours
  1. The selected time appears in a bar above the input. Tap the flame again to clear the timer.
  2. Type your message and send. The message is still fully encrypted.
  3. The flame icon stays highlighted while a timer is active.

Receiving & countdown

  1. Tap to decrypt the self-destruct message (biometric required).
  2. Once read, a countdown appears on the bubble.
  3. When the timer reaches zero, the message is removed from the chat.
Note: The timer starts when the recipient reads/decrypts the message, not when it is sent. Unread self-destruct messages do not count down.

Self-destruct with files or location

If you set a self-destruct timer before sending an attachment or location, that timer applies to that outgoing item as well.

7. Encrypted Files & Images

Send a file or photo

  1. In chat, tap the paperclip icon (next to the flame).
  2. Select a file or image from the iOS file picker / photo library.
  3. The app encrypts the file with the room key, uploads the ciphertext, and sends a reference message.
  4. Maximum raw file size is approximately 24 MB (to stay under server limits after encryption).

The paperclip is disabled when not connected to the server — wait until the connection indicator shows connected.

Receive & open a file

  1. Tap the encrypted file bubble in the chat.
  2. Authenticate with Face ID / Touch ID.
  3. The file decrypts and previews or opens. You may share the decrypted file to other apps from the share sheet where supported.

8. Encrypted Location Sharing

Send your location

  1. Tap the location pin icon in the chat input bar.
  2. Grant Location When In Use permission if iOS asks.
  3. The app fetches your current coordinates once, encrypts them, and sends as a message.

View a shared location

  1. Tap the encrypted location bubble.
  2. Authenticate with biometrics.
  3. View the location on the map inside the app. Open in Apple Maps if offered.

Location is embedded in the encrypted message — the server does not receive plaintext coordinates.

9. Encrypted Voice Calls

Start an outgoing call

  1. Open a private chat with your friend.
  2. Tap the phone icon in the top-right toolbar.
  3. The app sends a call offer over WebSocket. Wait for the other user to answer.
  4. When connected, the Active Call screen shows duration, mute, and speaker controls.

Receive an incoming call

  1. You may see Apple’s CallKit banner at the top (Accept / Decline) — even when the phone is locked.
  2. Alternatively, the full-screen Incoming Call UI inside the app appears with Accept and Decline buttons.
  3. Tap Accept on either the system banner or in-app UI — both connect through CallKit for proper audio.
  4. Tap Decline to reject.

During a call

  • Mute — toggle microphone off/on.
  • Speaker — route audio to speakerphone.
  • End call — hang up; both sides return to chat.

How call encryption works

Audio is captured at 48 kHz, downsampled to 16 kHz mono PCM, encrypted with AES-256-GCM per packet, and sent over WebSocket. Audio is never stored on the server.

Permissions: Microphone access is required. VoIP push allows incoming calls when the app is closed. Enable notifications for the best experience.

10. Notifications

Enable notifications

  1. Go to Profile tab → Notification Settings.
  2. Turn on Message Notifications.
  3. If iOS denied permission, tap Open Settings and enable notifications for WhishperLock.

What triggers notifications

  • New messages when you are not viewing that chat room.
  • Friend requests.
  • Incoming voice calls (via VoIP push + CallKit).

Suppressed notifications

While you are actively viewing a chat, notifications for that room are suppressed to avoid duplicate alerts.

11. Profile & Account Settings

The Profile tab shows your “access card” with username and email.

Edit profile

  1. Tap Edit Profile.
  2. Update display fields (e.g., username) and save.

Log out

  1. Tap Logout.
  2. Your session ends; device tokens may be removed from the server. You return to the login screen.

Delete account

  1. Tap Delete Account.
  2. Read the warning: profile, messages, friends, and notifications will be permanently deleted.
  3. Confirm deletion. Email users must enter their password; Apple users confirm via Apple Sign-In.
Warning: Account deletion cannot be undone.

12. Subscription & Free Trial

WhishperLock offers a 3-day free trial for new users, then optional subscriptions:

  • Monthlycom.whishperlock.subscription.monthly
  • Yearlycom.whishperlock.subscription.yearly

Subscribe

  1. When the trial expires, a paywall or banner prompts you to subscribe.
  2. Open Profile → Manage Subscription or tap the trial banner.
  3. Select Monthly or Yearly, then tap Subscribe.
  4. Confirm with Face ID / Touch ID or Apple ID password through the App Store sheet.

Restore purchases

  1. On the paywall, tap Restore Purchases.
  2. Existing subscriptions linked to your Apple ID are restored.

Cancel or change plan

Use iOS Settings → [Your Name] → Subscriptions → WhishperLock. Apple handles billing and refunds per App Store policy.

13. Network & Connectivity

  • The app monitors network status and may show alerts when offline.
  • WebSocket reconnects automatically with backoff when the network returns.
  • In background, heartbeat intervals extend to save battery while keeping sync where possible.
  • Background tasks sync messages, refresh tokens, and clean up expired data per iOS background scheduling.

If messages stall, pull to refresh or leave and re-enter the chat to force reconnect.

14. Security & Encryption

FeatureTechnology
Message / file / location encryptionAES-256-GCM (CryptoKit)
Key derivationSHA-256(roomId) → 256-bit symmetric key
Key storageiOS Keychain (device-only when possible)
Voice call encryptionAES-256-GCM per audio packet
TransportHTTPS / WSS (TLS)
Password storage (server)Hashed (PBKDF2); not plaintext
Session tokensJWT; stored in Keychain on device
Biometric gateFace ID / Touch ID / Optic ID for decrypt

Both chat participants independently compute the same room key — no key exchange over the network. The server stores ciphertext only and cannot decrypt your content.

15. Troubleshooting

ProblemWhat to try
Can't log inCheck email/password; try Sign in with Apple; ensure network is available.
Messages won't sendWait for WebSocket “connected”; check network alert; restart app.
Decrypt failsRe-authenticate biometrics; ensure correct chat room with that friend.
No push notificationsProfile → Notification Settings; iOS Settings → Notifications → WhishperLock.
Call won't connectAllow Microphone; answer via CallKit or in-app Accept; stay on stable Wi‑Fi/cellular.
Subscription not activeRestore Purchases; check Apple Subscriptions settings.

Still need help? Email aaronyang470128@hotmail.com or visit the Support page.