code: func (msg *sentMessage) Wrap(options *MessageParams) (envelope *Envelope, err error) {
  	if options.TTL == 0 {
  		options.TTL = DefaultTTL
  	}
  	if options.Src != nil {
  		if err = msg.sign(options.Src); err != nil {
  			return nil, err
  		}
  	}
  	if options.Dst != nil {
  		err = msg.encryptAsymmetric(options.Dst)
  	} else if options.KeySym != nil {
  		err = msg.encryptSymmetric(options.KeySym)
  	} else {
  		err = errors.New("unable to encrypt the message: neither symmetric nor assymmetric key provided")
  	}
  	if err != nil {
  		return nil, err
  	}
  
  	envelope = NewEnvelope(options.TTL, options.Topic, msg)
  	if err = envelope.Seal(options); err != nil {
  		return nil, err
  	}
  	return envelope, nil
  }
docs: // Wrap bundles the message into an Envelope to transmit over the network.