Garmin ConnectIQ Widget for One-Time Passwords as Second Factor Authentication (2FA) similar to Google Authenticator. Multiple OTP formats are supported.
Keys can be entered directly and are stored encrypted using Garmin's application storage. This way, the secret keys will never leave your device and can provide a truly secure second factor!
Less secure, but more convenient: key data can be also added, exported and imported via widget settings.
Keys are stored encrypted using Garmin's application storage on the Device. In the past the application storage was not retained when updating a widget to a newer version, but this seems to be no isuse anymore (since CIQ 3.0.0?). However, entered provider data along with secret keys are quite naturally wiped when removing or reinstalling the App.
To provide an easy way of data migration, e.g. when switching Garmin devices an export/import mechanism was added!
To export keys from the encrypted application storage, open the menu in the "OTP Authenticator" widget (touch or menu button). When selecting "Export", all provider entries are copied into application properties until next start. You can access the exported data in the Settings of the widget.
IMPORTANT Secrets are available unencrypted in settings after exporting until the next start. Make sure you backup the exported data in a secure way, e.g. in your password manager with encrypted storage. Also, there is a chance that this leaks the payload to the garmin servers!
Using the same approach as above, previously exported key data can be imported again via the Widget settings. On every widget start, all available data is loaded and cleared from the corresponding settings entry.
This app does support the steam guard authentication code scheme. However, access onto the secret key is usually not provided by the setup.
If you have a rooted Android phone, you can read the secret key out of the installed and configured steam Android App.
The secret is located in a file at path
/data/data/com.valvesoftware.android.steam.community/files/Steamguard*
and can
be read using adb
or a local shell and su
(thus the rooted phone
requirement).
Due to very old libraries used in the Garmin SDK, notably in the simulator,
modern Linux distributions and especially NixOS is hard to support. Thus, the
current "best" practice is to use an Ubuntu docker image like this
one, onto which I only needed to
add make
to get a docker image for my workflow:
docker build . -t connectiq
./run-in-docker.sh
developer@c2efd41df61f$ make start
The docker container uses the SDKs and Device files from the .Garmin/
working
directory. To check for new and download SDK packages, launch sdkmanager
from
within the docker container. Also, for some tasks the Garmin IDE is helpful,
available in the eclipse
of the docker container.
While a default device is defined in Makefile
, one can select the device to
run tests for or start the simulator on with DEVICE=<device name in manifest>
.
The codebase contains tests about the logic which can be run with make test
,
while the interface needs to be tested manually with the simulator using make start
.
Testing with all supported devices on every change is obviously infeasible, but the following list of devices should be considered as they are in way or the other special or representative:
vivoactive3
: the device of the creator of this widget (still), touch screenvivoactive_hr
: an old api level 2.4.0 device with square screen, touch screenfenix5
: good representative for api level 3.1.0, buttons onlyfenix6
: good representative for api level 3.4.0, buttons onlyfenix7
: good representative for api level 4.2.0, touch screenvenu2
: amoled (full color) higher resolution screeninstinct2
: semi-octagon shape with subscreen, black-white screenTo run all of these in sequence, use ./run-in-docker.sh ./test-all.sh
. To
advance from one device to the next in the manual test, the widget must stop
gracefully, e.g. using the back button.
Full list of devices and their capabilities
The source code for garmin-otp-authenticator is released under the Mozilla Public License Version 2.0.
Launcher icon made by Roundicons from www.flaticon.com is licensed by Creative Commns BY 3.0.