GithubHelp home page GithubHelp logo

sphinx-kotlin-core's People

Contributors

antonilol avatar ariel10aguero avatar kngako avatar pitoi avatar tomastiminskas avatar

Watchers

 avatar  avatar  avatar  avatar  avatar

Forkers

antonilol

sphinx-kotlin-core's Issues

Balance

Implement get balance endpoint and show it on dashboard header

Ability to send text messages

Build the logic to encrypt and send a text message on a chat. It includes adding a field on the bottom of the chat UI view so user can type there an send

Replace AppSettings with an Encrypted sqlite instance

The kotlin android app used encrypted Android preferences to store the user PIN. Since this isn't multiplatform we could more easily create encrypted sqlite instance on the user device to store user preferences like PINs and such. This would help keep the pin management logic multiplatform.

Replace the RSAImpl with a multiplatform dependency

We are currently using a wrapper around the java.security/java.cryptography package which is enough for us to use in platforms that support jvm packages.

We could create a wrapper around a native library that has the RSA functionality we are using in the sphinx project. But for now the jvm platforms are good enough.

Make implementations internal

A lot of the implementations are not internal and most should be internal as we won't be extending them outside of the class.

Multiplatform specific cryptography library

We currently using jvm supported cryptography libraries/apis that were used in the kotlin android app. These should suffice for the desktop app but to support more platforms to support.

Secure authentication

Implement the new secure authentication we did on kotlin android that uses:

  • New endpoint to get relay transport key and store it on app encrypted storage
  • New endpoint to create/get hmac-key so it can be used to sign requests
  • x-tranport-key from relay and send x-transport-token on each request instead of X-User-Token
  • hmac-key with a signature of each request raw body so it can be verify in relay to prevent MITM attach

Investigation: SqlDriver cached regardless of encryptionKey

The sql database will be ideally encrypted using the encryptionKey, but the app implementation currently caches the SqlDriver (which would then provided decrypted access to the DB). Can a person break security assumptions if a logged out (requiring pin to unlock) execution of the app is accessed in a manner that exploits the cache?

Socket implementation

Implement socket connection to receive text message in real time when logged into the app.

Existing user restore

Implement logic to restore an existing account using the restore string:

  • Allow user to enter PIN to decrypt restore string
  • Decrypt and parse restore string into: encryption keys, relay url, authentication token
  • Store them and PIN
  • Load dashboard so all chat history and messages are loaded.

Profiles: profile display in tribes - Android App

Service involved:
Android app

Goal:
Create a display for a user's tribe-specific profile information, which is returned from the tribes-server when someone clicks on their username in a tribe.

Method:

  • Profile information will be returned here: tribes.sphinx.chat/person/uuid/{uuid}
  • It should be displayed according to Milan's design below:
    Image

*for getting the badge icons using the badge IDs: https://liquid.sphinx.chat/list

Multiplatform Dependency Injection

Dependency inject is great! Sadly a lot of the best tools for dependency injection are quite platform specific.

We currently do it manually by instantiating all the things we need in SphinxContainer.

There are multiplatform dependency libraries that exist that we could use to replace this method for more elegance. For now, manual gets the job done.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.