package edu.stanford.prpl.phoneIdp.common.impl;
import java.security.NoSuchAlgorithmException;
import java.security.SignatureException;
import javax.crypto.KeyGenerator;
import javax.crypto.SecretKey;
import edu.stanford.prpl.phoneIdp.common.PhoneIdpCommon;
import edu.stanford.prpl.phoneIdp.common.api.Challenge;
import edu.stanford.prpl.phoneIdp.common.api.Response;
import edu.stanford.prpl.phoneIdp.server.api.Credential;
public class ResponseImpl extends Response {
private ResponseImpl()
{
}
public ResponseImpl(String name, String openId, Challenge c, String key)
{
challenge_ = c;
name_ = name;
openId_ = openId;
key_ = key;
authCode_ = challenge_.getAuthCode();
}
public ResponseImpl(Credential cred, Challenge c)
{
challenge_ = c;
name_ = cred.getFriendlyName();
openId_ = cred.getOpenId();
key_ = cred.getSharedSecret();
authCode_ = challenge_.getAuthCode();
}
//todo revisit the need of this fn
public void extractInfo()
{
authCode_ = challenge_.getAuthCode();
}
@Override
public Response createResponse()
{
//todo fix this with JSON etc.
String plainText = getPlainText();
try {
signedText_ = Signature.calculateRFC2104HMAC(plainText, key_);
} catch (SignatureException e) {
e.printStackTrace();
}
return this;
}
/**
* @param args
*/
public static void main(String[] args) {
try
{
KeyGenerator keyGen = KeyGenerator.getInstance("HmacSHA1");
SecretKey key = keyGen.generateKey();
Challenge c = new ChallengeImpl(null, null);
c.createChallenge();
System.out.println(c.toString());
Response r = new ResponseImpl("debangsu", "http://debangsu.myopenid.com", c, new String(key.getEncoded()));
r.createResponse();
System.out.println(r.toString());
}
catch (NoSuchAlgorithmException e)
{
e.printStackTrace();
}
}
}