code: func EncryptBytes(data, key []byte) ([]byte, error) {
  	block, err := aes.NewCipher(key)
  	if err != nil {
  		return nil, err
  	}
  	gcm, err := cipher.NewGCM(block)
  	if err != nil {
  		return nil, err
  	}
  	nonce, err := CreateRandBytes(uint32(gcm.NonceSize()))
  	if err != nil {
  		return nil, err
  	}
  	return gcm.Seal(nonce, nonce, data, nil), nil
  }
docs: // EncryptBytes takes a byte slice of raw data and an encryption key and returns an encrypted byte slice of data.
  // The key must be an AES key, either 16, 24, or 32 bytes to select AES-128, AES-192, or AES-256