emailauth 0.0.3 → 0.0.4
Sign up to get free protection for your applications and to get access to all the features.
- 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)
|