You are viewing a plain text version of this content. The canonical link for it is here.
Posted to fx-dev@ws.apache.org by "EVANS, Daniel" <EV...@NORWICH-UNION.CO.UK> on 2005/04/29 13:02:58 UTC

Code Page Issues

Hi can someone help? I want to report some bugs but there does not seem to
be a bugzillia entry for this project.

I'm testing on a non-ANSI system and I am getting a few code-page problems.
The fixed code is detailed below. There were also a couple of fixes required
for the xml-security project as well. These are all issue relating to
calling string.getBytes(), resulting in the xml being returned as as an
EBIDIC code-page byte-array. The fix is to use string.getBytes("UTF-8"). The
modified code has been tested on Windows & z/OS for both username token &
X509.

Please advise, thanks, Dan.



org.apache.ws.security.WSSecurityEngine:
--------------------------------------------------------------

   public static byte[] getDecodedBase64EncodedData(Element element) throws
WSSecurityException {
        StringBuffer sb = new StringBuffer();
        NodeList children = element.getChildNodes();
        int iMax = children.getLength();
        for (int i = 0; i < iMax; i++) { 
            Node curr = children.item(i);
            if (curr.getNodeType() == Node.TEXT_NODE)
                sb.append(((Text) curr).getData());
        }
        String encodedData = sb.toString();
        try {
            return Base64.decode(encodedData.getBytes("UTF-8")); //
****************** CodePageFixDan
        } catch (Exception e) {
            throw new WSSecurityException(WSSecurityException.FAILURE,
                    null,
                    null,
                    e);
        }
    }


org.apache.ws.security.message.token.BinarySecurity:
----------------------------------------------------------------------------
----

    public byte[] getToken() {
        Text node = getFirstNode();
        if (node == null) {
        	System.out.println("getFirstNode() = null");
            return null;
        }
        try {
            return Base64.decode(node.getData().getBytes("UTF-8")); //
****************** CodePageFixDan

        } catch (Exception e) {
        	e.printStackTrace();
            return null;
        }
    }


org.apache.xml.security.encryption.XMLCipherInput:
---------------------------------------------------------------------------

private byte[] getDecryptBytes() throws XMLEncryptionException {
...
...
        try {
		encryptedBytes =
Base64.decode(base64EncodedEncryptedOctets.getBytes("UTF-8")); //
****************** CodePageFixDan

        } catch (Exception bde) {
            throw new XMLEncryptionException("empty", bde);
        }

		return (encryptedBytes);
}


org.apache.xml.security.utils.Base64:
------------------------------------------------------

   public final static byte[] decode(String encoded) throws
Base64DecodingException {

       if (encoded == null)
           return null;

       try {
		return decodeInternal(encoded.getBytes("UTF-8")); //
****************** CodePageFixDan

	} catch (Exception e) {
		e.printStackTrace();
		return null;
	}
   }


org.apache.xml.security.utils.XMLUtils:
--------------------------------------------------------

   public static void outputDOM(Node contextNode, OutputStream os,
                                boolean addPreamble) {

      try {
         if (addPreamble) {
            os.write("<?xml version=\"1.0\"
encoding=\"UTF-8\"?>\n".getBytes("UTF-8")); // ******************
CodePageFixDan
         }

         os.write(
            Canonicalizer.getInstance(
 
Canonicalizer.ALGO_ID_C14N_WITH_COMMENTS).canonicalizeSubtree(
               contextNode));
      } catch (IOException ex) {}
      catch (InvalidCanonicalizerException ex) {
         ex.printStackTrace();
      } catch (CanonicalizationException ex) {
         ex.printStackTrace();
      }
   }





**********************************************************************
This email and any files sent with it are intended only for the named
recipient. If you are not the named recipient please telephone/email
the sender immediately. You should not disclose the content or
take/retain/distribute any copies.
**********************************************************************



Norwich Union Insurance Limited 
Registered Office 8 Surrey Street Norwich, NR1 3NG
Registered in England Number 99122 
Member of the General Insurance Standards Council 
Authorised and Regulated by the Financial Services Authority

For Further enquiries 01603 622200