Module: Tzispa::Helpers::Security

Defined in:
lib/tzispa/helpers/security.rb

Defined Under Namespace

Classes: Identity

Instance Method Summary collapse

Instance Method Details

#hash_password(password, salt) ⇒ Object



49
50
51
# File 'lib/tzispa/helpers/security.rb', line 49

def hash_password(password, salt)
  Digest::MD5::hexdigest "#{password}::#{salt}"
end

#hash_password?(hashed, pwd, salt) ⇒ Boolean



53
54
55
# File 'lib/tzispa/helpers/security.rb', line 53

def hash_password?(hashed, pwd, salt)
  hashed == hash_password(pwd, salt)
end

#secret(length) ⇒ Object



10
11
12
13
14
15
# File 'lib/tzispa/helpers/security.rb', line 10

def secret(length)
  alfanb = (['!', '"', '·', '$', '%', '&', '/', '(', ')', '=', '?', '+',
            '@', '#', ',', '.', '-', ';', ':', '_', '[', ']', '>', '<', '*'] <<
            [('a'..'z'), ('0'..'9'), ('A'..'Z')].map { |i| i.to_a }).flatten
  (0...length).map { alfanb[rand(alfanb.length)] }.join
end

#sign_array(astr, salt = nil) ⇒ Object



39
40
41
42
43
44
45
46
47
# File 'lib/tzispa/helpers/security.rb', line 39

def sign_array(astr, salt=nil)
  sign, i = String.new, 0
  astr.each { |s|
    i = i + 1
    sign << "#{"_"*i}#{s}"
  }
  sign << "**#{salt}"
  Digest::SHA1.hexdigest sign
end

#uuidObject



17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
# File 'lib/tzispa/helpers/security.rb', line 17

def uuid
  sprintf('%04x%04x-%04x-%04x-%04x-%04x%04x%04x',
    # 32 bits for "time_low"
    rand(0..0xffff), rand(0..0xffff),

    # 16 bits for "time_mid"
    rand(0..0xffff),

    # 16 bits for "time_hi_and_version",
    #3 four most significant bits holds version number 4
    rand(0..0x0fff) | 0x4000,

    # 16 bits, 8 bits for "clk_seq_hi_res",
    # 8 bits for "clk_seq_low",
    # two most significant bits holds zero and one for variant DCE1.1
    rand(0..0x3fff) | 0x8000,

    # 48 bits for "node"
    rand(0..0xffff), rand(0..0xffff), rand(0..0xffff)
  )
end