App verdnaturachat
Go to file
Djorkaeff Alexandre 3c9017a62d
[NEW] E2E Encryption (#2394)
* Add E2EKey to Subscription Model

* Install react-native-simple-crypto

* Install bytebuffer

* Add translations

* CreateChannel Encrypted toggle

* Request E2E_Enabled setting

* Add some E2E API methods

* POC E2E Encryption

* Garbage remove

* Remove keys cleaner

* Android cast JWK -> PKCS1

* Initialize E2E when Login Success

* Add some translations

* Add e2e property to Message model

* Send Encrypted messages

* (iOS) PKCS1 -> JWK & e2e.setUserPublicAndPrivateKeys

* (Android) PKCS1 -> JWK & e2e.setUserPublicAndPrivateKeys

* Create an encrypted channel

* Fix app crashing on RoomsList

* Create room key

* Set Room E2E Key (Android)

* Edit room encrypted

* Show encrypted icon on messages

* logEvents

* Decrypt pending subscriptions & messages

* Handle user cancel e2e password entry

* E2ESavePasswordView

* Update Snapshot

* Add encrypted props to message on Send

* Thread messages encryption

* E2E -> Encryption

* Share Extension: Share encrypted text

* (POC) Search messages on Encrypted room

* Provide room key to new users

* Request roomKey on stream-notify-room-users

* Add e2eKeyId to Room Model

* (WIP) E2E Encryption Screens

* Remove encryption subscription file

* Move E2E_Enable to Server Model

* Encryption List Banner

* Move Encryption init to Sagas

* Show banner only when enabled

* Use RocketChat/react-native-simple-crypto

* Search on WM only when is an Encrypted channel

* (WIP) Encryption Banner

* Encryption banner

* Patch -> Fork

* Improve send encrypted message

* Update simple-crypto

* Not decrypt already decrypted messages

* Add comments

* Change eslint disable to inline

* Improve code

* Remove comment

* Some fixes

* (WIP) Encryption Screens

* Improve sub find

* Resend an encrypted message

* Fix comment

* Code improvements

* Hide e2e buttons on features if it is not enabled

* InApp notifications of a encrypted room

* Encryption stop logic

* Edit encrypted message

* DB batch on decryptPending

* Encryption ready client

* Comments

* Handle getRoomInstance errors

* Multiple messages decrypt

* Remove unnecessary try/catch

* Fix decrypt all messages history

* Just add a questionmark

* Fix some subscriptions missing decrypt

* Disable request key logic

* Fix unicode emojis

* Fix e2ekey request

* roomId -> subscription

* Decrypt subscription after merge

* E2ERoom -> EncryptionRoom

* Fix infinite loading

* Handle import key errors

* Handle request key errors

* Move e2eRequestRoomKey to Rocket.Chat

* WIP handshake when key should be requested

* Add search messages explanation

* Remove some TODO and update comments

* Improvements

* Dont show message hash to user

* Handle key request & prevent multiple calls

* Request E2EKey on decryptSubscription that doesn't exists on database yet

* Insert decrypted subscription

* Fix crash after login

* Decrypt sub when receive the key

* Decrypt pending messages of a room

* Encrypted as a switch

* Buffer to Base64 URI Safe

* Add a relevant comment

* Prevent import key without a privateKey

* Prevent create a new instance when client is not ready

* Update simple-crypto & remove replace trick

* More comments

* Remove useless comment

* Remove useless try/catch

* I18n all E2E screens

* E2ESavePassword -> E2ESaveYourPassword

* Prevent multiple views on message when is not encrypted

* Fix encryption toggle not working sometimes

* follow some suggestions

* dont rotate icons

* remove unnecessary condition

* remove unreachable event

* create channel comment

* disable no-bitwise rule for entire file

* loadKeys -> persistKeys

* getMasterKey -> generateMasterKey

* explicit difference between E2EKey & e2eKeyId

* roomId -> rid

* group columns

* Remove server selector

* missing log events

* remove comment

* use stored public key

* update simple-crypto & remove base64-js patch

* add some logs

* remove unreachable condition

* log errors

* handle errors on provide key directly on subscription

* Downgrade RocketChat/react-native-simple-crypto

* improve get room instance

* migration of older apps

* check encrypted status before send a message

* wait client ready

* use our own base64-js

* add more jest tests

* explain return

* remove unncessary stop

* thrown error to caller

* remove superfluous checks

* use Encryption property

* change ready state logic

* ready -> establishing

* encryption.room -> encryptionRoom

* EncryptionRoom -> Room

* add documentation

* wait establishing before provide a room key

* remove superfluous condition

* improve error handling logic

* fallback e2ekey set

* remove no longer necessary check

* remove e.g.

* improve getRoomInstance

* import from index

* use batch

* fix a comment

* decrypt tmsg

* dont show hash when message is encrypted

* Fix detox

* Apply suggestions from code review

Co-authored-by: Diego Mello <diegolmello@gmail.com>
2020-09-11 11:31:38 -03:00
.circleci [NEW] Add to F-Droid (#2171) 2020-08-24 09:24:10 -03:00
.github [CHORE] Improve ISSUE_TEMPLATE.md (#2390) 2020-08-10 15:03:04 -03:00
__mocks__ [NEW] Add to F-Droid (#2171) 2020-08-24 09:24:10 -03:00
__tests__ [NEW] E2E Encryption (#2394) 2020-09-11 11:31:38 -03:00
android [IMPROVEMENT] Disable HTTP for production on Android (#2357) 2020-09-02 13:26:00 -03:00
app [NEW] E2E Encryption (#2394) 2020-09-11 11:31:38 -03:00
e2e [NEW] E2E Encryption (#2394) 2020-09-11 11:31:38 -03:00
ios [NEW] E2E Encryption (#2394) 2020-09-11 11:31:38 -03:00
patches [CHORE] Use Rocket.Chat JS SDK's official repo (#2440) 2020-08-31 17:45:21 -03:00
storybook [NEW] E2E Encryption (#2394) 2020-09-11 11:31:38 -03:00
.bettercodehub.yml Add bettercode (#30) 2017-08-18 14:02:12 -03:00
.buckconfig Initial commit 2017-08-03 15:23:43 -03:00
.eslintignore Use inline requires (#459) 2018-09-26 10:56:36 -03:00
.eslintrc.js [NEW] Passcode and biometric unlock (#2059) 2020-05-08 14:04:37 -03:00
.gitattributes Initial commit 2017-08-03 15:23:43 -03:00
.gitignore [TESTS] Idempotence for e2e tests (#2308) 2020-07-22 13:32:21 -03:00
.snyk Switch push notification lib (#346) 2018-07-10 10:40:32 -03:00
.watchmanconfig [CHORE] Increase "content_hash_max_items" on Watchman (#2181) 2020-06-17 16:25:25 -03:00
CONTRIBUTING.md [DOCS] Refactor Readme (#2382) 2020-08-10 13:31:25 -03:00
LICENSE Create LICENSE 2018-04-21 15:24:08 -03:00
README.md [DOCS] Refactor Readme (#2382) 2020-08-10 13:31:25 -03:00
SECURITY.md [DOCS] Add SECURITY.md (#1244) 2019-09-26 16:18:38 -03:00
app.json [NEW] Share extension (#942) 2019-07-18 14:44:02 -03:00
babel.config.js [CHORE] Migrate to Watermelon (#1171) 2019-09-16 17:26:32 -03:00
config.js [CHORE] Bugsnag logging setup (#1145) 2019-08-23 10:18:47 -03:00
index.js [FIX] Emoji parser not working on Hermes (#1445) 2019-12-11 16:00:38 -03:00
jsconfig.json Init Redux usage 2017-08-12 22:35:09 -03:00
key.keystore.enc Ci (#25) 2017-08-18 11:50:20 -03:00
metro.config.js [CHORE] Update react-native-jitsi-meet to 2.0.1 (#1249) 2019-09-27 16:16:03 -03:00
package.json [NEW] E2E Encryption (#2394) 2020-09-11 11:31:38 -03:00
react-native.config.js [REVERT] Show emoji keyboard on Android (#1738) 2020-02-17 09:14:56 -03:00
yarn.lock [NEW] E2E Encryption (#2394) 2020-09-11 11:31:38 -03:00

README.md

Rocket.Chat Mobile

Project Dependencies Codacy Badge codecov CodeFactor

  • Supported server versions: 0.70.0+
  • Supported iOS versions: 11+
  • Supported Android versions: 5.0+

Download

Download on Google Play Download on App Store

Check our docs for beta and Experimental versions.

Reporting an Issue

Github Issues are used to track todos, bugs, feature requests, and more.

Also check the #react-native community on open.rocket.chat. We'd like to help.

Contributing

Are you a dev and would like to help? Found a bug that you would like to report or a missing feature that you would like to work on? Great! We have written down a Contribution guide so you can start easily.

Whitelabel

Do you want to make the app run on your own server only? Follow our whitelabel documentation.

Engage with us

Share your story

Wed love to hear about your experience and potentially feature it on our Blog.

Subscribe for Updates

Once a month our marketing team releases an email update with news about product releases, company related topics, events and use cases. Sign Up!