package com.hongqiang.shop.modules.util.service;
import java.security.KeyPair;
import java.security.interfaces.RSAPrivateKey;
import java.security.interfaces.RSAPublicKey;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpSession;
import org.apache.commons.lang.StringUtils;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import org.springframework.util.Assert;
import com.hongqiang.shop.common.utils.RSAUtils;
@Service("rsaServiceImpl")
public class RSAServiceImpl
implements RSAService
{
private static final String PRIVATE_KEY = "privateKey";
@Transactional(readOnly=true)
public RSAPublicKey generateKey(HttpServletRequest request)
{
Assert.notNull(request);
KeyPair localKeyPair = RSAUtils.generateKeyPair();
RSAPublicKey localRSAPublicKey = (RSAPublicKey)localKeyPair.getPublic();
RSAPrivateKey localRSAPrivateKey = (RSAPrivateKey)localKeyPair.getPrivate();
HttpSession localHttpSession = request.getSession();
localHttpSession.setAttribute(PRIVATE_KEY, localRSAPrivateKey);
return localRSAPublicKey;
}
@Transactional(readOnly=true)
public void removePrivateKey(HttpServletRequest request)
{
Assert.notNull(request);
HttpSession localHttpSession = request.getSession();
localHttpSession.removeAttribute(PRIVATE_KEY);
}
@Transactional(readOnly=true)
public String decryptParameter(String name, HttpServletRequest request)
{
Assert.notNull(request);
if (name != null)
{
HttpSession localHttpSession = request.getSession();
RSAPrivateKey localRSAPrivateKey = (RSAPrivateKey)localHttpSession.getAttribute(PRIVATE_KEY);
String str = request.getParameter(name);
if ((localRSAPrivateKey != null) && (StringUtils.isNotEmpty(str)))
return RSAUtils.decrypt(localRSAPrivateKey, str);
}
return null;
}
}