Contents
Deku SMS is an Android SMS app.
Deku SMS is being developed as a proof-of-concept for secure SMS messaging, SMS image transmission and SMS-Cloud communications.
The technical functionalities of the app are currently not user friendly, which would be updated with the help of PRs and issues. The reason for the lack of user friendliness is solely based on the app aiming to be as customizable as possible. Users should be able to configure the app to their custom cloud servers without being tied into using specific providers.
Features
Ability to forward incoming messages to cloud server
Ability to use mobile phone as an SMS Gateway to send messages from the cloud
Deku SMS supports end to end encryption for users. For the feature to work, both users need to be using Deku SMS as their default SMS app.
The users are guided through a ECDH handshake, after which a secure key is generated and associated with the peers phone number. The outgoing messages are then encrypted with AES-256-CBC from the secure key and transmitted to the user. No forward secrecy is currently implemented.
The users cannot know when their peer has deleted their secured keys. This means messages will still be received by peer in encrypted form. Upcoming features would help inform peers when encryption has been disabled on one end.
All messages are currenly being stored in the default SMS inbox (including encrypted messages). Users switching between SMS apps would still maintain their inbox as it is. Upcoming features would remove encrypted messages to custom database if users intends.
Forward incoming SMS messages to custom url. The messages remain in queue till the device has an active connection. The messages remain queue if server status codes is in range 5xx
. The device also provides visibility into the messages being forwarded into the cloud.
The content being forwarded to your cloud look like:
You can transmit data from your to your cloud to Android devices, using your Android phones as your SMS Gateway.
The app has direct built configurations for RabbitMQ allowing technical users to configure their own messaging queue directly from their own server.
The structure of the incoming RabbitMQ messages is a json like:
{"sid":"", "id":"", "to":"", "text":""}
sid: special id you can include in the message going to your messaging queue server
id: uniquely generated by messaging queue server - should not be used in determining the status of messages. Primarily used to inform messaging queue server to
ack
the message.to: phone number of the receipient. Should be in E.164 Format.
text: the message to be sent to the receipient.
The app sends a callback to your SMS Gateways once the requested message status changes*.
{"type":"SMS_TYPE_STATUS", "status":"[status_changes]()", "sid":""}
* Status changes - sent
, delivered
, failed
Getting the project into Android-studio would allow for an easy build.
Check a build against any previous commits. Requires docker
commit
= hash of commit being comparedcommit_url
= url of the repo from git (should have been called repo_url)release_url
= url of the github release to build against (or any place where the apk can be downloaded)jks
= path to signing key filejks_pass
= password for jks
make check-commits \
commit= \
commit_url= \
release_url= \
jks= \
jks_pass=