package org.herac.tuxguitar.community.auth; import java.security.MessageDigest; import org.apache.log4j.Logger; import org.herac.tuxguitar.gui.system.config.TGConfigManager; import org.herac.tuxguitar.util.Base64Decoder; import org.herac.tuxguitar.util.Base64Encoder; public class TGCommunityAuth { private static final String STRING_SEPARATOR = ";"; private String authCode; private String password; private String username; public TGCommunityAuth() { this.username = new String(); this.password = new String(); this.authCode = new String(); } public String getAuthCode() { return this.authCode; } public String getPassword() { return password; } public String getUsername() { return username; } public boolean isEmpty() { return (this.username == null || this.password == null || this.username.length() == 0 || this.password.length() == 0); } public void load(TGConfigManager config) { String encodedData = config.getStringConfigValue("community.account"); if (encodedData != null && encodedData.length() > 0) { String data = new String(Base64Decoder.decode(encodedData.getBytes())); String[] values = data.split(STRING_SEPARATOR); if (values.length == 2) { this.setUsername(values[0]); this.setPassword(values[1]); } } } public void save(TGConfigManager config) { String data = new String(this.getUsername() + STRING_SEPARATOR + this.getPassword()); String encodedData = new String(Base64Encoder.encode(data.getBytes())); config.setProperty("community.account", encodedData); } public void setPassword(String password) { this.password = password; } public void setUsername(String username) { this.username = username; } public void update() { try { String passwordMD5 = new String(); if (this.password != null && this.password.length() > 0) { MessageDigest md = MessageDigest.getInstance("md5"); md.update(this.password.getBytes()); byte[] digest = md.digest(); for (byte digestByte : digest) { passwordMD5 += Integer.toHexString((digestByte >> 4) & 0xf); passwordMD5 += Integer.toHexString((digestByte & 0xf)); } } this.authCode = new String(Base64Encoder.encode(new String(this.username + ";" + passwordMD5).getBytes())); } catch (Throwable throwable) { LOG.error(throwable); } } /** The Logger for this class. */ public static final transient Logger LOG = Logger .getLogger(TGCommunityAuth.class); }