Проверка подписи падает каждый раз. Пожалуйста, помогите проверить, в чем проблема с кодом.
-> Клиент сначала отправит подписанные данные на сервер -> Затем сервер сохранит объект класса Message (msgobj) -> Затем какой-нибудь клиент будет читать подписанные данные объекта хранилища (msgobj.listOfMsgReceived.get (i) .signature) -> Затем проверенные подписанные данные будут проверены. (Невозможно проверить)
//Signature sending to server:
Signature sig = Signature.getInstance("SHA1WithRSA");
PrivateKey prvkey=null;
try
{
ObjectInputStream in = new ObjectInputStream(
new FileInputStream(userId+".prv"));
prvkey = (PrivateKey)in.readObject();
in.close();
}
catch (Exception ee)
{
System.out.println("Private key not found for "+userId+"."+ee);
}
ByteBuffer bb = ByteBuffer.allocate(5000);
bb.put((byte[])msgobj.recipientHash.getBytes());
bb.put((byte[])msgobj.key);
bb.put((byte[])msgobj.iv);
bb.put((byte[])msgobj.encryptedMsg);
bb.put((byte[])msgobj.timestamp.toString().getBytes());
sig.initSign(prvkey);
sig.update(bb.array());
msgobj.signature = sig.sign();
//Signature verification:
// verify signature
PublicKey publickey1=null;
//Rading public key from file
try
{
ObjectInputStream in2 = new ObjectInputStream(
new FileInputStream(userId+".pub"));
publickey1 = (PublicKey)in2.readObject();
in2.close();
}
catch (Exception ee)
{
System.out.println("Public key not found for:"+userId+" --> "+ee);
}
Signature sig = Signature.getInstance("SHA1WithRSA");
ByteBuffer bb = ByteBuffer.allocate(5000);
bb.put((byte[])msgobj.listOfMsgReceived.get(i).recipientHash.getBytes());
bb.put((byte[])msgobj.listOfMsgReceived.get(i).key);
bb.put((byte[])msgobj.listOfMsgReceived.get(i).iv);
bb.put((byte[])msgobj.listOfMsgReceived.get(i).encryptedMsg); bb.put((byte[])msgobj.listOfMsgReceived.get(i).timestamp.toString().getBytes());
sig.initVerify(publickey1);
sig.update(bb.array());
System.out.println("EXE2");
byte[] sig2 =msgobj.listOfMsgReceived.get(i).signature;
if (sig.verify(sig2))
System.out.println("Signatured verfied.");
else
System.out.println("WARNING: Signature verification failed!);
strong text
}