Your rating: None Average: 5 (5 votes)

SailOTP is a Sailfish Implementation of the Google-Authenticator algorithms, also known as TOPT (timer based) and HOTP (counter based) as described in RFC 6238 and 4226. A growing number of sites uses this algorithm for two-factor-authentication, including Github, Linode and several Google services.

One can add new OTP-entries using the pulley-menu. Codes can be added using the integrated QR-Code-Reader or by manually typing in the token information.

The main view of the app will show a list off all entries and their current One-Time-Tokens. The entries will be regenerated every 30 seconds, the remaining time for the current tokens is shown through a progress bar at the top of the app. HOTP-type tokens are not updated automatically, instead a refresh button is shown on the right of the token to calculate the next value and increment the counter. An entry can be edited, deleted or moved up and down in the list by long-pressing on it.

In edit-mode one can show a QR-Code of the entry (e.g. for importing it on another device) through the pulley menu.

One entry can be stared by tapping the star icon on the left. the stared item will be shown on the ActiveCover. If the Token is timer based, it will be refreshed every 30 seconds. 5 seconds before the token changes it's color will change to red. For counter based tokens a cover action to calculate the next token is shown instead. The item can be unstared by tapping the star icon again on the main view.

From the main view a token can be copied to the clipboard by tapping on it.

From the pulley menu the token database can be exported to a file for backup purposes. The backup is a AES-256-CBC encrypted and
Base64 encoded file containing a JSON-representation of the database. It can be decrypted with openssl using the following command:

openssl enc -d -a -aes-256-cbc -in <file>

if you need the information outside of SailOTP.

Importing the file is also possible from the pulley menu. If a file contains tokens that are already in the database (title and secret of the token match an existing one), these tokens will not be added again.

It is also possible to generate tokens for SteamGuard (Steams TOTP-Variant for 2-Factor-Auth). To use this feature, one will have to activate it using the original Steam Android app. After activating it one can get the secret code from '/opt/alien/data/data/$STEAMID'. This file contains json data, including the OTP-URL in the form 'otpauth://totp/Steam:$STEAM_USERNAME?secret=$SECRET&issuer=Steam'. The code from this URL can be added manually using the 'Steam Guard'-OTP-Type in SailOTP.

If you find any bugs or want to suggest a feature, feel free to use Githubs Issues feature or write an email to sailfish _AT_


Version 1.5

  • Added French Translation (Thanks to Romain Tartière)
  • Bugfix: Refresh HOTP-Token from Cover. Closes Github Issue #11

Version 1.4

  • Length of the Token can be set
  • Time Derivation is configurable

Version 1.3

  • Added Support für SteamGuard Tokens (Thanks to Robin Appelman)

Version 1.2

  • Added swedish translation contibuted by Åke Engelbrektson

Version 1.1

  • Added URL-decoding for OTP-titles when scanning QR-codes

Version 1.0

  • QR-Code reader is now harbour-compatible

Version 0.8

  • Added QR-Code-Export for tokens from the edit page
  • Added possibility to reorder tokens

Version 0.7

  • Added Integrated QR-reader for adding tokens

Version 0.6

  • Added internationalization support
  • Added German Translation
  • Tokens can be switched on the Cover
  • Some minor UI-tweaks

Version 0.5

  • Added Export / Import for the Tokens Database

Version 0.4

  • Added possibility to use HOTP-tokens

Version 0.3

  • Added possibility to "star" an entry to show it on the ActiveCover
  • Tokens can be copied to the clipboard by tapping on them

Version 0.2

  • Added possibility to edit existing entries
  • Better error handling for invalid secrets
  • Better input checks on add/edit

Version 0.1

  • Initial Release


Application versions: 
harbour-sailotp-1.5-1.armv7hl.rpm200.15 KB09/10/2016 - 11:25
harbour-sailotp-1.5-1.i486.rpm230.52 KB09/10/2016 - 11:25
harbour-sailotp-1.4-1.armv7hl.rpm198.84 KB17/07/2016 - 20:30
harbour-sailotp-1.4-1.i486.rpm228.7 KB17/07/2016 - 20:30
harbour-sailotp-1.3-1.i486.rpm228.03 KB07/12/2015 - 23:12
harbour-sailotp-1.3-1.armv7hl.rpm197.87 KB06/12/2015 - 21:33
harbour-sailotp-1.2-1.armv7hl.rpm196.67 KB17/06/2015 - 22:27
harbour-sailotp-1.1-1.armv7hl.rpm194.79 KB22/05/2015 - 20:16
harbour-sailotp-1.0-2.armv7hl.rpm195.06 KB13/07/2014 - 14:11
harbour-sailotp-1.0-1.armv7hl.rpm194.83 KB01/07/2014 - 18:46
harbour-sailotp-0.8-1.armv7hl.rpm231.62 KB20/06/2014 - 03:27
harbour-sailotp-0.7-1.armv7hl.rpm218.59 KB22/02/2014 - 14:21
harbour-sailotp-0.6-1.armv7hl.rpm45.47 KB09/02/2014 - 13:43
harbour-sailotp-0.5-1.armv7hl.rpm42.33 KB02/02/2014 - 18:39
harbour-sailotp-0.4-2.armv7hl.rpm27.03 KB13/01/2014 - 03:06
harbour-sailotp-0.3-1.armv7hl.rpm26.32 KB10/01/2014 - 23:15
harbour-sailotp-0.2-1.armv7hl.rpm25.58 KB08/01/2014 - 22:37

- Added French Translation (Thanks to Romain Tartière)
- Bugfix: Refresh HOTP-Token from Cover. Closes Github Issue #11


McCloud's picture

STEP 3 on

I would like to uninstall android app from Jolla if I could import keyes to your app.

McCloud's picture


sqlite3 /data/data/

select * from accounts;

seiichiro0185's picture

I didn't try to import from Google Authenticator, but with the Info from the sqlite DB you should be able to manually add the tokens to SailOTP. 

ZeiP's picture

Could you add support for more digits, as used by for example the Blizzard authenticator:

seiichiro0185's picture

I will add this in the next Version, although I can't promise a timeline yet.

seiichiro0185's picture

I finally came around to do some coding for SailOTP again. Version 1.4 which includes this change is now released on openrepos, and submitted for QA on harbour.

coderus's picture

i486 build please?

seiichiro0185's picture

I uploaded the i486 Build of Version 1.3. Please note that it's only briefly tested in the Emulator, since my Tablet is still MIA.