Sha256: 1cfeab80dbd68d0260fc3a7bc856c00b91d7abf98a4d8ac032c19ee0e4c086fa
Contents?: true
Size: 993 Bytes
Versions: 1
Compression:
Stored size: 993 Bytes
Contents
# dependencies require "active_support" # modules require "blind_index/model" require "blind_index/version" module BlindIndex class Error < StandardError; end def self.generate_bidx(value, key:, iterations:, expression: nil, **options) key = key.call if key.respond_to?(:call) raise BlindIndex::Error, "Missing key for blind index" unless key # apply expression value = expression.call(value) if expression # generate hash digest = OpenSSL::Digest::SHA256.new value = OpenSSL::PKCS5.pbkdf2_hmac(value.to_s, key, iterations, digest.digest_length, digest) # encode [value].pack("m") end end ActiveSupport.on_load(:active_record) do require "blind_index/extensions" extend BlindIndex::Model ActiveRecord::TableMetadata.prepend(BlindIndex::Extensions::TableMetadata) unless ActiveRecord::VERSION::STRING.start_with?("5.1.") ActiveRecord::Validations::UniquenessValidator.prepend(BlindIndex::Extensions::UniquenessValidator) end end
Version data entries
1 entries across 1 versions & 1 rubygems
Version | Path |
---|---|
blind_index-0.1.1 | lib/blind_index.rb |