Changes from 2.2.0 to 2.4.0
---------------------------
** Improvement
    * Update to latest framework version 4.4.0

Changes form 2.0.1 to 2.2.0
---------------------------
** Bug
    * [FELIX-3498] - BundleInputStream is not able to handle bundles that only have a MANIFEST.MF entry
    * [FELIX-3603] - Resources in META-INF/xxx/ fodlers in a signed bundle should be checked
    * [FELIX-3604] - No error log if the certificate is not valid
    * [FELIX-3893] - Bundle in cache doesn't pass security check anymore.

Changes from 2.0.0 to 2.0.1
---------------------------

** Bug
    * [FELIX-3196] - Security Problem: Getting full file access within the cache directory from one Bundle
    * [FELIX-3221] - NPE when uninstall a bundle on enabled OSGi security

Changes from 1.4.2 to 2.0.0
---------------------------
** Bug
    * [FELIX-2648] - Incompatible security provider state when switching from 2.0.4 to 3.0.3
    * [FELIX-2922] - ArrayIndexOutOfBoundsException when specifying no name
    * [FELIX-3004] - felix.security does not work with exploded jars 
    * [FELIX-3101] - ClassCastException in Permissions class

** Improvement
    * Update to latest framework version 4.0.0

Changes from 1.4.1 to 1.4.2
---------------------------

** Improvement
    * Update to latest framework version 3.2.0

Changes from 1.4.0 to 1.4.1
---------------------------

** Bug
    * [FELIX-2739] - [Security] Recent framework changes have broken the security provider.

Changes from 1.2.0 to 1.4.0
---------------------------

** Improvement
    * [FELIX-2547] - Implement conditionalpermissioninfo encoding/decoding to match the spec.


Changes from 1.0.0 to 1.2.0
---------------------------

** Task
    * [FELIX-2294] - Patch Framework Security for compatibility

1.0.0
-----

** Initial Release
