Sha256: 54f83e6143f342bf06ea53255327a7db47d71b4d833a5bca9649bcb70296f8d0

Contents?: true

Size: 1.94 KB

Versions: 4

Compression:

Stored size: 1.94 KB

Contents

# One-Time Password Library

[![Build Status](https://secure.travis-ci.org/gotoyuzo/otp.png)](https://travis-ci.org/gotoyuzo/otp)
[![Gem Version](https://badge.fury.io/rb/otp.svg)](https://rubygems.org/gems/otp)
[![License](https://img.shields.io/badge/license-MIT-blue.svg?style=flat)](https://github.com/gotoyuzo/otp/blob/master/LICENSE.txt)

This library provides an implementation of 
HMAC-Based One-Time Password Algorithm (HOTP; RFC4226) and
Time-Based One-Time Password Algorithm (HOTP; RFC6238).
The Algorithm details can be referred at the following URLs.

* HOTP: http://tools.ietf.org/html/rfc4226
* TOTP: http://tools.ietf.org/html/rfc6238

## Usage

To create new TOTP secret:

    require "otp"

    # Create a TOTP instance and new key
    totp = OTP::TOTP.new
    totp.new_secret  # create random secret
    p totp.password  #=> "123456" (password for the current time)

    # Inspect TOTP parameters
    p totp.secret    #=> "YVMR2G7N4OAXGKFC" (BASE32-formated HMAC key)
    p totp.algorithm #=> "SHA1" (HMAC algorithm; default SHA1)
    p totp.digits    #=> 6 (number of password digits; default 6)
    p totp.period    #=> 30 (time step period in second; default 30)
    p totp.time      #=> nil (UNIX time by Time or Integer; nil for the current time)

    # Format TOTP URI. Otpauth scheme URLs can be read by OTP::URI.parse.
    totp.issuer = "My Company"
    totp.accountname = "account@exaple.com"
    p totp.to_uri    #=> "otpauth://totp/My%20Company:account@exaple.com?secret=47JBA7ZWDDLNZJMX&issuer=My+Company"

To verify given TOTP password:

    require "otp"

    totp = OTP::TOTP.new
    totp.secret = "YVMR2G7N4OAXGKFC"
    p totp.verify("123456")  #=> true/false (verify given passowrd)

The value of "secret" is encoded with BASE32 algorithm to be compatible
with Google Authenticator URI format.

* BASE32: http://tools.ietf.org/html/rfc4648
* Google Authenticator Key URI format: https://github.com/google/google-authenticator/wiki/Key-Uri-Format

Version data entries

4 entries across 4 versions & 1 rubygems

Version Path
otp-0.0.7 README.md
otp-0.0.6 README.md
otp-0.0.5 README.md
otp-0.0.4 README.md