Package ghidra.formats.gfilesystem.crypto

# Interface PasswordProvider

All Superinterfaces:
  `CryptoProvider`

All Known Implementing Classes:
  `CachedPasswordProvider`, `CmdLinePasswordProvider`, `PopupGUIPasswordProvider`

public interface PasswordProvider extends CryptoProvider
Instances of this interface provide passwords to decrypt files.

Instances are typically not called directly, instead are used by a `CryptoSession` along with other provider instances to provide a balanced breakfast.

Multiple passwords can be returned for each request with the assumption that the consumer of the values can test and validate each one to find the correct value. Conversely, it would not be appropriate to use this to get a password for a login service that may lock the requester out after a small number of failed attempts.

TODO: add negative password result that can be persisted / cached so user isn't spammed with requests for an unknown password during batch / recursive operations.

- ## Nested Class Summary

  ## Nested classes/interfaces inherited from interface ghidra.formats.gfilesystem.crypto.CryptoProvider

  `CryptoProvider.Session`

- ## Method Summary

  Modifier and Type
  Method
  Description
  `Iterator<Password>`
  `getPasswordsFor(FSRL fsrl, String prompt, CryptoProvider.Session session)`
  Returns a sequence of passwords (ordered by quality) that may apply to the specified file.

- ## Method Details

  - ### getPasswordsFor

    Iterator<Password> getPasswordsFor(FSRL fsrl, String prompt, CryptoProvider.Session session)
    Returns a sequence of passwords (ordered by quality) that may apply to the specified file.
    Parameters:
      `fsrl` - `FSRL` path to the password protected file
      `prompt` - optional prompt that may be displayed to a user
      `session` - a place to hold state values that persist across related queries
    Returns:
      `Iterator` of possible passwords