ConvertPermissionSet(String inFormat, byte[] inData, String outFormat) { if(inData == null) return null; if(inFormat == null) throw new ArgumentNullException("inFormat"); if(outFormat == null) throw new ArgumentNullException("outFormat"); PermissionSet permSet = new PermissionSet( false ); inFormat = String.SmallCharToUpper(inFormat); outFormat = String.SmallCharToUpper(outFormat); if (inFormat.Equals( "XMLASCII" ) || inFormat.Equals( "XML" )) { permSet.FromXml( new Parser( inData, Tokenizer.ByteTokenEncoding.ByteTokens ).GetTopElement() ); } else if (inFormat.Equals( "XMLUNICODE" )) { permSet.FromXml( new Parser( inData, Tokenizer.ByteTokenEncoding.UnicodeTokens ).GetTopElement() ); } else if (inFormat.Equals( "BINARY" )) { permSet.DecodeUsingSerialization( inData ); } else { return null; } if (outFormat.Equals( "XMLASCII" ) || outFormat.Equals( "XML" )) { MemoryStream ms = new MemoryStream(); StreamWriter writer = new StreamWriter( ms, Encoding.ASCII ); writer.Write( permSet.ToXml().ToString() ); writer.Flush(); return ms.ToArray(); } else if (outFormat.Equals( "XMLUNICODE" )) { MemoryStream ms = new MemoryStream(); StreamWriter writer = new StreamWriter( ms, Encoding.Unicode ); writer.Write( permSet.ToXml().ToString() ); writer.Flush(); ms.Position = 2; int countBytes = (int)ms.Length - 2; byte[] retval = new byte[countBytes]; ms.Read( retval, 0, retval.Length ); return retval; } else if (outFormat.Equals( "BINARY" )) { return permSet.EncodeUsingSerialization(); } else { return null; } }