From 779fb6dc439df3c86a102b6c6b3940fa8327da0d Mon Sep 17 00:00:00 2001 From: Tobias Eidelpes Date: Wed, 23 Dec 2020 20:55:25 +0100 Subject: [PATCH] Implement SecretKey and IV generation --- src/main/java/dslab/client/MessageClient.java | 21 ++++++++++++++----- 1 file changed, 16 insertions(+), 5 deletions(-) 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");