Giter VIP home page Giter VIP logo

google_auth_rust's Introduction

TOTP-Authentication library

This library ()partially) implements secret generation and passcode verification according to [RFC 6238] (https://tools.ietf.org/html/rfc6238 "RFC 6238"). It was done as an exercise to learn some Rust and is provided as-is, without any guarantees on correctness, functionality and security, but if you find anything wrong with it or know a way to improve it, feel free to make a PR.

It currently provides

  • Generating Authentication Secrets
  • Calculating passcodes for timestamps
  • Verifying passcodes within a time-step-window according to RFC6238
  • Defaults matching Google Authenticator

It currently doesn't do

  • Scratch codes
  • Probably f*ed up on Big Endian architectures, as I didn't really bother with them
  • Documentation
  • Proper unit tests

Usage

use google_auth::Authenticator;

...

// create authenticator with defaults
let authenticator = google_auth::default()

let auth_key = authenticator.create_credentials();

...

let passcode: u32 = ... // read passcode from user
println!("Correct code? : {}", authenticator.validate_code(auth_key, time::get_time(), passcode));

Inspiration

I mostly relied on a Java implementation of TOTP available [here] (https://github.com/wstrange/GoogleAuth)

google_auth_rust's People

Contributors

derdackel avatar

Watchers

 avatar  avatar  avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.