keepkey / keepkey-desktop Goto Github PK
View Code? Open in Web Editor NEWKeepKey Desktop Application
Home Page: https://keepkey.com
License: GNU General Public License v3.0
KeepKey Desktop Application
Home Page: https://keepkey.com
License: GNU General Public License v3.0
A.C: Implement automatic updates for keepkey desktop application
Unable to view or select developer tools in Windows Keep Key Desktop App
Recreate:
Install app on Win10
Load wallet
Unable to see toolbar options such as View
The app doesnt correctly recognize when initilization has finished even tho the keepkey has correctly initialized
A.C: patching client for windows builds
notes: requires shapeshift/lib#347 merged into main. and a version bump on the npm package
A.C. Create a template modal for updating the keepkey device.
Background: https://beta.shapeshift.com/updater-download
Review updater app and layout.
notes: this is a mock, and will NOT be functional until a HDwallet release fixing nodeHID support.
A.C. /device should return keepkey features
a normal startup flow will get set here
init/firmware setup will get set in main/keepkey.ts on the result from Hardware.init
The shared global object is probally a poor way to achive this and is not working.
http://localhost:1646/device
should return
"vendor": "keepkey.com",
"majorVersion": 7,
"minorVersion": 2,
"patchVersion": 1,
"deviceId": "343733331147363327003800",
"pinProtection": false,
"passphraseProtection": false,
"coinsList": [],
"initialized": true,
"revision": "ODY5MWUzYWI0ZWVhMDYxZTJlODc2OTJjYjExNDI0NjQ1MjJjNzdmNA==",
"bootloaderHash": "fRqXi3u5Xv4bTPyy6nDIyxU4jpipVQ4VgdAmjnlMmNE=",
"imported": true,
"pinCached": true,
"passphraseCached": false,
"policiesList": [
{
"policyName": "ShapeShift",
"enabled": true
},
{
"policyName": "Pin Caching",
"enabled": true
},
{
"policyName": "Experimental",
"enabled": false
},
{
"policyName": "AdvancedMode",
"enabled": false
}
],
"model": "K1-14AM",
"firmwareVariant": "KeepKey",
"firmwareHash": "6sd4A7dJnfvuEL41Ei7QtQOQbAUI1Tm4FkRYtQghoCU=",
"noBackup": false
}```
Connect a keepkey with fully updated firmware
Device must NOT have initiziaed seed.
A.C
Detect that device is not init on startup
open init modal on startup
flow should continue without error
A.C. expand the REST api features for all available interactions on a keepkey.
example ref:
https://github.com/solipsis/go-keepkey
https://github.com/shapeshift/hdwallet/blob/master/packages/hdwallet-keepkey/src/keepkey.ts#L1183
applyPolicy Enable/Disable a named policy
applySettings Update the label, language, and enable/disable the passphrase
changePin Change or add a pin to the device
clearSession Clear session data such as the pin session and passphrase
debugGetState Get device debug info. This REVEALS SECRETS and can only be used with debug enabled firmware
decryptKeyValue Decrypt a value with a given key and nodepath
encryptKeyValue Encrypt a value with a given key and nodepath
flashDump dump certain section of flash
flashHash Request hash of certain segment of flash memory
flashWrite Write data over flash sectors
getAddress Get an address for a coinType and nodePath
getEntropy Request sample data from the hardware RNG
getEthAddress Get the ethereum address for a given node path
getFeatures Ask the device for features and model information
getPublicKey Get a public key for a nodePath including the XPUB
help Help about any command
loadDevice Load the device from seed words
ping Ping the device with a message
recoverDevice Begin interactive device recovery
removePin Disable pin on the device
replay Replay messages in kk log format to the device
resetDevice Reset the device and generate a new seed using device RNG
signEthTx Sign an ethereum transaction
signMessage Sign a message using a given node path and coin
softReset Soft reset / power cycle the device. Only works on devices in manufacturer mode
upgradeFirmware Upgrade firmware to a specified tagged version or latest if none is specified
uploadFirmware Upload a new firmware binary to the device
verifyMessage Verify a signed message
wipeDevice Erase all sensitive information on the device```
endpoints go into bridge.js
(will need to be passed over IPC from keepkey.ts (the HDwallet object)
to add references into swagger.json
https://github.com/keepkey/keepkey-mono/blob/main/modules/keepkey-bridge/src-api/controllers/0-index.controller.ts
generate/upload to electron/api/dist/swagger.json
Firmware update / bootloader update modals dont need a button, they should go through automatically.
dont have multiple modals open at once
flags should be easy to get too, skrew this hotkey bs
After wipe no device found modal not popping up
21mill
erc20
no extra rules
no mint
Remove all other wallets from modals
remove "switch provider" from dropdown
Open directly to "KeepKey Advanced settings" on dropdown
A.C: Add a GH-actions template for code releases
Every app listed should work
(and not be a wallet aka trustwallet)
Add search for apps
Load all apps on walletconnect.com
Bonus
some kind of flag for (tested reviewed bla bla)
we can host a DB on pioneer api if needed
Mock this data to start with a JSON blob added to project
Be able to launch app via walletconnect desktop intent
Pull in code from southbear
Contract
Function Burn KK token
Provable un-recoverable (no backdoor)
Event Signal desired support for X asset
(must be unique symbol and clear what they are voting for)
Give NFT on burn
NFT art based on token? something fun? community submissions? open to ideas
Splash screen
Button to "troubleshoot device" (force recheck of state/launching modals)
Show keepkey status
Show keepkey state
Show Keepkey device info if connected
Show link to onboarding docs (webview?)
Add page to KK desktop
Show all coins voted on
rank by number of keepkey tokens burned * current USD rate of KK tokens
Allow button on each to vote more (buy - Burn - Vote)
A.C. Protect api calls with a pairing process.
code ref:
https://github.com/BitHighlander/keepkey-desktop/blob/master/electron/src/bridge.ts#L138
all applications must request to pair. user must accept pairing code. api key is passed in the process, and any future requests must contain this api key in the auth header.
store all pairings in the local db.
Let user view pairings in app
let user un-pair* any application in the app
Allow loading of all coins (coingecko)
Add to coin page:
Fields:
Native support true/false (keepekey)
If Show Apps
List apps (wallet connect/api)
If no support
Allow vote to support
Buy KK token -> Burn token -> Show burned tokens on leaderboard
A.C
detect state of keepkey
if update to date and init, LOAD the dashboard and show balances
if firmware update needed launch modal for firmware
if init needed launch modal for init
if no device connected, launch modal for connect device
if no device (show troubleshoot button) (is device connected? troubleshoot)
Troubleshoot gives info on OS, Devices connected to Host, gives USB info for linux (usb host drivers) and finally takes to support)
A.C. validate linting before allowing a pr into master
(prevent errors on master build process)
A.C. store user object in db, load it on startup, serve over api
This should load up on startup and NOT require and user UI (ie the connect wallet* flow)
(user may opt-OUT* of this api running in both tray/settings drop down in app)
(default is this api runs always on startup and allows applications to pair with client)
Default behavior is to load the last wallet paired in app.
Advanced (allow multiple wallets to be saved in DB, and user can select context* or default wallet in UI)
A.C. after installing app, the application should launch on startup
add git protections to develop branch (1 approval)
protect master (only scap/highlander can merge to master/release)
A declarative, efficient, and flexible JavaScript library for building user interfaces.
๐ Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. ๐๐๐
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google โค๏ธ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.