diff options
Diffstat (limited to 'eaaf_core_utils/src/test/java/at/gv/egiz/eaaf/core/test/builder/BpkBuilderTest.java')
-rw-r--r-- | eaaf_core_utils/src/test/java/at/gv/egiz/eaaf/core/test/builder/BpkBuilderTest.java | 73 |
1 files changed, 73 insertions, 0 deletions
diff --git a/eaaf_core_utils/src/test/java/at/gv/egiz/eaaf/core/test/builder/BpkBuilderTest.java b/eaaf_core_utils/src/test/java/at/gv/egiz/eaaf/core/test/builder/BpkBuilderTest.java index ccd452c5..bccab09f 100644 --- a/eaaf_core_utils/src/test/java/at/gv/egiz/eaaf/core/test/builder/BpkBuilderTest.java +++ b/eaaf_core_utils/src/test/java/at/gv/egiz/eaaf/core/test/builder/BpkBuilderTest.java @@ -1,12 +1,20 @@ package at.gv.egiz.eaaf.core.test.builder; +import java.security.InvalidAlgorithmParameterException; import java.security.InvalidKeyException; import java.security.KeyPair; import java.security.KeyPairGenerator; import java.security.NoSuchAlgorithmException; import java.security.NoSuchProviderException; +import java.security.PublicKey; +import java.security.SecureRandom; +import java.security.spec.ECGenParameterSpec; import org.apache.commons.lang3.RandomStringUtils; +import org.jose4j.jwe.ContentEncryptionAlgorithmIdentifiers; +import org.jose4j.jwe.JsonWebEncryption; +import org.jose4j.jwe.KeyManagementAlgorithmIdentifiers; +import org.jose4j.lang.JoseException; import org.junit.Assert; import org.junit.Before; import org.junit.Test; @@ -34,11 +42,76 @@ public class BpkBuilderTest { @Before public void initialize() throws NoSuchAlgorithmException, NoSuchProviderException { KeyPairGenerator keyGen = KeyPairGenerator.getInstance("RSA"); + keyGen.initialize(2048); keyPair = keyGen.generateKeyPair(); } @Test + public void encBpkTextualLength() throws EaafBuilderException, InvalidKeyException, NoSuchAlgorithmException, + NoSuchProviderException, InvalidAlgorithmParameterException, JoseException { + String bpk = "MDEyMzQ1Njc4OWFiY2RIZg+CU"; + String target = EaafConstants.URN_PREFIX_CDID + "AA"; + + printResult("Legacy RSA 1024:", BpkBuilder.encryptBpk(bpk, target, generateRsaPubKey(1024))); + printResult("Legacy RSA 2048:", BpkBuilder.encryptBpk(bpk, target, generateRsaPubKey(2048))); + printResult("Legacy RSA 3072:", BpkBuilder.encryptBpk(bpk, target, generateRsaPubKey(3072))); + printResult("Legacy RSA 4096:", BpkBuilder.encryptBpk(bpk, target, generateRsaPubKey(4096))); + + + bpk = "V1::urn:publicid:gv.at:cdid+BW::MDEyMzQ1Njc 4OW FiY2RIZg+CU&g=::2004-01-22T20:57:12"; + + printResult("RSA 2048:", createJsonEnc(generateRsaPubKey(2048), bpk, target, + KeyManagementAlgorithmIdentifiers.RSA_OAEP_256)); + printResult("RSA 3072:", createJsonEnc(generateRsaPubKey(3072), bpk, target, + KeyManagementAlgorithmIdentifiers.RSA_OAEP_256)); + printResult("RSA 4096:", createJsonEnc(generateRsaPubKey(4048), bpk, target, + KeyManagementAlgorithmIdentifiers.RSA_OAEP_256)); + + printResult("ECC 256:", createJsonEnc(generateEcPubKey("secp256r1"), bpk, target, + KeyManagementAlgorithmIdentifiers.ECDH_ES_A128KW)); + printResult("ECC 384:", createJsonEnc(generateEcPubKey("secp384r1"), bpk, target, + KeyManagementAlgorithmIdentifiers.ECDH_ES_A128KW)); + printResult("ECC 521:", createJsonEnc(generateEcPubKey("secp521r1"), bpk, target, + KeyManagementAlgorithmIdentifiers.ECDH_ES_A128KW)); + + System.out.println("Finished!"); + } + + private void printResult(String prefix, String body) { + System.out.println(prefix + " " + body.length() + " full:" + body); + + } + + private String createJsonEnc(PublicKey pubKey, String bpk, String target, String keyWrapAlg) throws JoseException { + JsonWebEncryption enc = new JsonWebEncryption(); + enc.setKey(pubKey); + enc.setPayload(bpk); + enc.setAlgorithmHeaderValue(keyWrapAlg); + enc.setEncryptionMethodHeaderParameter(ContentEncryptionAlgorithmIdentifiers.AES_128_GCM); + enc.setKeyIdHeaderValue("myFirstKey"); + enc.setContentTypeHeaderValue(target); + return enc.getCompactSerialization(); + + } + + private PublicKey generateRsaPubKey(int size) throws NoSuchAlgorithmException { + KeyPairGenerator keyGen3 = KeyPairGenerator.getInstance("RSA"); + keyGen3.initialize(size); + return keyGen3.generateKeyPair().getPublic(); + + } + + private PublicKey generateEcPubKey(String curve) throws NoSuchAlgorithmException, + NoSuchProviderException, InvalidAlgorithmParameterException { + KeyPairGenerator generator = KeyPairGenerator.getInstance("EC"); + ECGenParameterSpec ecSpec = new ECGenParameterSpec(curve); + generator.initialize(ecSpec, new SecureRandom()); + return generator.generateKeyPair().getPublic(); + + } + + @Test public void encBpkWrongTarget() throws InvalidKeyException { String bpk = RandomStringUtils.randomAlphanumeric(25); String target = RandomStringUtils.randomAlphanumeric(25); |