Sha256: cc4f01b33f357e84ab5233902c78e8a3b82e9354454a73123330274d9c89207e
Contents?: true
Size: 1.01 KB
Versions: 5
Compression:
Stored size: 1.01 KB
Contents
# encoding: utf-8 #require 'base64' module OneApm module Agent class Obfuscator attr_reader :key_bytes OA_EMPTY_KEY_BYTES = [0] OA_PACK_FORMAT = 'm' # RUM uses a shortened key, so just trim it up front def initialize(key, length=nil) if key.nil? || key.empty? @key_bytes = OA_EMPTY_KEY_BYTES else @key_bytes = key.bytes.to_a @key_bytes = @key_bytes.first(length) if length end end def obfuscate(text) [ encode(text) ].pack(OA_PACK_FORMAT).gsub(/\n/, '') end def deobfuscate(text) encode(text.unpack(OA_PACK_FORMAT).first ) end def encode(text) return text unless key_bytes encoded = "" encoded.force_encoding('binary') if encoded.respond_to?( :force_encoding ) index = 0 text.each_byte do |byte| encoded.concat((byte ^ key_bytes[index % key_bytes.length])) index+=1 end encoded end end end end
Version data entries
5 entries across 5 versions & 1 rubygems