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; }
protected EncryptionInfo(VersionData encryptionVersionInfo) { EncryptionVersionInfo = encryptionVersionInfo; }