Eclipse Secure storage of preferences

Eclipse allows to encrypt preference values via the plugin “org.eclipse.equinox.security”. The key/ value pairs will be stored in the file “secure.storage” in the folder “.eclipse/org.eclipse.equinox.security” of the user directory.

Eclipse uses a PasswordProvider for encrypting the preferences. Via the extension point “org.eclipse.equinox.security.secureStorage” you can register your own PasswordProvider.

To test the secure storage create the project “de.vogella.preferences.security” with a view and add “org.eclipse.equinox.security” as a dependency to this.

Change the code of your view to the following.

package de.vogella.preferences.security;

import org.eclipse.equinox.security.storage.ISecurePreferences;
import org.eclipse.equinox.security.storage.SecurePreferencesFactory;
import org.eclipse.equinox.security.storage.StorageException;
import org.eclipse.swt.SWT;
import org.eclipse.swt.events.SelectionAdapter;
import org.eclipse.swt.events.SelectionEvent;
import org.eclipse.swt.widgets.Button;
import org.eclipse.swt.widgets.Composite;
import org.eclipse.ui.part.ViewPart;

public class View extends ViewPart {
	public void createPartControl(Composite parent) {
		Button buttonPut = new Button(parent, SWT.PUSH);
		buttonPut.setText("Save values");
		buttonPut.addSelectionListener(new SelectionAdapter() {
			@Override
			public void widgetSelected(SelectionEvent e) {
				ISecurePreferences preferences = SecurePreferencesFactory
						.getDefault();
				ISecurePreferences node = preferences.node("info");
				try {
					node.put("user", "vogella", true);
					node.put("password", "123", true);
				} catch (StorageException e1) {
					e1.printStackTrace();
				}
			}
		});
		Button buttonGet = new Button(parent, SWT.PUSH);
		buttonGet.setText("Get values");
		buttonGet.addSelectionListener(new SelectionAdapter() {
			@Override
			public void widgetSelected(SelectionEvent e) {
				ISecurePreferences preferences = SecurePreferencesFactory
						.getDefault();
				if (preferences.nodeExists("info")) {
					ISecurePreferences node = preferences.node("info");
					try {
						String user = node.get("user", "n/a");
						String password = node.get("password", "n/a");
						System.out.println(user);
						System.out.println(password);
					} catch (StorageException e1) {
						e1.printStackTrace();
					}
				}
			}
		});

	}

	/**
	 * Passing the focus request to the viewer's control.
	 */
	public void setFocus() {
	}
}

I hope this helps. For more details please see Eclipse Preference Tutorial.

I hope this blog entry helps. You find me also on Twitter. My G+ profile can be found Lars Vogels Google+.

About Lars Vogel

Lars Vogel is the founder and CEO of the vogella GmbH and works as Eclipse and Android consultant, trainer and book author. He is a regular speaker at international conferences, He is the primary author of vogella.com. With more than one million visitors per month this website is one of the central sources for Java, Eclipse and Android programming information.
This entry was posted in Eclipse and tagged , . Bookmark the permalink.