diff --git a/src/main/java/dslab/client/MessageClient.java b/src/main/java/dslab/client/MessageClient.java index 233baf6..0595dad 100644 --- a/src/main/java/dslab/client/MessageClient.java +++ b/src/main/java/dslab/client/MessageClient.java @@ -14,10 +14,8 @@ import java.util.logging.Logger; import dslab.ComponentFactory; import dslab.util.Config; -import javax.crypto.BadPaddingException; -import javax.crypto.Cipher; -import javax.crypto.IllegalBlockSizeException; -import javax.crypto.NoSuchPaddingException; +import javax.crypto.*; +import javax.crypto.spec.IvParameterSpec; public class MessageClient implements IMessageClient, Runnable { private static final Logger logger = Logger.getLogger(MessageClient.class.getName()); @@ -118,7 +116,20 @@ public class MessageClient implements IMessageClient, Runnable { } } - public String generateChallenge(PublicKey serverPublicKey) { + private SecretKey generateSecretKey() throws NoSuchAlgorithmException { + KeyGenerator keyGenerator = KeyGenerator.getInstance("AES"); + keyGenerator.init(256); + return keyGenerator.generateKey(); + } + + private byte[] generateIv() { + // Size of IV corresponds to AES block size (=128bits=16bytes) + byte[] iv = new byte[16]; + new SecureRandom().nextBytes(iv); + return new IvParameterSpec(iv).getIV(); + } + + private String generateChallenge(PublicKey serverPublicKey) { SecureRandom secureRandom = new SecureRandom(); try { Cipher cipher = Cipher.getInstance("RSA/ECB/PKCS1Padding");