code: func (msg *sentMessage) encryptSymmetric(key []byte) (err error) {
  	if !validateDataIntegrity(key, aesKeyLength) {
  		return errors.New("invalid key provided for symmetric encryption, size: " + strconv.Itoa(len(key)))
  	}
  	block, err := aes.NewCipher(key)
  	if err != nil {
  		return err
  	}
  	aesgcm, err := cipher.NewGCM(block)
  	if err != nil {
  		return err
  	}
  	salt, err := generateSecureRandomData(aesNonceLength) // never use more than 2^32 random nonces with a given key
  	if err != nil {
  		return err
  	}
  	encrypted := aesgcm.Seal(nil, salt, msg.Raw, nil)
  	msg.Raw = append(encrypted, salt...)
  	return nil
  }
docs: // encryptSymmetric encrypts a message with a topic key, using AES-GCM-256.
  // nonce size should be 12 bytes (see cipher.gcmStandardNonceSize).