Sha256: 051f5baf31efa0e7b7f294dfd71705d0edaeb601500f02ff9e79708179299473

Contents?: true

Size: 629 Bytes

Versions: 3

Compression:

Stored size: 629 Bytes

Contents

# frozen_string_literal: true

require "openssl"

module AndroidKeyAttestation
  module FixedLengthSecureCompare
    unless OpenSSL.singleton_class.method_defined?(:fixed_length_secure_compare)
      refine OpenSSL.singleton_class do
        def fixed_length_secure_compare(a, b) # rubocop:disable Naming/UncommunicativeMethodParamName
          raise ArgumentError, "inputs must be of equal length" unless a.bytesize == b.bytesize

          # borrowed from Rack::Utils
          l = a.unpack("C*")
          r, i = 0, -1
          b.each_byte { |v| r |= v ^ l[i += 1] }
          r == 0
        end
      end
    end
  end
end

Version data entries

3 entries across 3 versions & 1 rubygems

Version Path
android_key_attestation-0.3.0 lib/android_key_attestation/fixed_length_secure_compare.rb
android_key_attestation-0.2.0 lib/android_key_attestation/fixed_length_secure_compare.rb
android_key_attestation-0.1.0 lib/android_key_attestation/fixed_length_secure_compare.rb