Class: Authlogic::CryptoProviders::Wordpress

Inherits:
Object
  • Object
show all
Defined in:
lib/authlogic/crypto_providers/wordpress.rb

Constant Summary

ITOA64 =
'./0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz'

Class Method Summary (collapse)

Class Method Details

+ (Object) encode_64(input, length)



18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
# File 'lib/authlogic/crypto_providers/wordpress.rb', line 18

def encode_64(input, length)
  output = "" 
  i = 0
  while i < length
    value = input[i] 
    i+=1
    break if value.nil?
    output += ITOA64[value & 0x3f, 1]
    value |= input[i] << 8 if i < length
    output += ITOA64[(value >> 6) & 0x3f, 1]

    i+=1
    break if i >= length
    value |= input[i] << 16 if i < length
    output += ITOA64[(value >> 12) & 0x3f,1]

    i+=1
    break if i >= length
    output += ITOA64[(value >> 18) & 0x3f,1]
  end
  output
end

+ (Boolean) matches?(crypted, *tokens)



8
9
10
11
12
13
14
15
16
# File 'lib/authlogic/crypto_providers/wordpress.rb', line 8

def matches?(crypted, *tokens)
  stretches = 1 << ITOA64.index(crypted[3,1])
  plain, salt = *tokens 
  hashed = Digest::MD5.digest(salt+plain)
  stretches.times do |i|
    hashed = Digest::MD5.digest(hashed+plain)
  end
  crypted[0,12]+encode_64(hashed, 16) == crypted
end