logo
Free, unlimited AI code reviews that run on commit
git-lrc git-lrc GitHub Install Now We'd appreciate a star git-lrc - Free, unlimited AI code reviews that run on commit | Product Hunt git-lrc - Free, unlimited AI code reviews that run on commit | Product Hunt

URI::otpauth - URI scheme for secret keys for OTP secrets. Usually found in QR codes

Author

       David Dick "<ddick@cpan.org>"

Bugs And Limitations

       To    report    a    bug,    or    view    the     current     list     of     bugs,     please     visit
       <https://github.com/libwww-perl/URI/issues>

Configuration And Environment

       URI::otpauth requires no configuration files or environment variables.

Dependencies

       URI

Description

       This URI scheme is defined in <https://github.com/google/google-authenticator/wiki/Key-Uri-Format/>:

Diagnostics

       "secret is a mandatory parameter for URI::otpauth"
           The secret parameter was not detected for the URI::otpauth->new() method.

Incompatibilities

       None reported.

Name

       URI::otpauth - URI scheme for secret keys for OTP secrets.  Usually found in QR codes

Subroutines/Methods

"new"
       Create a new URI::otpauth. The available arguments are listed below;

       •   account_name - this can be the account name (probably an email address) used when authenticating with
           this secret.  It is an optional field.

       •   algorithm         -        this        is        the        cryptographic        hash        function
           <https://en.wikipedia.org/wiki/Cryptographic_hash_function> that should be used.  Current values  are
           SHA1  <https://en.wikipedia.org/wiki/SHA-1>,  SHA256  <https://en.wikipedia.org/wiki/SHA-2> or SHA512
           <https://en.wikipedia.org/wiki/SHA-2>.  It is an optional field and will default to SHA1.

       •   counter - this is only required when the type is HOTP.

       •   digits - this  determines  the  length  <https://github.com/google/google-authenticator/wiki/Key-Uri-
           Format/#digits>  of  the  code  presented to the user.  It is an optional field and will default to 6
           digits.

       •   issuer   -   this   can   be   the   application    /    system    <https://github.com/google/google-
           authenticator/wiki/Key-Uri-Format/#issuer> that this secret can be used to authenticate to.  It is an
           optional field.

       •   label   -   this   is   the   issuer   and   the   account   name  <https://github.com/google/google-
           authenticator/wiki/Key-Uri-Format/#label> joined with a ":" character.  It is an optional field.

       •   period - this is the period that  the  TOTP  code  is  valid  for  <https://github.com/google/google-
           authenticator/wiki/Key-Uri-Format/#counter>.  It is an optional field and will default to 30 seconds.

       •   secret   -   this   is  the  key  <https://en.wikipedia.org/wiki/Key_(cryptography)>  that  the  TOTP
           <https://en.wikipedia.org/wiki/Time-based_one-time_password>/HOTP
           <https://en.wikipedia.org/wiki/HMAC-based_one-time_password> algorithm uses to derive the value.   It
           is an arbitrary byte string and must remain private.  This field is mandatory.

       •   type  -  this  can  be  'hotp  <https://en.wikipedia.org/wiki/HMAC-based_one-time_password>' or 'totp
           <https://en.wikipedia.org/wiki/Time-based_one-time_password>'.  This field will default to 'totp'.

   "algorithm"
       Get or set the algorithm of this otpauth URI.

   "account_name"
       Get or set the account_name of this otpauth URI.

   "counter"
       Get or set the counter of this otpauth URI.

   "digits"
       Get or set the digits of this otpauth URI.

   "issuer"
       Get or set the issuer of this otpauth URI.

   "label"
       Get or set the label of this otpauth URI.

   "period"
       Get or set the period of this otpauth URI.

   "secret"
       Get or set the secret of this otpauth URI.

   "type"
       Get or set the type of this otpauth URI.

         my $type = $uri->type('hotp');

Synopsis

         use URI;

         # optauth URI from textual uri
         my $uri = URI->new( 'otpauth://totp/Example:alice@google.com?secret=NFZS25DINFZV643VOAZXELLTGNRXEM3UH4&issuer=Example' );

         # same URI but created from arguments
         my $uri = URI::otpauth->new( type => 'totp', issuer => 'Example', account_name => 'alice@google.com', secret => 'is-this_sup3r-s3cr3t?' );

Version

       Version 5.29

See Also