[
https://issues.apache.org/jira/browse/WSS-300?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=13071966#comment-13071966
]
Linton Miller commented on WSS-300:
-----------------------------------
I should also point out that openssl can be used to independently verify the
desired value. The "-ocspid" option to openssl x509 will print the hex SHA-1
hash of the public key.
The following command line will use that to display what the generated SKI for
my example RSA key should be:
keytool -exportcert -keystore rsa2048.jks -alias test -storepass password |
openssl x509 -inform der -ocspid | grep 'Public key OCSP hash' | perl -ne
'split; print pack("H*",$_[4])' | base64
> SubjectKeyIidentifier (SKI) incorrectly calculated for 2048-bit RSA key
> -----------------------------------------------------------------------
>
> Key: WSS-300
> URL: https://issues.apache.org/jira/browse/WSS-300
> Project: WSS4J
> Issue Type: Bug
> Components: WSS4J Core
> Affects Versions: 1.5.11, 1.6.1
> Environment: Tomcat 5, Solaris 10, Java 1.4 and Tomcat 6, Win XP,
> Java 6
> Reporter: Linton Miller
> Assignee: Colm O hEigeartaigh
> Attachments: CryptoBase.java.patch, DERDecoder.java,
> X509SubjectPublicKeyInfo.java, X509SubjectPublicKeyInfo.java, broken.xml,
> client.wsdd, correct.xml, rsa2048.jks, test.cypto.properties
>
>
> The crypto function to get the SubjectKeyIdentifier from an X509Certificate
> has incorrect hard-coded assumptions about the size of the encoded
> information, meaning the calculation of the SKI from a 2048-bit RSA key is
> incorrect.
> The method
> org.apache.ws.security.components.crypto.CryptoBase.getSKIBytesFromCert does
> not parse the DER encoding of information, but just tries to pick out the
> piece of the byte array that corresponds to the content of interest. However,
> that approach fails because the DER encoding is variable length, depending on
> the size of the data being encoded. e.g. a 1024-bit key in a DER BIT STRING
> takes 4 bytes header + 140 bytes data to encode, whereas a 2048-bit key
> takes 5 bytes header + 270 bytes data; the header is one byte longer for the
> larger key, so the data starts at a different point in the array.
> To fix this, the DER data structures should be properly processed, reading
> the DER header bytes to determine the length of each data element (that also
> allows the generalization of handling any X.509 encoded public key, rather
> than just RSA keys as currently coded).
> Attached is a suggested patch (against WSS4J 1.6.1) that implements this
> idea: it processes the SubjectPublicKeyInfo and SubjectKeyIdentifier
> DER-encoded byte arrays according to their ASN.1 definitions from RFC
> 3280/5280 to pick out the desired data bytes.
--
This message is automatically generated by JIRA.
For more information on JIRA, see: http://www.atlassian.com/software/jira
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]