From 906440426438e10e495d3af3b3359b22eca41e8a Mon Sep 17 00:00:00 2001 From: Cleo Rebert Date: Tue, 14 Apr 2020 12:51:22 +0200 Subject: [PATCH] Implemented serialize and clone fot both TOTP and Algorithm. Only Algorithm is copy --- Cargo.toml | 3 ++- src/lib.rs | 6 ++++-- 2 files changed, 6 insertions(+), 3 deletions(-) diff --git a/Cargo.toml b/Cargo.toml index f8fad4d..580c458 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "totp-rs" -version = "0.2.2" +version = "0.2.3" authors = ["Cleo Rebert "] edition = "2018" readme = "README.md" @@ -12,6 +12,7 @@ keywords = ["authentification", "2fa", "totp", "hmac"] categories = ["authentication", "web-programming"] [dependencies] +serde = { version = "1.0", features = ["derive"] } ring = "0.16.12" byteorder = "1.3.4" otpauth = "0.4.1" diff --git a/src/lib.rs b/src/lib.rs index 039ee93..71413a6 100644 --- a/src/lib.rs +++ b/src/lib.rs @@ -15,6 +15,8 @@ //! println!("{}", token); //! ``` +use serde::{Serialize, Deserialize}; + use base32; use byteorder::{BigEndian, ReadBytesExt}; use ring::hmac; @@ -25,7 +27,7 @@ use image::Luma; use qrcode::QrCode; /// Algorithm enum holds the three standards algorithms for TOTP as per the [reference implementation](https://tools.ietf.org/html/rfc6238#appendix-A) -#[derive(Debug)] +#[derive(Debug, Serialize, Deserialize, Copy, Clone)] pub enum Algorithm { SHA1, SHA256, @@ -33,7 +35,7 @@ pub enum Algorithm { } /// TOTP holds informations as to how to generate an auth code and validate it. Its [secret](struct.TOTP.html#structfield.secret) field is sensitive data, treat it accordingly -#[derive(Debug)] +#[derive(Debug, Serialize, Deserialize, Clone)] pub struct TOTP { /// SHA-1 is the most widespread algorithm used, and for totp pursposes, SHA-1 hash collisions are [not a problem](https://tools.ietf.org/html/rfc4226#appendix-B.2) as HMAC-SHA-1 is not impacted. It's also the main one cited in [rfc-6238](https://tools.ietf.org/html/rfc6238#section-3) even though the [reference implementation](https://tools.ietf.org/html/rfc6238#appendix-A) permits the use of SHA-1, SHA-256 and SHA-512. Not all clients support other algorithms then SHA-1 pub algorithm: Algorithm,