[BAEL-16005] moved articles from libraries to libraries-security and libraries testing. Renamed TinkUnitTest to TinkLiveTest failing due InvalidKeyException
This commit is contained in:
@@ -0,0 +1,103 @@
|
||||
package com.baeldung.tink;
|
||||
|
||||
import com.google.crypto.tink.*;
|
||||
import com.google.crypto.tink.aead.AeadConfig;
|
||||
import com.google.crypto.tink.aead.AeadFactory;
|
||||
import com.google.crypto.tink.aead.AeadKeyTemplates;
|
||||
import com.google.crypto.tink.config.TinkConfig;
|
||||
import com.google.crypto.tink.hybrid.HybridDecryptFactory;
|
||||
import com.google.crypto.tink.hybrid.HybridEncryptFactory;
|
||||
import com.google.crypto.tink.hybrid.HybridKeyTemplates;
|
||||
import com.google.crypto.tink.mac.MacFactory;
|
||||
import com.google.crypto.tink.mac.MacKeyTemplates;
|
||||
import com.google.crypto.tink.signature.PublicKeySignFactory;
|
||||
import com.google.crypto.tink.signature.PublicKeyVerifyFactory;
|
||||
import com.google.crypto.tink.signature.SignatureKeyTemplates;
|
||||
import org.junit.Assert;
|
||||
import org.junit.Test;
|
||||
|
||||
import java.security.GeneralSecurityException;
|
||||
|
||||
public class TinkLiveTest {
|
||||
|
||||
//need to download policy files and put them into ${java.home}/jre/lib/security/
|
||||
|
||||
private static final String PLAINTEXT = "BAELDUNG";
|
||||
private static final String DATA = "TINK";
|
||||
|
||||
@Test
|
||||
public void givenPlaintext_whenEncryptWithAead_thenPlaintextIsEncrypted() throws GeneralSecurityException {
|
||||
|
||||
AeadConfig.register();
|
||||
|
||||
KeysetHandle keysetHandle = KeysetHandle.generateNew(
|
||||
AeadKeyTemplates.AES256_GCM);
|
||||
|
||||
Aead aead = AeadFactory.getPrimitive(keysetHandle);
|
||||
|
||||
byte[] ciphertext = aead.encrypt(PLAINTEXT.getBytes(),
|
||||
DATA.getBytes());
|
||||
|
||||
Assert.assertNotEquals(PLAINTEXT, new String(ciphertext));
|
||||
}
|
||||
|
||||
@Test
|
||||
public void givenData_whenComputeMAC_thenVerifyMAC() throws GeneralSecurityException {
|
||||
|
||||
TinkConfig.register();
|
||||
|
||||
KeysetHandle keysetHandle = KeysetHandle.generateNew(
|
||||
MacKeyTemplates.HMAC_SHA256_128BITTAG);
|
||||
|
||||
Mac mac = MacFactory.getPrimitive(keysetHandle);
|
||||
|
||||
byte[] tag = mac.computeMac(DATA.getBytes());
|
||||
|
||||
mac.verifyMac(tag, DATA.getBytes());
|
||||
}
|
||||
|
||||
@Test
|
||||
public void givenData_whenSignData_thenVerifySignature() throws GeneralSecurityException {
|
||||
|
||||
TinkConfig.register();
|
||||
|
||||
KeysetHandle privateKeysetHandle = KeysetHandle.generateNew(
|
||||
SignatureKeyTemplates.ECDSA_P256);
|
||||
|
||||
PublicKeySign signer = PublicKeySignFactory.getPrimitive(privateKeysetHandle);
|
||||
|
||||
byte[] signature = signer.sign(DATA.getBytes());
|
||||
|
||||
KeysetHandle publicKeysetHandle =
|
||||
privateKeysetHandle.getPublicKeysetHandle();
|
||||
|
||||
PublicKeyVerify verifier = PublicKeyVerifyFactory.getPrimitive(publicKeysetHandle);
|
||||
|
||||
verifier.verify(signature, DATA.getBytes());
|
||||
}
|
||||
|
||||
@Test
|
||||
public void givenPlaintext_whenEncryptWithHybridEncryption_thenVerifyDecryptedIsEqual() throws GeneralSecurityException {
|
||||
|
||||
TinkConfig.register();
|
||||
|
||||
KeysetHandle privateKeysetHandle = KeysetHandle.generateNew(
|
||||
HybridKeyTemplates.ECIES_P256_HKDF_HMAC_SHA256_AES128_CTR_HMAC_SHA256);
|
||||
|
||||
KeysetHandle publicKeysetHandle = privateKeysetHandle.getPublicKeysetHandle();
|
||||
|
||||
HybridEncrypt hybridEncrypt = HybridEncryptFactory.getPrimitive(publicKeysetHandle);
|
||||
|
||||
HybridDecrypt hybridDecrypt = HybridDecryptFactory.getPrimitive(privateKeysetHandle);
|
||||
|
||||
String contextInfo = "Tink";
|
||||
|
||||
byte[] ciphertext = hybridEncrypt.encrypt(PLAINTEXT.getBytes(), contextInfo.getBytes());
|
||||
|
||||
byte[] plaintextDecrypted = hybridDecrypt.decrypt(ciphertext, contextInfo.getBytes());
|
||||
|
||||
Assert.assertEquals(PLAINTEXT,new String(plaintextDecrypted));
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user