Hi Christoph,

On 7/11/17 5:43 AM, Langer, Christoph wrote:
Hi,

I'd like to ping you again upon that question. In the meanwhile I have produced 
a standalone test case and could verify that changing to x509Cert vs. the 
original cert for obtaining the SigAlgName would be a fix. I can share the test 
with you, however, you'll need the security provider 'IAIK' which is not 
OpenSource but can be obtained for free for educational/research purposes here 
[1].

Shall I open a Bug for that and propose a fix? Or is using the x509Cert at this 
place the wrong thing to do here for reasons? I'd appreciate some feedback.

Technically, I don't think this is a bug. IAIK is using a non-standard algorithm for the signature algorithm of the certificate. The Standard Algorithm Names specification [1] says that "SHA1withRSA" is the correct name.

The JDK algorithm constraints implementation should not have to accommodate non-compliant certificates.

Tony and I don't quite recall why this change was made as part of JDK-8174849, but in general the conversion to sun.security.x509.X509CertImpl is done so that we can access parts of the certificate in a more performance friendly manner or if they are not accessible via the standard APIs. This is not one of those cases. However, I can't think of any specific reason right now we could not use X509CertImpl instead but would like to think about it some more.

Have you asked IAIK about their non-compliance?

Thanks,
Sean

[1] http://download.java.net/java/jdk9/docs/specs/security/standard-names.html#signature-algorithms


Thanks & Best regards
Christoph


[1] http://jcewww.iaik.tu-graz.ac.at/sic/Products/Core_Crypto_Toolkits/JCA_JCE
-----Original Message-----
From: Langer, Christoph
Sent: Sonntag, 9. Juli 2017 07:57
To: 'Anthony Scarpino' <[email protected]>; 'Sean Mullan'
<[email protected]>
Cc: OpenJDK Security <[email protected]>; 'Dieter Bratko'
<[email protected]>
Subject: RE: [RFR] 8174849: Change SHA1 certpath restrictions - issue with 3rd
party JCE provider

Hi Tony et. al.,

I'm wondering why in the commit for 8174849
(http://hg.openjdk.java.net/jdk9/dev/jdk/rev/d911fe42d2da) this line
sneaked in:

---
a/src/java.base/share/classes/sun/security/provider/certpath/AlgorithmChe
cker.java       Wed Feb 15 12:11:03 2017 -0800
+++
b/src/java.base/share/classes/sun/security/provider/certpath/AlgorithmCh
ecker.java      Wed Feb 15 12:55:20 2017 -0800
@@ -276,7 +276,7 @@
          AlgorithmParameters currSigAlgParams = algorithmId.getParameters();
          PublicKey currPubKey = cert.getPublicKey();
-        String currSigAlg = x509Cert.getSigAlgName();
+        String currSigAlg = ((X509Certificate)cert).getSigAlgName();

          // Check the signature algorithm and parameters against constraints.
          if (!constraints.permits(SIGNATURE_PRIMITIVE_SET, currSigAlg,

The proposed webrev only contains the change to java.security and there is
no other hint on that anywhere public.

I'm asking because I'm seeing an issue with a 3rd party JCE provider at the
moment. There is an "SHA1withRSA" certificate involved but the provider in
use at my customer returns the String "SHA1/RSA" as SigAlgName. Don't
know how much this conforms with the spec, but it is as it is. So the permits
check will fail with that String. I believe, if the SigAlgName would be taken
from the converted x509Cert as before, we'd get SHA1withRSA and would be
fine, though I didn't test that yet. So, what speaks against that line being
reverted?

Thanks & Best regards
Christoph

-----Original Message-----
From: security-dev [mailto:[email protected]] On
Behalf Of Anthony Scarpino
Sent: Montag, 13. Februar 2017 22:48
To: OpenJDK Security <[email protected]>
Subject: [RFR] 8174849: Change SHA1 certpath restrictions

Hi,

I need a quick review on a simple certpath config change.

http://cr.openjdk.java.net/~ascarpino/8174849/webrev/

thanks

Tony

Reply via email to