< prev index next >

test/jdk/java/security/KeyPairGenerator/SolarisShortDSA.java

Print this page
rev 59107 : imported patch security


  26  * @bug 7081411
  27  * @summary DSA keypair generation affected by Solaris bug
  28  * @modules java.base/sun.security.provider
  29  */
  30 
  31 import java.security.KeyPair;
  32 import java.security.KeyPairGenerator;
  33 import java.security.Signature;
  34 import sun.security.provider.DSAPrivateKey;
  35 
  36 public class SolarisShortDSA {
  37     static byte[] data = new byte[0];
  38     public static void main(String args[]) throws Exception {
  39         for (int i=0; i<10000; i++) {
  40             KeyPairGenerator kpg = KeyPairGenerator.getInstance("DSA");
  41             KeyPair kp = kpg.generateKeyPair();
  42             DSAPrivateKey dpk = (DSAPrivateKey)kp.getPrivate();
  43             int len = dpk.getX().bitLength();
  44             if (len <= 152) {
  45                 if (!use(kp)) {
  46                     String os = System.getProperty("os.name");
  47                     // Solaris bug, update the following line once it's fixed
  48                     if (os.equals("SunOS")) {
  49                         throw new IllegalStateException(
  50                                 "Don't panic. This is a Solaris bug");
  51                     } else {
  52                         throw new RuntimeException("Real test failure");
  53                     }
  54                 }
  55                 break;
  56             }
  57         }
  58     }
  59 
  60     static boolean use(KeyPair kp) throws Exception {
  61         Signature sig = Signature.getInstance("SHA1withDSA");
  62         sig.initSign(kp.getPrivate());
  63         sig.update(data);
  64         byte[] signed = sig.sign();
  65         Signature sig2 = Signature.getInstance("SHA1withDSA");
  66         sig2.initVerify(kp.getPublic());
  67         sig2.update(data);
  68         return sig2.verify(signed);
  69    }
  70 }


  26  * @bug 7081411
  27  * @summary DSA keypair generation affected by Solaris bug
  28  * @modules java.base/sun.security.provider
  29  */
  30 
  31 import java.security.KeyPair;
  32 import java.security.KeyPairGenerator;
  33 import java.security.Signature;
  34 import sun.security.provider.DSAPrivateKey;
  35 
  36 public class SolarisShortDSA {
  37     static byte[] data = new byte[0];
  38     public static void main(String args[]) throws Exception {
  39         for (int i=0; i<10000; i++) {
  40             KeyPairGenerator kpg = KeyPairGenerator.getInstance("DSA");
  41             KeyPair kp = kpg.generateKeyPair();
  42             DSAPrivateKey dpk = (DSAPrivateKey)kp.getPrivate();
  43             int len = dpk.getX().bitLength();
  44             if (len <= 152) {
  45                 if (!use(kp)) {






  46                     throw new RuntimeException("Real test failure");

  47                 }
  48                 break;
  49             }
  50         }
  51     }
  52 
  53     static boolean use(KeyPair kp) throws Exception {
  54         Signature sig = Signature.getInstance("SHA1withDSA");
  55         sig.initSign(kp.getPrivate());
  56         sig.update(data);
  57         byte[] signed = sig.sign();
  58         Signature sig2 = Signature.getInstance("SHA1withDSA");
  59         sig2.initVerify(kp.getPublic());
  60         sig2.update(data);
  61         return sig2.verify(signed);
  62    }
  63 }
< prev index next >