public RecordInputStream createDecryptingStream(InputStream original) { FilePassRecord fpr = _filePassRec; String userPassword = Biff8EncryptionKey.getCurrentUserPassword(); Biff8EncryptionKey key; if (userPassword == null) { key = Biff8EncryptionKey.create(fpr.getDocId()); } else { key = Biff8EncryptionKey.create(userPassword, fpr.getDocId()); } if (!key.validate(fpr.getSaltData(), fpr.getSaltHash())) { throw new EncryptedDocumentException( (userPassword == null ? "Default" : "Supplied") + " password is invalid for docId/saltData/saltHash"); } return new RecordInputStream(original, key, _initialRecordsSize); }