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);
    }