Sha256: 7587f23bf7328edc00063839c8c4a7d0fe454486260d01a788632a98a506561e

Contents?: true

Size: 1.16 KB

Versions: 5

Compression:

Stored size: 1.16 KB

Contents

require 'securerandom'
require 'openssl'
require 'base64'
require 'json'


module Fintecture
  module Utils
    class Crypto
      class << self

        def generate_uuid
          SecureRandom.uuid.gsub!('-','')
        end

        def sign_payload(payload)
          payload = payload.to_json.to_s if payload.is_a? Hash

          digest = OpenSSL::Digest::SHA256.new
          private_key = OpenSSL::PKey::RSA.new(Fintecture.app_private_key)

          begin
            signature = private_key.sign(digest, payload)
            Base64.strict_encode64(signature)
          rescue
            raise 'error during signature'
          end
        end

        def decrypt_private(digest)
          encrypted_string = Base64.decode64(digest)
          private_key = OpenSSL::PKey::RSA.new(Fintecture.app_private_key)

          begin
            private_key.private_decrypt(encrypted_string, OpenSSL::PKey::RSA::PKCS1_OAEP_PADDING)
          rescue
            raise 'error during decryption'
          end
        end

        def hash_base64(plain_text)
          digest = Digest::SHA256.digest plain_text
          Base64.strict_encode64(digest)
        end

      end
    end
  end
end

Version data entries

5 entries across 5 versions & 1 rubygems

Version Path
fintecture-0.1.6 lib/fintecture/utils/crypto.rb
fintecture-0.1.5 lib/fintecture/utils/crypto.rb
fintecture-0.1.4 lib/fintecture/utils/crypto.rb
fintecture-0.1.3 lib/fintecture/utils/crypto.rb
fintecture-0.1.2 lib/fintecture/utils/crypto.rb