示例#1
0
        private void SubWriteValue(ProtectedBinary value)
        {
            if(value.IsProtected && (m_format != KdbxFormat.PlainXml))
            {
                m_xmlWriter.WriteAttributeString(AttrProtected, ValTrue);

                byte[] pbEncoded = value.ReadXorredData(m_randomStream);
                if(pbEncoded.Length > 0)
                    m_xmlWriter.WriteBase64(pbEncoded, 0, pbEncoded.Length);
            }
            else
            {
                if(m_pwDatabase.Compression == PwCompressionAlgorithm.GZip)
                {
                    m_xmlWriter.WriteAttributeString(AttrCompressed, ValTrue);

                    byte[] pbRaw = value.ReadData();
                    byte[] pbCmp = MemUtil.Compress(pbRaw);
                    m_xmlWriter.WriteBase64(pbCmp, 0, pbCmp.Length);
                }
                else
                {
                    byte[] pbRaw = value.ReadData();
                    m_xmlWriter.WriteBase64(pbRaw, 0, pbRaw.Length);
                }
            }
        }
		private void WriteObject(string name, ProtectedBinary value)
		{
			Debug.Assert(name != null);
			Debug.Assert(value != null); if(value == null) throw new ArgumentNullException("value");

			m_xmlWriter.WriteStartElement(ElemBinary);
			m_xmlWriter.WriteStartElement(ElemKey);
			m_xmlWriter.WriteString(StrUtil.SafeXmlString(name));
			m_xmlWriter.WriteEndElement();
			m_xmlWriter.WriteStartElement(ElemValue);

			if((value.IsProtected) && (m_format != Kdb4Format.PlainXml))
			{
				m_xmlWriter.WriteAttributeString(AttrProtected, ValTrue);

				byte[] pbEncoded = value.ReadXorredData(m_randomStream);
				if(pbEncoded.Length > 0)
					m_xmlWriter.WriteBase64(pbEncoded, 0, pbEncoded.Length);
			}
			else
			{
				byte[] pbRaw = value.ReadData();
				m_xmlWriter.WriteBase64(pbRaw, 0, pbRaw.Length);
			}

			m_xmlWriter.WriteEndElement(); // ElemValue
			m_xmlWriter.WriteEndElement(); // ElemBinary
		}