Пример #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);
                }
            }
        }
        internal 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
        }
Пример #3
0
 private void BeforeSerialization(SerializationContext context)
 {
     if (IsProtected)
     {
         Value = mProtectedBinary.ReadXorredData(((BufferContext)context.Context).RandomStream);
     }
     else
     {
         Value = mProtectedBinary.ReadData();
     }
 }
Пример #4
0
        private void SubWriteValue(ProtectedBinary value)
        {
            if (value.IsProtected && (m_format == KdbxFormat.Default))
            {
                m_xmlWriter.WriteAttributeString(AttrProtected, ValTrue);

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

                    byte[] pbRaw = value.ReadData();
                    byte[] pbCmp = MemUtil.Compress(pbRaw);
                    m_xmlWriter.WriteBase64(pbCmp, 0, pbCmp.Length);

                    if (value.IsProtected)
                    {
                        MemUtil.ZeroByteArray(pbRaw);
                        MemUtil.ZeroByteArray(pbCmp);
                    }
                }
                else
                {
                    byte[] pbRaw = value.ReadData();
                    m_xmlWriter.WriteBase64(pbRaw, 0, pbRaw.Length);

                    if (value.IsProtected)
                    {
                        MemUtil.ZeroByteArray(pbRaw);
                    }
                }
            }
        }