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 }
private void BeforeSerialization(SerializationContext context) { if (IsProtected) { Value = mProtectedBinary.ReadXorredData(((BufferContext)context.Context).RandomStream); } else { Value = mProtectedBinary.ReadData(); } }
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); } } } }