diff options
Diffstat (limited to 'libraries/spongycastle/prov/src/test/java/org/spongycastle/jce/provider/test/WrapTest.java')
-rw-r--r-- | libraries/spongycastle/prov/src/test/java/org/spongycastle/jce/provider/test/WrapTest.java | 76 |
1 files changed, 76 insertions, 0 deletions
diff --git a/libraries/spongycastle/prov/src/test/java/org/spongycastle/jce/provider/test/WrapTest.java b/libraries/spongycastle/prov/src/test/java/org/spongycastle/jce/provider/test/WrapTest.java new file mode 100644 index 000000000..5cf112441 --- /dev/null +++ b/libraries/spongycastle/prov/src/test/java/org/spongycastle/jce/provider/test/WrapTest.java @@ -0,0 +1,76 @@ +package org.spongycastle.jce.provider.test; + +import java.security.Key; +import java.security.KeyPair; +import java.security.KeyPairGenerator; +import java.security.MessageDigest; +import java.security.PrivateKey; +import java.security.PublicKey; +import java.security.SecureRandom; +import java.security.Security; + +import javax.crypto.Cipher; +import javax.crypto.KeyGenerator; + +import org.spongycastle.jce.provider.BouncyCastleProvider; +import org.spongycastle.util.test.SimpleTestResult; +import org.spongycastle.util.test.Test; +import org.spongycastle.util.test.TestResult; + +public class WrapTest + implements Test +{ + public TestResult perform() + { + try + { + Cipher cipher = Cipher.getInstance("DES/ECB/PKCS5Padding", "SC"); + KeyPairGenerator fact = KeyPairGenerator.getInstance("RSA", "SC"); + fact.initialize(512, new SecureRandom()); + + KeyPair keyPair = fact.generateKeyPair(); + + PrivateKey priKey = keyPair.getPrivate(); + PublicKey pubKey = keyPair.getPublic(); + + KeyGenerator keyGen = KeyGenerator.getInstance("DES", "SC"); + Key wrapKey = keyGen.generateKey(); + cipher.init(Cipher.WRAP_MODE, wrapKey); + byte[] wrappedKey = cipher.wrap(priKey); + + cipher.init(Cipher.UNWRAP_MODE, wrapKey); + Key key = cipher.unwrap(wrappedKey, "RSA", Cipher.PRIVATE_KEY); + + if (!MessageDigest.isEqual(priKey.getEncoded(), key.getEncoded())) + { + return new SimpleTestResult(false, "Unwrapped key does not match"); + } + + return new SimpleTestResult(true, getName() + ": Okay"); + } + catch (Exception e) + { + return new SimpleTestResult(false, getName() + ": exception - " + e.toString(), e); + } + } + + public String getName() + { + return "WrapTest"; + } + + public static void main( + String[] args) + { + Security.addProvider(new BouncyCastleProvider()); + + Test test = new WrapTest(); + TestResult result = test.perform(); + + System.out.println(result.toString()); + if (result.getException() != null) + { + result.getException().printStackTrace(); + } + } +} |