aboutsummaryrefslogtreecommitdiffstats
path: root/libraries/spongycastle/pkix/src/test/java/org/spongycastle/openssl/test/WriterTest.java
diff options
context:
space:
mode:
Diffstat (limited to 'libraries/spongycastle/pkix/src/test/java/org/spongycastle/openssl/test/WriterTest.java')
-rw-r--r--libraries/spongycastle/pkix/src/test/java/org/spongycastle/openssl/test/WriterTest.java248
1 files changed, 0 insertions, 248 deletions
diff --git a/libraries/spongycastle/pkix/src/test/java/org/spongycastle/openssl/test/WriterTest.java b/libraries/spongycastle/pkix/src/test/java/org/spongycastle/openssl/test/WriterTest.java
deleted file mode 100644
index ac67e6a0b..000000000
--- a/libraries/spongycastle/pkix/src/test/java/org/spongycastle/openssl/test/WriterTest.java
+++ /dev/null
@@ -1,248 +0,0 @@
-package org.spongycastle.openssl.test;
-
-import java.io.ByteArrayOutputStream;
-import java.io.IOException;
-import java.io.OutputStreamWriter;
-import java.io.StringReader;
-import java.io.StringWriter;
-import java.math.BigInteger;
-import java.security.KeyFactory;
-import java.security.KeyPair;
-import java.security.KeyPairGenerator;
-import java.security.PrivateKey;
-import java.security.SecureRandom;
-import java.security.Security;
-import java.security.spec.DSAParameterSpec;
-import java.security.spec.PKCS8EncodedKeySpec;
-import java.security.spec.RSAPrivateCrtKeySpec;
-import java.util.List;
-
-import org.spongycastle.jce.provider.BouncyCastleProvider;
-import org.spongycastle.openssl.PEMEncryptedKeyPair;
-import org.spongycastle.openssl.PEMKeyPair;
-import org.spongycastle.openssl.PEMParser;
-import org.spongycastle.openssl.PEMWriter;
-import org.spongycastle.openssl.PasswordFinder;
-import org.spongycastle.openssl.jcajce.JcaMiscPEMGenerator;
-import org.spongycastle.openssl.jcajce.JcaPEMKeyConverter;
-import org.spongycastle.openssl.jcajce.JcePEMDecryptorProviderBuilder;
-import org.spongycastle.openssl.jcajce.JcePEMEncryptorBuilder;
-import org.spongycastle.util.encoders.Base64;
-import org.spongycastle.util.io.pem.PemHeader;
-import org.spongycastle.util.io.pem.PemObject;
-import org.spongycastle.util.test.SimpleTest;
-
-public class WriterTest
- extends SimpleTest
-{
- private static final SecureRandom random = new SecureRandom();
-
- // TODO Replace with a randomly generated key each test run?
- private static final RSAPrivateCrtKeySpec testRsaKeySpec = new RSAPrivateCrtKeySpec(
- new BigInteger("b4a7e46170574f16a97082b22be58b6a2a629798419be12872a4bdba626cfae9900f76abfb12139dce5de56564fab2b6543165a040c606887420e33d91ed7ed7", 16),
- new BigInteger("11", 16),
- new BigInteger("9f66f6b05410cd503b2709e88115d55daced94d1a34d4e32bf824d0dde6028ae79c5f07b580f5dce240d7111f7ddb130a7945cd7d957d1920994da389f490c89", 16),
- new BigInteger("c0a0758cdf14256f78d4708c86becdead1b50ad4ad6c5c703e2168fbf37884cb", 16),
- new BigInteger("f01734d7960ea60070f1b06f2bb81bfac48ff192ae18451d5e56c734a5aab8a5", 16),
- new BigInteger("b54bb9edff22051d9ee60f9351a48591b6500a319429c069a3e335a1d6171391", 16),
- new BigInteger("d3d83daf2a0cecd3367ae6f8ae1aeb82e9ac2f816c6fc483533d8297dd7884cd", 16),
- new BigInteger("b8f52fc6f38593dabb661d3f50f8897f8106eee68b1bce78a95b132b4e5b5d19", 16));
-
- private static final DSAParameterSpec testDsaParams = new DSAParameterSpec(
- new BigInteger("7434410770759874867539421675728577177024889699586189000788950934679315164676852047058354758883833299702695428196962057871264685291775577130504050839126673"),
- new BigInteger("1138656671590261728308283492178581223478058193247"),
- new BigInteger("4182906737723181805517018315469082619513954319976782448649747742951189003482834321192692620856488639629011570381138542789803819092529658402611668375788410"));
-
- private static final PKCS8EncodedKeySpec testEcDsaKeySpec = new PKCS8EncodedKeySpec(
- Base64.decode("MIG/AgEAMBAGByqGSM49AgEGBSuBBAAiBIGnMIGkAgEBBDCSBU3vo7ieeKs0ABQamy/ynxlde7Ylr8HmyfLaNnMr" +
- "jAwPp9R+KMUEhB7zxSAXv9KgBwYFK4EEACKhZANiAQQyyolMpg+TyB4o9kPWqafHIOe8o9K1glus+w2sY8OIPQQWGb5i5LdAyi" +
- "/SscwU24rZM0yiL3BHodp9ccwyhLrFYgXJUOQcCN2dno1GMols5497in5gL5+zn0yMsRtyv5o=")
- );
-
- private static final char[] testPassword = "bouncy".toCharArray();
-
- private static final String[] algorithms = new String[]
- {
- "AES-128-CBC", "AES-128-CFB", "AES-128-ECB", "AES-128-OFB",
- "AES-192-CBC", "AES-192-CFB", "AES-192-ECB", "AES-192-OFB",
- "AES-256-CBC", "AES-256-CFB", "AES-256-ECB", "AES-256-OFB",
- "BF-CBC", "BF-CFB", "BF-ECB", "BF-OFB",
- "DES-CBC", "DES-CFB", "DES-ECB", "DES-OFB",
- "DES-EDE", "DES-EDE-CBC", "DES-EDE-CFB", "DES-EDE-ECB", "DES-EDE-OFB",
- "DES-EDE3", "DES-EDE3-CBC", "DES-EDE3-CFB", "DES-EDE3-ECB", "DES-EDE3-OFB",
- "RC2-CBC", "RC2-CFB", "RC2-ECB", "RC2-OFB",
- "RC2-40-CBC",
- "RC2-64-CBC",
- };
-
- private class Password
- implements PasswordFinder
- {
- private final char[] password;
-
- public Password(
- char[] word)
- {
- this.password = (char[]) word.clone();
- }
-
- public char[] getPassword()
- {
- return (char[]) password.clone();
- }
- }
-
- public String getName()
- {
- return "PEMWriterTest";
- }
-
- public void performTest()
- throws Exception
- {
- final String provider = "SC";
-
- KeyPairGenerator dsaKpg = KeyPairGenerator.getInstance("DSA", provider);
- dsaKpg.initialize(testDsaParams, random);
-
- KeyPair dsaKp = dsaKpg.generateKeyPair();
- PrivateKey testDsaKey = dsaKp.getPrivate();
-
- doWriteReadTest(testDsaKey, provider);
- doWriteReadTests(testDsaKey, provider, algorithms);
-
- KeyFactory fact = KeyFactory.getInstance("RSA", provider);
- PrivateKey testRsaKey = fact.generatePrivate(testRsaKeySpec);
-
- doWriteReadTest(testRsaKey, provider);
- doWriteReadTests(testRsaKey, provider, algorithms);
-
- fact = KeyFactory.getInstance("ECDSA", provider);
- PrivateKey testEcDsaKey = fact.generatePrivate(testEcDsaKeySpec);
-
- doWriteReadTest(testEcDsaKey, provider);
- doWriteReadTests(testEcDsaKey, provider, algorithms);
-
- KeyPairGenerator kpGen = KeyPairGenerator.getInstance("ECDSA", "SC");
-
- kpGen.initialize(239);
-
- PrivateKey privKey = kpGen.generateKeyPair().getPrivate();
-
- doWriteReadTest(privKey, provider);
- doWriteReadTests(privKey, "SC", algorithms);
-
- // override test
- PEMWriter pWrt = new PEMWriter(new OutputStreamWriter(new ByteArrayOutputStream()));
-
- Object o = new PemObject("FRED", new byte[100]);
- pWrt.writeObject(o);
-
- pWrt.close();
- }
-
- private void doWriteReadTests(
- PrivateKey akp,
- String provider,
- String[] algorithms)
- throws IOException
- {
- for (int i = 0; i < algorithms.length; ++i)
- {
- doWriteReadTest(akp, provider, algorithms[i]);
- }
- }
-
- private void doWriteReadTest(
- PrivateKey akp,
- String provider)
- throws IOException
- {
- StringWriter sw = new StringWriter();
- PEMWriter pw = new PEMWriter(sw);
-
- pw.writeObject(akp);
- pw.close();
-
- String data = sw.toString();
-
- PEMParser pr = new PEMParser(new StringReader(data));
-
- Object o = pr.readObject();
-
- if (o == null || !(o instanceof PEMKeyPair))
- {
- fail("Didn't find OpenSSL key");
- }
-
- KeyPair kp = new JcaPEMKeyConverter().setProvider("SC").getKeyPair((PEMKeyPair)o);
- PrivateKey privKey = kp.getPrivate();
-
- if (!akp.equals(privKey))
- {
- fail("Failed to read back test");
- }
- }
-
- private void doWriteReadTest(
- PrivateKey akp,
- String provider,
- String algorithm)
- throws IOException
- {
- StringWriter sw = new StringWriter();
- PEMWriter pw = new PEMWriter(sw);
-
- pw.writeObject(new JcaMiscPEMGenerator(akp, new JcePEMEncryptorBuilder(algorithm).setSecureRandom(random).build(testPassword)));
- pw.close();
-
- String data = sw.toString();
-
- PEMParser pRaw = new PEMParser(new StringReader(data));
- PemObject pemObject = pRaw.readPemObject();
-
- List headers = pemObject.getHeaders();
-
- for (int i = 0; i != headers.size(); i++)
- {
- PemHeader pemH = (PemHeader)headers.get(i);
-
- if (pemH.getName().equals("DEK-Info"))
- {
- String v = pemH.getValue();
- for (int j = 0; j != v.length(); j++)
- {
- if (v.charAt(j) >= 'a' && v.charAt(j) <= 'f')
- {
- fail("lower case detected in DEK-Info: " + v);
- }
- }
- }
- }
-
- PEMParser pr = new PEMParser(new StringReader(data));
-
- Object o = pr.readObject();
-
- if (o == null || !(o instanceof PEMEncryptedKeyPair))
- {
- fail("Didn't find OpenSSL key");
- }
-
- KeyPair kp = new JcaPEMKeyConverter().setProvider("SC").getKeyPair(((PEMEncryptedKeyPair)o).decryptKeyPair(new JcePEMDecryptorProviderBuilder().setProvider("SC").build(testPassword)));
- PrivateKey privKey = kp.getPrivate();
-
- if (!akp.equals(privKey))
- {
- fail("Failed to read back test key encoded with: " + algorithm);
- }
- }
-
- public static void main(
- String[] args)
- {
- Security.addProvider(new BouncyCastleProvider());
-
- runTest(new WriterTest());
- }
-}