Skip to content

Latest commit

 

History

History
97 lines (66 loc) · 3.31 KB

Development.adoc

File metadata and controls

97 lines (66 loc) · 3.31 KB

Building and developing Yubico Authenticator

This document describes how to build and package Yubico Authenticator from source.

Note
Yubico Authenticator 6+ uses a new codebase built using the Flutter framework. The previous Qt codebase can be found in the legacy branch.

Requirements

You will need the Flutter SDK with enabled desktop support, see: https://flutter.dev/desktop

Development has been done using the "Install from git" method of installing the SDK, from the "stable" channel.

Dependencies

This project uses several dependencies specified in the pubspec.yaml file, as well as in the helper/pyproject.toml file. These files specify version ranges which should be compatible. The corresponding pubspec.lock and helper/poetry.lock files contain the exact versions which are currently being used when building the app.

Versioning (important for package maintainers!)

We recommend that this application be bundled with all its dependencies, using the exact versions specified in the lock files. If this approach isn’t viable, we strongly urge that upper bounds be set on the dependencies in accordance with the pubspec and pyproject files. For example, the current version depends on yubikey-manager >=5, <6. It will likely not work with versions outside this range!

Building the Yubico Authenticator Helper

The GUI requires a compiled version of Helper to run, which is built from the sources in helper/ in this repository. Requirements for all platforms are Python >= 3.8 and Poetry. This needs to be built prior to running flutter build or flutter run.

Windows

Make sure the swig executable is in your PATH.

macOS

$ brew install swig

Linux (Debian-based distributions)

$ sudo apt install swig libu2f-udev pcscd libpcsclite-dev

Linux (RPM-based distributions)

# Tested on Fedora 34
$ sudo dnf install pcsc-lite-devel python3-devel swig

When prerequisites are installed you build the helper by running build-helper.sh (or build-helper.bat on Windows).

Note
You will need to re-run the build script if changes have been made to Helper’s code, or if flutter clean has been run.

Running the app

Before you can build or run the app using the flutter command you need to build the helper, as described in the previous section!

To start the app, run:

flutter run -d <os>

where <os> is "windows", "macos", "linux", or an attached Android device name. use flutter devices to list available devices.

You can add the --release flag to run a release build instead of debug.

Building the app

To build the app without running it, use:

flutter build <os>

where <os> is "windows", "macos", "linux", or "apk". Builds of the app will be create under build/<os>/ for desktop, or build/app/ for Android.

Running tests

This project uses both unit tests and integration tests.

The unit tests can be run with the command:

flutter test

These do not require a YubiKey, and are relatively quick to run.

The integration tests are slower but cover more end-to-end functionality. The require an attached YubiKey to run, and will make modifications to the data stored on that YubiKey. For instructions on running these tests, see these instructions.

Packaging for MacOS