code: func (s *SecureChannelSession) updateIV(meta, data []byte) error {
  	data = pad(data, 0)
  	a, err := aes.NewCipher(s.sessionMacKey)
  	if err != nil {
  		return err
  	}
  	crypter := cipher.NewCBCEncrypter(a, make([]byte, 16))
  	crypter.CryptBlocks(meta, meta)
  	crypter.CryptBlocks(data, data)
  	// The first 16 bytes of the last block is the MAC
  	s.iv = data[len(data)-32 : len(data)-16]
  	return nil
  }
docs: // updateIV is an internal method that updates the initialization vector after
  // each message exchanged.