emailauth 0.0.3 → 0.0.4

Sign up to get free protection for your applications and to get access to all the features.
@@ -1,4 +1,8 @@
1
1
  class EmailAuth
2
+ def self.generateTokens_from(user_token, bytes = 16)
3
+ EmailAuth::Authenticator.generateTokens_from(user_token, bytes)
4
+ end
5
+
2
6
  def self.generateTokens(bytes = 16)
3
7
  EmailAuth::Authenticator.generateTokens(bytes)
4
8
  end
@@ -3,6 +3,20 @@ require 'base64'
3
3
  require 'rotp'
4
4
 
5
5
  class EmailAuth::Authenticator
6
+ ##
7
+ # Generates SAW tokens in base64 given a user_token
8
+ ##
9
+ def self.generateTokens_from(user_token_s, bytes = 16)
10
+ user_token = Base64.urlsafe_decode64(user_token_s)
11
+
12
+ email_token = SecureRandom.random_bytes(bytes)
13
+ email_token_s = Base64.urlsafe_encode64(email_token)
14
+
15
+ complete_token_s = Base64.urlsafe_encode64(user_token.unpack('C*').zip(email_token.unpack('C*')).map{ |a,b| a ^ b }.pack('C*'))
16
+
17
+ return [email_token_s,complete_token_s]
18
+ end
19
+
6
20
  ##
7
21
  # Generates SAW tokens in base64 that are the provided number of bytes
8
22
  ##
@@ -9,6 +9,13 @@ class EmailAuthTest < Test::Unit::TestCase
9
9
  assert_not_nil complete_token
10
10
  end
11
11
 
12
+ def test_generate_token_from
13
+ user_token, email_token, complete_token = EmailAuth.generateTokens
14
+ assert EmailAuth.authenticate(user_token, email_token, complete_token)
15
+ email_token_new, complete_token_new = EmailAuth.generateTokens_from(user_token)
16
+ assert EmailAuth.authenticate(user_token, email_token_new, complete_token_new)
17
+ end
18
+
12
19
  def test_authenticate
13
20
  user_token, email_token, complete_token = EmailAuth.generateTokens
14
21
  assert EmailAuth.authenticate(user_token, email_token, complete_token)
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: emailauth
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.3
4
+ version: 0.0.4
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors: