mirror of
https://github.com/cryptoadvance/specter-desktop.git
synced 2026-08-13 12:33:29 +02:00
Chore: Upgrade to python 3.10 (#1688)
* changed class name * Working requirements.in * Reordered lines to see changes better * Working minimal upgrades * Added hashes * - Upgraded python to 3.10 and bitcoin to v23.0 - Added libzmq to build process, to enable future use cases such as https://github.com/cryptoadvance/specter-desktop/issues/778 - added --without-gui to remove configure warning that gui will not be built. * Added line-break * - Updated the embit version to 0.4.13 - pushed python-bitcoind image * - Build registry.gitlab.com/c8527/specter/cirrus-jammy:20220504 - updated docker references * - added cypress-base-ubuntu-jammy * - added cypress-python * - fixed unchanged registry path * Fixed wrong path * readme change * Fixed path * Changed github-changelog * changes registrar links * Fixed bitcoin version * Set reset bitcoin version to 22 * Set bitcoin version to 22.0 * Fixed black issue via https://github.com/psf/black/issues/2964#issuecomment-1080974737 * Revert for changelog * Upgraded pytest because otherwise I get the error https://github.com/pytest-dev/pytest/discussions/9195 * Added temporary fix for upgraded hwi version. Should be fixed in https://github.com/cryptoadvance/specter-desktop/pull/1693 * more verbosity for page generation * doc about python 3.10 * docs: update TOC * yet another library necessary * black * Corrected tag * Fixed wrong python version introduced in the merge commit * Use same babel version across requirements and test_requirements * Created the reuqirements.txt with python 3.8 such, that that netlify can create the python docs in python 3.8, while everything elese works also with python 3.10 * testing https://peps.python.org/pep-0508/#environment-markers * CHanged just the txt * Added comments * electron docker build successful * rename image to cypress-python:v9.7.0 * doc * docker file rename * fix pyinstaller pip error by changing requirements.in * reference jammy electron dockerfile See https://github.com/electron-userland/electron-builder/pull/6922#issuecomment-1234420845 * updated all references to dockerimages * fix release-build * fix the image-version to something else than latest. pin all the stuff! * revert to old image to avoid glibc issues Co-authored-by: Kim Neunert <k9ert@gmx.de> Co-authored-by: k9ert <k9ert@users.noreply.github.com>
This commit is contained in:
parent
c528e90b0d
commit
a8f1b808ee
24 changed files with 605 additions and 296 deletions
10
.cirrus.yml
10
.cirrus.yml
|
|
@ -1,8 +1,8 @@
|
|||
container:
|
||||
# image: python:slim
|
||||
# image: ubuntu:focal
|
||||
# image: python:3.8-buster
|
||||
image: registry.gitlab.com/cryptoadvance/specter-desktop/cirrus-focal:20210831
|
||||
# image: ubuntu:jammy
|
||||
# image: python:3.10
|
||||
image: registry.gitlab.com/cryptoadvance/specter-desktop/cirrus-jammy:20220908
|
||||
|
||||
# We assume here that we're having a proper python3 system including virtualenv and pip
|
||||
prep_stuff_template: &PREP_STUFF_TEMPLATE
|
||||
|
|
@ -70,7 +70,7 @@ test_task:
|
|||
|
||||
cypress_test_task:
|
||||
container:
|
||||
image: registry.gitlab.com/cryptoadvance/specter-desktop/cypress-python:v9.7.0
|
||||
image: registry.gitlab.com/cryptoadvance/specter-desktop/cypress-python-jammy:v9.7.0
|
||||
cpu: 6
|
||||
memory: 6G
|
||||
pre_prep_script:
|
||||
|
|
@ -96,4 +96,4 @@ cypress_test_task:
|
|||
cypress_screenshots_artifacts:
|
||||
path: "./cypress/screenshots/**"
|
||||
cypress_videos_artifacts:
|
||||
path: "./cypress/videos/**"
|
||||
path: "./cypress/videos/**"
|
||||
|
|
|
|||
|
|
@ -1,6 +1,6 @@
|
|||
# this image contains python, bitcoind and docker
|
||||
# check docker/python-bitcoind on how it's built
|
||||
image: registry.gitlab.com/cryptoadvance/specter-desktop/python-bitcoind:v0.20.1
|
||||
image: registry.gitlab.com/cryptoadvance/specter-desktop/python-bitcoind:v22.0
|
||||
|
||||
variables:
|
||||
# Cache documentation: https://docs.gitlab.com/ee/ci/caching/
|
||||
|
|
@ -64,7 +64,7 @@ check:
|
|||
- py.test --cov-report term --cov cryptoadvance --docker
|
||||
|
||||
.test-cypress:
|
||||
image: registry.gitlab.com/cryptoadvance/specter-desktop/cypress-python:20210424
|
||||
image: registry.gitlab.com/cryptoadvance/specter-desktop/cypress-python-jammy:v9.7.0
|
||||
stage: testing
|
||||
script:
|
||||
# start the server in the background
|
||||
|
|
@ -158,7 +158,7 @@ release_electron_linux_windows:
|
|||
only:
|
||||
- tags
|
||||
before_script:
|
||||
- python -V # Print out python version for debugging
|
||||
- python3 -V # Print out python version for debugging
|
||||
- apt update
|
||||
- apt install -y unzip libusb-1.0-0-dev libudev-dev # usb-support in hidapi
|
||||
- pip3 install virtualenv
|
||||
|
|
@ -234,4 +234,4 @@ release_docker:
|
|||
before_script:
|
||||
- echo "Triggering Docker Release"
|
||||
script:
|
||||
- ./utils/trigger_docker_build.sh
|
||||
- ./utils/trigger_docker_build.sh
|
||||
|
|
|
|||
|
|
@ -3,4 +3,4 @@ repos:
|
|||
rev: 22.3.0
|
||||
hooks:
|
||||
- id: black
|
||||
language_version: python3.8
|
||||
language_version: python3.10
|
||||
|
|
@ -1,4 +1,4 @@
|
|||
from ubuntu:focal
|
||||
from ubuntu:jammy
|
||||
|
||||
# 1. python-stuff and HWI dependencies
|
||||
# 2. capability to build bitcoind
|
||||
|
|
@ -7,7 +7,7 @@ RUN apt update && DEBIAN_FRONTEND="noninteractive" apt-get install --no-install-
|
|||
libusb-1.0-0-dev libudev-dev python3 python3-virtualenv \
|
||||
build-essential libtool autotools-dev automake autoconf pkg-config bsdmainutils libevent-dev libboost-dev libboost-system-dev libboost-filesystem-dev libboost-test-dev bc \
|
||||
nodejs npm libgtk2.0-0 libgtk-3-0 libgbm-dev libnotify-dev libgconf-2-4 libnss3 libxss1 libasound2 libxtst6 xauth xvfb \
|
||||
wget
|
||||
wget libzmq5-dev
|
||||
|
||||
# Stuff needed for Elements (compilation)
|
||||
RUN DEBIAN_FRONTEND="noninteractive" apt-get install --no-install-recommends -y libboost-thread-dev libsqlite3-dev git
|
||||
RUN DEBIAN_FRONTEND="noninteractive" apt-get install --no-install-recommends -y libboost-thread-dev libsqlite3-dev git
|
||||
|
|
@ -3,10 +3,8 @@ An image used to run the build on cirrus (tests only, not cypress-tests).
|
|||
Create it like this:
|
||||
|
||||
```
|
||||
current_date=$(date +"%Y%m%d")
|
||||
docker build . -t registry.gitlab.com/cryptoadvance/specter-desktop/cirrus-focal:${current_date}
|
||||
docker push registry.gitlab.com/cryptoadvance/specter-desktop/cirrus-focal:${current_date}
|
||||
# Do not forget to update the $current_date in .cirrus.yml
|
||||
docker build . -t registry.gitlab.com/cryptoadvance/specter-desktop/cirrus-jammy:20220908
|
||||
docker push registry.gitlab.com/cryptoadvance/specter-desktop/cirrus-jammy:20220908
|
||||
```
|
||||
|
||||
Check the `.cirrus.yml` on how this is used and update the $current_date there.
|
||||
Check the `.cirrus.yml` on how this is used and update the $current_date there.
|
||||
|
|
@ -1,11 +1,8 @@
|
|||
FROM ubuntu:20.04
|
||||
FROM ubuntu:22.04
|
||||
|
||||
RUN apt-get update && \
|
||||
apt-get install -y apt-transport-https curl
|
||||
apt-get install -y apt-transport-https curl nodejs npm
|
||||
|
||||
RUN curl -sL https://deb.nodesource.com/setup_12.x -o nodesource_setup.sh
|
||||
RUN bash nodesource_setup.sh
|
||||
RUN apt-get install -y nodejs
|
||||
|
||||
# Install latest NPM and Yarn
|
||||
RUN npm install -g npm@latest
|
||||
|
|
@ -59,4 +56,4 @@ RUN echo " node version: $(node -v) \n" \
|
|||
|
||||
RUN echo "More version info"
|
||||
RUN cat /etc/lsb-release
|
||||
RUN cat /etc/os-release
|
||||
RUN cat /etc/os-release
|
||||
|
|
@ -1,10 +1,10 @@
|
|||
A base-image used in cypress-python to use a newer ubuntu focal rather than a buster.
|
||||
A base-image used in cypress-python to use a newer ubuntu jammy rather than a buster.
|
||||
|
||||
Create it like this:
|
||||
|
||||
```
|
||||
docker build . -t registry.gitlab.com/cryptoadvance/specter-desktop/cypress-base-ubuntu-focal:latest
|
||||
docker push registry.gitlab.com/cryptoadvance/specter-desktop/cypress-base-ubuntu-focal:latest
|
||||
docker build . -t registry.gitlab.com/cryptoadvance/specter-desktop/cypress-base-ubuntu-jammy:20220908
|
||||
docker push registry.gitlab.com/cryptoadvance/specter-desktop/cypress-base-ubuntu-jammy:20220908
|
||||
```
|
||||
|
||||
used in cypress-python
|
||||
|
|
@ -1,12 +1,15 @@
|
|||
FROM registry.gitlab.com/cryptoadvance/specter-desktop/cypress-base-ubuntu-focal:latest
|
||||
FROM registry.gitlab.com/cryptoadvance/specter-desktop/cypress-base-ubuntu-jammy:20220908
|
||||
|
||||
RUN apt-get update && apt-get install -y \
|
||||
python3-pip python3-virtualenv zip unzip file apt libusb-1.0-0-dev libudev-dev \
|
||||
bc libevent-2.1-7 jq wget curl
|
||||
bc libevent-2.1-7 jq wget curl libgtk2.0-0 libgtk-3-0 libgbm-dev libnotify-dev \
|
||||
libgconf-2-4 libnss3 libxss1 libasound2 libxtst6 xauth xvfb
|
||||
# https://docs.cypress.io/guides/continuous-integration/introduction#Dependencies
|
||||
|
||||
# Stuff needed for Elements (compilation)
|
||||
RUN DEBIAN_FRONTEND="noninteractive" apt-get install --no-install-recommends -y bsdmainutils libboost-test-dev libboost-filesystem-dev libboost-thread-dev libsqlite3-dev git libevent-pthreads-2.1-7
|
||||
|
||||
RUN DEBIAN_FRONTEND="noninteractive" apt-get install --no-install-recommends -y bsdmainutils \
|
||||
libboost-test-dev libboost-filesystem-dev libboost-thread-dev libsqlite3-dev git \
|
||||
libevent-pthreads-2.1-7
|
||||
|
||||
WORKDIR /test
|
||||
RUN rm -rf node_modules package-lock.json ~/.cache/Cypress
|
||||
|
|
@ -3,8 +3,8 @@ An image, ready to be used with cypress but also provides all the dependencies w
|
|||
Use versions of cypress as the version part of the tag. So e.g.:
|
||||
|
||||
```
|
||||
docker build . -t registry.gitlab.com/cryptoadvance/specter-desktop/cypress-python:v9.7.0
|
||||
docker push registry.gitlab.com/cryptoadvance/specter-desktop/cypress-python:v9.7.0
|
||||
docker build . -t registry.gitlab.com/cryptoadvance/specter-desktop/cypress-python-jammy:v9.7.0
|
||||
docker push registry.gitlab.com/cryptoadvance/specter-desktop/cypress-python-jammy:v9.7.0
|
||||
```
|
||||
|
||||
Search for `cypress-python` on where this is used in the project.
|
||||
Search for `cypress-python` on where this is used in the project.
|
||||
|
|
@ -1,6 +1,12 @@
|
|||
Used for building the electron-app. In short it's the /pyinstaller/build-unix.sh script which is running in this image.
|
||||
|
||||
manually do it something like this (copied from [here](https://www.electron.build/multi-platform-build#build-electron-app-using-docker-on-a-local-machine)):
|
||||
By intention, this is using an older OS-version in order to avoid glibc-issues. For details, see:
|
||||
* https://github.com/cryptoadvance/specter-desktop/pull/1688#issuecomment-1242796681
|
||||
* https://github.com/cryptoadvance/specter-desktop/issues/373#issuecomment-695068924
|
||||
|
||||
|
||||
If you want to run the image manually, do something like this (copied from [here](https://www.electron.build/multi-platform-build#build-electron-app-using-docker-on-a-local-machine)):
|
||||
|
||||
|
||||
```
|
||||
docker run --rm -ti \
|
||||
|
|
@ -19,4 +25,4 @@ build the image like:
|
|||
```
|
||||
docker build -t registry.gitlab.com/cryptoadvance/specter-desktop/electron-builder:latest .
|
||||
docker push registry.gitlab.com/cryptoadvance/specter-desktop/electron-builder:latest
|
||||
```
|
||||
```
|
||||
|
|
@ -15,4 +15,4 @@ RUN python3 setup.py install
|
|||
|
||||
ENV PYTHONUNBUFFERED="1"
|
||||
|
||||
ENTRYPOINT ["changelog"]
|
||||
ENTRYPOINT ["changelog"]
|
||||
|
|
|
|||
|
|
@ -1,5 +1,5 @@
|
|||
|
||||
FROM python:3.8
|
||||
FROM python:3.10
|
||||
|
||||
# Installing BerkleyDB 4.8.30
|
||||
# Ubuntu specific buw works on debian Buster as well
|
||||
|
|
@ -12,14 +12,16 @@ RUN wget https://launchpad.net/~bitcoin/+archive/ubuntu/bitcoin/+files/libdb4.8+
|
|||
wget https://launchpad.net/~bitcoin/+archive/ubuntu/bitcoin/+files/libdb4.8++_4.8.30-artful3_amd64.deb
|
||||
RUN dpkg -i *.deb && rm *.deb
|
||||
|
||||
RUN apt update && apt install git build-essential autoconf libboost-all-dev libssl-dev libprotobuf-dev protobuf-compiler libqt4-dev libqrencode-dev libtool libevent-dev pkg-config bsdmainutils -y
|
||||
RUN apt update && apt install git build-essential autoconf libboost-all-dev libssl-dev libprotobuf-dev \
|
||||
protobuf-compiler libqrencode-dev libtool libevent-dev pkg-config bsdmainutils \
|
||||
libzmq5-dev -y
|
||||
|
||||
RUN git clone https://github.com/bitcoin/bitcoin.git
|
||||
RUN cd bitcoin && git checkout v0.20.1
|
||||
RUN cd bitcoin && ./autogen.sh && ./configure && make
|
||||
RUN cd bitcoin && git checkout v22.0
|
||||
RUN cd bitcoin && ./autogen.sh && ./configure --without-gui && make -j8
|
||||
RUN cd bitcoin && make install
|
||||
|
||||
FROM python:3.8
|
||||
FROM python:3.10
|
||||
|
||||
# Installing BerkleyDB 4.8.30
|
||||
# Works on debian Buster as well
|
||||
|
|
@ -32,7 +34,8 @@ RUN wget https://launchpad.net/~bitcoin/+archive/ubuntu/bitcoin/+files/libdb4.8+
|
|||
wget https://launchpad.net/~bitcoin/+archive/ubuntu/bitcoin/+files/libdb4.8++_4.8.30-artful3_amd64.deb
|
||||
RUN dpkg -i *.deb && rm *.deb
|
||||
|
||||
RUN apt update && apt install libevent-dev libboost-system-dev libboost-filesystem-dev libboost-chrono-dev libboost-test-dev libboost-thread-dev jq -y
|
||||
RUN apt update && apt install libevent-dev libboost-system-dev libboost-filesystem-dev libboost-chrono-dev \
|
||||
libboost-test-dev libboost-thread-dev jq libzmq5-dev -y
|
||||
|
||||
COPY --from=0 /usr/local/bin/bitcoind /usr/local/bin
|
||||
COPY --from=0 /usr/local/bin/bitcoin-cli /usr/local/bin
|
||||
|
|
|
|||
|
|
@ -1,22 +1,20 @@
|
|||
This Dockerimage is manually created and uploaded:
|
||||
|
||||
```
|
||||
docker build -t registry.gitlab.com/cryptoadvance/specter-desktop/python-bitcoind:v0.20.1 .
|
||||
docker build . -t registry.gitlab.com/cryptoadvance/specter-desktop/python-bitcoind:v22.0
|
||||
docker push registry.gitlab.com/cryptoadvance/specter-desktop/python-bitcoind:v22.0
|
||||
```
|
||||
```
|
||||
docker push registry.gitlab.com/cryptoadvance/specter-desktop/python-bitcoind:v0.20.1
|
||||
```
|
||||
Here the version is v0.20.1 but that's just an example. This folder just explains how the image is created. Which image is USED is specified:
|
||||
Here the version is v23.0 but that's just an example. This folder just explains how the image is created. Which image is USED is specified:
|
||||
|
||||
* In the case of tests in pytest.ini in the addopts-line (MIGHT be different in different branches)
|
||||
* in the case of running
|
||||
|
||||
```
|
||||
python3 -m cryptoadvance.specter bitcoind #it's using "latest"
|
||||
```
|
||||
```
|
||||
|
||||
but you can override like this:
|
||||
|
||||
```
|
||||
python3 -m cryptoadvance.specter bitcoind --docker-tag v0.19.1
|
||||
```
|
||||
python3 -m cryptoadvance.specter bitcoind --docker-tag v22.0
|
||||
```
|
||||
|
|
|
|||
|
|
@ -34,6 +34,7 @@
|
|||
- [Some words about dependencies](#some-words-about-dependencies)
|
||||
- [Some words specific to the frontend](#some-words-specific-to-the-frontend)
|
||||
- [Some words about style](#some-words-about-style)
|
||||
- [Troubleshooting and migration to python3.10](#troubleshooting-and-migration-to-python310)
|
||||
|
||||
<!-- END doctoc generated TOC please keep comment here to allow auto update -->
|
||||
|
||||
|
|
@ -159,7 +160,7 @@ pytest
|
|||
OR run against bitcoind in Docker (deprecated):
|
||||
```
|
||||
# Pull the bitcoind image if you haven't already:
|
||||
docker pull registry.gitlab.com/cryptoadvance/specter-desktop/python-bitcoind:v0.20.1
|
||||
docker pull registry.gitlab.com/cryptoadvance/specter-desktop/python-bitcoind:v0.22.0
|
||||
|
||||
# install prerequisites
|
||||
pip3 install docker
|
||||
|
|
@ -459,3 +460,29 @@ We're aware that currently the app is not very compatible on different browsers
|
|||
* nice blue #4A90E2
|
||||
* A designer would probably rant about all these bad choices. Professional help, especially in the frontend, is very much appreciated.
|
||||
|
||||
### Troubleshooting and migration to python3.10
|
||||
We're currently migrating to python3.10 while alos supporting older versions. This is creating some extra challenges for those that want to run 3.10 but don't have 3.10 available in their standard-package. So here are some hints on how to get that going.
|
||||
|
||||
`pyenv` is a great tool to granually install. The [installation](https://github.com/pyenv/pyenv#basic-github-checkout) worked great. However, i don't want to pyenv to screw up my existing python setup. So i only use pyenv if i explicitely do (put that in a script):
|
||||
```
|
||||
export PYENV_ROOT="$HOME/.pyenv"
|
||||
command -v pyenv >/dev/null || export PATH="$PYENV_ROOT/bin:$PATH"
|
||||
eval "$(pyenv init -)"
|
||||
|
||||
echo " --> now do:omething like:"
|
||||
echo " pyenv shell 3.10.4"
|
||||
```
|
||||
So i'm using `pyenv shell` but before you install now a 3.10 version via `pyenv install 3.10.4` make sure to install sqlite3:
|
||||
```
|
||||
sudo apt-get install sqlite3 libbz2-dev
|
||||
```
|
||||
If you miss that, you might later have issues while pre-commit-hooks kick in, something like `No module named '_sqlite3`.
|
||||
|
||||
Now you can switch your shell to use python 3.10 via `pyenv shell 3.10.4` and after that create your extra virtualenv which uses 3.10:
|
||||
```
|
||||
python3 -m virtualenv --python=python3.10 .env310
|
||||
```
|
||||
|
||||
|
||||
|
||||
|
||||
|
|
|
|||
|
|
@ -2,4 +2,5 @@ pyinstaller==5.2
|
|||
pefile==2022.5.30
|
||||
macholib
|
||||
pywin32-ctypes
|
||||
babel
|
||||
babel==2.10.1
|
||||
pytz==2022.1
|
||||
|
|
|
|||
|
|
@ -1,5 +1,5 @@
|
|||
#
|
||||
# This file is autogenerated by pip-compile
|
||||
# This file is autogenerated by pip-compile with python 3.10
|
||||
# To update, run:
|
||||
#
|
||||
# pip-compile --generate-hashes requirements.in
|
||||
|
|
@ -10,9 +10,9 @@ altgraph==0.17 \
|
|||
# via
|
||||
# macholib
|
||||
# pyinstaller
|
||||
babel==2.9.1 \
|
||||
--hash=sha256:ab49e12b91d937cd11f0b67cb259a57ab4ad2b59ac7a3b41d6c06c0ac5b0def9 \
|
||||
--hash=sha256:bc0c176f9f6a994582230df350aa6e05ba2ebe4b3ac317eab29d9be5d2768da0
|
||||
babel==2.10.1 \
|
||||
--hash=sha256:3f349e85ad3154559ac4930c3918247d319f21910d5ce4b25d439ed8693b98d2 \
|
||||
--hash=sha256:98aeaca086133efb3e1e2aad0396987490c8425929ddbcfe0550184fdc54cd13
|
||||
# via -r requirements.in
|
||||
future==0.18.2 \
|
||||
--hash=sha256:b1bead90b70cf6ec3f0710ae53a525360fa360d306a86583adc6bf83a4db537d
|
||||
|
|
@ -24,10 +24,6 @@ macholib==1.14 \
|
|||
pefile==2022.5.30 \
|
||||
--hash=sha256:a5488a3dd1fd021ce33f969780b88fe0f7eebb76eb20996d7318f307612a045b
|
||||
# via -r requirements.in
|
||||
pyinstaller-hooks-contrib==2022.8 \
|
||||
--hash=sha256:c4210fc50282c9c6a918e485e0bfae9405592390508e3be9fde19acc2213da56 \
|
||||
--hash=sha256:e46f099934dd4577fb1ddcf37a99fa04027c92f8f5291c8802f326345988d001
|
||||
# via pyinstaller
|
||||
pyinstaller==5.2 \
|
||||
--hash=sha256:03984eed0baa252ea9854eb0785a1c40ac033c5c28d3abdae7d820da734aed5a \
|
||||
--hash=sha256:1061f7a6de055007949ec9ad1c6a080b93e102b2a288c8ff88f65e5d7716d4aa \
|
||||
|
|
@ -41,10 +37,16 @@ pyinstaller==5.2 \
|
|||
--hash=sha256:dda3a4787fa4498bb9e688f81bed918f061bd583c8ff0e47881a5422a4b2093b \
|
||||
--hash=sha256:f10b19ad4f66ccad16574ff1979cc15e1ea010f8577292500125dd45abcd8303
|
||||
# via -r requirements.in
|
||||
pytz==2021.1 \
|
||||
--hash=sha256:83a4a90894bf38e243cf052c8b58f381bfe9a7a483f6a9cab140bc7f702ac4da \
|
||||
--hash=sha256:eb10ce3e7736052ed3623d49975ce333bcd712c7bb19a58b9e2089d4057d0798
|
||||
# via babel
|
||||
pyinstaller-hooks-contrib==2022.8 \
|
||||
--hash=sha256:c4210fc50282c9c6a918e485e0bfae9405592390508e3be9fde19acc2213da56 \
|
||||
--hash=sha256:e46f099934dd4577fb1ddcf37a99fa04027c92f8f5291c8802f326345988d001
|
||||
# via pyinstaller
|
||||
pytz==2022.1 \
|
||||
--hash=sha256:1e760e2fe6a8163bc0b3d9a19c4f84342afa0a2affebfaa84b01b978a02ecaa7 \
|
||||
--hash=sha256:e68985985296d9a66a881eb3193b0906246245294a881e7c8afe623866ac6a5c
|
||||
# via
|
||||
# -r requirements.in
|
||||
# babel
|
||||
pywin32-ctypes==0.2.0 \
|
||||
--hash=sha256:24ffc3b341d457d48e8922352130cf2644024a4ff09762a2261fd34c36ee5942 \
|
||||
--hash=sha256:9dc2d991b3479cc2df15930958b674a48a227d5361d413827a4cfd0b5876fc98
|
||||
|
|
|
|||
|
|
@ -8,4 +8,4 @@ markers =
|
|||
#log_cli = 1
|
||||
|
||||
filterwarnings =
|
||||
ignore::DeprecationWarning:bitbox02[.*]
|
||||
ignore::DeprecationWarning:bitbox02[.*]
|
||||
|
|
|
|||
|
|
@ -1,4 +1,4 @@
|
|||
certifi==2021.10.08
|
||||
certifi==2021.10.08
|
||||
chardet==3.0.4
|
||||
Click==8.1.1
|
||||
Flask==2.1.1
|
||||
|
|
@ -16,7 +16,7 @@ pysocks==1.7.1
|
|||
six==1.16.0
|
||||
stem==1.8.0
|
||||
embit==0.4.13
|
||||
psutil==5.7.3
|
||||
psutil==5.9.0
|
||||
pyopenssl==20.0.1
|
||||
flask_wtf==0.15.1
|
||||
pgpy==0.5.4
|
||||
|
|
@ -24,8 +24,9 @@ cbor==1.0.0
|
|||
mnemonic==0.20
|
||||
cryptography==3.4.7
|
||||
Flask-APScheduler==1.12.3
|
||||
backports.zoneinfo==0.2.1 ; python_version < '3.10'
|
||||
gunicorn==20.1.0
|
||||
|
||||
protobuf==3.20.1
|
||||
# Extensions
|
||||
cryptoadvance-liquidissuer==0.2.4
|
||||
specterext-exfund==0.1.7
|
||||
|
|
|
|||
481
requirements.txt
481
requirements.txt
|
|
@ -12,33 +12,13 @@ apscheduler==3.9.1 \
|
|||
--hash=sha256:65e6574b6395498d371d045f2a8a7e4f7d50c6ad21ef7313d15b1c7cf20df1e3 \
|
||||
--hash=sha256:ddc25a0ddd899de44d7f451f4375fb971887e65af51e41e5dcf681f59b8b2c9a
|
||||
# via flask-apscheduler
|
||||
babel==2.9.1 \
|
||||
--hash=sha256:ab49e12b91d937cd11f0b67cb259a57ab4ad2b59ac7a3b41d6c06c0ac5b0def9 \
|
||||
--hash=sha256:bc0c176f9f6a994582230df350aa6e05ba2ebe4b3ac317eab29d9be5d2768da0
|
||||
babel==2.10.1 \
|
||||
--hash=sha256:3f349e85ad3154559ac4930c3918247d319f21910d5ce4b25d439ed8693b98d2 \
|
||||
--hash=sha256:98aeaca086133efb3e1e2aad0396987490c8425929ddbcfe0550184fdc54cd13
|
||||
# via flask-babel
|
||||
backports.zoneinfo==0.2.1 \
|
||||
--hash=sha256:17746bd546106fa389c51dbea67c8b7c8f0d14b5526a579ca6ccf5ed72c526cf \
|
||||
--hash=sha256:1b13e654a55cd45672cb54ed12148cd33628f672548f373963b0bff67b217328 \
|
||||
--hash=sha256:1c5742112073a563c81f786e77514969acb58649bcdf6cdf0b4ed31a348d4546 \
|
||||
--hash=sha256:4a0f800587060bf8880f954dbef70de6c11bbe59c673c3d818921f042f9954a6 \
|
||||
--hash=sha256:5c144945a7752ca544b4b78c8c41544cdfaf9786f25fe5ffb10e838e19a27570 \
|
||||
--hash=sha256:7b0a64cda4145548fed9efc10322770f929b944ce5cee6c0dfe0c87bf4c0c8c9 \
|
||||
--hash=sha256:8439c030a11780786a2002261569bdf362264f605dfa4d65090b64b05c9f79a7 \
|
||||
--hash=sha256:8961c0f32cd0336fb8e8ead11a1f8cd99ec07145ec2931122faaac1c8f7fd987 \
|
||||
--hash=sha256:89a48c0d158a3cc3f654da4c2de1ceba85263fafb861b98b59040a5086259722 \
|
||||
--hash=sha256:a76b38c52400b762e48131494ba26be363491ac4f9a04c1b7e92483d169f6582 \
|
||||
--hash=sha256:da6013fd84a690242c310d77ddb8441a559e9cb3d3d59ebac9aca1a57b2e18bc \
|
||||
--hash=sha256:e55b384612d93be96506932a786bbcde5a2db7a9e6a4bb4bffe8b733f5b9036b \
|
||||
--hash=sha256:e81b76cace8eda1fca50e345242ba977f9be6ae3945af8d46326d776b4cf78d1 \
|
||||
--hash=sha256:e8236383a20872c0cdf5a62b554b27538db7fa1bbec52429d8d106effbaeca08 \
|
||||
--hash=sha256:f04e857b59d9d1ccc39ce2da1021d196e47234873820cbeaad210724b1ee28ac \
|
||||
--hash=sha256:fadbfe37f74051d024037f223b8e001611eac868b5c5b06144ef4d8b799862f2
|
||||
# via
|
||||
# pytz-deprecation-shim
|
||||
# tzlocal
|
||||
base58==2.1.0 \
|
||||
--hash=sha256:171a547b4a3c61e1ae3807224a6f7aec75e364c4395e7562649d7335768001a2 \
|
||||
--hash=sha256:8225891d501b68c843ffe30b86371f844a21c6ba00da76f52f9b998ba771fb48
|
||||
base58==2.1.1 \
|
||||
--hash=sha256:11a36f4d3ce51dfc1043f3218591ac4eb1ceb172919cebe05b52a5bcc8d245c2 \
|
||||
--hash=sha256:c5d0cb3f5b6e81e8e35da5754388ddcc6d0d14b6c6a132cb93d69ed580a7278c
|
||||
# via bitbox02
|
||||
bitbox02==6.0.0 \
|
||||
--hash=sha256:a738f9977317c104298c0b59a0fc93c98d48a1b03d192dcd6396963d3ed58127 \
|
||||
|
|
@ -55,64 +35,65 @@ certifi==2021.10.8 \
|
|||
# via
|
||||
# -r requirements.in
|
||||
# requests
|
||||
cffi==1.14.5 \
|
||||
--hash=sha256:005a36f41773e148deac64b08f233873a4d0c18b053d37da83f6af4d9087b813 \
|
||||
--hash=sha256:04c468b622ed31d408fea2346bec5bbffba2cc44226302a0de1ade9f5ea3d373 \
|
||||
--hash=sha256:06d7cd1abac2ffd92e65c0609661866709b4b2d82dd15f611e602b9b188b0b69 \
|
||||
--hash=sha256:06db6321b7a68b2bd6df96d08a5adadc1fa0e8f419226e25b2a5fbf6ccc7350f \
|
||||
--hash=sha256:0857f0ae312d855239a55c81ef453ee8fd24136eaba8e87a2eceba644c0d4c06 \
|
||||
--hash=sha256:0f861a89e0043afec2a51fd177a567005847973be86f709bbb044d7f42fc4e05 \
|
||||
--hash=sha256:1071534bbbf8cbb31b498d5d9db0f274f2f7a865adca4ae429e147ba40f73dea \
|
||||
--hash=sha256:158d0d15119b4b7ff6b926536763dc0714313aa59e320ddf787502c70c4d4bee \
|
||||
--hash=sha256:1bf1ac1984eaa7675ca8d5745a8cb87ef7abecb5592178406e55858d411eadc0 \
|
||||
--hash=sha256:1f436816fc868b098b0d63b8920de7d208c90a67212546d02f84fe78a9c26396 \
|
||||
--hash=sha256:24a570cd11895b60829e941f2613a4f79df1a27344cbbb82164ef2e0116f09c7 \
|
||||
--hash=sha256:24ec4ff2c5c0c8f9c6b87d5bb53555bf267e1e6f70e52e5a9740d32861d36b6f \
|
||||
--hash=sha256:2894f2df484ff56d717bead0a5c2abb6b9d2bf26d6960c4604d5c48bbc30ee73 \
|
||||
--hash=sha256:29314480e958fd8aab22e4a58b355b629c59bf5f2ac2492b61e3dc06d8c7a315 \
|
||||
--hash=sha256:293e7ea41280cb28c6fcaaa0b1aa1f533b8ce060b9e701d78511e1e6c4a1de76 \
|
||||
--hash=sha256:34eff4b97f3d982fb93e2831e6750127d1355a923ebaeeb565407b3d2f8d41a1 \
|
||||
--hash=sha256:35f27e6eb43380fa080dccf676dece30bef72e4a67617ffda586641cd4508d49 \
|
||||
--hash=sha256:3c3f39fa737542161d8b0d680df2ec249334cd70a8f420f71c9304bd83c3cbed \
|
||||
--hash=sha256:3d3dd4c9e559eb172ecf00a2a7517e97d1e96de2a5e610bd9b68cea3925b4892 \
|
||||
--hash=sha256:43e0b9d9e2c9e5d152946b9c5fe062c151614b262fda2e7b201204de0b99e482 \
|
||||
--hash=sha256:48e1c69bbacfc3d932221851b39d49e81567a4d4aac3b21258d9c24578280058 \
|
||||
--hash=sha256:51182f8927c5af975fece87b1b369f722c570fe169f9880764b1ee3bca8347b5 \
|
||||
--hash=sha256:58e3f59d583d413809d60779492342801d6e82fefb89c86a38e040c16883be53 \
|
||||
--hash=sha256:5de7970188bb46b7bf9858eb6890aad302577a5f6f75091fd7cdd3ef13ef3045 \
|
||||
--hash=sha256:65fa59693c62cf06e45ddbb822165394a288edce9e276647f0046e1ec26920f3 \
|
||||
--hash=sha256:681d07b0d1e3c462dd15585ef5e33cb021321588bebd910124ef4f4fb71aef55 \
|
||||
--hash=sha256:69e395c24fc60aad6bb4fa7e583698ea6cc684648e1ffb7fe85e3c1ca131a7d5 \
|
||||
--hash=sha256:6c97d7350133666fbb5cf4abdc1178c812cb205dc6f41d174a7b0f18fb93337e \
|
||||
--hash=sha256:6e4714cc64f474e4d6e37cfff31a814b509a35cb17de4fb1999907575684479c \
|
||||
--hash=sha256:72d8d3ef52c208ee1c7b2e341f7d71c6fd3157138abf1a95166e6165dd5d4369 \
|
||||
--hash=sha256:8ae6299f6c68de06f136f1f9e69458eae58f1dacf10af5c17353eae03aa0d827 \
|
||||
--hash=sha256:8b198cec6c72df5289c05b05b8b0969819783f9418e0409865dac47288d2a053 \
|
||||
--hash=sha256:99cd03ae7988a93dd00bcd9d0b75e1f6c426063d6f03d2f90b89e29b25b82dfa \
|
||||
--hash=sha256:9cf8022fb8d07a97c178b02327b284521c7708d7c71a9c9c355c178ac4bbd3d4 \
|
||||
--hash=sha256:9de2e279153a443c656f2defd67769e6d1e4163952b3c622dcea5b08a6405322 \
|
||||
--hash=sha256:9e93e79c2551ff263400e1e4be085a1210e12073a31c2011dbbda14bda0c6132 \
|
||||
--hash=sha256:9ff227395193126d82e60319a673a037d5de84633f11279e336f9c0f189ecc62 \
|
||||
--hash=sha256:a465da611f6fa124963b91bf432d960a555563efe4ed1cc403ba5077b15370aa \
|
||||
--hash=sha256:ad17025d226ee5beec591b52800c11680fca3df50b8b29fe51d882576e039ee0 \
|
||||
--hash=sha256:afb29c1ba2e5a3736f1c301d9d0abe3ec8b86957d04ddfa9d7a6a42b9367e396 \
|
||||
--hash=sha256:b85eb46a81787c50650f2392b9b4ef23e1f126313b9e0e9013b35c15e4288e2e \
|
||||
--hash=sha256:bb89f306e5da99f4d922728ddcd6f7fcebb3241fc40edebcb7284d7514741991 \
|
||||
--hash=sha256:cbde590d4faaa07c72bf979734738f328d239913ba3e043b1e98fe9a39f8b2b6 \
|
||||
--hash=sha256:cc5a8e069b9ebfa22e26d0e6b97d6f9781302fe7f4f2b8776c3e1daea35f1adc \
|
||||
--hash=sha256:cd2868886d547469123fadc46eac7ea5253ea7fcb139f12e1dfc2bbd406427d1 \
|
||||
--hash=sha256:d42b11d692e11b6634f7613ad8df5d6d5f8875f5d48939520d351007b3c13406 \
|
||||
--hash=sha256:df5052c5d867c1ea0b311fb7c3cd28b19df469c056f7fdcfe88c7473aa63e333 \
|
||||
--hash=sha256:f2d45f97ab6bb54753eab54fffe75aaf3de4ff2341c9daee1987ee1837636f1d \
|
||||
--hash=sha256:fd78e5fee591709f32ef6edb9a015b4aa1a5022598e36227500c8f4e02328d9c
|
||||
cffi==1.15.0 \
|
||||
--hash=sha256:00c878c90cb53ccfaae6b8bc18ad05d2036553e6d9d1d9dbcf323bbe83854ca3 \
|
||||
--hash=sha256:0104fb5ae2391d46a4cb082abdd5c69ea4eab79d8d44eaaf79f1b1fd806ee4c2 \
|
||||
--hash=sha256:06c48159c1abed75c2e721b1715c379fa3200c7784271b3c46df01383b593636 \
|
||||
--hash=sha256:0808014eb713677ec1292301ea4c81ad277b6cdf2fdd90fd540af98c0b101d20 \
|
||||
--hash=sha256:10dffb601ccfb65262a27233ac273d552ddc4d8ae1bf93b21c94b8511bffe728 \
|
||||
--hash=sha256:14cd121ea63ecdae71efa69c15c5543a4b5fbcd0bbe2aad864baca0063cecf27 \
|
||||
--hash=sha256:17771976e82e9f94976180f76468546834d22a7cc404b17c22df2a2c81db0c66 \
|
||||
--hash=sha256:181dee03b1170ff1969489acf1c26533710231c58f95534e3edac87fff06c443 \
|
||||
--hash=sha256:23cfe892bd5dd8941608f93348c0737e369e51c100d03718f108bf1add7bd6d0 \
|
||||
--hash=sha256:263cc3d821c4ab2213cbe8cd8b355a7f72a8324577dc865ef98487c1aeee2bc7 \
|
||||
--hash=sha256:2756c88cbb94231c7a147402476be2c4df2f6078099a6f4a480d239a8817ae39 \
|
||||
--hash=sha256:27c219baf94952ae9d50ec19651a687b826792055353d07648a5695413e0c605 \
|
||||
--hash=sha256:2a23af14f408d53d5e6cd4e3d9a24ff9e05906ad574822a10563efcef137979a \
|
||||
--hash=sha256:31fb708d9d7c3f49a60f04cf5b119aeefe5644daba1cd2a0fe389b674fd1de37 \
|
||||
--hash=sha256:3415c89f9204ee60cd09b235810be700e993e343a408693e80ce7f6a40108029 \
|
||||
--hash=sha256:3773c4d81e6e818df2efbc7dd77325ca0dcb688116050fb2b3011218eda36139 \
|
||||
--hash=sha256:3b96a311ac60a3f6be21d2572e46ce67f09abcf4d09344c49274eb9e0bf345fc \
|
||||
--hash=sha256:3f7d084648d77af029acb79a0ff49a0ad7e9d09057a9bf46596dac9514dc07df \
|
||||
--hash=sha256:41d45de54cd277a7878919867c0f08b0cf817605e4eb94093e7516505d3c8d14 \
|
||||
--hash=sha256:4238e6dab5d6a8ba812de994bbb0a79bddbdf80994e4ce802b6f6f3142fcc880 \
|
||||
--hash=sha256:45db3a33139e9c8f7c09234b5784a5e33d31fd6907800b316decad50af323ff2 \
|
||||
--hash=sha256:45e8636704eacc432a206ac7345a5d3d2c62d95a507ec70d62f23cd91770482a \
|
||||
--hash=sha256:4958391dbd6249d7ad855b9ca88fae690783a6be9e86df65865058ed81fc860e \
|
||||
--hash=sha256:4a306fa632e8f0928956a41fa8e1d6243c71e7eb59ffbd165fc0b41e316b2474 \
|
||||
--hash=sha256:57e9ac9ccc3101fac9d6014fba037473e4358ef4e89f8e181f8951a2c0162024 \
|
||||
--hash=sha256:59888172256cac5629e60e72e86598027aca6bf01fa2465bdb676d37636573e8 \
|
||||
--hash=sha256:5e069f72d497312b24fcc02073d70cb989045d1c91cbd53979366077959933e0 \
|
||||
--hash=sha256:64d4ec9f448dfe041705426000cc13e34e6e5bb13736e9fd62e34a0b0c41566e \
|
||||
--hash=sha256:6dc2737a3674b3e344847c8686cf29e500584ccad76204efea14f451d4cc669a \
|
||||
--hash=sha256:74fdfdbfdc48d3f47148976f49fab3251e550a8720bebc99bf1483f5bfb5db3e \
|
||||
--hash=sha256:75e4024375654472cc27e91cbe9eaa08567f7fbdf822638be2814ce059f58032 \
|
||||
--hash=sha256:786902fb9ba7433aae840e0ed609f45c7bcd4e225ebb9c753aa39725bb3e6ad6 \
|
||||
--hash=sha256:8b6c2ea03845c9f501ed1313e78de148cd3f6cad741a75d43a29b43da27f2e1e \
|
||||
--hash=sha256:91d77d2a782be4274da750752bb1650a97bfd8f291022b379bb8e01c66b4e96b \
|
||||
--hash=sha256:91ec59c33514b7c7559a6acda53bbfe1b283949c34fe7440bcf917f96ac0723e \
|
||||
--hash=sha256:920f0d66a896c2d99f0adbb391f990a84091179542c205fa53ce5787aff87954 \
|
||||
--hash=sha256:a5263e363c27b653a90078143adb3d076c1a748ec9ecc78ea2fb916f9b861962 \
|
||||
--hash=sha256:abb9a20a72ac4e0fdb50dae135ba5e77880518e742077ced47eb1499e29a443c \
|
||||
--hash=sha256:c2051981a968d7de9dd2d7b87bcb9c939c74a34626a6e2f8181455dd49ed69e4 \
|
||||
--hash=sha256:c21c9e3896c23007803a875460fb786118f0cdd4434359577ea25eb556e34c55 \
|
||||
--hash=sha256:c2502a1a03b6312837279c8c1bd3ebedf6c12c4228ddbad40912d671ccc8a962 \
|
||||
--hash=sha256:d4d692a89c5cf08a8557fdeb329b82e7bf609aadfaed6c0d79f5a449a3c7c023 \
|
||||
--hash=sha256:da5db4e883f1ce37f55c667e5c0de439df76ac4cb55964655906306918e7363c \
|
||||
--hash=sha256:e7022a66d9b55e93e1a845d8c9eba2a1bebd4966cd8bfc25d9cd07d515b33fa6 \
|
||||
--hash=sha256:ef1f279350da2c586a69d32fc8733092fd32cc8ac95139a00377841f59a3f8d8 \
|
||||
--hash=sha256:f54a64f8b0c8ff0b64d18aa76675262e1700f3995182267998c31ae974fbc382 \
|
||||
--hash=sha256:f5c7150ad32ba43a07c4479f40241756145a1f03b43480e058cfd862bf5041c7 \
|
||||
--hash=sha256:f6f824dc3bce0edab5f427efcfb1d63ee75b6fcb7282900ccaf925be84efb0fc \
|
||||
--hash=sha256:fd8a250edc26254fe5b33be00402e6d287f562b6a5b2152dec302fa15bb3e997 \
|
||||
--hash=sha256:ffaa5c925128e29efbde7301d8ecaf35c8c60ffbcd6a1ffd3a552177c8e5e796
|
||||
# via cryptography
|
||||
chardet==3.0.4 \
|
||||
--hash=sha256:84ab92ed1c4d4f16916e05906b6b75a6c0fb5db821cc65e70cbd64a3e2a5eaae \
|
||||
--hash=sha256:fc323ffcaeaed0e0a02bf4d117757b98aed530d9ed4531e3e15460124c106691
|
||||
# via -r requirements.in
|
||||
charset-normalizer==2.0.6 \
|
||||
--hash=sha256:5d209c0a931f215cee683b6445e2d77677e7e75e159f78def0db09d68fafcaa6 \
|
||||
--hash=sha256:5ec46d183433dcbd0ab716f2d7f29d8dee50505b3fdb40c6b985c7c4f5a3591f
|
||||
charset-normalizer==2.0.12 \
|
||||
--hash=sha256:2857e29ff0d34db842cd7ca3230549d1a697f96ee6d3fb071cfa6c7393832597 \
|
||||
--hash=sha256:6881edbebdb17b39b4eaaa821b438bf6eddffb4468cf344f09f89def34a8b1df
|
||||
# via requests
|
||||
click==8.1.1 \
|
||||
--hash=sha256:5e0d195c2067da3136efb897449ec1e9e6c98282fbf30d7f9e164af9be901a6b \
|
||||
|
|
@ -134,6 +115,8 @@ cryptography==3.4.7 \
|
|||
--hash=sha256:3d8427734c781ea5f1b41d6589c293089704d4759e34597dce91014ac125aad1 \
|
||||
--hash=sha256:7ec5d3b029f5fa2b179325908b9cd93db28ab7b85bb6c1db56b10e0b54235177 \
|
||||
--hash=sha256:8e56e16617872b0957d1c9742a3f94b43533447fd78321514abbe7db216aa250 \
|
||||
--hash=sha256:b01fd6f2737816cb1e08ed4807ae194404790eac7ad030b34f2ce72b332f5586 \
|
||||
--hash=sha256:bf40af59ca2465b24e54f671b2de2c59257ddc4f7e5706dbd6930e26823668d3 \
|
||||
--hash=sha256:de4e5f7f68220d92b7637fc99847475b59154b7a1b3868fb7385337af54ac9ca \
|
||||
--hash=sha256:eb8cc2afe8b05acbd84a43905832ec78e7b3873fb124ca190f574dca7389a87d \
|
||||
--hash=sha256:ee77aa129f481be46f8d92a1a7db57269a2f23052d5f2433b4621bb457081cc9
|
||||
|
|
@ -194,28 +177,41 @@ gunicorn==20.1.0 \
|
|||
--hash=sha256:9dcc4547dbb1cb284accfb15ab5667a0e5d1881cc443e0677b4882a4067a807e \
|
||||
--hash=sha256:e0a968b5ba15f8a328fdfd7ab1fcb5af4470c28aaf7e55df02a99bc13138e6e8
|
||||
# via -r requirements.in
|
||||
hidapi==0.10.1 \
|
||||
--hash=sha256:095798ae1b3d6892fb0eb7ba1ab06054f6fafe6d09bc3714d80fdbf227c98f87 \
|
||||
--hash=sha256:0c92b398f6907654b07f7dbd7e06661abe9ad6119b403eb5fd3c2af4ce66a3b7 \
|
||||
--hash=sha256:0f558430c086e9e0028022f4fdfaed5044e6af50cb4f12b79c498da59fc84d51 \
|
||||
--hash=sha256:1e25317ac577e837154f90bc9b6da0451242211beea7a34b9bb117eec17c2e26 \
|
||||
--hash=sha256:310c53aa81697bf16b5f0c127afda36e5e9ea37794147afe1461422623263ef7 \
|
||||
--hash=sha256:39191d3e34e9a79e3dbb37898ab2ca4b84495e0815801cf84d185936e97bc6ee \
|
||||
--hash=sha256:3b93d3f9bae38a3459491194ba1abf5c292b59dbd8738c3ac66f01b593cf3724 \
|
||||
--hash=sha256:46de7d852e10a83187da6af88d6e2cd51ba5ab336bf2ce1659bc879141570de3 \
|
||||
--hash=sha256:4a081c3775a7ac850743dd345a1a4fb1175af3954c4c7a1f7508ab645f72dcb5 \
|
||||
--hash=sha256:4a1f4c54d71f748ee6c9ee86565ca0eba2ab9c5d88f9adacc1fe7c3b09a3f299 \
|
||||
--hash=sha256:4bab0e8ab066527e09856a6a345e2e0c10061f2640e9281323da9a04b94bdec1 \
|
||||
--hash=sha256:59f5205928dbe92513038c50dfb4f939395f8f781e176259a40f37d7a291313f \
|
||||
--hash=sha256:5cc5f15b1b68bcb04fa290abc87070d57a8c0d2cb3a01bafeba6a7df52cd8641 \
|
||||
--hash=sha256:74e968631537f52579c19c2b93e428b634dc385eb7808071bd9ff759d837fb39 \
|
||||
--hash=sha256:83d8aab01afd397a0fee0017df4397fff96bef639d6176f94b747305324732aa \
|
||||
--hash=sha256:9ac04c6dc3d792d92b1d6ff461511853fa166a0e22f4475fe60ad647555d1caf \
|
||||
--hash=sha256:a1170b18050bc57fae3840a51084e8252fd319c0fc6043d68c8501deb0e25846 \
|
||||
--hash=sha256:b1becc9f09c85c473e91cf869b592d5d87fb8b89672988de33776b20b4c53ce1 \
|
||||
--hash=sha256:b686b2b547890c8ed17ebeabded0050ce377180a56daefa20822b4d66d3a5dea \
|
||||
--hash=sha256:df4a23cd03f00d5cdc603252650df82cdd1923ceef6811cb029cc9d11a9a7a61 \
|
||||
--hash=sha256:f49a0de45217366b85597c2edb4be8bd61c9f26f533b854b058dded4352dd89d
|
||||
hidapi==0.11.2 \
|
||||
--hash=sha256:0053afb387e660273db3cf252434cd5181c561725ed442cd44024ec2b5c97bbe \
|
||||
--hash=sha256:0be398136fa5fd6ed7648ca7df675100312a2158c39e1de059ea1d4f88e61046 \
|
||||
--hash=sha256:1752c396e0d22ba896712005d9e9dfdad3ac3217446bef0008de126b51dc82c6 \
|
||||
--hash=sha256:175588e3e671198668d9d67ed6e8d48b10d02f46e1998e734f1c212e76f7df6f \
|
||||
--hash=sha256:1c799d60ec870106c3aea58ac09239849f42ca062ecad5dccadf516e205c55a5 \
|
||||
--hash=sha256:3a031dab7380de39f2e81974e7d788f81a5ea7de3862cec42a382ecae9f20885 \
|
||||
--hash=sha256:3af72e81caa8678c82764ea6f09e3d5b616ada59415a6c1e2ae791a604e60a82 \
|
||||
--hash=sha256:41b16d2df7eaaa5d47773b0d768d6a05d3731728ccb6ef4c2e19caa6d7e39136 \
|
||||
--hash=sha256:4955c649edb0e1418110bfb6591ec5eda29f2b978a8e87b18d0a8bd8e28ffb63 \
|
||||
--hash=sha256:5100b267e60eac1ef5e023342838029c41800b61fe9a4de31d94d9126eab4211 \
|
||||
--hash=sha256:54137df3e14d679db0b7574dcb21cbdb001a2faa3ec47c49b17cd4f1e237dce3 \
|
||||
--hash=sha256:54ddf36f9b71d37846c60cc0a7777824a078b4e65c06c6dbd201eec538ecfbd3 \
|
||||
--hash=sha256:5827fd38577304a20268a4da22f4766af3052c33706760fec04f90326dcca5d5 \
|
||||
--hash=sha256:6308ec52a970a491a5a7d888f081d08d523d06a912bdf84fc4d3b109f69876b8 \
|
||||
--hash=sha256:6cf804d58fd6b7f7064577f5ded6487e1466005815a9d83f1f3329432c7e418c \
|
||||
--hash=sha256:7539ec488e91839c2c17d4a394990fa64ae4149e397ea859596ef6669b6aa23d \
|
||||
--hash=sha256:80b1c110f87af3a6fedad3a0aa1a7a55745aee60470f271d3c333b61da0b1113 \
|
||||
--hash=sha256:8320e916dda08d8b38f2552c3fbf63e77212a15b0c1f04dcb604fdd3b3fb825d \
|
||||
--hash=sha256:8e3b01acd0ea20d3635284eb3b1b64c322b86b3036f91367dc4f0bf11281013a \
|
||||
--hash=sha256:94da1fd2f83a5a378069c4365624ad55f009284c056c3edd7a811184464b4c78 \
|
||||
--hash=sha256:95a50f408716eb3a36bf16939c4f5b7a7940c8ca704272e67144c5eecb27c5c5 \
|
||||
--hash=sha256:990683ca81eda551cb0e14efa487fb552a11901be06293167f60bf92e80b7cc3 \
|
||||
--hash=sha256:a10fd1d7071e47c5b16a9ad8014adbce2b5dafacd50c7ffcec56e19c8efc50ae \
|
||||
--hash=sha256:a202b2a83feacffe9bad076d3b01cd43589d80456d23dd4cfede78e45b27242d \
|
||||
--hash=sha256:b2f03f03027c53d3b427c015937515faaf72d42fc3ef8ac7b8cffafb9e03c44c \
|
||||
--hash=sha256:b3452b5e4cd9ab330ff098cfe7c71ecf3418874efe94f121353ac1b5208fa14f \
|
||||
--hash=sha256:c65b5de57d078ce4b723be1341afe479ad0987d4ba859ae3b1085f21643e13f3 \
|
||||
--hash=sha256:c984b7ec2fc2ea987cd44cf06947e55572498ed2d43c64890b4ab58b29af72bc \
|
||||
--hash=sha256:ce9347211e1c9e57fed8784fc8a9dec3295d14a4ea955e62c8f00a28eaac662e \
|
||||
--hash=sha256:cfd605193ebc0aa3ae71595a9aa33e0a1bbfb172a02c97bbd51bed5e03404fbf \
|
||||
--hash=sha256:d1c4ceea536e3a323c057f1dd1b2394a5db13c73393e17b6127e9d9ff9dba276 \
|
||||
--hash=sha256:e63a7904f2fadab3976240695adc0775f4a473817fa0bcd9230383e70793f538 \
|
||||
--hash=sha256:f9319f8ea5d6f28737355a8462e1ccee6019b3d2d81a462e54b43acc53f63c36 \
|
||||
--hash=sha256:fbac1cdd5277aef5c682e31a02638b8b88bbd2b7fdfa271561a86181ef231428
|
||||
# via
|
||||
# bitbox02
|
||||
# hwi
|
||||
|
|
@ -223,72 +219,73 @@ hwi==2.1.0 \
|
|||
--hash=sha256:3aec14eaecbe7f1b1c8d622c6e35d0309a12696bd35a2c8ceee21ee1754a7bc5 \
|
||||
--hash=sha256:d09d818c91e2ae5213bc3fcf2999668f2bb9098e6bfaa6a3723400356db8fb66
|
||||
# via -r requirements.in
|
||||
idna==2.10 \
|
||||
--hash=sha256:b307872f855b18632ce0c21c5e45be78c0ea7ae4c15c828c20788b26921eb3f6 \
|
||||
--hash=sha256:b97d804b1e9b523befed77c48dacec60e6dcb0b5391d57af6a65a312a90648c0
|
||||
idna==3.3 \
|
||||
--hash=sha256:84d9dd047ffa80596e0f246e2eab0b391788b0503584e8945f2368256d2735ff \
|
||||
--hash=sha256:9d643ff0a55b762d5cdb124b8eaa99c66322e2157b69160bc32796e824360e6d
|
||||
# via requests
|
||||
importlib-metadata==4.8.1 \
|
||||
importlib_metadata==4.8.1 \
|
||||
--hash=sha256:b618b6d2d5ffa2f16add5697cf57a46c76a56229b0ed1c438322e4e95645bd15 \
|
||||
--hash=sha256:f284b3e11256ad1e5d03ab86bb2ccd6f5339688ff17a4d797a0fe7df326f23b1
|
||||
# via
|
||||
# -r requirements.in
|
||||
# flask
|
||||
# via -r requirements.in
|
||||
itsdangerous==2.1.2 \
|
||||
--hash=sha256:2c2349112351b88699d8d4b6b075022c0808887cb7ad10069318a8b0bc88db44 \
|
||||
--hash=sha256:5dbbc68b317e5e42f327f9021763545dc3fc3bfe22e6deb96aaf1fc38874156a
|
||||
# via
|
||||
# flask
|
||||
# flask-wtf
|
||||
jinja2==3.1.1 \
|
||||
--hash=sha256:539835f51a74a69f41b848a9645dbdc35b4f20a3b601e2d9a7e22947b15ff119 \
|
||||
--hash=sha256:640bed4bb501cbd17194b3cace1dc2126f5b619cf068a726b98192a0fde74ae9
|
||||
jinja2==3.1.2 \
|
||||
--hash=sha256:31351a702a408a9e7595a8fc6150fc3f43bb6bf7e319770cbc0db9df9437e852 \
|
||||
--hash=sha256:6088930bfe239f0e6710546ab9c19c9ef35e29792895fed6e6e31a023a182a61
|
||||
# via
|
||||
# flask
|
||||
# flask-babel
|
||||
libusb1==1.9.2 \
|
||||
--hash=sha256:27aec6aa1ff9ca845d0035023f3cf39710afac56903c51cd96a95404d064189e \
|
||||
--hash=sha256:2dff68819350bf8a8c157c7fa40d3efc741cb57868687d1714c8125ee99e8ac8 \
|
||||
--hash=sha256:8ee4a963d4ecc20d9f4543b9151729c9cc9a229c2f9119e12bff762e84d8859f \
|
||||
--hash=sha256:a323588902fbd3693f8fddd7eac016700b24116c31b00756b9f52cf06c2a6629 \
|
||||
--hash=sha256:b4f25a2d66f62ec740edba3597038a7e9cd45b43456acfdb7a2bca8c2ad4aa30 \
|
||||
--hash=sha256:c19d49136ef262474dbbac8bd40a2c4b65660220571de8564efec631c56bdc09 \
|
||||
--hash=sha256:c3dd4df43b5c38f65bf599413810d021f5f98396c4b6f66765fb98193aca11b0
|
||||
libusb1==2.0.1 \
|
||||
--hash=sha256:81381ce1d8852a4d4345b2ee8218971d35865b5f025fef96b43ee082757099cd \
|
||||
--hash=sha256:9fda3055c98ab043cfb3beac93ef1de2900ad11d949c694f58bdf414ce2bd03c \
|
||||
--hash=sha256:a97bcb90f589d863c5e971b013c8cf7e1915680a951e66c4222a2c5bb64b7153 \
|
||||
--hash=sha256:d3ba82ecf7ab6a48d21dac6697e26504670cc3522b8e5941bd28fb56cf3f6c46
|
||||
# via hwi
|
||||
markupsafe==2.0.1 \
|
||||
--hash=sha256:01a9b8ea66f1658938f65b93a85ebe8bc016e6769611be228d797c9d998dd298 \
|
||||
--hash=sha256:023cb26ec21ece8dc3907c0e8320058b2e0cb3c55cf9564da612bc325bed5e64 \
|
||||
--hash=sha256:0446679737af14f45767963a1a9ef7620189912317d095f2d9ffa183a4d25d2b \
|
||||
--hash=sha256:0717a7390a68be14b8c793ba258e075c6f4ca819f15edfc2a3a027c823718567 \
|
||||
--hash=sha256:0955295dd5eec6cb6cc2fe1698f4c6d84af2e92de33fbcac4111913cd100a6ff \
|
||||
--hash=sha256:10f82115e21dc0dfec9ab5c0223652f7197feb168c940f3ef61563fc2d6beb74 \
|
||||
--hash=sha256:1d609f577dc6e1aa17d746f8bd3c31aa4d258f4070d61b2aa5c4166c1539de35 \
|
||||
--hash=sha256:2ef54abee730b502252bcdf31b10dacb0a416229b72c18b19e24a4509f273d26 \
|
||||
--hash=sha256:3c112550557578c26af18a1ccc9e090bfe03832ae994343cfdacd287db6a6ae7 \
|
||||
--hash=sha256:47ab1e7b91c098ab893b828deafa1203de86d0bc6ab587b160f78fe6c4011f75 \
|
||||
--hash=sha256:49e3ceeabbfb9d66c3aef5af3a60cc43b85c33df25ce03d0031a608b0a8b2e3f \
|
||||
--hash=sha256:4efca8f86c54b22348a5467704e3fec767b2db12fc39c6d963168ab1d3fc9135 \
|
||||
--hash=sha256:53edb4da6925ad13c07b6d26c2a852bd81e364f95301c66e930ab2aef5b5ddd8 \
|
||||
--hash=sha256:594c67807fb16238b30c44bdf74f36c02cdf22d1c8cda91ef8a0ed8dabf5620a \
|
||||
--hash=sha256:611d1ad9a4288cf3e3c16014564df047fe08410e628f89805e475368bd304914 \
|
||||
--hash=sha256:6557b31b5e2c9ddf0de32a691f2312a32f77cd7681d8af66c2692efdbef84c18 \
|
||||
--hash=sha256:693ce3f9e70a6cf7d2fb9e6c9d8b204b6b39897a2c4a1aa65728d5ac97dcc1d8 \
|
||||
--hash=sha256:6a7fae0dd14cf60ad5ff42baa2e95727c3d81ded453457771d02b7d2b3f9c0c2 \
|
||||
--hash=sha256:6c4ca60fa24e85fe25b912b01e62cb969d69a23a5d5867682dd3e80b5b02581d \
|
||||
--hash=sha256:7d91275b0245b1da4d4cfa07e0faedd5b0812efc15b702576d103293e252af1b \
|
||||
--hash=sha256:905fec760bd2fa1388bb5b489ee8ee5f7291d692638ea5f67982d968366bef9f \
|
||||
--hash=sha256:97383d78eb34da7e1fa37dd273c20ad4320929af65d156e35a5e2d89566d9dfb \
|
||||
--hash=sha256:984d76483eb32f1bcb536dc27e4ad56bba4baa70be32fa87152832cdd9db0833 \
|
||||
--hash=sha256:a30e67a65b53ea0a5e62fe23682cfe22712e01f453b95233b25502f7c61cb415 \
|
||||
--hash=sha256:ab3ef638ace319fa26553db0624c4699e31a28bb2a835c5faca8f8acf6a5a902 \
|
||||
--hash=sha256:b2f4bf27480f5e5e8ce285a8c8fd176c0b03e93dcc6646477d4630e83440c6a9 \
|
||||
--hash=sha256:b7f2d075102dc8c794cbde1947378051c4e5180d52d276987b8d28a3bd58c17d \
|
||||
--hash=sha256:be98f628055368795d818ebf93da628541e10b75b41c559fdf36d104c5787066 \
|
||||
--hash=sha256:d7f9850398e85aba693bb640262d3611788b1f29a79f0c93c565694658f4071f \
|
||||
--hash=sha256:f5653a225f31e113b152e56f154ccbe59eeb1c7487b39b9d9f9cdb58e6c79dc5 \
|
||||
--hash=sha256:f826e31d18b516f653fe296d967d700fddad5901ae07c622bb3705955e1faa94 \
|
||||
--hash=sha256:f8ba0e8349a38d3001fae7eadded3f6606f0da5d748ee53cc1dab1d6527b9509 \
|
||||
--hash=sha256:f9081981fe268bd86831e5c75f7de206ef275defcb82bc70740ae6dc507aee51 \
|
||||
--hash=sha256:fa130dd50c57d53368c9d59395cb5526eda596d3ffe36666cd81a44d56e48872
|
||||
markupsafe==2.1.1 \
|
||||
--hash=sha256:0212a68688482dc52b2d45013df70d169f542b7394fc744c02a57374a4207003 \
|
||||
--hash=sha256:089cf3dbf0cd6c100f02945abeb18484bd1ee57a079aefd52cffd17fba910b88 \
|
||||
--hash=sha256:10c1bfff05d95783da83491be968e8fe789263689c02724e0c691933c52994f5 \
|
||||
--hash=sha256:33b74d289bd2f5e527beadcaa3f401e0df0a89927c1559c8566c066fa4248ab7 \
|
||||
--hash=sha256:3799351e2336dc91ea70b034983ee71cf2f9533cdff7c14c90ea126bfd95d65a \
|
||||
--hash=sha256:3ce11ee3f23f79dbd06fb3d63e2f6af7b12db1d46932fe7bd8afa259a5996603 \
|
||||
--hash=sha256:421be9fbf0ffe9ffd7a378aafebbf6f4602d564d34be190fc19a193232fd12b1 \
|
||||
--hash=sha256:43093fb83d8343aac0b1baa75516da6092f58f41200907ef92448ecab8825135 \
|
||||
--hash=sha256:46d00d6cfecdde84d40e572d63735ef81423ad31184100411e6e3388d405e247 \
|
||||
--hash=sha256:4a33dea2b688b3190ee12bd7cfa29d39c9ed176bda40bfa11099a3ce5d3a7ac6 \
|
||||
--hash=sha256:4b9fe39a2ccc108a4accc2676e77da025ce383c108593d65cc909add5c3bd601 \
|
||||
--hash=sha256:56442863ed2b06d19c37f94d999035e15ee982988920e12a5b4ba29b62ad1f77 \
|
||||
--hash=sha256:671cd1187ed5e62818414afe79ed29da836dde67166a9fac6d435873c44fdd02 \
|
||||
--hash=sha256:694deca8d702d5db21ec83983ce0bb4b26a578e71fbdbd4fdcd387daa90e4d5e \
|
||||
--hash=sha256:6a074d34ee7a5ce3effbc526b7083ec9731bb3cbf921bbe1d3005d4d2bdb3a63 \
|
||||
--hash=sha256:6d0072fea50feec76a4c418096652f2c3238eaa014b2f94aeb1d56a66b41403f \
|
||||
--hash=sha256:6fbf47b5d3728c6aea2abb0589b5d30459e369baa772e0f37a0320185e87c980 \
|
||||
--hash=sha256:7f91197cc9e48f989d12e4e6fbc46495c446636dfc81b9ccf50bb0ec74b91d4b \
|
||||
--hash=sha256:86b1f75c4e7c2ac2ccdaec2b9022845dbb81880ca318bb7a0a01fbf7813e3812 \
|
||||
--hash=sha256:8dc1c72a69aa7e082593c4a203dcf94ddb74bb5c8a731e4e1eb68d031e8498ff \
|
||||
--hash=sha256:8e3dcf21f367459434c18e71b2a9532d96547aef8a871872a5bd69a715c15f96 \
|
||||
--hash=sha256:8e576a51ad59e4bfaac456023a78f6b5e6e7651dcd383bcc3e18d06f9b55d6d1 \
|
||||
--hash=sha256:96e37a3dc86e80bf81758c152fe66dbf60ed5eca3d26305edf01892257049925 \
|
||||
--hash=sha256:97a68e6ada378df82bc9f16b800ab77cbf4b2fada0081794318520138c088e4a \
|
||||
--hash=sha256:99a2a507ed3ac881b975a2976d59f38c19386d128e7a9a18b7df6fff1fd4c1d6 \
|
||||
--hash=sha256:a49907dd8420c5685cfa064a1335b6754b74541bbb3706c259c02ed65b644b3e \
|
||||
--hash=sha256:b09bf97215625a311f669476f44b8b318b075847b49316d3e28c08e41a7a573f \
|
||||
--hash=sha256:b7bd98b796e2b6553da7225aeb61f447f80a1ca64f41d83612e6139ca5213aa4 \
|
||||
--hash=sha256:b87db4360013327109564f0e591bd2a3b318547bcef31b468a92ee504d07ae4f \
|
||||
--hash=sha256:bcb3ed405ed3222f9904899563d6fc492ff75cce56cba05e32eff40e6acbeaa3 \
|
||||
--hash=sha256:d4306c36ca495956b6d568d276ac11fdd9c30a36f1b6eb928070dc5360b22e1c \
|
||||
--hash=sha256:d5ee4f386140395a2c818d149221149c54849dfcfcb9f1debfe07a8b8bd63f9a \
|
||||
--hash=sha256:dda30ba7e87fbbb7eab1ec9f58678558fd9a6b8b853530e176eabd064da81417 \
|
||||
--hash=sha256:e04e26803c9c3851c931eac40c695602c6295b8d432cbe78609649ad9bd2da8a \
|
||||
--hash=sha256:e1c0b87e09fa55a220f058d1d49d3fb8df88fbfab58558f1198e08c1e1de842a \
|
||||
--hash=sha256:e72591e9ecd94d7feb70c1cbd7be7b3ebea3f548870aa91e2732960fa4d57a37 \
|
||||
--hash=sha256:e8c843bbcda3a2f1e3c2ab25913c80a3c5376cd00c6e8c4a86a89a28c8dc5452 \
|
||||
--hash=sha256:efc1913fd2ca4f334418481c7e595c00aad186563bbc1ec76067848c7ca0a933 \
|
||||
--hash=sha256:f121a1420d4e173a5d96e47e9a0c0dcff965afdf1626d28de1460815f7c4ee7a \
|
||||
--hash=sha256:fc7b548b17d238737688817ab67deebb30e8073c95749d55538ed473130ec0c7
|
||||
# via
|
||||
# jinja2
|
||||
# wtforms
|
||||
|
|
@ -306,43 +303,67 @@ pgpy==0.5.4 \
|
|||
--hash=sha256:bdd3da1e006fc8e81cc02232969924d6e8c98a4af1621a925d99bba09164183b \
|
||||
--hash=sha256:c29ad9b2bcba6575c3773410894e77a7552b6a3de184fd99b4da3995986f26a9
|
||||
# via -r requirements.in
|
||||
protobuf==3.17.3 \
|
||||
--hash=sha256:13ee7be3c2d9a5d2b42a1030976f760f28755fcf5863c55b1460fd205e6cd637 \
|
||||
--hash=sha256:145ce0af55c4259ca74993ddab3479c78af064002ec8227beb3d944405123c71 \
|
||||
--hash=sha256:14c1c9377a7ffbeaccd4722ab0aa900091f52b516ad89c4b0c3bb0a4af903ba5 \
|
||||
--hash=sha256:1556a1049ccec58c7855a78d27e5c6e70e95103b32de9142bae0576e9200a1b0 \
|
||||
--hash=sha256:26010f693b675ff5a1d0e1bdb17689b8b716a18709113288fead438703d45539 \
|
||||
--hash=sha256:2ae692bb6d1992afb6b74348e7bb648a75bb0d3565a3f5eea5bec8f62bd06d87 \
|
||||
--hash=sha256:2bfb815216a9cd9faec52b16fd2bfa68437a44b67c56bee59bc3926522ecb04e \
|
||||
--hash=sha256:4ffbd23640bb7403574f7aff8368e2aeb2ec9a5c6306580be48ac59a6bac8bde \
|
||||
--hash=sha256:6902a1e4b7a319ec611a7345ff81b6b004b36b0d2196ce7a748b3493da3d226d \
|
||||
--hash=sha256:6ce4d8bf0321e7b2d4395e253f8002a1a5ffbcfd7bcc0a6ba46712c07d47d0b4 \
|
||||
--hash=sha256:6d847c59963c03fd7a0cd7c488cadfa10cda4fff34d8bc8cba92935a91b7a037 \
|
||||
--hash=sha256:72804ea5eaa9c22a090d2803813e280fb273b62d5ae497aaf3553d141c4fdd7b \
|
||||
--hash=sha256:7a4c97961e9e5b03a56f9a6c82742ed55375c4a25f2692b625d4087d02ed31b9 \
|
||||
--hash=sha256:8727ee027157516e2c311f218ebf2260a18088ffb2d29473e82add217d196b1c \
|
||||
--hash=sha256:99938f2a2d7ca6563c0ade0c5ca8982264c484fdecf418bd68e880a7ab5730b1 \
|
||||
--hash=sha256:9b7a5c1022e0fa0dbde7fd03682d07d14624ad870ae52054849d8960f04bc764 \
|
||||
--hash=sha256:a22b3a0dbac6544dacbafd4c5f6a29e389a50e3b193e2c70dae6bbf7930f651d \
|
||||
--hash=sha256:a981222367fb4210a10a929ad5983ae93bd5a050a0824fc35d6371c07b78caf6 \
|
||||
--hash=sha256:ab6bb0e270c6c58e7ff4345b3a803cc59dbee19ddf77a4719c5b635f1d547aa8 \
|
||||
--hash=sha256:c56c050a947186ba51de4f94ab441d7f04fcd44c56df6e922369cc2e1a92d683 \
|
||||
--hash=sha256:e76d9686e088fece2450dbc7ee905f9be904e427341d289acbe9ad00b78ebd47 \
|
||||
--hash=sha256:f0e59430ee953184a703a324b8ec52f571c6c4259d496a19d1cabcdc19dabc62 \
|
||||
--hash=sha256:ffea251f5cd3c0b9b43c7a7a912777e0bc86263436a87c2555242a348817221b
|
||||
# via bitbox02
|
||||
psutil==5.7.3 \
|
||||
--hash=sha256:01bc82813fbc3ea304914581954979e637bcc7084e59ac904d870d6eb8bb2bc7 \
|
||||
--hash=sha256:1cd6a0c9fb35ece2ccf2d1dd733c1e165b342604c67454fd56a4c12e0a106787 \
|
||||
--hash=sha256:2cb55ef9591b03ef0104bedf67cc4edb38a3edf015cf8cf24007b99cb8497542 \
|
||||
--hash=sha256:56c85120fa173a5d2ad1d15a0c6e0ae62b388bfb956bb036ac231fbdaf9e4c22 \
|
||||
--hash=sha256:5d9106ff5ec2712e2f659ebbd112967f44e7d33f40ba40530c485cc5904360b8 \
|
||||
--hash=sha256:6a3e1fd2800ca45083d976b5478a2402dd62afdfb719b30ca46cd28bb25a2eb4 \
|
||||
--hash=sha256:ade6af32eb80a536eff162d799e31b7ef92ddcda707c27bbd077238065018df4 \
|
||||
--hash=sha256:af73f7bcebdc538eda9cc81d19db1db7bf26f103f91081d780bbacfcb620dee2 \
|
||||
--hash=sha256:e02c31b2990dcd2431f4524b93491941df39f99619b0d312dfe1d4d530b08b4b \
|
||||
--hash=sha256:fa38ac15dbf161ab1e941ff4ce39abd64b53fec5ddf60c23290daed2bc7d1157 \
|
||||
--hash=sha256:fbcac492cb082fa38d88587d75feb90785d05d7e12d4565cbf1ecc727aff71b7
|
||||
protobuf==3.20.1 \
|
||||
--hash=sha256:06059eb6953ff01e56a25cd02cca1a9649a75a7e65397b5b9b4e929ed71d10cf \
|
||||
--hash=sha256:097c5d8a9808302fb0da7e20edf0b8d4703274d140fd25c5edabddcde43e081f \
|
||||
--hash=sha256:284f86a6207c897542d7e956eb243a36bb8f9564c1742b253462386e96c6b78f \
|
||||
--hash=sha256:32ca378605b41fd180dfe4e14d3226386d8d1b002ab31c969c366549e66a2bb7 \
|
||||
--hash=sha256:3cc797c9d15d7689ed507b165cd05913acb992d78b379f6014e013f9ecb20996 \
|
||||
--hash=sha256:62f1b5c4cd6c5402b4e2d63804ba49a327e0c386c99b1675c8a0fefda23b2067 \
|
||||
--hash=sha256:69ccfdf3657ba59569c64295b7d51325f91af586f8d5793b734260dfe2e94e2c \
|
||||
--hash=sha256:6f50601512a3d23625d8a85b1638d914a0970f17920ff39cec63aaef80a93fb7 \
|
||||
--hash=sha256:7403941f6d0992d40161aa8bb23e12575637008a5a02283a930addc0508982f9 \
|
||||
--hash=sha256:755f3aee41354ae395e104d62119cb223339a8f3276a0cd009ffabfcdd46bb0c \
|
||||
--hash=sha256:77053d28427a29987ca9caf7b72ccafee011257561259faba8dd308fda9a8739 \
|
||||
--hash=sha256:7e371f10abe57cee5021797126c93479f59fccc9693dafd6bd5633ab67808a91 \
|
||||
--hash=sha256:9016d01c91e8e625141d24ec1b20fed584703e527d28512aa8c8707f105a683c \
|
||||
--hash=sha256:9be73ad47579abc26c12024239d3540e6b765182a91dbc88e23658ab71767153 \
|
||||
--hash=sha256:adc31566d027f45efe3f44eeb5b1f329da43891634d61c75a5944e9be6dd42c9 \
|
||||
--hash=sha256:adfc6cf69c7f8c50fd24c793964eef18f0ac321315439d94945820612849c388 \
|
||||
--hash=sha256:af0ebadc74e281a517141daad9d0f2c5d93ab78e9d455113719a45a49da9db4e \
|
||||
--hash=sha256:cb29edb9eab15742d791e1025dd7b6a8f6fcb53802ad2f6e3adcb102051063ab \
|
||||
--hash=sha256:cd68be2559e2a3b84f517fb029ee611546f7812b1fdd0aa2ecc9bc6ec0e4fdde \
|
||||
--hash=sha256:cdee09140e1cd184ba9324ec1df410e7147242b94b5f8b0c64fc89e38a8ba531 \
|
||||
--hash=sha256:db977c4ca738dd9ce508557d4fce0f5aebd105e158c725beec86feb1f6bc20d8 \
|
||||
--hash=sha256:dd5789b2948ca702c17027c84c2accb552fc30f4622a98ab5c51fcfe8c50d3e7 \
|
||||
--hash=sha256:e250a42f15bf9d5b09fe1b293bdba2801cd520a9f5ea2d7fb7536d4441811d20 \
|
||||
--hash=sha256:ff8d8fa42675249bb456f5db06c00de6c2f4c27a065955917b28c4f15978b9c3
|
||||
# via
|
||||
# -r requirements.in
|
||||
# bitbox02
|
||||
psutil==5.9.0 \
|
||||
--hash=sha256:072664401ae6e7c1bfb878c65d7282d4b4391f1bc9a56d5e03b5a490403271b5 \
|
||||
--hash=sha256:1070a9b287846a21a5d572d6dddd369517510b68710fca56b0e9e02fd24bed9a \
|
||||
--hash=sha256:1d7b433519b9a38192dfda962dd8f44446668c009833e1429a52424624f408b4 \
|
||||
--hash=sha256:3151a58f0fbd8942ba94f7c31c7e6b310d2989f4da74fcbf28b934374e9bf841 \
|
||||
--hash=sha256:32acf55cb9a8cbfb29167cd005951df81b567099295291bcfd1027365b36591d \
|
||||
--hash=sha256:3611e87eea393f779a35b192b46a164b1d01167c9d323dda9b1e527ea69d697d \
|
||||
--hash=sha256:3d00a664e31921009a84367266b35ba0aac04a2a6cad09c550a89041034d19a0 \
|
||||
--hash=sha256:4e2fb92e3aeae3ec3b7b66c528981fd327fb93fd906a77215200404444ec1845 \
|
||||
--hash=sha256:539e429da49c5d27d5a58e3563886057f8fc3868a5547b4f1876d9c0f007bccf \
|
||||
--hash=sha256:55ce319452e3d139e25d6c3f85a1acf12d1607ddedea5e35fb47a552c051161b \
|
||||
--hash=sha256:58c7d923dc209225600aec73aa2c4ae8ea33b1ab31bc11ef8a5933b027476f07 \
|
||||
--hash=sha256:7336292a13a80eb93c21f36bde4328aa748a04b68c13d01dfddd67fc13fd0618 \
|
||||
--hash=sha256:742c34fff804f34f62659279ed5c5b723bb0195e9d7bd9907591de9f8f6558e2 \
|
||||
--hash=sha256:7641300de73e4909e5d148e90cc3142fb890079e1525a840cf0dfd39195239fd \
|
||||
--hash=sha256:76cebf84aac1d6da5b63df11fe0d377b46b7b500d892284068bacccf12f20666 \
|
||||
--hash=sha256:7779be4025c540d1d65a2de3f30caeacc49ae7a2152108adeaf42c7534a115ce \
|
||||
--hash=sha256:7d190ee2eaef7831163f254dc58f6d2e2a22e27382b936aab51c835fc080c3d3 \
|
||||
--hash=sha256:8293942e4ce0c5689821f65ce6522ce4786d02af57f13c0195b40e1edb1db61d \
|
||||
--hash=sha256:869842dbd66bb80c3217158e629d6fceaecc3a3166d3d1faee515b05dd26ca25 \
|
||||
--hash=sha256:90a58b9fcae2dbfe4ba852b57bd4a1dded6b990a33d6428c7614b7d48eccb492 \
|
||||
--hash=sha256:9b51917c1af3fa35a3f2dabd7ba96a2a4f19df3dec911da73875e1edaf22a40b \
|
||||
--hash=sha256:b2237f35c4bbae932ee98902a08050a27821f8f6dfa880a47195e5993af4702d \
|
||||
--hash=sha256:c3400cae15bdb449d518545cbd5b649117de54e3596ded84aacabfbb3297ead2 \
|
||||
--hash=sha256:c51f1af02334e4b516ec221ee26b8fdf105032418ca5a5ab9737e8c87dafe203 \
|
||||
--hash=sha256:cb8d10461c1ceee0c25a64f2dd54872b70b89c26419e147a05a10b753ad36ec2 \
|
||||
--hash=sha256:d62a2796e08dd024b8179bd441cb714e0f81226c352c802fca0fd3f89eeacd94 \
|
||||
--hash=sha256:df2c8bd48fb83a8408c8390b143c6a6fa10cb1a674ca664954de193fdcab36a9 \
|
||||
--hash=sha256:e5c783d0b1ad6ca8a5d3e7b680468c9c926b804be83a3a8e95141b05c39c9f64 \
|
||||
--hash=sha256:e9805fed4f2a81de98ae5fe38b75a74c6e6ad2df8a5c479594c7629a1fe35f56 \
|
||||
--hash=sha256:ea42d747c5f71b5ccaa6897b216a7dadb9f52c72a0fe2b872ef7d3e1eacf3ba3 \
|
||||
--hash=sha256:ef216cc9feb60634bda2f341a9559ac594e2eeaadd0ba187a4c2eb5b5d40b91c \
|
||||
--hash=sha256:ff0d41f8b3e9ebb6b6110057e40019a432e96aae2008951121ba4e56040b84f3
|
||||
# via -r requirements.in
|
||||
pyaes==1.6.1 \
|
||||
--hash=sha256:02c1b1405c38d3c370b085fb952dd8bea3fadcee6411ad99f312cc129c536d8f
|
||||
|
|
@ -351,9 +372,9 @@ pyasn1==0.4.8 \
|
|||
--hash=sha256:39c7e2ec30515947ff4e87fb6f456dfc6e84857d34be479c9d4a4ba4bf46aa5d \
|
||||
--hash=sha256:aef77c9fb94a3ac588e87841208bdec464471d9871bd5050a287cc9a475cd0ba
|
||||
# via pgpy
|
||||
pycparser==2.20 \
|
||||
--hash=sha256:2d475327684562c3a96cc71adf7dc8c4f0565175cf86b6d7a404ff4c771f15f0 \
|
||||
--hash=sha256:7582ad22678f0fcd81102833f60ef8d0e57288b6b5fb00323d101be910e35705
|
||||
pycparser==2.21 \
|
||||
--hash=sha256:8ee45429555515e1f6b185e78100aea234072576aa43ab53aefcae078162fca9 \
|
||||
--hash=sha256:e644fdec12f7872f86c58ff790da456218b10f863970249516d60a5eaca77206
|
||||
# via cffi
|
||||
pyopenssl==20.0.1 \
|
||||
--hash=sha256:4c231c759543ba02560fcd2480c48dcec4dae34c9da7d3747c508227e0624b51 \
|
||||
|
|
@ -380,9 +401,9 @@ pytz-deprecation-shim==0.1.0.post0 \
|
|||
--hash=sha256:8314c9692a636c8eb3bda879b9f119e350e93223ae83e70e80c31675a0fdc1a6 \
|
||||
--hash=sha256:af097bae1b616dde5c5744441e2ddc69e74dfdcb0c263129610d85b87445a59d
|
||||
# via tzlocal
|
||||
pytz==2021.1 \
|
||||
--hash=sha256:83a4a90894bf38e243cf052c8b58f381bfe9a7a483f6a9cab140bc7f702ac4da \
|
||||
--hash=sha256:eb10ce3e7736052ed3623d49975ce333bcd712c7bb19a58b9e2089d4057d0798
|
||||
pytz==2022.1 \
|
||||
--hash=sha256:1e760e2fe6a8163bc0b3d9a19c4f84342afa0a2affebfaa84b01b978a02ecaa7 \
|
||||
--hash=sha256:e68985985296d9a66a881eb3193b0906246245294a881e7c8afe623866ac6a5c
|
||||
# via
|
||||
# apscheduler
|
||||
# babel
|
||||
|
|
@ -406,7 +427,6 @@ six==1.16.0 \
|
|||
# flask-cors
|
||||
# flask-restful
|
||||
# pgpy
|
||||
# protobuf
|
||||
# pyopenssl
|
||||
# python-dateutil
|
||||
specterext-exfund==0.1.7 \
|
||||
|
|
@ -418,24 +438,24 @@ specterext-faucet==0.1.2 \
|
|||
stem==1.8.0 \
|
||||
--hash=sha256:a0b48ea6224e95f22aa34c0bc3415f0eb4667ddeae3dfb5e32a6920c185568c2
|
||||
# via -r requirements.in
|
||||
typing-extensions==3.10.0.0 \
|
||||
--hash=sha256:0ac0f89795dd19de6b97debb0c6af1c70987fd80a2d62d1958f7e56fcc31b497 \
|
||||
--hash=sha256:50b6f157849174217d0656f99dc82fe932884fb250826c18350e159ec6cdf342 \
|
||||
--hash=sha256:779383f6086d90c99ae41cf0ff39aac8a7937a9283ce0a414e5dd782f4c94a84
|
||||
typing-extensions==3.10.0.2 \
|
||||
--hash=sha256:49f75d16ff11f1cd258e1b988ccff82a3ca5570217d7ad8c5f48205dd99a677e \
|
||||
--hash=sha256:d8226d10bc02a29bcc81df19a26e56a9647f8b0a6d4a83924139f4a8b01f17b7 \
|
||||
--hash=sha256:f1d25edafde516b146ecd0613dabcc61409817af4766fbbcfb8d1ad4ec441a34
|
||||
# via
|
||||
# bitbox02
|
||||
# hwi
|
||||
tzdata==2021.5 \
|
||||
--hash=sha256:3eee491e22ebfe1e5cfcc97a4137cd70f092ce59144d81f8924a844de05ba8f5 \
|
||||
--hash=sha256:68dbe41afd01b867894bbdfd54fa03f468cfa4f0086bfb4adcd8de8f24f3ee21
|
||||
tzdata==2022.1 \
|
||||
--hash=sha256:238e70234214138ed7b4e8a0fab0e5e13872edab3be586ab8198c407620e2ab9 \
|
||||
--hash=sha256:8b536a8ec63dc0751342b3984193a3118f8fca2afe25752bb9b7fffd398552d3
|
||||
# via pytz-deprecation-shim
|
||||
tzlocal==4.1 \
|
||||
--hash=sha256:0f28015ac68a5c067210400a9197fc5d36ba9bc3f8eaf1da3cbd59acdfed9e09 \
|
||||
--hash=sha256:28ba8d9fcb6c9a782d6e0078b4f6627af1ea26aeaa32b4eab5324abc7df4149f
|
||||
tzlocal==4.2 \
|
||||
--hash=sha256:89885494684c929d9191c57aa27502afc87a579be5cdd3225c77c463ea043745 \
|
||||
--hash=sha256:ee5842fa3a795f023514ac2d801c4a81d1743bbe642e3940143326b3a00addd7
|
||||
# via apscheduler
|
||||
urllib3==1.26.5 \
|
||||
--hash=sha256:753a0374df26658f99d826cfe40394a686d05985786d946fbe4165b5148f5a7c \
|
||||
--hash=sha256:a7acd0977125325f516bda9735fa7142b909a8d01e8b2e4c8108d0984e6e0098
|
||||
urllib3==1.26.9 \
|
||||
--hash=sha256:44ece4d53fb1706f667c9bd1c648f5469a2ec925fcf3a776667042d645472c14 \
|
||||
--hash=sha256:aabaf16477806a5e1dd19aa41f8c2b7950dd3c746362d7e3223dbe6de6ac448e
|
||||
# via requests
|
||||
werkzeug==2.0.0 \
|
||||
--hash=sha256:3389bbfe6d40c6dd25e6d3f974155163c8b3de5bbda6a89342d4ab93fae80ba0 \
|
||||
|
|
@ -443,15 +463,42 @@ werkzeug==2.0.0 \
|
|||
# via
|
||||
# -r requirements.in
|
||||
# flask
|
||||
wtforms==2.3.3 \
|
||||
--hash=sha256:7b504fc724d0d1d4d5d5c114e778ec88c37ea53144683e084215eed5155ada4c \
|
||||
--hash=sha256:81195de0ac94fbc8368abbaf9197b88c4f3ffd6c2719b5bf5fc9da744f3d829c
|
||||
wtforms==3.0.1 \
|
||||
--hash=sha256:6b351bbb12dd58af57ffef05bc78425d08d1914e0fd68ee14143b7ade023c5bc \
|
||||
--hash=sha256:837f2f0e0ca79481b92884962b914eba4e72b7a2daaf1f939c890ed0124b834b
|
||||
# via flask-wtf
|
||||
zipp==3.4.1 \
|
||||
--hash=sha256:3607921face881ba3e026887d8150cca609d517579abe052ac81fc5aeffdbd76 \
|
||||
--hash=sha256:51cb66cc54621609dd593d1787f286ee42a5c0adbb4b29abea5a63edc3e03098
|
||||
zipp==3.8.0 \
|
||||
--hash=sha256:56bf8aadb83c24db6c4b577e13de374ccfb67da2078beba1d037c17980bf43ad \
|
||||
--hash=sha256:c4f6e5bbf48e74f7a38e7cc5b0480ff42b0ae5178957d564d18932525d5cf099
|
||||
# via importlib-metadata
|
||||
|
||||
|
||||
|
||||
|
||||
# The block below is created with pip-compile in python 3.8, such that requirements.txt is backwards compatible with python 3.8
|
||||
# This package is not needed for python 3.10
|
||||
backports.zoneinfo==0.2.1 ; python_version < '3.10' \
|
||||
--hash=sha256:17746bd546106fa389c51dbea67c8b7c8f0d14b5526a579ca6ccf5ed72c526cf \
|
||||
--hash=sha256:1b13e654a55cd45672cb54ed12148cd33628f672548f373963b0bff67b217328 \
|
||||
--hash=sha256:1c5742112073a563c81f786e77514969acb58649bcdf6cdf0b4ed31a348d4546 \
|
||||
--hash=sha256:4a0f800587060bf8880f954dbef70de6c11bbe59c673c3d818921f042f9954a6 \
|
||||
--hash=sha256:5c144945a7752ca544b4b78c8c41544cdfaf9786f25fe5ffb10e838e19a27570 \
|
||||
--hash=sha256:7b0a64cda4145548fed9efc10322770f929b944ce5cee6c0dfe0c87bf4c0c8c9 \
|
||||
--hash=sha256:8439c030a11780786a2002261569bdf362264f605dfa4d65090b64b05c9f79a7 \
|
||||
--hash=sha256:8961c0f32cd0336fb8e8ead11a1f8cd99ec07145ec2931122faaac1c8f7fd987 \
|
||||
--hash=sha256:89a48c0d158a3cc3f654da4c2de1ceba85263fafb861b98b59040a5086259722 \
|
||||
--hash=sha256:a76b38c52400b762e48131494ba26be363491ac4f9a04c1b7e92483d169f6582 \
|
||||
--hash=sha256:da6013fd84a690242c310d77ddb8441a559e9cb3d3d59ebac9aca1a57b2e18bc \
|
||||
--hash=sha256:e55b384612d93be96506932a786bbcde5a2db7a9e6a4bb4bffe8b733f5b9036b \
|
||||
--hash=sha256:e81b76cace8eda1fca50e345242ba977f9be6ae3945af8d46326d776b4cf78d1 \
|
||||
--hash=sha256:e8236383a20872c0cdf5a62b554b27538db7fa1bbec52429d8d106effbaeca08 \
|
||||
--hash=sha256:f04e857b59d9d1ccc39ce2da1021d196e47234873820cbeaad210724b1ee28ac \
|
||||
--hash=sha256:fadbfe37f74051d024037f223b8e001611eac868b5c5b06144ef4d8b799862f2
|
||||
# via
|
||||
# pytz-deprecation-shim
|
||||
# tzlocal
|
||||
|
||||
|
||||
# WARNING: The following packages were not pinned, but pip requires them to be
|
||||
# pinned when the requirements file includes hashes. Consider using the --allow-unsafe flag.
|
||||
# setuptools
|
||||
|
|
|
|||
2
setup.py
2
setup.py
|
|
@ -61,7 +61,7 @@ setup(
|
|||
"Operating System :: OS Independent",
|
||||
"Framework :: Flask",
|
||||
],
|
||||
python_requires=">=3.7,<3.10",
|
||||
python_requires=">=3.7,<4.0",
|
||||
cmdclass={
|
||||
"install": InstallWithBabelCompile,
|
||||
# The rest is convenience but not strictly necessary for the automation:
|
||||
|
|
|
|||
219
src/cryptoadvance/specter/devices/hwi/keepkey.py
Normal file
219
src/cryptoadvance/specter/devices/hwi/keepkey.py
Normal file
|
|
@ -0,0 +1,219 @@
|
|||
"""
|
||||
Keepkey
|
||||
*******
|
||||
"""
|
||||
|
||||
from hwilib.errors import (
|
||||
DEVICE_NOT_INITIALIZED,
|
||||
DeviceNotReadyError,
|
||||
common_err_msgs,
|
||||
handle_errors,
|
||||
)
|
||||
from hwilib.devices.trezorlib import protobuf as p
|
||||
from hwilib.devices.trezorlib.transport import (
|
||||
hid,
|
||||
udp,
|
||||
webusb,
|
||||
)
|
||||
from .trezor import TrezorClient, HID_IDS, WEBUSB_IDS
|
||||
from hwilib.devices.trezorlib.messages import (
|
||||
DebugLinkState,
|
||||
Features,
|
||||
HDNodeType,
|
||||
ResetDevice,
|
||||
)
|
||||
|
||||
from typing import (
|
||||
Any,
|
||||
Dict,
|
||||
List,
|
||||
Optional,
|
||||
)
|
||||
|
||||
py_enumerate = enumerate # Need to use the enumerate built-in but there's another function already named that
|
||||
|
||||
KEEPKEY_HID_IDS = {(0x2B24, 0x0001)}
|
||||
KEEPKEY_WEBUSB_IDS = {(0x2B24, 0x0002)}
|
||||
|
||||
HID_IDS.update(KEEPKEY_HID_IDS)
|
||||
WEBUSB_IDS.update(KEEPKEY_WEBUSB_IDS)
|
||||
|
||||
|
||||
class KeepkeyFeatures(Features): # type: ignore
|
||||
def __init__(
|
||||
self,
|
||||
*,
|
||||
firmware_variant: Optional[str] = None,
|
||||
firmware_hash: Optional[bytes] = None,
|
||||
**kwargs: Any,
|
||||
) -> None:
|
||||
super().__init__(**kwargs)
|
||||
self.firmware_variant = firmware_variant
|
||||
self.firmware_hash = firmware_hash
|
||||
|
||||
@classmethod
|
||||
def get_fields(cls) -> Dict[int, p.Field]:
|
||||
return {
|
||||
1: ("vendor", p.UnicodeType, None),
|
||||
2: ("major_version", p.UVarintType, None),
|
||||
3: ("minor_version", p.UVarintType, None),
|
||||
4: ("patch_version", p.UVarintType, None),
|
||||
5: ("bootloader_mode", p.BoolType, None),
|
||||
6: ("device_id", p.UnicodeType, None),
|
||||
7: ("pin_protection", p.BoolType, None),
|
||||
8: ("passphrase_protection", p.BoolType, None),
|
||||
9: ("language", p.UnicodeType, None),
|
||||
10: ("label", p.UnicodeType, None),
|
||||
12: ("initialized", p.BoolType, None),
|
||||
13: ("revision", p.BytesType, None),
|
||||
14: ("bootloader_hash", p.BytesType, None),
|
||||
15: ("imported", p.BoolType, None),
|
||||
16: ("unlocked", p.BoolType, None),
|
||||
21: ("model", p.UnicodeType, None),
|
||||
22: ("firmware_variant", p.UnicodeType, None),
|
||||
23: ("firmware_hash", p.BytesType, None),
|
||||
24: ("no_backup", p.BoolType, None),
|
||||
25: ("wipe_code_protection", p.BoolType, None),
|
||||
}
|
||||
|
||||
|
||||
class KeepkeyResetDevice(ResetDevice): # type: ignore
|
||||
def __init__(
|
||||
self,
|
||||
*,
|
||||
auto_lock_delay_ms: Optional[int] = None,
|
||||
**kwargs: Any,
|
||||
) -> None:
|
||||
super().__init__(**kwargs)
|
||||
self.auto_lock_delay_ms = auto_lock_delay_ms
|
||||
|
||||
@classmethod
|
||||
def get_fields(cls) -> Dict[int, p.Field]:
|
||||
return {
|
||||
1: ("display_random", p.BoolType, None),
|
||||
2: ("strength", p.UVarintType, 256), # default=256
|
||||
3: ("passphrase_protection", p.BoolType, None),
|
||||
4: ("pin_protection", p.BoolType, None),
|
||||
5: ("language", p.UnicodeType, "en-US"), # default=en-US
|
||||
6: ("label", p.UnicodeType, None),
|
||||
7: ("no_backup", p.BoolType, None),
|
||||
8: ("auto_lock_delay_ms", p.UVarintType, None),
|
||||
9: ("u2f_counter", p.UVarintType, None),
|
||||
}
|
||||
|
||||
|
||||
class KeepkeyDebugLinkState(DebugLinkState): # type: ignore
|
||||
def __init__(
|
||||
self,
|
||||
*,
|
||||
recovery_cipher: Optional[str] = None,
|
||||
recovery_auto_completed_word: Optional[str] = None,
|
||||
firmware_hash: Optional[bytes] = None,
|
||||
storage_hash: Optional[bytes] = None,
|
||||
**kwargs: Any,
|
||||
) -> None:
|
||||
super().__init__(**kwargs)
|
||||
self.recovery_cipher = recovery_cipher
|
||||
self.recovery_auto_completed_word = recovery_auto_completed_word
|
||||
self.firmware_hash = firmware_hash
|
||||
self.storage_hash = storage_hash
|
||||
|
||||
@classmethod
|
||||
def get_fields(cls) -> Dict[int, p.Field]:
|
||||
return {
|
||||
1: ("layout", p.BytesType, None),
|
||||
2: ("pin", p.UnicodeType, None),
|
||||
3: ("matrix", p.UnicodeType, None),
|
||||
4: ("mnemonic_secret", p.BytesType, None),
|
||||
5: ("node", HDNodeType, None),
|
||||
6: ("passphrase_protection", p.BoolType, None),
|
||||
7: ("reset_word", p.UnicodeType, None),
|
||||
8: ("reset_entropy", p.BytesType, None),
|
||||
9: ("recovery_fake_word", p.UnicodeType, None),
|
||||
10: ("recovery_word_pos", p.UVarintType, None),
|
||||
11: ("recovery_cipher", p.UnicodeType, None),
|
||||
12: ("recovery_auto_completed_word", p.UnicodeType, None),
|
||||
13: ("firmware_hash", p.BytesType, None),
|
||||
14: ("storage_hash", p.BytesType, None),
|
||||
}
|
||||
|
||||
|
||||
class KeepkeyClient(TrezorClient):
|
||||
def __init__(self, path: str, password: str = "", expert: bool = False) -> None:
|
||||
"""
|
||||
The `KeepkeyClient` is a `HardwareWalletClient` for interacting with the Keepkey.
|
||||
As Keepkeys are clones of the Trezor 1, please refer to `TrezorClient` for documentation.
|
||||
"""
|
||||
super(KeepkeyClient, self).__init__(path, password, expert)
|
||||
self.type = "Keepkey"
|
||||
self.client.vendors = "keepkey.com"
|
||||
self.client.minimum_versions = {"K1-14AM": (0, 0, 0)}
|
||||
self.client.map_type_to_class_override[
|
||||
KeepkeyFeatures.MESSAGE_WIRE_TYPE
|
||||
] = KeepkeyFeatures
|
||||
self.client.map_type_to_class_override[
|
||||
KeepkeyResetDevice.MESSAGE_WIRE_TYPE
|
||||
] = KeepkeyResetDevice
|
||||
if self.simulator:
|
||||
self.client.debug.map_type_to_class_override[
|
||||
KeepkeyDebugLinkState.MESSAGE_WIRE_TYPE
|
||||
] = KeepkeyDebugLinkState
|
||||
|
||||
|
||||
def enumerate(password: str = "") -> List[Dict[str, Any]]:
|
||||
results = []
|
||||
devs = hid.HidTransport.enumerate(usb_ids=KEEPKEY_HID_IDS)
|
||||
devs.extend(webusb.WebUsbTransport.enumerate(usb_ids=KEEPKEY_WEBUSB_IDS))
|
||||
devs.extend(udp.UdpTransport.enumerate())
|
||||
for dev in devs:
|
||||
d_data: Dict[str, Any] = {}
|
||||
|
||||
d_data["type"] = "keepkey"
|
||||
d_data["model"] = "keepkey"
|
||||
d_data["path"] = dev.get_path()
|
||||
|
||||
client = None
|
||||
|
||||
with handle_errors(common_err_msgs["enumerate"], d_data):
|
||||
client = KeepkeyClient(d_data["path"], password)
|
||||
try:
|
||||
client.client.refresh_features()
|
||||
except TypeError:
|
||||
continue
|
||||
if "keepkey" not in client.client.features.vendor:
|
||||
continue
|
||||
|
||||
if d_data["path"] == "udp:127.0.0.1:21324":
|
||||
d_data["model"] += "_simulator"
|
||||
|
||||
d_data["needs_pin_sent"] = (
|
||||
client.client.features.pin_protection
|
||||
and not client.client.features.unlocked
|
||||
)
|
||||
d_data[
|
||||
"needs_passphrase_sent"
|
||||
] = (
|
||||
client.client.features.passphrase_protection
|
||||
) # always need the passphrase sent for Keepkey if it has passphrase protection enabled
|
||||
if d_data["needs_pin_sent"]:
|
||||
raise DeviceNotReadyError(
|
||||
"Keepkey is locked. Unlock by using 'promptpin' and then 'sendpin'."
|
||||
)
|
||||
if d_data["needs_passphrase_sent"] and not password:
|
||||
raise DeviceNotReadyError(
|
||||
"Passphrase needs to be specified before the fingerprint information can be retrieved"
|
||||
)
|
||||
if client.client.features.initialized:
|
||||
d_data["fingerprint"] = client.get_master_fingerprint().hex()
|
||||
d_data[
|
||||
"needs_passphrase_sent"
|
||||
] = False # Passphrase is always needed for the above to have worked, so it's already sent
|
||||
else:
|
||||
d_data["error"] = "Not initialized"
|
||||
d_data["code"] = DEVICE_NOT_INITIALIZED
|
||||
|
||||
if client:
|
||||
client.close()
|
||||
|
||||
results.append(d_data)
|
||||
return results
|
||||
|
|
@ -3,12 +3,11 @@ black==22.3.0
|
|||
pre-commit==2.13.0
|
||||
docker==4.3.1
|
||||
pip-tools==5.5.0
|
||||
pytest==6.1.2
|
||||
pytest==7.1.2
|
||||
PySocks==1.7.1
|
||||
pytest-cov==2.10.1
|
||||
mock==4.0.2
|
||||
babel==2.9.1
|
||||
babel==2.10.1
|
||||
python-gitlab==2.10.1
|
||||
|
||||
# requirements for stuff in ./utils
|
||||
requests==2.26.0
|
||||
requests==2.26.0
|
||||
|
|
|
|||
|
|
@ -114,14 +114,16 @@ def test_calling_method_with_non_existing_parameters(client):
|
|||
"forwarded_request": True,
|
||||
},
|
||||
)
|
||||
assert {
|
||||
"jsonrpc": "2.0",
|
||||
assert { # TODO This is a temporary fix that should be handled in https://github.com/cryptoadvance/specter-desktop/pull/1693
|
||||
"error": {
|
||||
"code": -32000,
|
||||
"message": "Internal error: enumerate() got an unexpected keyword argument 'non_existing_parameter'.",
|
||||
"message": "Internal error: HWIBridge.enumerate() got an unexpected keyword argument 'non_existing_parameter'.",
|
||||
},
|
||||
"id": 1,
|
||||
} == json.loads(req.data)
|
||||
"jsonrpc": "2.0",
|
||||
} == json.loads(
|
||||
req.data
|
||||
)
|
||||
|
||||
|
||||
def test_call_not_connected_device(client):
|
||||
|
|
|
|||
|
|
@ -1,5 +1,8 @@
|
|||
#!/bin/bash
|
||||
|
||||
|
||||
echo " --> Starting mkdocs-wrapper.sh"
|
||||
|
||||
# This is mainly used by netlify where we're using the free starter-plan
|
||||
# Checkout https://github.com/cryptoadvance/specter-desktop/pull/1463
|
||||
# for a more birds eye view of this script.
|
||||
|
|
@ -10,11 +13,12 @@
|
|||
# * Build command: ./utils/mkdocs-wrapper.sh build
|
||||
# * Publish directory: site
|
||||
# In the Environment Variables, you have to set:
|
||||
# PYTHON_VERSION 3.8
|
||||
# PYTHON_VERSION 3.10
|
||||
|
||||
# We're using mkdocs for creating the static pages
|
||||
# We don't pin this dependency as this is not relevant for either testing or
|
||||
# production. Therefore it's easier to simply let it upgrade automatically:
|
||||
echo " Running pip install mkdocs mkdocs-video mdx_truly_sane_lists"
|
||||
pip3 install mkdocs mkdocs-video mdx_truly_sane_lists
|
||||
# At the sime of this comment, we had: mkdocs==1.2.3
|
||||
|
||||
|
|
@ -24,12 +28,14 @@ pip3 install mkdocs mkdocs-video mdx_truly_sane_lists
|
|||
# but we also want it for people browsing https://docs.specter.solutions/desktop
|
||||
# So for the second case, we copy it there and change all the links
|
||||
if [ "$1" = "build" ]; then
|
||||
echo " --> Copying and adjusting README.md"
|
||||
cp README.md docs
|
||||
sed -i 's/docs\///g' docs/README.md
|
||||
sed -i 's/Checkout our Documentation at.*//' docs/README.md
|
||||
sed -i 's/\.\.\/README.md/README.m/g' docs/*.md
|
||||
fi
|
||||
|
||||
echo " --> now running mkdocs $1 $2"
|
||||
|
||||
mkdocs $1 $2
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue