Git Product home page Git Product logo

solo-python's Introduction

Python tool and library for SoloKeys

Getting Started

We require Python >= 3.6 and corresponding pip3 command.

We intend to support Linux, Windows and macOS. Other platforms aren't supported by the FIDO2 library we rely on.

To get started, run pip3 install solo-python, this installs both the solo library and the solo interface.

Possible issues:

For development, we suggest you run make init instead, which

  • sets up a virtual environment
  • installs development requirements such as black
  • installs solo as symlink using our packaging tool flit, including all runtime dependencies listed in pyproject.toml

One way to ensure the virtual environment is active is to use direnv.

Solo Tool

For help, run solo --help after installation. The tool has a hierarchy of commands and subcommands.

Example:

solo ls  # lists all Solo keys connected to your machine
solo version  # outputs version of installed `solo` library and tool

solo key wink  # blinks the LED
solo key verify  # checks whether your Solo is genuine
solo key rng hexbytes  # outputs some random hex bytes generated on your key
solo key version  # outputs the version of the firmware on your key

Firmware Update

Upon release of signed firmware updates in solokeys/solo, to update the firmware on your Solo Secure ("regular" version) to the latest version:

  • update your solo tool if necessary via pip3 install --upgrade solo-python
  • plug in your key, keeping the button pressed until the LED flashes yellow
  • run solo key update --secure

To update an (unmodified) Solo Hacker, instead run solo key update --hacker.

For possibly helpful additional information, see solokeys/solo1#113.

Library Usage

The previous solotool.py has been refactored into a library with associated CLI tool called solo.

It is still work in progress, example usage:

import solo

client = solo.client.find()

client.wink()

random_bytes = client.get_rng(32)
print(random_bytes.hex())

Comprehensive documentation coming, for now these are the main components

  • solo.client: connect to Solo Hacker and Solo Secure keys in firmware or bootloader mode
  • solo.dfu: connect to Solo Hacker in dfu mode (disabled on Solo Secure keys)
  • solo.cli: implementation of the solo command line interface

License

Licensed under either of

at your option.

Contributing

Any contribution intentionally submitted for inclusion in the work by you, as defined in the Apache-2.0 license, shall be dual licensed as above, without any additional terms or conditions.

Code is to be formatted and linted according to Black and our Flake8 configuration Run make check to test compliance, run make fix to apply some automatic fixes.

We keep a CHANGELOG.

solo-python's People

Contributors

nickray avatar conorpp avatar

Watchers

James Cloos avatar Corbo avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.