- 
                Notifications
    You must be signed in to change notification settings 
- Fork 312
Closed
Labels
Description
Related issues:
- Ensure that ID creation screen is fast across devices stacks-archive/blockstack-browser#1900
- Use of deprecated crypto functionality in newer versions of Node #681
- putFile crashes Safari on iOS when uploading many encrypted files. #564
Current associated PR: #737
Initial experimental PoC PR: #659
Solve some of the CPU & memory issues with our crypto operations, especially as it relates to:
- User account registration and restoration.
- File encryption and decryption in the storage APIs.
Tasks:
- 
Replace usage of Node.js cryptolib in theauthandstoragemodules with modern WebCrypto APIs.- Currently, when packaged for the web, Node.js cryptogets polyfilled with IE-era JS implementations. These are both large in file size, and CPU & memory inefficient. One symptom is significant lag during the related authenticator pages, especially on low-powered mobile devices.
 
- Currently, when packaged for the web, Node.js 
- 
Strategy for handling breaking changes for some public blockstack.js functions that must be converted from sync to async. - This PR is currently dealing with how to handle breaking changes on most of these same functions: Make the SessionStore asynchronous #679
 
- 
(Optional / not sure) Strategy for making downstream dependencies -- mostly bitcoinjs-lib & family packages -- to use W3C crypto APIs rather than the Node.js cryptopolyfills or other redundant libs.
Projects that need updated -- higher priority:
- blockstack-keychain (draft PR opened w3c crypto stacks-archive/keychain#10)
- blockstack-browser (draft PR opened Use blockstack.js W3C crypto stacks-archive/blockstack-browser#1966)
- gaia (draft PR opened [Do not merge] Blockstack.js async crypto stacks-archive/gaia#272)
- blockstack-cli (draft PR opened [Do not merge] Blockstack.js async crypto stacks-archive/cli-blockstack#27)
Lower priority:
- iOS SDK
-  Android SDK(uses its own native crypto functions?)
- react native SDK (?)
- Wallet app