Я написал код для простой подписи и проверки подписи:
byte[] test = sign(LetterSigner.defaultPrivKey, "this is test".getBytes());
boolean b1 = SignUtil.verify(defaultPubKey, testcnt, "this is test".getBytes());
System.out.println("b1:" + b1);
Проблема заключается в том, что содержимое будет успешно подписано и проверено в моей локальной системе в методе main, но подпись не проверяетна сервере приложений weblogic.
В чем проблема этого кода с сервером приложений weblogic 12.2.1.3.0? метод знака:
public static byte[] sign(PrivateKey priv, byte[] info) throws Exception{
Signature dsa= Signature.getInstance("SHA1withDSA", "SUN");
dsa.initSign(privateKey);
dsa.update(info);
return dsa.sign();
}
вот метод проверки:
public static boolean verify(PublicKey pub,byte[] signedData,byte[] originalData) throws Exception
{
if (signedData==null || originalData==null) return false;
Signature dsa=null;
try
{
dsa = Signature.getInstance("SHA1withDSA");
}
catch (NoSuchAlgorithmException e)
{
throw new SignUtilException("SignUtil(verify)-->SHA1withDSA algorithm from sun(as provider) not found.",e);
}
try
{
dsa.initVerify(pub);
}
catch (InvalidKeyException e)
{
throw new SignUtilException("SignUtil(verify)-->Invalid key spec is passed as public key.",e);
}
try
{
dsa.update(originalData);
boolean isVerifed = dsa.verify(signedData);
return isVerifed;
}
}