public EncryptionInfo(DirectoryNode dir) { DocumentInputStream dis = dir.CreateDocumentInputStream("EncryptionInfo"); versionMajor = dis.ReadShort(); versionMinor = dis.ReadShort(); encryptionFlags = dis.ReadInt(); if (versionMajor == 4 && versionMinor == 4 && encryptionFlags == 0x40) { StringBuilder builder = new StringBuilder(); byte[] xmlDescriptor = new byte[dis.Available()]; dis.Read(xmlDescriptor); foreach (byte b in xmlDescriptor) builder.Append((char)b); string descriptor = builder.ToString(); header = new EncryptionHeader(descriptor); verifier = new EncryptionVerifier(descriptor); } else { int hSize = dis.ReadInt(); header = new EncryptionHeader(dis); if (header.Algorithm == EncryptionHeader.ALGORITHM_RC4) { verifier = new EncryptionVerifier(dis, 20); } else { verifier = new EncryptionVerifier(dis, 32); } } }
public EncryptionInfo(DirectoryNode dir) { DocumentInputStream dis = dir.CreateDocumentInputStream("EncryptionInfo"); versionMajor = dis.ReadShort(); versionMinor = dis.ReadShort(); encryptionFlags = dis.ReadInt(); if (versionMajor == 4 && versionMinor == 4 && encryptionFlags == 0x40) { StringBuilder builder = new StringBuilder(); byte[] xmlDescriptor = new byte[dis.Available()]; dis.Read(xmlDescriptor); foreach (byte b in xmlDescriptor) { builder.Append((char)b); } string descriptor = builder.ToString(); header = new EncryptionHeader(descriptor); verifier = new EncryptionVerifier(descriptor); } else { int hSize = dis.ReadInt(); header = new EncryptionHeader(dis); if (header.Algorithm == EncryptionHeader.ALGORITHM_RC4) { verifier = new EncryptionVerifier(dis, 20); } else { verifier = new EncryptionVerifier(dis, 32); } } }