code: func NewEncrypterManager(key []byte, iv []byte) (manager *EncrypterManager, err error) {
  	var encrypter Encrypter
  	manager = new(EncrypterManager)
  	switch len(iv) {
  	case 12:
  		// ChaCha20
  		encrypter, err = crypto.NewChaChaEncrypter(key, iv)
  	case 16:
  		// AES
  		encrypter, err = crypto.NewAESEncrypter(key, iv)
  	default:
  		return nil, ErrUnsupportedEncrypterType
  	}
  	manager.Encrypter = encrypter
  	return
  }
docs: // NewEncrypterManager initialize a new EncrypterManager