8051972: sun/security/pkcs11/ec/ReadCertificates.java fails intermittently
authorvinnie
Tue, 05 Aug 2014 13:59:15 +0100
changeset 25811 f4d231e2c1bf
parent 25810 e8971dbd447d
child 25812 5412629bed70
8051972: sun/security/pkcs11/ec/ReadCertificates.java fails intermittently Reviewed-by: mullan
jdk/test/sun/security/pkcs11/ec/ReadCertificates.java
--- a/jdk/test/sun/security/pkcs11/ec/ReadCertificates.java	Mon Aug 04 15:34:12 2014 -0700
+++ b/jdk/test/sun/security/pkcs11/ec/ReadCertificates.java	Tue Aug 05 13:59:15 2014 +0100
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2006, 2013, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2006, 2014, Oracle and/or its affiliates. All rights reserved.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
  * This code is free software; you can redistribute it and/or modify it
@@ -23,7 +23,7 @@
 
 /**
  * @test
- * @bug 6405536 6414980
+ * @bug 6405536 6414980 8051972
  * @summary Make sure that we can parse certificates using various named curves
  *   and verify their signatures
  * @author Andreas Sterbenz
@@ -153,8 +153,14 @@
                 signer = getRandomCert(certList);
             } while (cert.getIssuerX500Principal().equals(signer.getSubjectX500Principal()));
             try {
-                cert.verify(signer.getPublicKey());
-                throw new Exception("Verified invalid signature");
+                PublicKey signerPublicKey = signer.getPublicKey();
+                cert.verify(signerPublicKey);
+                // Ignore false positives
+                if (cert.getPublicKey().equals(signerPublicKey)) {
+                    System.out.println("OK: self-signed certificate detected");
+                } else {
+                    throw new Exception("Verified invalid signature");
+                }
             } catch (SignatureException e) {
                 System.out.println("OK: " + e);
             } catch (InvalidKeyException e) {