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