2015-08-22 21:50:17 +00:00
|
|
|
require 'openssl'
|
|
|
|
|
2016-05-03 17:57:34 +00:00
|
|
|
class Integer
|
|
|
|
def humanize
|
|
|
|
secs = self
|
|
|
|
[[60, :second], [60, :minute], [24, :hour], [30, :day], [12, :month]].map { |count, name|
|
|
|
|
if secs > 0
|
2016-05-10 15:23:15 +00:00
|
|
|
secs, n = secs.divmod count
|
2016-05-03 17:57:34 +00:00
|
|
|
n = n.to_i
|
2016-05-10 15:23:15 +00:00
|
|
|
n > 0 ? "#{n} #{name}#{n > 1 ? 's' : ''}" : nil
|
2016-05-03 17:57:34 +00:00
|
|
|
end
|
|
|
|
}.compact.reverse.join(' ')
|
|
|
|
end
|
|
|
|
end
|
|
|
|
|
2015-08-19 16:04:13 +00:00
|
|
|
class ::OpenSSL::PKey::EC
|
|
|
|
def type
|
|
|
|
:ecc
|
|
|
|
end
|
|
|
|
|
|
|
|
def size
|
|
|
|
self.group.degree
|
|
|
|
end
|
|
|
|
|
|
|
|
def rsa_equivalent_size
|
|
|
|
case self.size
|
|
|
|
when 160 then 1024
|
|
|
|
when 224 then 2048
|
|
|
|
when 256 then 3072
|
|
|
|
when 384 then 7680
|
|
|
|
when 521 then 15360
|
2015-08-22 21:50:17 +00:00
|
|
|
when 571 then 21000
|
2015-08-19 16:04:13 +00:00
|
|
|
end
|
|
|
|
end
|
|
|
|
|
|
|
|
def to_s
|
|
|
|
"ECC #{self.size} bits"
|
|
|
|
end
|
|
|
|
end
|
|
|
|
|
|
|
|
class ::OpenSSL::PKey::RSA
|
|
|
|
def type
|
|
|
|
:rsa
|
|
|
|
end
|
|
|
|
|
|
|
|
def size
|
|
|
|
self.n.num_bits
|
|
|
|
end
|
|
|
|
|
|
|
|
def rsa_equivalent_size
|
|
|
|
self.size
|
|
|
|
end
|
|
|
|
|
|
|
|
def to_s
|
|
|
|
"RSA #{self.size} bits"
|
|
|
|
end
|
|
|
|
end
|
|
|
|
|
|
|
|
class ::OpenSSL::PKey::DSA
|
|
|
|
def type
|
|
|
|
:dsa
|
|
|
|
end
|
|
|
|
|
|
|
|
def size
|
|
|
|
self.p.num_bits
|
|
|
|
end
|
|
|
|
|
|
|
|
def rsa_equivalent_size
|
|
|
|
self.size
|
|
|
|
end
|
|
|
|
|
|
|
|
def to_s
|
|
|
|
"DSA #{self.size} bits"
|
|
|
|
end
|
|
|
|
end
|
|
|
|
|
|
|
|
class ::OpenSSL::PKey::DH
|
|
|
|
def type
|
|
|
|
:dh
|
|
|
|
end
|
|
|
|
|
|
|
|
def size
|
|
|
|
self.p.num_bits
|
|
|
|
end
|
|
|
|
|
|
|
|
def rsa_equivalent_size
|
|
|
|
self.size
|
|
|
|
end
|
|
|
|
|
|
|
|
def to_s
|
|
|
|
"DH #{self.size} bits"
|
|
|
|
end
|
|
|
|
end
|