Skip to content

Commit

Permalink
feat: docs and comments in transaction preview (#813)
Browse files Browse the repository at this point in the history
* feat: Metadata management page (#760)

* build: bump polkadot/api version to latest

* fix: red boxes on registering networks

* build: mess with upgrades and lint

* feat: can delete unused metadata (except for built-in probably)

* build: Upgrade polkadot-js 4 7 2 (#761)

* upgrade polkadot and react-native

* test: disabled failing tests temporarily

* test: restore tests

* fix: lint

* test: fix ts-ignore updated rule

* fix: lint and types

* test: bump nodejs version

* test: bump wasm-crypto needed for tests

* fix: update metadata

* build: bump node version for e2e

* build: bump node version in bitrise.yml

* test: teach signing test to scroll down

* test: fix addNewNetwork signing test with scrolling

* test: forgot to import scrolling tap everywhere it's needed

* fix: update westend metadata

* build: build rust for detox

* build: try to fix comment in macro build issue for zeroize_derive

* fix: typu in NetworkContext file

* build: update synstructure rust dep

* build: disable 32-bit ios targets

* build: remoce macro proc so that cross-compile works

* build: very ugly hack to address ios inability to build dynamic libs and rust-lang/cargo#4881

* fix: update metadata

* feat: loading screen stub

* lint

* fix: import react to splashscreen tab

* fix: metadata qr alignment error

* test: increase e2e timeout

* feat: loaded metadata preview screen

* test: switch ios and android e2e tests order

* test: add waiting for loading in beforeall e2e

* fix: lint

* test: typo

* fix: update metadata

* test: preparing for new e2e tests

* docs: bump license year in ts

* docs: bump license year in ios

* docs: bump version year in rust

* fix: gracefully fail to parse transaction if no metadata is available

* test: fix gradle api for detox

* test: remove waiting for alerts

* fix: lint

* feat: slightly prettier loading screen

* fix: lint

* fix: properly handle networks with unset metadata on loading

* fix: #767 and some lint

* fix: lint and types

* feat: slightly prettier transaction parser

* fix: types and lint

* test: attempt to run e2e on bitrise

* test: bump node version on bitrise

* test: swap ios and android testing again

* build: automatically set NDK_HOME with other variables

* test: download last reasonable config from bitrise

* test: increase verbosity in e2e test

* test: increase verbosity for e2e ci test on github

* test: wait for chooser screen after account creation in e2e

* test: this will be reverted - check that ios really clears memory between tests

* fix: lint and ios build

* test: preparing for new tests

* build: ios version fix attempt

* build: fixing ios build

* build: rename xcode folders

* build: update some deps

* build: remove ios/SubstrateSignTests

* fix: reverse ios module renaming mess

* build: ios folder cleanup

* build: move swift-bridge header around

* fix: Bridging header location

* fix: libsigner.a location

* build: try different places for static ios rust lib

* build: remove ndk address and some file duplicates

* build: ios linking

* test: some unfinished test specs added

* chore: update meta_reading

* chore: bump metadata reading version

* fix: gitignore

* fix: gitignore

* feat: rust transaction parser mwp demo

* fix: accept V13 metadata

* feat: stub for rust transaction parser call

* feat: mwp rust transaction parse demo (stub vor visualization)

* feat: add more cards to transaction renderer

* fix: lint and make some things prettier

* build: manually return linking lines to ios project file

* feat: migrate metadata db to insecure storage

* fix: accept V13 metadata

* chore: update metadata

* feat: add templates for cards: loading and error in transaction

* feat: add error messages cards generation and some refactor

* feat!: remove ethereum support, direct connection to transaction parser. Can't sign at the moment.

* refactor: tidy up transaction parser code

* feat: active SIGN button in details screen and some sanitation to remove legacy

* feat: prepare data transfer for signature and signing pin screen

* feat: signing is back! and with all 3 crypto algorithms as well!

* fix: show error messages on pin entry

* fix: remove silly testing message from really hard to find place

* feat: proper pin code error messages and start of rust storage testing (sled vs sqlite?)

* chore: update metadata

* fix: invalid payload screen crashing

* fix: temporarilty disable mortality check until upstream conforms

* fix: data to sign format correction

* feat: payload details look

* test: remove decoders test from RN suite (moved to Rust tests)

* test: remove units conversion test from RN suite (moved to Rust tests)

* fix: choose sled as db

* fix: lint

* fix: some types, lint and legacy removal

* fix: purge ethereum

* fix: ios support and more legacy purging

* ci: Rework Gitlab (#782)

* tighten up build scripts

* rewrite gitlab

* add signing

* fix

* enable

* update gitlab-ci.yml

* become unstuck

* fix

* add debug output

* fix

* fix

* fix

* add artifact

* feat: move all storage to rust (#780)

* FEAT: MFP sled database for android

* feat: network db handling utils

* docs: signing and parsing modules documentation

* fix: gitignore to ignore temporary db files in db handling tests

* refactor: move network specs constants to rust side

* fix: gitignore typo

* fix: gitignoring properly

* test: cleanup db tests locations

* feat: part of bridge to access new network specs storage from RN

* refactor: organize all cards and errors in transaction parsing into enums

* feat: network selector queries db. And some cleanup.

* test: add test feature to show all payload info cards

* feat: MWP metadata signing app example

* feat: MWP fetch and show derivations for given seed and network

* feat: removed RN data storages; app loads and fetches some data - MWP

* feat: prepare fetched metadata for signing and save to db instead of plaintext

* feat: account creation in db and signed metadata checks

* feat: generate metadata qr codes; also bridge Rust to RN

* feat: load type specs and some refactor

* feat: add hw backed key generation section to android

* fix: gitignore

* feat: automatic fetch chainspecs

* fix: create new seed

* fix: mwp address list screen

* feat: replace ethsign with XSalsa20Poly1305; just to save this state - this will be reverted

* feat: native credential-only unlock screen for Android (defunct)

* fix: unhang app on auth

* feat: HW keys for android (auth screen freezes thread, WIP)

* fix: proper thread locks for biometric prompt (Android)

* fix: fetch all seed names

* feat: add seed button

* feat: POC identity cards render

* fix: recover seed now works similar to create seed

* feat: general look for identity cards

* feat: bells and whistles on identity screen

* feat: send public key to UI on fetching relevant identities

* chore: remove some unused java deps

* chore: remove some unused polkadot js deps

* feat: export public account (uos step 1)

* chore: cleanup obsolete screens

* chore: more cleanup

* feat: derivation checker and identity creation backend

* ci: Gitlab build (#784)

* tighten up build scripts

* rewrite gitlab

* add signing

* fix

* enable

* update gitlab-ci.yml

* become unstuck

* fix

* add debug output

* fix

* fix

* fix

* add artifact

* remove test branch

* feat: expose identity creation functions

* feat: expose identity creation functions in RN; handle address collisions

* feat: add new identity

* feat: n+1 feature

* feat: backend to delete identities and suggest their names

* feat: delete identity

* major: tools for creating full signed offline QR updates

* feat: move prepopulated db to assets to copy on init

* feat: remove global context; make TOCnPP condition to populate db; app factory reset should work through deletion of app data now

* refactor: remove old rust code, some general cleanup

* fix: screen refresh on addition of account

* fix: refresh on address deletion

* refactor: RN cleanup

* feat: nice suggestions for seed names

* lint: RN lint and cleanup

* refactor: some types and more cleanup

* feat: automatic TOFU metadata, types and network specs import, fixed signing

* lint: cleanup meta_reading

* fix: signing and upgrading screens fixes

* feat: populate cold database from hot one (and some more cleanup)

* refactor: move all screens to one place

* feat: network settings screen

* feat: remove metadata, remove network

* CI: rework

* CI: poke the pipeline

* CI: metadata

* CI: make it work

* fix: network removal call properly

* fix: empty metadata does not crash; also some refactor and backend for listing all addresses

* fix: rn build android (#785)

* fix: disable broken minification with proguard

* revert: cat in ci

* docs: readme for db_handling

* fix: .h header for ios build

* fix: remove obsolete meta handle generator

* fix: cargo.toml cleanup for main module

* feat: use anyhow to propagate errors to ios

* feat: anyhow all rust code

* refactor: decrease code redundancy by helpers

* fix: rust ios return seedphrase on successful creation

* major: native ios wip dump

* feat: add rust-identicon dependency just to test build

* major: ios account management UI

* ci: remove yarn calls from e2e; should add tests later

* ci: remove ts lint types and unit tests

* ci: ga build script fix

* refactor: cleanup of junk files

* fix: simplify data model and fix some memory leaks and threading

* ci: scheme in actions

* feat: better rust qr parser and PC implementation as devtool

* feat: try to send svg string to ios

* fix: QR parser succeeds 1 frame sooner

* test: 1-frame multiframe decode unit test

* feat: transaction parsing and preview sketch

* feat: history backend

* feat: seed and network settings screens, TC and PP

* feat: bindings for history ios

* feat: ios history ui stub

* refactor: tidy up history in transaction parsing

* feat: rust QR code png renderer

* refactor: consolidate qr constants

* feat: integrate QR code generation into signing

* feat: ios history and hard types in tx and history ui cards

* fix: seriously, output is supposed to be binary-encoded hex symbols?!

* feat: new export pubkey qr code generator

* feat: identicons stub, faster qr videos

* feat: show identities for all seeds

* feat: show all seeds and minor UI fixes

* chore: cleanup RN

* chore: clean up old android code

* feat: UI initial commit

* feat: navigation

* feat: rust native calls linking

* docs: code comments everywhere

* docs: remove ETH, explain legacy situation

* docs: some tutorials

* docs: reference to uos

* feat: onboarding and db populate

* fix: active state for onboard

* feat: network selector

* feat: some support for metadata v14 (unstable as well as upstream)

* fix: hotfix BitVec u64 for 32bit archs

* feat: mwp auth screen invoker

* feat: after all can use encryptedSharedPreferences with biometric

* feat: docs in transaction preview and user comment for signing

* feat: mwp seed management

* feat: keys list

* feat: png tunnel and key menu

* feat: create and export keys

* feat: camera on homescreen

* feat: qr code parser

* feat: decode all qr messages into clean payload

* feat: transaction signing

* feat: mwp history screen in settings

* feat: history cards stub

* build: decrease minimum sdk level

* feat: some formatting for transaction details cards

* feat: scan progress indicator

* revert: use stable crates until metadata V14 is out

* fix: merge camera progress bar fix

* feat: replace ios navigation with flat custom one

* feat: docs and comments for transactions

* test: check links in docs

* ci: move links check on linux machine actions

* CI: chore

* CI: publish docs then check them

* CI: publish only /docs

* CI: move flag

* CI: use mdBook to compile book

* CI: debug mdbook

* CI: debug mdbook 2

* CI: mdbook latest version

* CI: mdbook dirty hack

* CI: mdbook use output dir

* CI: mdbook SUMMARY

* CI: mdbook builds

* CI: mdbook publish

* CI: linkcheck args

* CI: linkcheck args 1

* CI: linkcheck locally

* CI: mdbook serve in bkg

* CI: mdbook build first

* CI: another linkcheck

* CI: fix links

* CI: accidentially added

* CI: linkchecker fix links

* fix: fix most of settings screen

* docs: copy README to root for github

* chore: removed unused resources (moved some to docs)

* feat: custom focus-managing unified text input for ios

* fix: actually reset camera on home screen button

* feat: delete seed

* feat: search keys bar

* chore: cleanup master merge junk (revert)

Co-authored-by: Martin Pugh <martin@parity.io>
Co-authored-by: Martin Pugh <pugh@s3kr.it>
Co-authored-by: Denis P <denis.pisarev@parity.io>
  • Loading branch information
4 people committed Sep 28, 2021
1 parent 727e046 commit 2a95c1a
Show file tree
Hide file tree
Showing 279 changed files with 9,295 additions and 2,216 deletions.
35 changes: 35 additions & 0 deletions .github/workflows/docs-link-check.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,35 @@
name: Publish Docs and Check links with linkcheck

on:
pull_request:
push:
branches:
- master

jobs:
deploy-docs:
name: Deploy docs
runs-on: ubuntu-latest

steps:
- name: Checkout repository
uses: actions/checkout@v2.3.4

- name: Setup mdBook
uses: peaceiris/actions-mdbook@v1.1.13
with:
mdbook-version: 'latest'

- name: Setup mdbook-linkcheck
run: |
cargo install mdbook-linkcheck mdbook-mermaid
- run: |
mdbook build docs
- name: Deploy documentation
uses: peaceiris/actions-gh-pages@v3
with:
github_token: ${{ secrets.GITHUB_TOKEN }}
publish_branch: gh-pages
publish_dir: docs/book
42 changes: 20 additions & 22 deletions README.md
Original file line number Diff line number Diff line change
@@ -1,12 +1,12 @@
![Parity Signer](https://wiki.parity.io/images/logo-parity-signer.jpg)
![Parity Signer](https://wiki.parity.io/logo-parity-signer.jpg)

[<img src="./res/github-badge.png" width="250"/>](https://github.com/paritytech/parity-signer/releases/)
[<img src="./res/google-play-badge.png" width="250"/>](https://play.google.com/store/apps/details?id=io.parity.signer)
[<img src="./res/app-store-badge.png" width="250"/>](https://itunes.apple.com/us/app/parity-signer/id1218174838)
[<img src="./docs/src/res/github-badge.png" width="250"/>](https://github.com/paritytech/parity-signer/releases/)
[<img src="./docs/src/res/google-play-badge.png" width="250"/>](https://play.google.com/store/apps/details?id=io.parity.signer)
[<img src="./docs/src/res/app-store-badge.png" width="250"/>](https://itunes.apple.com/us/app/parity-signer/id1218174838)

# Parity Signer - Turn your smartphone into a hardware wallet

![Parity Signer](./docs/tutorials/images/logo-parity-signer.jpg)
![Parity Signer](./tutorials/images/logo-parity-signer.jpg)

**Please read instructions in [Getting started](#getting-started) before building or using the Signer**

Expand All @@ -16,9 +16,9 @@ You can create accounts in Substrate-based networks, sign messages/transactions,

You must turn off or even physically remove the smartphone's Wifi, Mobile Network, and Bluetooth to ensure that the mobile phone containing these accounts will not be exposed to any online threat. Switching to airplane mode suffices in many cases.

**Disabling the mobile phone's networking abilities is a requirement for the app to be used as intended, check our [wiki](./docs/wiki/Security-And-Privacy.md) for more details.**
**Disabling the mobile phone's networking abilities is a requirement for the app to be used as intended, check our [wiki](./wiki/Security-And-Privacy.md) for more details.**

Have a look at the tutorial on our wiki to learn how to use [Parity Signer together with Polkadot-js app](./docs/tutorials/Kusama-tutorial.md).
Have a look at the tutorial on our wiki to learn how to use [Parity Signer together with Polkadot-js app](./tutorials/Kusama-tutorial.md).

Any data transfer from or to the app happens using QR code. By doing so, the most sensitive piece of information, the private keys, will never leave the phone. The Parity Signer mobile app can be used to store any Substrate account, this includes Polkadot (DOT) and Kusama (KSM) networks.

Expand All @@ -36,31 +36,29 @@ Currently Signer is available only for iOS. Android version is coming soon.

**These tutorials and docs are heavily outdated at the moment, please use them as references or help improving**

The `master` branch contains development code; for stable releases and release candidates please use [Release](https://github.com/paritytech/parity-signer/tree/release) branch or fetch tagged commits.

If you are upgrading from older version of Signer, please see [changelog](./docs/wiki/Changelog.md) and [upgrading Signer](./docs/wiki/Upgrading.md)
If you are upgrading from older version of Signer, please see [changelog](./wiki/Changelog.md) and [upgrading Signer](./wiki/Upgrading.md)

Please note that the Signer app is an advanced tool designed for maximum security and complex features. In many use cases, more user-friendly tools would be sufficient.

[Getting started guide](./docs/tutorials/Start.md)
[Getting started guide](./tutorials/Start.md)

### Tutorials

- [Signing with Pokadot.js Apps](./docs/tutorials/Kusama-tutorial.md)
- [Recover Account from Polkadot.js Apps](./docs/tutorials/Recover-Account-Polkadotjs.md)
- [Manage Accounts on Parity Signer](./docs/tutorials/Hierarchical-Deterministic-Key-Derivation.md)
- [Update New Network](./docs/tutorials/New-Network.md)
- [Signing with Pokadot.js Apps](./tutorials/Kusama-tutorial.md)
- [Recover Account from Polkadot.js Apps](./tutorials/Recover-Account-Polkadotjs.md)
- [Manage Accounts on Parity Signer](./tutorials/Hierarchical-Deterministic-Key-Derivation.md)
- [Update New Network](./tutorials/New-Network.md)

### Wiki

- [Security and Privacy](./docs/wiki/Security-And-Privacy.md)
- [Development](./docs/wiki/Development.md)
- [Building and Publishing](./docs/wiki/Building-And-Publishing.md)
- [Testing](./docs/wiki/Test.md)
- [Troubleshooting](./docs/wiki/Troubleshooting.md)
- [QA Check List](./docs/wiki/QA.md)
- [Security and Privacy](./wiki/Security-And-Privacy.md)
- [Development](./wiki/Development.md)
- [Building and Publishing](./wiki/Building-And-Publishing.md)
- [Testing](./wiki/Test.md)
- [Troubleshooting](./wiki/Troubleshooting.md)
- [QA Check List](./wiki/QA.md)
- [Key derivations](https://substrate.dev/docs/en/knowledgebase/integrate/subkey)
- [Changelog](./docs/wiki/Changelog.md)
- [Changelog](./wiki/Changelog.md)
- [QR encoding definition](https://github.com/maciejhirsz/uos)

### Legacy versions
Expand Down
36 changes: 36 additions & 0 deletions docs/book.toml
Original file line number Diff line number Diff line change
@@ -0,0 +1,36 @@
[book]
language = "en"
multilingual = false
src = "src"
title = "Parity-Signer"
authors = [
"parity-devops@parity.io"
]

[output.html]
mathjax-support = true
additional-js = ["mermaid.min.js", "mermaid-init.js"]

[output.html.playpen]
editable = true
line-numbers = true

[output.html.search]
limit-results = 20
use-boolean-and = true
boost-title = 2
boost-hierarchy = 2
boost-paragraph = 1
expand = true
heading-split-level = 2

[output.linkcheck]
follow-web-links = true
cache-timeout = 43200
warning-policy = "warn"

[output.linkcheck.http-headers]
'crates\.io' = ["Accept: text/html"]

[preprocessor.mermaid]
command = "mdbook-mermaid"
1 change: 1 addition & 0 deletions docs/mermaid-init.js
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
mermaid.initialize({startOnLoad:true});
32 changes: 32 additions & 0 deletions docs/mermaid.min.js

Large diffs are not rendered by default.

73 changes: 73 additions & 0 deletions docs/src/README.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,73 @@
![Parity Signer](https://wiki.parity.io/logo-parity-signer.jpg)

[<img src="./res/github-badge.png" width="250"/>](https://github.com/paritytech/parity-signer/releases/)
[<img src="./res/google-play-badge.png" width="250"/>](https://play.google.com/store/apps/details?id=io.parity.signer)
[<img src="./res/app-store-badge.png" width="250"/>](https://itunes.apple.com/us/app/parity-signer/id1218174838)

# Parity Signer - Turn your smartphone into a hardware wallet

![Parity Signer](./tutorials/images/logo-parity-signer.jpg)

Parity Signer is a mobile application that allows any smartphone to act as an air-gapped crypto wallet. This is also known as "cold storage".

You can create accounts in Substrate-based networks, sign messages/transactions, and transfer funds to and from these accounts without any sort of connectivity enabled on the device.

You must turn off or even physically remove the smartphone's Wifi, Mobile Network, and Bluetooth to ensure that the mobile phone containing these accounts will not be exposed to any online threat. Switching to airplane mode suffices in many cases.

**Disabling the mobile phone's networking abilities is a requirement for the app to be used as intended, check our [wiki](./wiki/Security-And-Privacy.md) for more details.**

Have a look at the tutorial on our wiki to learn how to use [Parity Signer together with Polkadot-js app](./tutorials/Kusama-tutorial.md).

Any data transfer from or to the app happens using QR code. By doing so, the most sensitive piece of information, the private keys, will never leave the phone. The Parity Signer mobile app can be used to store any Substrate account, this includes Polkadot (DOT) and Kusama (KSM) networks.

## Key features

- This is not a complete cryptowallet in itself. The Signer does not sync with blockchain, so it does not know your account balance, whether transactions were successful or even if the account exists! This is a **cold wallet** app only stores keys, reads and signs messages. It should always be used with **hot wallet** like [polkadot.js](https://polkadot.js.org/apps)
- The Signer alone does not make your accounts secure. **You must maintain security yourself**. Airgap should be only part of your security protocol, improper use of Signer could still lead to loss of funds and/or secrets.
- When properly used, Signer provides best achievable security with Substrate networks to-date.

## System requirements

Currently Signer is available only for iOS. Android version is coming soon.

## Getting Started

**These tutorials and docs are heavily outdated at the moment, please use them as references or help improving**

If you are upgrading from older version of Signer, please see [changelog](./wiki/Changelog.md) and [upgrading Signer](./wiki/Upgrading.md)

Please note that the Signer app is an advanced tool designed for maximum security and complex features. In many use cases, more user-friendly tools would be sufficient.

[Getting started guide](./tutorials/Start.md)

### Tutorials

- [Signing with Pokadot.js Apps](./tutorials/Kusama-tutorial.md)
- [Recover Account from Polkadot.js Apps](./tutorials/Recover-Account-Polkadotjs.md)
- [Manage Accounts on Parity Signer](./tutorials/Hierarchical-Deterministic-Key-Derivation.md)
- [Update New Network](./tutorials/New-Network.md)

### Wiki

- [Security and Privacy](./wiki/Security-And-Privacy.md)
- [Development](./wiki/Development.md)
- [Building and Publishing](./wiki/Building-And-Publishing.md)
- [Testing](./wiki/Test.md)
- [Troubleshooting](./wiki/Troubleshooting.md)
- [QA Check List](./wiki/QA.md)
- [Key derivations](https://substrate.dev/docs/en/knowledgebase/integrate/subkey)
- [Changelog](./wiki/Changelog.md)
- [QR encoding definition](https://github.com/maciejhirsz/uos)

### Legacy versions

Older versions of this app could be useful for development, however, they are not safe for use in production. They are available at following branches:

- [Last public release with React Native](https://github.com/paritytech/parity-signer/tree/legacy-4.5.3)
- [Non-ascii characters fix and some transaction parsing](https://github.com/paritytech/parity-signer/tree/legacy-4.6.2)
- [Metadata types import and message parsing in RN](https://github.com/paritytech/parity-signer/tree/legacy-metadataRN)
- [Rust backend with RN frontend](https://github.com/paritytech/parity-signer/tree/legacy-rust)

## License

Parity-Signer is [GPL 3.0 licensed](LICENSE).
22 changes: 22 additions & 0 deletions docs/src/SUMMARY.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,22 @@
# Parity-Signer

- [Parity-Signer](./README.md)

## wiki

- [Building-And-Publishing](./wiki/Building-And-Publishing.md)
- [Changelog](./wiki/Changelog.md)
- [Development](./wiki/Development.md)
- [QA](./wiki/QA.md)
- [Security-And-Privacy](./wiki/Security-And-Privacy.md)
- [Test](./wiki/Test.md)
- [Troubleshooting](./wiki/Troubleshooting.md)
- [Upgrading](./wiki/Upgrading.md)

## tutorials

- [Hierarchical-Deterministic-Key-Derivation](./tutorials/Hierarchical-Deterministic-Key-Derivation.md)
- [Kusama-tutorial](./tutorials/Kusama-tutorial.md)
- [New-Network](./tutorials/New-Network.md)
- [Recover-Account-Polkadotjs](./tutorials/Recover-Account-Polkadotjs.md)
- [Start](./tutorials/Start.md)
File renamed without changes
File renamed without changes.
File renamed without changes
File renamed without changes
File renamed without changes
File renamed without changes.
Original file line number Diff line number Diff line change
Expand Up @@ -5,39 +5,42 @@ This tutorial will walk you through setting up a Kusama account with the Parity
* Notice: The UI maybe variant for different versions, but the functionalities are the same in v4 version.

## Summary

- [1. Get Parity Signer mobile application](#1-get-parity-signer-mobile-application)
- [2. Setup or recover an identity](#2-setup-or-recover-an-account)
- [Create an identity](#create-an-account)
- [Recover an identity with your recovery phrase](#recover-an-account-with-your-recovery-phrase)
- [3. Add Parity Signer's account to Polkadot-js apps](#3-add-parity-signers-account-to-polkadot-js-apps)
- [4. Sign a transaction](#4-sign-a-transaction)


## 1. Get Parity Signer mobile application

### Device security

Parity Signer is meant to be used offline. The mobile device used to run Parity Signer will hold valuable information that needs to be kept securely stored. It is therefore advised to:

- Get a Parity Signer dedicated mobile device.
- Make a factory reset.
- Enable full-disk encryption on the device, with a reasonable password (might not be on by default, for example for older Android devices).
- Do not use any biometrics such as fingerprint or face recognition for device decryption/unlocking, as those may be less secure than regular passwords.
- Once Parity Signer has been installed, enable airplane mode and make sure to switch off Wifi, Bluetooth or any connection ability of the device.
- Only charge the phone using a power outlet that is never connected to the internet. Only charge the phone with the manufacturer's charging adapter. Do not charge the phone on public USB chargers.

Please find more info [here](Parity-Signer-Mobile-App) about the Parity Signer application.
Please find more info [here](#Parity-Signer-Mobile-App) about the Parity Signer application.

### Install Parity Signer mobile application

Install Parity Signer making sure that it originated from **Parity Technologies**

- [Android](https://play.google.com/store/apps/details?id=io.parity.signer)
- [iOS](https://itunes.apple.com/us/app/parity-signer/id1218174838)


## 2. Setup or recover an Identity

When launching the app for the first time, no identity has been set up yet. At this stage, you will either want to create an identity directly from your mobile device or recover an identity previously created.

### Create an identity

Tap on the `Create` button, and give a name to this identity.

In the next step, your recovery phrase will be presented to you. Think of it as a master key. If you lose it, you lose your money.
Expand All @@ -49,16 +52,16 @@ You will then be asked to choose a pin code. This pin will be needed later on to
The next screen will allow you to select a network to generate an account.
If you choose an Ethereum network, the related Ethereum account will be generated for the identity,

If you choose a Substrate network (like Kusama), you will first create a root account, and then you will be able to derive more accounts with specified paths and names. The name can be changed later on, but once the path is set, it can not be changed. More information about path derivation see [here](Parity-Signer-Hierarchical-Deterministic-Key-Derivation).
If you choose a Substrate network (like Kusama), you will first create a root account, and then you will be able to derive more accounts with specified paths and names. The name can be changed later on, but once the path is set, it can not be changed. More information about path derivation see [here](#Parity-Signer-Hierarchical-Deterministic-Key-Derivation).

For each derived account, you will be able to see the address and its related QR code.

![create account](images/Parity-Signer-apps-0.png)


### Recover an identity with your recovery phrase

If you already have an account created with either Parity Signer or any other waller, you can recover it by doing so:

- Tap on the top right side user icon, and choose ` + Add Identity`.
- Input the new identity name and tap the `Recover Identity` button.
- Type in the recovery phrase, word suggestion helps you prevent any typo. The field will turn red if the recovery phrase is not a bip39.
Expand All @@ -67,7 +70,6 @@ If you already have an account created with either Parity Signer or any other wa
- Identity generated, now you can select the network to create the first account.

NOTICE: For V3 user, after recovering the seed phrase of Kusama account, the account will appear as an identity root account aside with identity name in the network selection screen.


## 3. Add Parity Signer's account to Polkadot-js apps

Expand All @@ -94,13 +96,15 @@ Assuming that your Parity Signer account now has funds, you will be able to send
![Parity Signer Polkadot send transaction](images/Parity-Signer-apps-tx-workflow.png)

You will now be presented with a QR code that represents the transaction. Since this transaction is sending funds from your Parity Signer mobile app account, only this account (sitting on your phone) can sign and authorise this transaction. This is what we'll do in the next steps:

- From the Parity Signer account overview, tap the scan button on the top right and scan the QR code presented by the Polkadot-js apps website.
- Review the transaction addresses and the amount to send on your phone. The amount and addresses must match what you've entered in apps. If you got phished, this is where you can realise it and reject the transaction.
- Once you're sure, scroll down and click `Sign Transaction` to enter your pin and get the QR code of the scanned transaction.

![Sign Polkadot apps transaction](images/Parity-Signer-apps-1.png)

Your phone has now *signed the transaction offline* using your Parity Signer account private key. The QR code that is now displayed on your phone represents a signed transaction that can be broadcasted. We will do this in the next steps:

- On Polkadot-js apps, click on `Scan Signature QR`, this will ask to turn on your webcam again.
- Face your phone's display to your webcam for the website to be able to read the signed transaction.
- Your transaction is sent automatically.
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,7 @@ Switch to the network you want to play with on Polkadot.js app. Click `Settings`

![Network Metadata QR Code](images/Network-Metadata-QR.png)

Here we can see the chain specifications like `Network Name`, `Address Prefix`, and `Genesis Hash` etc. They are all the metaData of the network which is required by Parity Signer. The only item we could change is network color, it is used on Parity Signer to distinguish other networks.
Here we can see the chain specifications like `Network Name`, `Address Prefix`, and `Genesis Hash` etc. They are all the metaData of the network which is required by Parity Signer. The only item we could change is network color, it is used on Parity Signer to distinguish other networks.

On the right side is the QR Code we need.

Expand All @@ -30,4 +30,4 @@ Please note that as network develops, its metadata will change over time. New me

This is an advanced operation that should only be performed by experienced users on trusted machine. Remember, that any inaccuracy in network specifications or metadata may lead to serious security threat, loss of funds and/or general account access!

[Update generator instructions](../rust/generate_message/readme.md)
[Update generator instructions](../../rust/generate_message/readme.md)
Loading

0 comments on commit 2a95c1a

Please sign in to comment.