code: func (req *IdpAuthnRequest) MakeResponse() error {
  	if req.AssertionBuffer == nil {
  		if err := req.MarshalAssertion(); err != nil {
  			return err
  		}
  	}
  	req.Response = &Response{
  		Destination:  req.ACSEndpoint.Location,
  		ID:           fmt.Sprintf("id-%x", randomBytes(20)),
  		InResponseTo: req.Request.ID,
  		IssueInstant: TimeNow(),
  		Version:      "2.0",
  		Issuer: &Issuer{
  			Format: "urn:oasis:names:tc:SAML:2.0:nameid-format:entity",
  			Value:  req.ServiceProviderMetadata.EntityID,
  		},
  		Status: &Status{
  			StatusCode: StatusCode{
  				Value: StatusSuccess,
  			},
  		},
  		EncryptedAssertion: &EncryptedAssertion{
  			EncryptedData: req.AssertionBuffer,
  		},
  	}
  	return nil
  }
docs: // MakeResponse creates and assigns a new SAML response in Response. `Assertion` must
  // be non-nill. If MarshalAssertion() has not been called, this function calls it for
  // you.