I'm attempting to use the 1.4.1 Java reference implementation to process an XML KeyInfo element and am running into an issue with the KeyValue object returned. At the moment, I can have a DSAKeyValue, an RSAKeyValue, or an ECDSAKeyValue element in the KeyValue element. The current DOMKeyValue implementation handles the DSA and RSA keys but not the ECDSA keys - that's OK.
The problem comes when I attempt to cast the KeyValue object returned to a DOMStructure object to get the DOM Node (using DOMStructure.getNode) so I can process the ECDSA key myself ... I get a ClassCastException because the DOMKeyValue object extends org.jcp.xml.dsig.internal.dom.DOMStructure instead of extending javax.xml.crypto.dom.DOMStructure. The DOMKeyValue implementation keeps a reference to the unsupported javax.xml.crypto.dom.DOMStructure but doesn't provide a means of accessing it and org.jcp.xml.dsig.internal.dom.DOMStructure doesn't provide access to the underlying DOM Node. Short of processing the KeyInfo element myself, does anyone have any suggestions for getting around this limitation? [My application is targeted at Java 5 -- I'm just trying to use as much "standard" XML code as possible at this point.] I don't know the history of this capability of the library ... am I just trying to use this capability of the library too soon? (My expectation is that any XMLStructure object returned from a getContents call built using a DOM factory would be castable to a DOMStructure object so I can make a getNode call.) Clifford