module Myclear::Sign
Public Class Methods
generate(str, options = {})
click to toggle source
# File lib/myclear/sign.rb, line 3 def self.generate(str, options = {}) key = OpenSSL::PKey::RSA.new(Myclear.private_key) digest_type = options[:digest_type] || Myclear.digest_type digest = case digest_type when 'SHA1' OpenSSL::Digest::SHA1.new when 'SHA256' OpenSSL::Digest::SHA256.new when 'SHA512' OpenSSL::Digest::SHA512.new else raise ArgumentError, "invalid digest_type #{digest_type}, allow value: 'SHA1', 'SHA256', 'SHA512'" end Myclear::Utils.binary_to_hex(key.sign(digest, str)) end
verify?(sign, str, options = {})
click to toggle source
# File lib/myclear/sign.rb, line 19 def self.verify?(sign, str, options = {}) cer = OpenSSL::X509::Certificate.new(Myclear.fpx_certification) if(cer.not_after < Time.now && !Myclear.fpx_standby_certification.nil?) warn("Myclear Warn: the main certification has expired, please replace a new one.") cer = Myclear.fpx_standby_certification end digest_type = options[:digest_type] || Myclear.digest_type digest = case digest_type when 'SHA1' OpenSSL::Digest::SHA1.new when 'SHA256' OpenSSL::Digest::SHA256.new when 'SHA512' OpenSSL::Digest::SHA512.new else raise ArgumentError, "invalid digest_type #{digest_type}, allow value: 'SHA1', 'SHA256', 'SHA512'" end cer.public_key.verify(digest, Myclear::Utils.hex_to_binary(sign), str) end