# UPGRADE NOTES

## 4.0 to 4.1

**Assertion processor BC breaking change**

The assertion processor in 4.0 assumed all assertions are encrypted and would try and decrypt twice, causing a fatal error.
This problem was introduced in [#120](https://github.com/simplesamlphp/saml2/pull/120).

If you are using the assertion processor as a stand-alone component, then you will have to update your code to reflect this
change, see: [97a7bd0](https://github.com/simplesamlphp/saml2/commit/97a7bd0be4865617048e1ea92aa0b55df488fe4a).

## 3.4 to 4.0 

**Assertion processor BC breaking change**

The response processor in pre 4.0 releases assumed all assertions are decrypted, and caused a fatal error when the response was unsigned.
This problem was fixed in [#120](https://github.com/simplesamlphp/saml2/pull/120). 

If you are using the assertion processor as a stand-alone component, then you will have to update your code to reflect this
change, see: [e6c01fa](https://github.com/simplesamlphp/saml2/commit/e6c01fa9b0e815682e24916f03a84d245480c4a0).

**NameID's and Issuers**

In pre 4.0 releases we allowed both objects and arrays to be used for Issuers and nameID's. We know only support objects.
If in your code you use something like this:

```php
$assertion = new \SAML2\Assertion();
$assertion->setIssuer('someissuer');
```

You would now replace that with:

```php
$issuer = new \SAML2\XML\saml\Issuer();
$issuer->setValue('someissuer');

$assertion = new \SAML2\Assertion();
$assertion->setIssuer($issuer);
```

**Class properties**
All public properies have been replaced by either protected or private properties.
Public getter/setter methods are available to set/get values.

**Autoloading classes**
The PSR-0 autoloader has been removed. If your code isn't prepared to use PSR-4 namespaces yet, then you would have to change that before using this version.
