* #BAEL-5190: add keystore and certificate files * #BAEL-5190: add keystore address * #BAEL-5190: update hashing * #BAEL-5190: delete main classes * #BAEL-5190: move keystore files to test directory * #BAEL-5190: rename to DigitalSignatureUtils * #BAEL-5190: main source code * #BAEL-5190: main test source * #BAEL-5190: update for testing * #BAEL-5190: update keystore type * #BAEL-5190: remove p12 keystores * #BAEL-5190: add jks keystores --------- Co-authored-by: h_sharifi <h_sharifi@modernisc.com>
77 lines
3.6 KiB
Java
77 lines
3.6 KiB
Java
package com.baeldung.digitalsignature;
|
|
|
|
import org.junit.Test;
|
|
|
|
import java.nio.file.Files;
|
|
import java.nio.file.Paths;
|
|
import java.security.PrivateKey;
|
|
import java.security.PublicKey;
|
|
|
|
import static org.junit.Assert.assertTrue;
|
|
|
|
public class DigitalSignatureUnitTest {
|
|
|
|
String messagePath = "src/test/resources/digitalsignature/message.txt";
|
|
String senderKeyStore = "src/test/resources/digitalsignature/sender_keystore.jks";
|
|
String receiverKeyStore = "src/test/resources/digitalsignature/receiver_keystore.jks";
|
|
String storeType = "JKS";
|
|
String senderAlias = "senderKeyPair";
|
|
String receiverAlias = "receiverKeyPair";
|
|
char[] password = "changeit".toCharArray();
|
|
String signingAlgorithm = "SHA256withRSA";
|
|
String hashingAlgorithm = "SHA-256";
|
|
|
|
@Test
|
|
public void givenMessageData_whenSignWithSignatureSigning_thenVerify() throws Exception {
|
|
PrivateKey privateKey = DigitalSignatureUtils.getPrivateKey(senderKeyStore, password, storeType, senderAlias);
|
|
byte[] messageBytes = Files.readAllBytes(Paths.get(messagePath));
|
|
|
|
byte[] digitalSignature = DigitalSignatureUtils.sign(messageBytes, signingAlgorithm, privateKey);
|
|
|
|
PublicKey publicKey = DigitalSignatureUtils.getPublicKey(receiverKeyStore, password, storeType, receiverAlias);
|
|
boolean isCorrect = DigitalSignatureUtils.verify(messageBytes, signingAlgorithm, publicKey, digitalSignature);
|
|
|
|
assertTrue(isCorrect);
|
|
}
|
|
|
|
@Test
|
|
public void givenMessageData_whenSignWithMessageDigestAndCipher_thenVerify() throws Exception {
|
|
PrivateKey privateKey = DigitalSignatureUtils.getPrivateKey(senderKeyStore, password, storeType, senderAlias);
|
|
byte[] messageBytes = Files.readAllBytes(Paths.get(messagePath));
|
|
|
|
byte[] encryptedMessageHash = DigitalSignatureUtils.signWithMessageDigestAndCipher(messageBytes, hashingAlgorithm, privateKey);
|
|
|
|
PublicKey publicKey = DigitalSignatureUtils.getPublicKey(receiverKeyStore, password, storeType, receiverAlias);
|
|
boolean isCorrect = DigitalSignatureUtils.verifyWithMessageDigestAndCipher(messageBytes, hashingAlgorithm, publicKey, encryptedMessageHash);
|
|
|
|
assertTrue(isCorrect);
|
|
}
|
|
|
|
@Test
|
|
public void givenMessageData_whenSignWithSignatureSigning_thenVerifyWithMessageDigestAndCipher() throws Exception {
|
|
PrivateKey privateKey = DigitalSignatureUtils.getPrivateKey(senderKeyStore, password, storeType, senderAlias);
|
|
byte[] messageBytes = Files.readAllBytes(Paths.get(messagePath));
|
|
|
|
byte[] digitalSignature = DigitalSignatureUtils.sign(messageBytes, signingAlgorithm, privateKey);
|
|
|
|
PublicKey publicKey = DigitalSignatureUtils.getPublicKey(receiverKeyStore, password, storeType, receiverAlias);
|
|
boolean isCorrect = DigitalSignatureUtils.verifyWithMessageDigestAndCipher(messageBytes, hashingAlgorithm, publicKey, digitalSignature);
|
|
|
|
assertTrue(isCorrect);
|
|
}
|
|
|
|
@Test
|
|
public void givenMessageData_whenSignWithMessageDigestAndCipher_thenVerifyWithSignature() throws Exception {
|
|
PrivateKey privateKey = DigitalSignatureUtils.getPrivateKey(senderKeyStore, password, storeType, senderAlias);
|
|
byte[] messageBytes = Files.readAllBytes(Paths.get(messagePath));
|
|
|
|
byte[] encryptedMessageHash = DigitalSignatureUtils.signWithMessageDigestAndCipher(messageBytes, hashingAlgorithm, privateKey);
|
|
|
|
PublicKey publicKey = DigitalSignatureUtils.getPublicKey(receiverKeyStore, password, storeType, receiverAlias);
|
|
boolean isCorrect = DigitalSignatureUtils.verify(messageBytes, signingAlgorithm, publicKey, encryptedMessageHash);
|
|
|
|
assertTrue(isCorrect);
|
|
}
|
|
|
|
}
|