platypush.plugins.otp

class platypush.plugins.otp.OtpPlugin(secret: Optional[str] = None, secret_path: Optional[str] = None, provisioning_name: Optional[str] = None, issuer_name: Optional[str] = None, **kwargs)[source]

This plugin can be used to generate OTP (One-Time Password) codes compatible with Google Authenticator and other 2FA (Two-Factor Authentication) applications.

Requires:

  • pyotp (pip install pyotp)
__init__(secret: Optional[str] = None, secret_path: Optional[str] = None, provisioning_name: Optional[str] = None, issuer_name: Optional[str] = None, **kwargs)[source]
Parameters:
  • secret – Base32-encoded secret to be used for password generation.
  • secret_path – If no secret is provided statically, then it will be read from this path (default: ~/.local/share/platypush/otp/secret). If no secret is found then one will be generated.
  • provisioning_name – If you want to use the Google Authenticator, you can specify the default email address to associate to your OTPs for the provisioning process here.
  • issuer_name – If you want to use the Google Authenticator, you can specify the default issuer name to display on your OTPs here.
get_counter_otp(count: int, secret: Optional[str] = None, secret_path: Optional[str] = None) → str[source]
Parameters:
  • count – Index for the counter-OTP.
  • secret – Secret token to be used (overrides configured secret).
  • secret_path – File containing the secret to be used (overrides configured secret_path).
Returns:

A count-based token, as a string.

get_time_otp(secret: Optional[str] = None, secret_path: Optional[str] = None) → str[source]
Parameters:
  • secret – Secret token to be used (overrides configured secret).
  • secret_path – File containing the secret to be used (overrides configured secret_path).
Returns:

A time-based token, as a string.

provision_counter_otp(name: Optional[str] = None, issuer_name: Optional[str] = None, initial_count=0, secret: Optional[str] = None, secret_path: Optional[str] = None) → str[source]

Generate a provisioning URI for a counter-OTP that can be imported in Google Authenticator.

Parameters:
  • name – Name or e-mail address associated to the account used by the Google Authenticator. If None is specified then the value will be read from the configured provisioning_name.
  • issuer_name – Name of the issuer of the OTP (default: default configured issuer_name or None).
  • initial_count – Initial value for the counter (default: 0).
  • secret – Secret token to be used (overrides configured secret).
  • secret_path – File containing the secret to be used (overrides configured secret_path).
Returns:

Generated provisioning URI.

provision_time_otp(name: Optional[str] = None, issuer_name: Optional[str] = None, secret: Optional[str] = None, secret_path: Optional[str] = None) → str[source]

Generate a provisioning URI for a time-OTP that can be imported in Google Authenticator.

Parameters:
  • name – Name or e-mail address associated to the account used by the Google Authenticator. If None is specified then the value will be read from the configured provisioning_name.
  • issuer_name – Name of the issuer of the OTP (default: default configured issuer_name or None).
  • secret – Secret token to be used (overrides configured secret).
  • secret_path – File containing the secret to be used (overrides configured secret_path).
Returns:

Generated provisioning URI.

refresh_secret(secret_path: Optional[str] = None) → platypush.message.response.Response[source]

Refresh the secret token for key generation given a secret path.

Parameters:secret_path – Secret path to refresh (default: default configured path).
verify_counter_otp(otp: str, count: int, secret: Optional[str] = None, secret_path: Optional[str] = None) → bool[source]

Verify a code against a stored counter-OTP.

Parameters:
  • otp – Code to be verified.
  • count – Index for the counter-OTP to be verified.
  • secret – Secret token to be used (overrides configured secret).
  • secret_path – File containing the secret to be used (overrides configured secret_path).
Returns:

True if the code is valid, False otherwise.

verify_time_otp(otp: str, secret: Optional[str] = None, secret_path: Optional[str] = None) → bool[source]

Verify a code against a stored time-OTP.

Parameters:
  • otp – Code to be verified.
  • secret – Secret token to be used (overrides configured secret).
  • secret_path – File containing the secret to be used (overrides configured secret_path).
Returns:

True if the code is valid, False otherwise.