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.
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.
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.
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!
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.
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
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.
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
Currently if you export a session using ssh or switch to another user (sudo/su) then ELS is not accessible.
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
$ export KDE_FULL_SESSION=1
$ export KDE_SESSION_VERSION=4