public EncryptionHeader(DocumentInputStream is) throws IOException { flags = is.readInt(); sizeExtra = is.readInt(); algorithm = is.readInt(); hashAlgorithm = is.readInt(); keySize = is.readInt(); providerType = is.readInt(); is.readLong(); // skip reserved StringBuilder builder = new StringBuilder(); while (true) { char c = (char) is.readShort(); if (c == 0) { break; } builder.append(c); } cspName = builder.toString(); cipherMode = MODE_ECB; keySalt = null; }
public EncryptionHeader(DocumentInputStream is) throws IOException { flags = is.readInt(); sizeExtra = is.readInt(); algorithm = is.readInt(); hashAlgorithm = is.readInt(); keySize = is.readInt(); providerType = is.readInt(); is.readLong(); // skip reserved StringBuilder builder = new StringBuilder(); while (true) { char c = (char) is.readShort(); if (c == 0) { break; } builder.append(c); } cspName = builder.toString(); cipherMode = MODE_ECB; keySalt = null; }
public EncryptionInfo(DirectoryNode dir) throws IOException { 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); for (byte b : 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.getAlgorithm()==EncryptionHeader.ALGORITHM_RC4) { verifier = new EncryptionVerifier(dis, 20); } else { verifier = new EncryptionVerifier(dis, 32); } } }
public EncryptionInfo(DirectoryNode dir) throws IOException { 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); for (byte b : 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.getAlgorithm()==EncryptionHeader.ALGORITHM_RC4) { verifier = new EncryptionVerifier(dis, 20); } else { verifier = new EncryptionVerifier(dis, 32); } } }