package thaw.fcp;
import java.util.Observable;
import java.util.Observer;
import thaw.core.Logger;
public class FCPGenerateSSK extends Observable implements FCPQuery, Observer {
private String identifier = null;
private String privateKey = null;
private String publicKey = null;
private FCPQueueManager queueManager = null;
public FCPGenerateSSK() {
}
public boolean start(final FCPQueueManager queueManager) {
this.queueManager = queueManager;
queueManager.getQueryManager().addObserver(this);
identifier = queueManager.getAnID();
final FCPMessage msg = new FCPMessage();
msg.setMessageName("GenerateSSK");
msg.setValue("Identifier", identifier);
queueManager.getQueryManager().writeMessage(msg);
return true;
}
public void update (final Observable o, final Object param) {
final FCPMessage msg = (FCPMessage)param;
if((msg.getValue("Identifier") == null)
|| !msg.getValue("Identifier").equals(identifier))
return;
if("SSKKeypair".equals( msg.getMessageName() )) {
Logger.debug(this, "SSKKeypair !");
privateKey = msg.getValue("InsertURI");
publicKey = msg.getValue("RequestURI");
privateKey = privateKey.replaceFirst("freenet:", "");
publicKey = publicKey.replaceFirst("freenet:", "");
stop(queueManager);
setChanged();
this.notifyObservers();
return;
}
}
public boolean stop(final FCPQueueManager queueManager) {
queueManager.getQueryManager().deleteObserver(this);
return true;
}
public int getQueryType() {
return 0;
}
/**
* @return privateKey without the "freenet:" prefix.
*/
public String getPrivateKey() {
return privateKey;
}
/**
* @return publicKey without the "freenet:" prefix.
*/
public String getPublicKey() {
return publicKey;
}
}