mirror of
https://github.com/codeninjasllc/discourse.git
synced 2024-11-27 09:36:19 -05:00
add fast xor, we need really fast xor to keep our password function honest.
This commit is contained in:
parent
d6ca23a75b
commit
e11af13b12
3 changed files with 10 additions and 1 deletions
1
Gemfile
1
Gemfile
|
@ -17,6 +17,7 @@ gem 'clockwork', require: false
|
||||||
gem 'em-redis'
|
gem 'em-redis'
|
||||||
gem 'eventmachine'
|
gem 'eventmachine'
|
||||||
gem 'fast_xs'
|
gem 'fast_xs'
|
||||||
|
gem 'fast_xor'
|
||||||
gem 'fastimage'
|
gem 'fastimage'
|
||||||
gem 'fog', require: false
|
gem 'fog', require: false
|
||||||
gem 'has_ip_address'
|
gem 'has_ip_address'
|
||||||
|
|
|
@ -169,6 +169,9 @@ GEM
|
||||||
fakeweb (1.3.0)
|
fakeweb (1.3.0)
|
||||||
faraday (0.8.5)
|
faraday (0.8.5)
|
||||||
multipart-post (~> 1.1)
|
multipart-post (~> 1.1)
|
||||||
|
fast_xor (1.1.1)
|
||||||
|
rake
|
||||||
|
rake-compiler
|
||||||
fast_xs (0.8.0)
|
fast_xs (0.8.0)
|
||||||
fastimage (1.2.13)
|
fastimage (1.2.13)
|
||||||
ffi (1.3.1)
|
ffi (1.3.1)
|
||||||
|
@ -344,6 +347,8 @@ GEM
|
||||||
rdoc (~> 3.4)
|
rdoc (~> 3.4)
|
||||||
thor (>= 0.14.6, < 2.0)
|
thor (>= 0.14.6, < 2.0)
|
||||||
rake (10.0.3)
|
rake (10.0.3)
|
||||||
|
rake-compiler (0.8.3)
|
||||||
|
rake
|
||||||
rb-fsevent (0.9.3)
|
rb-fsevent (0.9.3)
|
||||||
rb-inotify (0.8.8)
|
rb-inotify (0.8.8)
|
||||||
ffi (>= 0.5.0)
|
ffi (>= 0.5.0)
|
||||||
|
@ -477,6 +482,7 @@ DEPENDENCIES
|
||||||
eventmachine
|
eventmachine
|
||||||
fabrication
|
fabrication
|
||||||
fakeweb (~> 1.3.0)
|
fakeweb (~> 1.3.0)
|
||||||
|
fast_xor
|
||||||
fast_xs
|
fast_xs
|
||||||
fastimage
|
fastimage
|
||||||
fog
|
fog
|
||||||
|
|
|
@ -9,6 +9,7 @@
|
||||||
# 3. It does not monkey patch string
|
# 3. It does not monkey patch string
|
||||||
|
|
||||||
require 'openssl'
|
require 'openssl'
|
||||||
|
require 'xor'
|
||||||
|
|
||||||
class Pbkdf2
|
class Pbkdf2
|
||||||
|
|
||||||
|
@ -20,7 +21,7 @@ class Pbkdf2
|
||||||
|
|
||||||
2.upto(iterations) do
|
2.upto(iterations) do
|
||||||
u = prf(h, password, u)
|
u = prf(h, password, u)
|
||||||
ret = xor(ret, u)
|
ret.xor!(u)
|
||||||
end
|
end
|
||||||
|
|
||||||
ret.bytes.map{|b| ("0" + b.to_s(16))[-2..-1]}.join("")
|
ret.bytes.map{|b| ("0" + b.to_s(16))[-2..-1]}.join("")
|
||||||
|
@ -28,6 +29,7 @@ class Pbkdf2
|
||||||
|
|
||||||
protected
|
protected
|
||||||
|
|
||||||
|
# fallback xor in case we need it for jruby ... way slower
|
||||||
def self.xor(x,y)
|
def self.xor(x,y)
|
||||||
x.bytes.zip(y.bytes).map{|x,y| x ^ y}.pack('c*')
|
x.bytes.zip(y.bytes).map{|x,y| x ^ y}.pack('c*')
|
||||||
end
|
end
|
||||||
|
|
Loading…
Reference in a new issue