module Ktct::Cryptable
Attributes
key[RW]
Public Instance Methods
crypt(message, type)
click to toggle source
# File lib/ktct/cryptable.rb, line 47 def crypt(message, type) bytes_array = message.unpack('C*') input_length = bytes_array.length result, offset, i = "", 0, 0 block_size = send("max_#{type.to_s.split('_').last}_block_size") begin bytes = bytes_array[offset, block_size] result << key.send(type, bytes.pack("C*")) offset = (i += 1) * block_size end while input_length - offset > 0 result end
decrypt(message)
click to toggle source
# File lib/ktct/cryptable.rb, line 19 def decrypt(message) Base64.strict_decode64(private_decrypt([message].pack('H*'))) end
encrypt(message)
click to toggle source
# File lib/ktct/cryptable.rb, line 15 def encrypt(message) public_encrypt(Base64.strict_encode64(message)).unpack('H*').first end
max_decrypt_block_size()
click to toggle source
# File lib/ktct/cryptable.rb, line 66 def max_decrypt_block_size modulus_byte_size end
max_encrypt_block_size()
click to toggle source
# File lib/ktct/cryptable.rb, line 62 def max_encrypt_block_size modulus_byte_size - 11 end
modulus_byte_size()
click to toggle source
# File lib/ktct/cryptable.rb, line 70 def modulus_byte_size key.n.to_s(16).size / 2 end
reset_key(key_file, passphrase=nil)
click to toggle source
# File lib/ktct/cryptable.rb, line 74 def reset_key(key_file, passphrase=nil) key_file = File.expand_path(key_file) if key_file =~ /pfx/ @key = OpenSSL::PKCS12.new(IO.read(key_file), passphrase).key else @key = OpenSSL::X509::Certificate.new(IO.read(key_file)).public_key end end
ssign(message)
click to toggle source
# File lib/ktct/cryptable.rb, line 27 def ssign(message) key.sign('sha1', Digest::SHA1.hexdigest(message)).unpack('H*').first end
stupid_decrypt(message)
click to toggle source
# File lib/ktct/cryptable.rb, line 31 def stupid_decrypt(message) Base64.decode64(public_decrypt([message].pack('H*'))).force_encoding('UTF-8') end
stupid_decrypt_batch(message)
click to toggle source
# File lib/ktct/cryptable.rb, line 39 def stupid_decrypt_batch(message) Zlib.gunzip(public_decrypt([message].pack('H*'))).force_encoding('UTF-8') end
stupid_encrypt(message)
click to toggle source
# File lib/ktct/cryptable.rb, line 35 def stupid_encrypt(message) private_encrypt(Base64.encode64(message)).unpack('H*').first end
stupid_encrypt_batch(message)
click to toggle source
# File lib/ktct/cryptable.rb, line 43 def stupid_encrypt_batch(message) private_encrypt(Zlib.gzip(message)).unpack('H*').first end
sverify(signature, message)
click to toggle source
# File lib/ktct/cryptable.rb, line 23 def sverify(signature, message) key.verify('sha1', [signature].pack('H*'), Digest::SHA1.hexdigest(message)) end