/*
* SK's Minecraft Launcher
* Copyright (C) 2010-2014 Albert Pham <http://www.sk89q.com> and contributors
* Please see LICENSE.txt for license information.
*/
package com.skcraft.launcher.persistence;
import java.lang.annotation.ElementType;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target;
/**
* Classes that are annotated with this will be saved <em>scrambled</em>
* to disk when saved using {@link com.skcraft.launcher.persistence.Persistence}.
* </p>
* The data may be scrambled using an encryption algorithm, but it's not
* done with security in mind. Decryption requires a key, and that
* key would either have to be stored in the source code, defeating the
* purpose of encryption, or the user would have to be prompted with a
* password every time (possibly through an OS key ring service).
* That creates extra hassle, so it is not done here.
* </p>
* Therefore , you should not depend on data that is scrambled to
* be secure. It does, however, make it impossible for most people
* to just read the file's contents, which is "better than nothing"
* Documentation should not indicate to the user that the data is
* protected however, because that would provide a false sense of
* security.
* </p>
* Account data is scrambled to make it harder to extract passwords.
*/
@Retention(RetentionPolicy.RUNTIME)
@Target(ElementType.TYPE)
public @interface Scrambled {
/**
* A key used in scrambling.
* </p>
* The key should not change once deployed.
*
* @return a key
*/
String value();
}