org.bouncycastle.crypto.test.RSAKeyEncapsulationTest Maven / Gradle / Ivy
Go to download
Show more of this group Show more artifacts with this name
Show all versions of bcprov-jdk15to18 Show documentation
Show all versions of bcprov-jdk15to18 Show documentation
The Bouncy Castle Crypto package is a Java implementation of cryptographic algorithms. This jar contains JCE provider and lightweight API for the Bouncy Castle Cryptography APIs for JDK 1.5 to JDK 1.8.
package org.bouncycastle.crypto.test;
import java.math.BigInteger;
import java.security.SecureRandom;
import org.bouncycastle.crypto.AsymmetricCipherKeyPair;
import org.bouncycastle.crypto.digests.SHA1Digest;
import org.bouncycastle.crypto.generators.KDF2BytesGenerator;
import org.bouncycastle.crypto.generators.RSAKeyPairGenerator;
import org.bouncycastle.crypto.kems.RSAKeyEncapsulation;
import org.bouncycastle.crypto.params.KeyParameter;
import org.bouncycastle.crypto.params.RSAKeyGenerationParameters;
import org.bouncycastle.util.test.SimpleTest;
/**
* Tests for the RSA Key Encapsulation Mechanism
*/
public class RSAKeyEncapsulationTest
extends SimpleTest
{
public String getName()
{
return "RSAKeyEncapsulation";
}
public void performTest()
throws Exception
{
// Generate RSA key pair
RSAKeyPairGenerator rsaGen = new RSAKeyPairGenerator();
rsaGen.init(new RSAKeyGenerationParameters(BigInteger.valueOf(65537), new SecureRandom(), 1024, 5));
AsymmetricCipherKeyPair keys = rsaGen.generateKeyPair();
// Set RSA-KEM parameters
RSAKeyEncapsulation kem;
KDF2BytesGenerator kdf = new KDF2BytesGenerator(new SHA1Digest());
SecureRandom rnd = new SecureRandom();
byte[] out = new byte[128];
KeyParameter key1, key2;
// Test RSA-KEM
kem = new RSAKeyEncapsulation(kdf, rnd);
kem.init(keys.getPublic());
key1 = (KeyParameter)kem.encrypt(out, 128);
kem.init(keys.getPrivate());
key2 = (KeyParameter)kem.decrypt(out, 128);
if (!areEqual(key1.getKey(), key2.getKey()))
{
fail("failed test");
}
}
public static void main(
String[] args)
{
runTest(new RSAKeyEncapsulationTest());
}
}