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.
- data/lib/emailauth.rb +4 -0
- data/lib/emailauth/authenticator.rb +14 -0
- data/test/test_emailauth.rb +7 -0
- metadata +1 -1
data/lib/emailauth.rb
CHANGED
@@ -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
|
##
|
data/test/test_emailauth.rb
CHANGED
@@ -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)
|