![JAR search and dependency download from the Maven repository](/logo.png)
nl.open.jwtdependency.org.bouncycastle.crypto.test.ECIESKeyEncapsulationTest Maven / Gradle / Ivy
Go to download
Show more of this group Show more artifacts with this name
Show all versions of java-jwt-nodependencies Show documentation
Show all versions of java-jwt-nodependencies Show documentation
This is a drop in replacement for the auth0 java-jwt library (see https://github.com/auth0/java-jwt). This jar makes sure there are no external dependencies (e.g. fasterXml, Apacha Commons) needed. This is useful when deploying to an application server (e.g. tomcat with Alfreso or Pega).
The newest version!
package org.bouncycastle.crypto.test;
import java.security.SecureRandom;
import org.bouncycastle.asn1.sec.SECNamedCurves;
import org.bouncycastle.asn1.x9.X9ECParameters;
import org.bouncycastle.crypto.AsymmetricCipherKeyPair;
import org.bouncycastle.crypto.digests.SHA1Digest;
import org.bouncycastle.crypto.generators.ECKeyPairGenerator;
import org.bouncycastle.crypto.generators.KDF2BytesGenerator;
import org.bouncycastle.crypto.kems.ECIESKeyEncapsulation;
import org.bouncycastle.crypto.params.ECDomainParameters;
import org.bouncycastle.crypto.params.ECKeyGenerationParameters;
import org.bouncycastle.crypto.params.KeyParameter;
import org.bouncycastle.util.test.SimpleTest;
/**
* Tests for the ECIES Key Encapsulation Mechanism
*/
public class ECIESKeyEncapsulationTest
extends SimpleTest
{
public String getName()
{
return "ECIESKeyEncapsulation";
}
public void performTest()
throws Exception
{
// Set EC domain parameters and generate key pair
X9ECParameters spec = SECNamedCurves.getByName("secp224r1");
ECDomainParameters ecDomain = new ECDomainParameters(spec.getCurve(), spec.getG(), spec.getN());
ECKeyPairGenerator ecGen = new ECKeyPairGenerator();
ecGen.init(new ECKeyGenerationParameters(ecDomain, new SecureRandom()));
AsymmetricCipherKeyPair keys = ecGen.generateKeyPair();
// Set ECIES-KEM parameters
ECIESKeyEncapsulation kem;
KDF2BytesGenerator kdf = new KDF2BytesGenerator(new SHA1Digest());
SecureRandom rnd = new SecureRandom();
byte[] out = new byte[57];
KeyParameter key1, key2;
// Test basic ECIES-KEM
kem = new ECIESKeyEncapsulation(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 basic test");
}
// Test ECIES-KEM using new cofactor mode
kem = new ECIESKeyEncapsulation(kdf, rnd, true, false, false);
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 cofactor test");
}
// Test ECIES-KEM using old cofactor mode
kem = new ECIESKeyEncapsulation(kdf, rnd, false, true, false);
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 old cofactor test");
}
// Test ECIES-KEM using single hash mode
kem = new ECIESKeyEncapsulation(kdf, rnd, false, false, true);
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 single hash test");
}
// Test ECIES-KEM using new cofactor mode and single hash mode
kem = new ECIESKeyEncapsulation(kdf, rnd, true, false, true);
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 cofactor and single hash test");
}
// Test ECIES-KEM using old cofactor mode and single hash mode
kem = new ECIESKeyEncapsulation(kdf, rnd, false, true, true);
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 old cofactor and single hash test");
}
}
public static void main(
String[] args)
{
runTest(new ECIESKeyEncapsulationTest());
}
}
© 2015 - 2025 Weber Informatics LLC | Privacy Policy