< prev index next >

test/jdk/sun/security/pkcs11/ec/TestCurves.java

Print this page
rev 59107 : imported patch security


  40 import java.security.Signature;
  41 import java.security.spec.ECParameterSpec;
  42 import java.util.Arrays;
  43 import java.util.List;
  44 import java.util.Random;
  45 import javax.crypto.KeyAgreement;
  46 
  47 public class TestCurves extends PKCS11Test {
  48 
  49     public static void main(String[] args) throws Exception {
  50         main(new TestCurves(), args);
  51     }
  52 
  53     @Override
  54     protected boolean skipTest(Provider p) {
  55         if (p.getService("KeyAgreement", "ECDH") == null) {
  56             System.out.println("Not supported by provider, skipping");
  57             return true;
  58         }
  59 
  60         if (isBadNSSVersion(p) || isBadSolarisSparc(p)) {
  61             return true;
  62         }
  63 
  64         return false;
  65     }
  66 
  67     @Override
  68     public void main(Provider p) throws Exception {
  69         // Check if this is sparc for later failure avoidance.
  70         boolean sparc = false;
  71         if (props.getProperty("os.arch").equals("sparcv9")) {
  72             sparc = true;
  73             System.out.println("This is a sparcv9");
  74         }
  75 
  76         Random random = new Random();
  77         byte[] data = new byte[2048];
  78         random.nextBytes(data);
  79 
  80         List<ECParameterSpec> curves = getKnownCurves(p);
  81         for (ECParameterSpec params : curves) {
  82             System.out.println("Testing " + params + "...");
  83             KeyPairGenerator kpg = KeyPairGenerator.getInstance("EC", p);
  84             kpg.initialize(params);
  85             KeyPair kp1, kp2;
  86 
  87             kp1 = kpg.generateKeyPair();
  88             kp2 = kpg.generateKeyPair();
  89 
  90             testSigning(p, "SHA1withECDSA", data, kp1, kp2);
  91             // Check because Solaris ncp driver does not support these but
  92             // Solaris metaslot causes them to be run.
  93             try {
  94                 testSigning(p, "SHA224withECDSA", data, kp1, kp2);
  95                 testSigning(p, "SHA256withECDSA", data, kp1, kp2);
  96                 testSigning(p, "SHA384withECDSA", data, kp1, kp2);
  97                 testSigning(p, "SHA512withECDSA", data, kp1, kp2);
  98             } catch (ProviderException e) {
  99                 if (sparc) {
 100                     Throwable t = e.getCause();
 101                     if (t instanceof sun.security.pkcs11.wrapper.PKCS11Exception &&
 102                         t.getMessage().equals("CKR_ATTRIBUTE_VALUE_INVALID")) {
 103                         System.out.print("-Failure not uncommon.  Probably pre-T4.");
 104                     } else {
 105                         throw e;
 106                     }
 107                 } else {
 108                     throw e;
 109                 }
 110             }
 111             System.out.println();
 112 
 113             KeyAgreement ka1 = KeyAgreement.getInstance("ECDH", p);
 114             ka1.init(kp1.getPrivate());
 115             ka1.doPhase(kp2.getPublic(), true);
 116             byte[] secret1 = ka1.generateSecret();
 117 
 118             KeyAgreement ka2 = KeyAgreement.getInstance("ECDH", p);
 119             ka2.init(kp2.getPrivate());
 120             ka2.doPhase(kp1.getPublic(), true);
 121             byte[] secret2 = ka2.generateSecret();
 122 
 123             if (Arrays.equals(secret1, secret2) == false) {
 124                 throw new Exception("Secrets do not match");
 125             }
 126         }
 127 
 128         System.out.println("OK");
 129     }
 130 




  40 import java.security.Signature;
  41 import java.security.spec.ECParameterSpec;
  42 import java.util.Arrays;
  43 import java.util.List;
  44 import java.util.Random;
  45 import javax.crypto.KeyAgreement;
  46 
  47 public class TestCurves extends PKCS11Test {
  48 
  49     public static void main(String[] args) throws Exception {
  50         main(new TestCurves(), args);
  51     }
  52 
  53     @Override
  54     protected boolean skipTest(Provider p) {
  55         if (p.getService("KeyAgreement", "ECDH") == null) {
  56             System.out.println("Not supported by provider, skipping");
  57             return true;
  58         }
  59 
  60         if (isBadNSSVersion(p)) {
  61             return true;
  62         }
  63 
  64         return false;
  65     }
  66 
  67     @Override
  68     public void main(Provider p) throws Exception {







  69         Random random = new Random();
  70         byte[] data = new byte[2048];
  71         random.nextBytes(data);
  72 
  73         List<ECParameterSpec> curves = getKnownCurves(p);
  74         for (ECParameterSpec params : curves) {
  75             System.out.println("Testing " + params + "...");
  76             KeyPairGenerator kpg = KeyPairGenerator.getInstance("EC", p);
  77             kpg.initialize(params);
  78             KeyPair kp1, kp2;
  79 
  80             kp1 = kpg.generateKeyPair();
  81             kp2 = kpg.generateKeyPair();
  82 
  83             testSigning(p, "SHA1withECDSA", data, kp1, kp2);



  84             testSigning(p, "SHA224withECDSA", data, kp1, kp2);
  85             testSigning(p, "SHA256withECDSA", data, kp1, kp2);
  86             testSigning(p, "SHA384withECDSA", data, kp1, kp2);
  87             testSigning(p, "SHA512withECDSA", data, kp1, kp2);













  88             System.out.println();
  89 
  90             KeyAgreement ka1 = KeyAgreement.getInstance("ECDH", p);
  91             ka1.init(kp1.getPrivate());
  92             ka1.doPhase(kp2.getPublic(), true);
  93             byte[] secret1 = ka1.generateSecret();
  94 
  95             KeyAgreement ka2 = KeyAgreement.getInstance("ECDH", p);
  96             ka2.init(kp2.getPrivate());
  97             ka2.doPhase(kp1.getPublic(), true);
  98             byte[] secret2 = ka2.generateSecret();
  99 
 100             if (Arrays.equals(secret1, secret2) == false) {
 101                 throw new Exception("Secrets do not match");
 102             }
 103         }
 104 
 105         System.out.println("OK");
 106     }
 107 


< prev index next >