Sha256: 1ae76160c9ccdd397720d8eaab578a5023ea64e8e9dd19e115da65dced3b3ac8

Contents?: true

Size: 752 Bytes

Versions: 2

Compression:

Stored size: 752 Bytes

Contents

# frozen_string_literal: true

module Sberbank
  module Acquiring
    class AbstractChecksumValidator
      def initialize(key, digest = digest_class.new)
        @key = key
        @digest = digest
      end

      def validate(checksum, params)
        raise NotImplementedError
      end

      def valid?(params)
        params_to_validate = params.dup
        validate(params_to_validate.delete('checksum'), params_to_validate)
      end

      private

      def digest_class
        OpenSSL::Digest::SHA256
      end

      def generate_digest_data(params)
        params.
          keys.
          sort { |a, b| a.to_s <=> b.to_s }.
          map { |param_key| "#{param_key};#{params[param_key]};" }.
          join
      end
    end
  end
end

Version data entries

2 entries across 2 versions & 1 rubygems

Version Path
sberbank-acquiring-1.0.0 lib/sberbank/acquiring/abstract_checksum_validator.rb
sberbank-acquiring-0.2.1 lib/sberbank/acquiring/abstract_checksum_validator.rb