All configuration data and state is kept in ~/.google_authenticator
The file is all ASCII, but is kept in a very simple-to-parse and rigid
file format.

The file size is currently limited to 1kB. This should be generous even
when using a very large list of scratch codes.

The first line is the base32 encoded secret. It uses characters in the range
A..Z2..7. The secret is used after first trying any one-time scratch codes.
HOTP mode is used only if HOTP_COUNTER is present.
TOTP mode is used only if TOTP_AUTH is present *and* HOTP_COUNTER is
not present.

The following lines are optional. They all start with a double quote character,
followed by a space character. Followed by an option name. Option names are
all upper-case and must include an underscore. This ensures that they cannot
accidentally appear anywhere else in the file.

Options can be followed by option-specific parameters.

Currently, the following options are recognized:

  DISALLOW_REUSE
    if present, this signals that a time-based token can be used
    at most once. Any attempt to log in using the same token will be denied.
    This means that users can typically not log in faster than once every
    ~30 seconds.

    The option is followed by a space-separated list of time stamps that
    have previously been used for login attempts.

    This option has no effect when HOTP_COUNTER is present.

  RATE_LIMIT n m ...
    this optional parameter restricts the number of logins to at most "n"
    within each "m" second interval. Additional parameters in this line are
    undocumented; they are used internally to keep track of state.

  TOTP_AUTH
    the presence of this option indicates that the secret can be used to
    authenticate users with a time-based token.

  STEP_SIZE n
    the number of seconds in each time step during which a TOTP code is valid.
    The default is that a code is valid for 30 seconds.

  HOTP_COUNTER n
    the presence of this option indicates that the secret can be used to
    authenticate users with a counter-based token.  The argument "n"
    represents which counter value the token will accept next.  It should
    be initialized to 1.

  WINDOW_SIZE n
    the default window size is 3, allowing up to one extra valid token
    before and after the currently active one. This might be too restrictive
    if the client and the server experience significant time skew.
    You can provide a parameter to increase the login window size from 3 to "n"

    In counter-based mode, this option is the number of valid tokens after
    the currently active one.  The default is almost certainly too restrictive
    for most users as invalid login attempts and generated-but-not-used
    tokens both contribute to synchronization problems.


Any all-numeric sequence of eight-digit numbers are randomly generated
one-time scratch code tokens. The user can enter any arbitrary
one-time code to log into his account. The code will then be removed
from the file.
