Troubleshoot Encrypted Local Storage, ELS | AIR |Linux

Purpose

AIR Applications on Linux are sometimes not able to access the Encrypted Local Storage (ELS) keystore. This results in application displaying behaviors like hanging on launch, showing an empty window on launch, save password feature not working, etc. This document details some of the frequent problems encountered while using ELS and steps to rectify them whenever possible.

Audience

This document is written for users who are running AIR applications on Linux. But all AIR application developers should read it in order to understand the basic issues that might arise while using ELS.

Note: We are going to use TweetDeck in all the examples below, but they hold true for any AIR application.

Introduction

ELS stands for Encrypted Local Store. AIR provides a "platform based" secure storage that could be used for storing information that needs to be secured like login credentials, private keys etc. The ActionScript manual details the API supported by AIR, you can access it here.

ELS is "platform based", which means that it uses native system services for securing data. For ex. on Mac AIR uses KeyChain. On Linux there is no standard key store that's available on all the systems. Currently AIR Linux supports two key stores (the major criterion being their availability on most distributions):

  • GnomeKeyring on Gnome desktops
  • Kwallet on KDE desktops

So when an AIR application tries to add/retrieve data from ELS KeyStore on a Gnome system, AIR will use gnome-keyring for securing the data, whereas on a KDE desktop, AIR will use KWallet. 

Troubleshooting

Please read the complete document before trying out anything. And please make sure that, there is no sensitive data stored in ELS that you don’t want to lose, as some troubleshooting procedures might cause data loss!

Troubleshooting GnomeKeyring

  1. Make sure GnomeKeyring daemon is running

    $ ps -aef | grep -i 'gnome.*keyring'

    if the daemon is not running, start the daemon.

  2. Reset gnome-keyring 



    Sometimes the keyring database gets corrupted, so applications are not able to access the keyring.
    $ mv ~/.gnome2/keyrings/ ~/.gnome2/keyrings.bkp
    $ mkdir -p ~/.gnome2/keyrings/
    This creates a backup, so that it can be restored if required.

     
  3. Reset AIR application data



    As ELS is not accessible, all previously stored data in ELS cannot be retrieved anymore. To start using ELS again, we need to reset ELS, by deleting the following directory:
    $ rm -rf ~/.appdata/Adobe/AIR/ELS
  4. Restart the application



    You should get the GnomeKeyring manager dialog asking you to enter the master password to setup the Keyring database, this means that everything is working fine. If you don't get any dialog, there are some other problems, please refer to the rest of the document for more issues.

Troubleshooting KWallet

  1. Make sure KWallet daemon is running
    $ ps -aef | grep -i kwallet
    if the daemon is not running, start the daemon. The easiest way to start the daemon is to invoke kwalletmanager, this is available on almost all the distros. Launching kwalletmanager starts the KWallet daemon properly.

     
  2. Make sure that the KWallet subsystem in not disabled. Launch kwalletmanager, right click on the system tray icon of the kwalletmanager, and click configure. Make sure that the Enable KDE Wallet subsystem option is selected.

     
  3. Open kwalletmanager by double clicking on the system tray icon and make sure that there is a wallet called "kdewallet" in the list of wallets. In case there isn't one, create a new wallet with name "kdewallet" as the default wallet to be used.

     
  4. Reset AIR application data

    As ELS is not accessible, all previously stored data in ELS cannot be retrieved anymore. To start using ELS again, we need to reset ELS, by deleting the following directory:

    $ rm -rf ~/.appdata/Adobe/AIR/ELS
  5. Restart the application.

Using ELS while switching desktops

Currently ELS supports a single desktop environment either Gnome or KDE on a machine. If the desktop session is Gnome and an application stores some data in ELS, when the desktop is changed to KDE, the same application will not be able to access the data that was stored earlier when the desktop session was Gnome.

This is because AIR Linux supports GnomeKeyring on Gnome and KWallet on KDE, and there are no standard method to transfer data among these two password managers.

If you want to move to Gnome from KDE or vice versa, it is possible to reset ELS, in order to use ELS on the new desktop. This will delete all the earlier data, please use it with extreme care. In order to reset ELS, delete the following directory:

$ rm -rf ~/.appdata/Adobe/AIR/ELS

Migrating ELS data to another machine

All data that is stored in ELS by an application is bounded to the user on that machine, so if you migrate your ELS data to another machine, it might not work as the user information is different.

Corrupted AIR key in KWallet/GnomeKeyring

In case the AIR key that stored in KWallet or GnomeKeyring gets corrupted, all data that was stored using those keys is lost, there is no way to recover them.

In order to restore the AIR key, delete the following directory:

$ rm -rf ~/.appdata/Adobe/AIR/ELS

This will reset ELS, and new data can now be stored in the ELS.

Accessing ELS over exported sessions

Currently if you export a session using ssh or switch to another user (sudo/su) then ELS is not accessible. 

Using ELS on desktop environment other than Gnome or KDE

Currently ELS supports only two desktop environments Gnome and KDE. To check whether your current desktop environment is supported or not, run an application on console (terminal).

$ /opt/TweetDeck/bin/TweetDeck
Unknown desktop manager, only Gnome and KDE are supported

If you see the message "Unknown desktop manager, only Gnome and KDE are supported" that means either AIR does not support your desktop environment or was not able to recognize it.

But you can still use ELS if either gnome-keyring or kwallet daemons is running on your system. If GnomeKeyring daemon is running, export the following variable

$ export GNOME_DESKTOP_SESSION_ID=1

In case KWallet daemon is running, export the following variable

$ export KDE_FULL_SESSION=1

In case your desktop environment is KDE4 or later, you would need to export one more variable

$ export KDE_SESSION_VERSION=4
Logotipo de Adobe

Inicia sesión en tu cuenta