Exemple #1
0
        public static EncryptionInfo?Load(CompoundFile compoundFile)
        {
            if (compoundFile.RootStorage.TryGetStream("EncryptionInfo", out var stream))
            {
                var binaryReader = stream.ToBinaryReader();

                var encryptionVersionInfo = new VersionData(binaryReader);

                if (encryptionVersionInfo.Minor == 0x0002)
                {
                    // Standard Encryption
                }
                else if (encryptionVersionInfo.Minor == 0x0003)
                {
                    // Extensible Encryption
                }
                else if (encryptionVersionInfo.Minor == 0x0004)
                {
                    // Agile Encryption
                    return(new AgileEncryptionInfo(encryptionVersionInfo, binaryReader));
                }

                return(new EncryptionInfo(stream));
            }

            return(null);
        }
        public DataSpaceVersionInfo(CFStream versionStream)
        {
            VersionStream = versionStream;

            var binaryReader = versionStream.ToBinaryReader();

            FeatureIdentifier = new LengthPrefixPaddedUnicodeString(binaryReader);
            Debug.Assert(FeatureIdentifier.Text == "Microsoft.Container.DataSpaces");

            ReaderVersion  = new VersionData(binaryReader);
            UpdaterVersion = new VersionData(binaryReader);
            WriterVersion  = new VersionData(binaryReader);
        }
        public AgileEncryptionInfo(VersionData encryptionVersionInfo, BinaryReader binaryReader) : base(encryptionVersionInfo)
        {
            Reserved = binaryReader.ReadUInt16();

            Debug.Assert(Reserved == 0x00000040);

            var byteList =
                binaryReader.ReadBytes((int)(binaryReader.BaseStream.Length - binaryReader.BaseStream.Position));

            var text = Encoding.UTF8.GetString(byteList);

            text = text.Trim('\0');

            var xmlSerializer = new XmlSerializer(typeof(Encryption));
            var encryption    = (Encryption)xmlSerializer.Deserialize(new XmlTextReader(new StringReader(text)));

            Encryption = encryption;
        }
Exemple #4
0
 protected EncryptionInfo(VersionData encryptionVersionInfo)
 {
     EncryptionVersionInfo = encryptionVersionInfo;
 }