/ConnectMe

Evernym's Connect.Me is an industry leading mobile identity wallet that makes it easy for people to manage their verifiable credentials. This is a read-only mirror. Contributions welcomed at https://gitlab.com/evernym .

Primary LanguageJavaApache License 2.0Apache-2.0

Connect.Me

Connect.Me is the world's most advanced general purpose digital wallet. Its purpose is to empower individuals to gather, hold and share digital credentials in the most secure and privacy preserving way possible. It uses Hyperledger Indy to talk to distributed ledgers and Hyperledger Ursa for performing advanced cryptographic operations such as signing, proof generation and holder binding. This is a business-source licensed repository which will automatically convert to an Apache 2.0 license after three years, for each commit. We are pleased to make our flagship mobile app's source code publicly available. We hope it becomes a meaningful contribution to the digital credential movement and is consistent with the collaborative, share-alike nature of open source projects.

With Connect.Me, you can:

  • Form private, secure connections with other entities in the Sovrin ecosystem
  • Gather and store digital credentials
  • Present digital proofs of part or all of your credentials, privately and securely
  • Answer secure messages from any connection you have

The identity wallet app enables myriad use cases, including proving you’re over a specific legal age without revealing your exact date of birth, sharing health records privately and securely, and doing away with the username-and-password concept once and for all.

References

Prerequisites to run

  • Node >12.13 . Preferred way to install node is via nvm
  • React Native.
  • iOS
    • XCode 11 +
    • Ruby
    • Make sure pod (1.9.3) is installed or run sudo gem install cocoapods -v 1.9.3
  • Android
    • Android Studio 3+

Steps to run

  • Clone this repository with SSH
  • yarn or yarn install - install dependencies
  • yarn start - run Metro bundler

Run on ios simulator

  • yarn pod:dev:install
  • yarn ios

Run on ios device

  • DO NOT use XCode automatic code signing
  • cd ios/fastlane
  • sudo gem install bundle
  • bundle install
  • Make sure you have Development or higher access to the connectme-callcenter-certs repo so that the following command is successful -- git clone 'git@gitlab.corp.evernym.com:dev/connectme/connectme-callcenter-certs.git' '/var/folders/dt/sk594jpn40d0097bpg17gwc40000gn/T/d20180705-10510-lw9oue'
  • Install the development certificates, inside the ios folder run bundle exec fastlane match development. DO NOT use --force with this command.
  • You'll be prompted to enter 2 different passwords. Slack a contributor for credentials.
  • Open Xcode, select your device and run

Run on Android simulator/device

  • Make sure a simulator is already created. Otherwise, create one from Android studio
  • One time command: cd android/keystores && keytool -genkey -v -keystore debug.keystore -storepass android -alias androiddebugkey -keypass android -keyalg RSA -keysize 2048 -validity 10000
  • yarn android

Running with local MSDK (MSDK development)

  • Clone the React Native Evernym SDK repository.
  • Replace the dependency in package.json with path to the local repository:
    "@evernym/react-native-white-label-app": "../path/to/react-native-white-label-app"
  • Note: Make sure that react-native-white-label-app repository does not contain node_modules folder.
  • In the react-native-white-label-app change paths for external imported modules (like in the external-imports.js) from relative one to absolute paths of your app (like path/to/ConnectMe/app/evernym-sdk/{old-file}).
  • yarn install or if already installed yarn upgrade @evernym/react-native-white-label-app
  • yarn start-dev - run Metro bundler which will watch for changes in both repositories ConnectMe and react-native-mobile-sdk.

Troubleshooting:

  • Babel error: replace the content of babel.config file with commented one.

Running with specific MSDK branch

  • Replace the dependency in package.json with branch
    "@evernym/react-native-white-label-app": "https://gitlab.com/evernym/mobile/react-native-white-label-app.git#branch-name"

Run functional automated test

To Read

The tech stack used

IDE

  • You may use any IDE you feel more comfortable with.
  • Our preferred IDE would be "VS Code" with extensions like
    • Prettier - Code formatter (esbenp.prettier-vscode)
    • VS Code ES7 React/Redux/React-Native/JS snippets
    • Code Spell Checker (streetsidesoftware.code-spell-checker)
    • Better Comments (aaron-bond.better-comments)
    • Path Autocomplete (ionutvmi.path-autocomplete)
    • Flow Language Support (flowtype.flow-for-vscode)

How To Upgrade to next version of React Native

Frequently Encountered Problems (FEP)

iOS Simulator keyboard issue

  • Problem" The iOS simulator does not take input from my MacBook Pro keyboard. Workaround: A temporary workaround is to disconnect the hardward keyboard with the Shift+Cmd+K key combination (via the menu it is Hardware -> Keyboard -> Connect Hardware Keyboard to unselect that option). Then only using the menu Hardware -> Shake Gesture will bring up the React Native Developer Menu and then you select the Reload option from the React Native Developer Menu and then the software keyboard will come up and allow you to use the mouse to input characters. After a while you can try to re-enable The MacBook Pro keyboard but if it still fails then use this workaround again.

iOS build issue

  • Problem: curl: (60) SSL certificate problem. (on Catalina) SSL certificate on repository server for downloading .vcx is self-signed, which is not secure 'enough' and CURL rejects connecting. *Solution *: Before installing .vcx, run this command: echo insecure >> $HOME/.curlrc. After commit is successfully pushed and .vcx installed, go and remove insecure from ~/.curlrc.

Acknowledgements

This effort is part of a project that has received funding from the European Union’s Horizon 2020 research and innovation program under grant agreement No 871932 delivered through our participation in the eSSIF-Lab, which aims to advance the broad adoption of self-sovereign identity for the benefit of all.