emailauth 0.0.3 → 0.0.4

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -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: