github.com/newrelic/go-agent@v3.26.0+incompatible/internal/obfuscate.go (about) 1 // Copyright 2020 New Relic Corporation. All rights reserved. 2 // SPDX-License-Identifier: Apache-2.0 3 4 package internal 5 6 import ( 7 "encoding/base64" 8 "errors" 9 ) 10 11 // Deobfuscate deobfuscates a byte array. 12 func Deobfuscate(in string, key []byte) ([]byte, error) { 13 if len(key) == 0 { 14 return nil, errors.New("key cannot be zero length") 15 } 16 17 decoded, err := base64.StdEncoding.DecodeString(in) 18 if err != nil { 19 return nil, err 20 } 21 22 out := make([]byte, len(decoded)) 23 for i, c := range decoded { 24 out[i] = c ^ key[i%len(key)] 25 } 26 27 return out, nil 28 } 29 30 // Obfuscate obfuscates a byte array for transmission in CAT and RUM. 31 func Obfuscate(in, key []byte) (string, error) { 32 if len(key) == 0 { 33 return "", errors.New("key cannot be zero length") 34 } 35 36 out := make([]byte, len(in)) 37 for i, c := range in { 38 out[i] = c ^ key[i%len(key)] 39 } 40 41 return base64.StdEncoding.EncodeToString(out), nil 42 }