Hi all,

we have an interoperablity issue between WSS4J and WSE. And we believe to have 
found a bug in WSS4J. Please have a look at it and give some advice.

Scenario: We want to send an encrypted and signed message from WSE to WSS4J. I 
created a key pair with keytool on Java SE 5.0 and exported a certificate from 
my keystore (JCEKS). This certificate was successfully imported on the .NET 
side. The SOAP message that WSE sends to WSS4J looks ok. 

However, WSE uses a <SecurityTokenReference> with a <KeyIdentifier> element. 
When this <SecurityTokenReference> is processed by WSS4J a NullPointerException 
is thrown in Class Merlin, method getSKIBytesFromCert(X509Certificate cert)

Reason for the exception: look at this code from getSKIBytesFromCert...

byte[] derEncodedValue = cert.getExtensionValue(SKI_OID);
if (cert.getVersion() < 3) {...}
byte abyte0[] = new byte[derEncodedValue.length - 4];

The return value of cert.getExtensionValue(SKI_OID) is null in our case. Thus, 
the third line fails. As stated in Sun's API documentation, null return values 
can happen.

http://java.sun.com/j2se/1.4.2/docs/api/java/security/cert/X509Extension.html#getExtensionValue(java.lang.String)

1) This should be enhanced so that NullPointerExceptions can't happen anymore.
2) What does it mean that null is returned? Does this mean that the certificate 
doesn't have an extension? 
3) Would it be still a valid certificate or is it invalid without the extension?
4) How can we resolve this issue? Do the certificates created by 
keytool/Java5.0 have interop issues?
5) (maybe off-topic): does anybody know how .NET can be configured to send a 
<SecurityTokenReference> with <X509IssuerSerial> instead of <KeyIdentifier>?

Thank you very much,
Thilo

_________________________________________________________________________
Mit der Gruppen-SMS von WEB.DE FreeMail können Sie eine SMS an alle 
Freunde gleichzeitig schicken: http://freemail.web.de/features/?mc=021179



Reply via email to