code: func (c *Client) Renew(ctx context.Context, req TokenRequest) (*Signer, error) {
  	s := &Signer{
  		Certificate: req.Certificate,
  	}
  
  	rst, err := c.newRequest(req, "Renew", s)
  	if err != nil {
  		return nil, err
  	}
  
  	if req.Token == "" {
  		return nil, errors.New("TokenRequest Token is required")
  	}
  
  	rst.RenewTarget = &internal.Target{Token: req.Token}
  
  	header := soap.Header{
  		Security: s,
  		Action:   rst.Action(),
  	}
  
  	res, err := internal.Renew(c.WithHeader(ctx, header), c, &rst)
  	if err != nil {
  		return nil, err
  	}
  
  	s.Token = res.RequestedSecurityToken.Assertion
  
  	return s, s.setLifetime(res.Lifetime)
  }
docs: // Renew is used to request a security token renewal.