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
/**
* 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());
}
}