
This file contains a listing of all Jira tickets that have been closed
for a given release.  

Portions of this report were generated using the ReleaseNotes facility
in Jira.

Release 2.2.3
==============

Bug

    [WSS-634] - Nodes are not imported correctly when creating headers
    [WSS-644] - Error when a SOAP-Fault is thrown with MTOM enabled

Improvement

    [WSS-640] - Streaming Sender-Vouches validation does not work with SOAP 1.2
    [WSS-641] - Add the ability to configure a different separator for certificate constraints
    [WSS-642] - Use LinkedHashSet instead of TreeSet within getInclusivePrefixes


Release 2.2.2
==============

Bug

    [WSS-624] - Support for SAAJ-RI 1.4.0
    [WSS-625] - Use RFC4648 base64 encoder for signature values and BST
    [WSS-626] - Duplicates in the PrefixList

New Feature

    [WSS-623] - NameIdBean SPNameQualifier support

Improvement

    [WSS-627] - Java 10 SAAJ support
    [WSS-628] - Support processing xop:Include for the streaming WS-Security stack
    [WSS-629] - Support additional elements in SubjectConfirmationData

Wish

    [WSS-622] - from SAMLCallback no possible setting SAML2 SubjectConfirmation.NameID


Release 2.2.1
==============

Bug

    [WSS-540] - Need to load properties outside of classpath
    [WSS-617] - Allow to configure the SAML Signed Action with "signatureUser"
    [WSS-618] - Cannot create signature which includes KeyInfo
    [WSS-620] - The SecurityTokenRefSTRParser should derive the key length from the DerivedKeyToken "Length" parameter

Improvement

    [WSS-619] - Support adding a custom KeyInfo Element for Signature

Release 2.2.0
==============

Bug

    [WSS-558] - org.apache.ws.security.message.WSSecSignature can't support custom provider
    [WSS-560] - NullPointerException in WSSecEncrypt when encrypted header element has attributes
    [WSS-562] - Support processing EncryptedAssertions that contain EncryptedKey children
    [WSS-563] - Cannot decrypt non XML conform attachements
    [WSS-564] - Allow WS-SecurityPolicy 1.1 tokens to have an optional policy element
    [WSS-565] - Support the ability to create and process EncryptedKeys that reference a PublicKey
    [WSS-580] - ThreadLocalSecurityProvider returns null instead of empty collection
    [WSS-582] - Don't cache Crypto key references in WSHandler
    [WSS-583] - crypto.verifyTrust can fail when the DN of the issuer is more than once in the truststore
    [WSS-587] - Concurrency issue in EHCacheManagerHolder
    [WSS-590] - WSS4J relies on deafult locale
    [WSS-594] - Copy Security Header SOAP MustUnderstand/Actor to an EncryptedHeader element
    [WSS-602] - ConfigurationConstants.VALIDATOR_MAP is not supported
    [WSS-603] - Improper date check in SamlAssertionWrapper.checkIssueInstant
    [WSS-604] - UsernameTokenNoPassword does not work via WSHandler
    [WSS-610] - WSSecurityUtil.decodeAction misbehaving when sending NoSecurity
    [WSS-611] - CAs with the NameConstraint extension cause exceptions when verifying trust
    [WSS-612] - CertificateStore crypto implementation does not correctly handle certificate chains

Improvement

    [WSS-569] - Improvements to error messages
    [WSS-570] - Typo in the constant name for "RSAOAEP"
    [WSS-584] - Don't create ReplayCache instances internally
    [WSS-586] - Don't query a CallbackHandler for a secret key when parsing a SAML Subject for credentials
    [WSS-592] - Add support for a comma-separated list of crls
    [WSS-596] - org.apache.wss4j.common.crypto.CryptoFactory add security provider always
    [WSS-597] - Implement equals/hashCode for the WSS4J policy model
    [WSS-599] - Upgrade to Java 8 DateTime API
    [WSS-600] - Get the configured ParserPool via OpenSAMLUtil
    [WSS-601] - Optionally skip XACML initialization for OpenSAML
    [WSS-605] - Ensure the ws-security-dom can work with the saaj impl in latest Java9 EA kit
    [WSS-608] - Allow policy tokens not to have a wsp:Policy child element
    [WSS-613] - Update OpenSAMLUtil to be able to sign generic SignableSAMLObjects

New Feature

    [WSS-571] - Truststore Provider
    [WSS-593] - Implement Certificate Issuer DN Constraint support
    [WSS-598] - Add support for signing + encrypting messages using MTOM

Wish

    [WSS-573] - Ignore IntelliJ user files


Release 2.1.10
==============

Improvement

    [WSS-608] - Allow policy tokens not to have a wsp:Policy child element

New Feature

    [WSS-606] - Possibility to configure the SAML attribute //Assertion/Subject/NameID/@SPProvidedID in a CallbackHandler


Release 2.1.9
=============

Bug

    [WSS-558] - org.apache.ws.security.message.WSSecSignature can't support custom provider
    [WSS-602] - ConfigurationConstants.VALIDATOR_MAP is not supported
    [WSS-603] - Improper date check in SamlAssertionWrapper.checkIssueInstant
    [WSS-604] - UsernameTokenNoPassword does not work via WSHandler

Improvement

    [WSS-597] - Implement equals/hashCode for the WSS4J policy model
    [WSS-600] - Get the configured ParserPool via OpenSAMLUtil
    [WSS-601] - Optionally skip XACML initialization for OpenSAML


Release 2.1.8
=============

Bug

    [WSS-585] - Kerberos processing fails on HP Java 8.0.06
    [WSS-587] - Concurrency issue in EHCacheManagerHolder
    [WSS-590] - WSS4J relies on deafult locale
    [WSS-594] - Copy Security Header SOAP MustUnderstand/Actor to an EncryptedHeader element

Improvement

    [WSS-592] - Add support for a comma-separated list of crls

New Feature

    [WSS-593] - Implement Certificate Issuer DN Constraint support


Release 2.1.7
=============

Bug

    [WSS-582] - Don't cache Crypto key references in WSHandler
    [WSS-583] - crypto.verifyTrust can fail when the DN of the issuer is more than once in the truststore

Improvement

    [WSS-584] - Don't create ReplayCache instances internally


Release 2.1.6
=============

Bug

    [WSS-577] - Binary compatibility broken between version <=2.1.3 and >=2.1.4 with org.apache.wss4j.dom.WSSecurityEngineResult
    [WSS-578] - Binary compatibility breaks between 2.1.5 and 2.1.6-SNAPSHOT
    [WSS-580] - ThreadLocalSecurityProvider returns null instead of empty collection

New Feature

    [WSS-575] - Support for Digest other than sha1 in xenc:EncryptionMethod


Release 2.1.5
=============

Bug

    [WSS-560] - NullPointerException in WSSecEncrypt when encrypted header element has attributes
    [WSS-562] - Support processing EncryptedAssertions that contain EncryptedKey children
    [WSS-563] - Cannot decrypt non XML conform attachements
    [WSS-564] - Allow WS-SecurityPolicy 1.1 tokens to have an optional policy element
    [WSS-565] - Support the ability to create and process EncryptedKeys that reference a PublicKey
    [WSS-566] - AES_128_GCM does not work for attachments
    [WSS-567] - processSecurityHeadaers does not work for 1.1 namespace

Improvement

    [WSS-561] - No way to set SAML Issuer Format Value
    [WSS-569] - Improvements to error messages
    [WSS-570] - Typo in the constant name for "RSAOAEP"

New Feature

    [WSS-571] - Truststore Provider

Wish

    [WSS-573] - Ignore IntelliJ user files


Release 2.1.4
=============

Bug

    [WSS-552] - The KerberosServiceExceptionAction and KerberosClientExceptionAction do not support HP JDK
    [WSS-553] - <wsu:Expires> and <wsu:Created> elements not use UTC time format
    [WSS-556] - Basic256Sha256 policy uses wrong minimum symmetric key length for signature
    [WSS-557] - Using MTOM and WS-Security leads to "Attachment not found"
    [WSS-559] - NullPointerException in TimestampInputHandler.checkBSPCompliance

Improvement

    [WSS-554] - Improved error message for timestamp in the future


Release 2.1.3
=============

Bug

    [WSS-548] - logging secretKey
    [WSS-549] - Don't write out a ReferenceList if there are no elements to encrypt
    [WSS-551] - Property passwordEncryptorInstance is not honored

Improvement

    [WSS-550] - Add the ability to specify a MGF-SHA algorithm in the policy AlgorithmSuiteType


Release 2.1.2
=============

Bug

    [WSS-541] - No support for signing and encrypting attachments while using derived keys
    [WSS-542] - Secure Conversation Renew is missing Instance creation
    [WSS-546] - Support sp11:WssX509V1Token10 in the policy model

Improvement

    [WSS-539] - Support MTOM/XOP-optimized content within a CipherValue element
    [WSS-544] - Support the ability to store message bytes in attachments (when using MTOM)
    [WSS-545] - Add the ability to create DelegateRestrictionType Conditions when creating SAML Assertions

New Feature

    [WSS-543] - Create a Merlin implementation that retrieves CA certs via their SubjectKeyIdentifier


Release 2.1.1
=============

Bug

    [WSS-538] - Signing/Validating SAML Assertions not working in an OSGi container


Release 2.1.0
=============

Bug

    [WSS-535] - Add WSSE and WSU xmlns definitions to signature's SecurityTokenReference
    [WSS-536] - WSSecurityUtil.getCipherInstance() does not use configured provider

Improvement

    [WSS-529] - Support Inclusive C14N via policy
    [WSS-530] - Add a property to enforce that a received Timestamp has an "Expires" Element
    [WSS-531] - Only create an EncryptedHeader if the parent node is the SOAP Header
    [WSS-533] - Also use signing key when trying to detect message replay attacks
    [WSS-534] - Allow SupportingToken policies to have more than one token


Release 2.0.3
=============

Bug

    [WSS-514] - Missing CUSTOM_TOKEN action in WSSecurityUtil#decodeHandlerAction @l961
    [WSS-517] - Cannot resolve WSS signature reference URI that points to AssertionID attribute of SAML 1.1 token
    [WSS-519] - SAML 2.0 - WSS4J is expecting SecurityTokenReference under KeyInfo in EcryptedAssertion element

Improvement

    [WSS-515] - Add support for creating SAML Assertions with "Advice" Elements
    [WSS-518] - WSConfig static initializer attempts to modify JCE Providers fail in JVM with restrictive security policies
    [WSS-521] - Validate that a SAML Assertion "IssueInstant" is not "in the future"
    [WSS-522] - Enforce security constraints on SAML AuthnStatement attributes
    [WSS-523] - Add the ability to supply AudienceRestrictions when validating SAML tokens
    [WSS-524] - Set a default TTL of 30 minutes on a SAML Assertion with no NotOnOrAfter Condition
    [WSS-525] - Provide a means of unifying all error messages


Release 2.0.2
=============

Bug

    [WSS-508] - When using "add inclusive prefixes" and EXC C14N - signature cannot be validated
    [WSS-513] - Fails to parse Timestamp headers in Thai locale

Improvement

    [WSS-499] - Re-enable KerberosTests
    [WSS-510] - Provide a way of requiring a particular SAML subject confirmation method
    [WSS-511] - Provide a (default) way of requiring at least one standard Subject Confirmation Method
    [WSS-512] - Provide a configurable way of enforcing that SAML Bearer Tokens must have an internal signature

New Feature

    [WSS-507] - ThreadLocal based Security Provider proxy


Release 2.0.1
=============

Bug

    [WSS-500] - Kerberos client/server actions are only supporting NT_HOSTBASED_SERVICE service name form
    [WSS-501] - Kerberos token decoder default implementation fails to extract the session when validating a ticket issued by a KDC based on Active Directory

Improvement

    [WSS-502] - Add an easy way to retrieve signature digest values
    [WSS-503] - Share an existing global ehcache manager for ws security replay caches

Release 2.0.0
=============

Sub-task

    [WSS-343] - Move 1.6.x code into a new module.
    [WSS-344] - Refactor Crypto functionality to be used by both implementations
    [WSS-345] - Refactor Exception functionality to be used by both implementations
    [WSS-346] - Refactor SAML functionality to be used by both implementations
    [WSS-347] - Refactor configuration and constants to be used by both implementations
    [WSS-348] - Refactor Caching nonces/timestamp functionality to be used by both implementations
    [WSS-349] - Refactor Derived Key / SecureConveration functionality to be used by both implementations
    [WSS-350] - Update package names
    [WSS-352] - Reconcile AssertionWrapper & SAMLAssertionWrapper
    [WSS-353] - Add support in the streaming code for decrypting an EncryptedKey in the Subject of a SAML Assertion.
    [WSS-354] - Add support for specifying different algs for sign or c14n a SAML Assertion in the streaming code.
    [WSS-355] - Reconcile SAMLCallback between the two implementations
    [WSS-356] - Investigate signing Crypto differences
    [WSS-360] - Port BSP enforcer to streaming code.
    [WSS-361] - Update code to use correct WSPasswordCallback code as per the DOM code.
    [WSS-362] - Port Kerberos & SPNEGO work to streaming code
    [WSS-363] - Support pluggable Validation of received tokens as per DOM code
    [WSS-364] - Ensure that SecurityEvents let us see what was processed for the non-policy case.
    [WSS-366] - Disable Cobertura by default
    [WSS-367] - Set up a parent pom with dependency management.
    [WSS-368] - Log4j configuration
    [WSS-370] - Add CXF support for custom Algorithm Suites.
    [WSS-371] - Add support for (custom) GCM algorithm-suites.
    [WSS-372] - Add stricter enforcement of required policy elements as added to CXF.
    [WSS-373] - Check sender-vouches and holder-of-key requirements for SAML tokens.
    [WSS-374] - Support Kerberos token policy validation.
    [WSS-375] - Support IssuedToken policy validation
    [WSS-376] - Support Derived Keys policy validation
    [WSS-377] - Verify Signed/Endorsing/Encrypted/SupportingTokens policy validation
    [WSS-378] - Update tests in ws-security module to check security events.
    [WSS-379] - Does the policy validation code support checking the token requirement against whether it is an initiator or recipient?
    [WSS-381] - Support KeyValueTokens
    [WSS-386] - Introduce proprietary Compress-Transformation for Encryption / Decryption

Bug

    [WSS-408] - StAX - Exception handling and correct Fault-Codes per WSS spec
    [WSS-421] - WSSecSignature does not allow access to the internal BinarySecurityToken after it is applied to the security header
    [WSS-423] - Support CRL checking for streaming code
    [WSS-424] - Signature Element is not inserted in the correct place in the header in certain circumstances
    [WSS-427] - Add support for processing UsernameToken Created Dates
    [WSS-433] - Specifying actions of "WSSConstants.SIGNATURE_CONFIRMATION, WSSConstants.SIGNATURE" hangs WSS4J
    [WSS-436] - Outbound StaX code should fail on not finding a signature/encryption part
    [WSS-437] - Error in using StaX WS-Security + CXF WS-Addressing
    [WSS-439] - Error in using StaX WS-Security + CXF WS-Addressing
    [WSS-442] - "Never" Token Inclustion is not handled correctly (for X.509 tokens)
    [WSS-443] - Treat tokens received over TLS as "encrypted"
    [WSS-446] - Enable SignatureConfirmation without a Signature
    [WSS-448] - OnlySignEntireHeadersAndBody policy validation is incorrect
    [WSS-449] - Receiving code can't handle the case of a Thumbprint reference to a BST in the token
    [WSS-450] - Inbound Processing code fails with an Encrypted Signature
    [WSS-452] - Streaming code does not support an EncryptedData security header element without a preceeding ReferenceList
    [WSS-453] - "Once" Token Inclusion handling is not working
    [WSS-454] - TokenProtection error
    [WSS-457] - Incorrect validation of ProtectTokens assertion
    [WSS-458] - Allow no security header in certain use-cases
    [WSS-459] - RequiredParts + EncryptedParts policy validation not working
    [WSS-462] - ProtectionOrderAssertionState.testProtectionOrder is not working
    [WSS-463] - Refactor Signature + Encryption referencing
    [WSS-466] - assure compatibility with the change in ehcache CacheManager's create method from version 2.5.1 to 2.5.2 and up
    [WSS-468] - Symmetric Binding + EncryptBeforeSigning puts the Signature in front of the EncryptedKey
    [WSS-469] - Symmetric Binding + Derived Keys is not currently working
    [WSS-470] - AsymmetricBinding + ProtectTokens validation not working
    [WSS-471] - AsymmetricBinding validation without IncludeTimestamp doesn't work
    [WSS-472] - Incorrect Symmetric Key Derivation Length validation
    [WSS-479] - Inbound streaming does not handle Symmetric Holder-Of-Key correctly
    [WSS-480] - Streaming code hangs on a symmetric derived key response
    [WSS-481] - Problem with EncryptSignature + EndorsingSupportingTokens
    [WSS-482] - EncryptedElements + SignedElements validation not working
    [WSS-484] - Streaming code can't process a Key reference pointing to an EncryptedData element
    [WSS-486] - Streaming code does not process a (non-secured) SOAP Fault correctly
    [WSS-487] - Certain action combinations causes WSS4J to hang
    [WSS-490] - Derived Endorsing policy validation error
    [WSS-491] - Problem storing custom Principals
    [WSS-496] - "tests" classifier artifacts dependencies should not have compile scope
    [WSS-498] - Retrieving of public key from certificates in missing for signed results in compare credential method of org.apache.wss4j.dom.saml.DOMSAMLUtil

Improvement

    [WSS-383] - Allow encrypted password storage in signaturePropFile
    [WSS-391] - Create a PrivateKeyPasswordCallback for retrieval of server key passwords
    [WSS-403] - Use a common method for all of the P_hash implementations
    [WSS-412] - Unify error messages for the streaming code
    [WSS-413] - EncryptedKey security issue with streaming code
    [WSS-414] - Ensure that Algorithms are checked in streaming code before they are used
    [WSS-415] - Reject RSA v1.5 Key Transport Algorithm by default
    [WSS-420] - Add the ability to explicitly allow/disallow UsernameTokens with no passwords
    [WSS-422] - Move SAML Signature Profile Validation to the SamlAssertionValidator
    [WSS-426] - Support future TTL in the StaX code for Timestamps
    [WSS-438] - Support Signature Cert Constraints as per the DOM code
    [WSS-447] - Add the ability to include the signing token for IssuerSerial/Thumbprint Reference cases
    [WSS-489] - Extend Crypto interface with verifyTrustDirect() method
    [WSS-495] - Add support to configure the digest method used for SAML Assertions

New Feature

    [WSS-311] - Streaming-WebService-Security-Framework contribution/donation
    [WSS-430] - Support for secured SOAP attachments
    [WSS-497] - Support for SAML 2.0 EncryptedAssertion Element

Task

    [WSS-342] - Refactoring
    [WSS-351] - SAML work
    [WSS-359] - Streaming WS-Security support
    [WSS-365] - Build issues
    [WSS-369] - WS-SecurityPolicy work
    [WSS-405] - Support for XML Encryption 1.1 algorithms
    [WSS-425] - Add + update OSGi import/export information in the new modules
    [WSS-429] - Consider some @Deprecated classes in the old namespace
    [WSS-432] - Support EncryptedKeySHA1 KeyIdentifier in the StaX code
    [WSS-434] - Add ValueType attribute to a Signature/Encryption Reference to a DerivedKeyToken
    [WSS-460] - Support RequireSignatureConfirmation policy validation
    [WSS-494] - WSS4j documentation links are broken.

Release 1.6.15
=============

Bug

    [WSS-491] - Problem storing custom Principals
    [WSS-492] - WSS4J adds invalid wsu:Id attribute on SAML assertions

Improvement

    [WSS-495] - Add support to configure the digest method used for SAML Assertions

Release 1.6.14
=============

Bug

    [WSS-488] - Regression in parsing SecurityTokenReferences inside of a SAML Signature KeyInfo

Release 1.6.13
=============

Improvement

    [WSS-428] - It should be possible to use the useReqSigCert even when the certificate is not sent in the request
    [WSS-477] - Support the ability to create SAML2 Assertions with OneTimeUse + ProxyRestriction Conditions
    [WSS-478] - Support the ability to cache SAML2 Assertions with "OneTimeUse" Conditions
    [WSS-483] - wsse:Reference without ValueType

Release 1.6.12
=============

Bug

    [WSS-418] - Cannot configure SAML properties in WSS4JOutInterceptor without having to add that config file in the classpath
    [WSS-473] - BST signature element
    [WSS-474] - Missing the 'EncodingType' attribute in element built by STRTransformUtil#createBSTX509
    [WSS-475] - Issue with multiple processing of ReferenceList in EncryptedKey element

Improvement

    [WSS-465] - Possible information leak: incremental IDs
    [WSS-467] - Support creating SAML 2.0 Tokens with the AuthnStatement SessionNotOnOrAfter attribute.
    [WSS-476] - Add the ability to configure the Signature Canonicalization Algorithm via WSHandler

Release 1.6.11
=============

Improvement

    [WSS-441] - Allow the date/time in the security headers to be spoofed

Task

    [WSS-434] - Add ValueType attribute to a Signature/Encryption Reference to a DerivedKeyToken

Release 1.6.10
=============

Bug

    [WSS-421] - WSSecSignature does not allow access to the internal BinarySecurityToken after it is applied to the security header
    [WSS-424] - Signature Element is not inserted in the correct place in the header in certain circumstances
    [WSS-427] - Add support for processing UsernameToken Created Dates
    [WSS-431] - Performance bottleneck in MemoryReplayCache on high load

Improvement

    [WSS-420] - Add the ability to explicitly allow/disallow UsernameTokens with no passwords
    [WSS-422] - Move SAML Signature Profile Validation to the SamlAssertionValidator

Release 1.6.9
=============

Bug

    [WSS-417] - Cannot deploy WSS4J 1.6.8 to an OSGi container

Release 1.6.8
=============

Sub-task

    [WSS-410] - Reduce dependency on xmlsec library

Bug

    [WSS-231] - There is an issue with the position of the <Timestamp> element in the <Security> header when using WSS4J calling .NET Web Services with WS-Security.
    [WSS-399] - WSS4J: cannot set DigestMethod for KEYTRANSPORT_RSAOEP though requested by W3C
    [WSS-407] - Error when signing a SOAP Body that is encrypted with a reference to a SAML Token
    [WSS-409] - explicit dependency on XMLDSigRI in WSSConfig causes java.lang.ClassNotFoundException: org.apache.jcp.xml.dsig.internal.dom.XMLDSigRI on WAS 8.5

Improvement

    [WSS-404] - Store Subject from JAAS LoginContext in WSSecurityEngineResult
    [WSS-406] - Add the ability to define which algorithms are acceptable when processing a security header
    [WSS-411] - STRTransform does not work in certain circumstances


Release 1.6.7
=============

Bug

    [WSS-392] - WSS4J can't handle SAML KeyIdentifier references to encrypted SAML Assertions stored in the cache
    [WSS-393] - WSS4J is not handling KeyIdentifier inside SecurityTokenReference inside a KeyInfo
    [WSS-394] - WSS4J is not handling X509Data inside SecurityTokenReference inside a KeyInfo
    [WSS-396] - ConcurrentModificationException in MemoryReplayCache.processTokenExpiry
    [WSS-398] - Can't create a UsernameToken without a password

Improvement

    [WSS-395] - Support Certificate Constraints on the Subject DN of the certificate used for signature validation

Release 1.6.6
=============

Bug

    [WSS-357] - WSS4J can't handle thumbprint/ski references to a token in the security header
    [WSS-385] - UsernameToken handles long strings badly
    [WSS-389] - WSS4J TimeToLive value has a maximum of 25 days
    [WSS-390] - AssertionWrapper always tries to re-marshal when toDOM is called

Improvement

    [WSS-387] - Support future TTL setting when processing SAML Tokens
    [WSS-388] - Add support for populating SAML2 SubjectConfirmationData attributes when creating a SAML Assertion

New Feature

    [WSS-380] - SAML1 AuthenticationStatement only supports AuthenticationMethod Password

Task

    [WSS-358] - Record how a certificate was referenced for signature or encryption


Release 1.6.5
=============

Bug

    [WSS-316] - Tests failing with: The signature or decryption was invalid
    [WSS-331] - Insufficient checking of SAML Condition NotBefore/NotOnOrAfter validation dates (?)
    [WSS-333] - MerlinDevice tries to load truststore of type "trustStorePassword"
    [WSS-335] - SAML NotOnOrAfter Conditions not set correctly in certain circumstances
    [WSS-341] - the "FIRST step" check in SignatureTrustValidator.verifyTrustInCert ignore the enableRevocation status

Improvement

    [WSS-187] - Support Nonce Caching in Username Token Processing
    [WSS-325] - Add support for GCM algorithms via BouncyCastle
    [WSS-326] - Upgrade to Santuario 1.5.0
    [WSS-329] - Support validating Conditions in the SAMLAssertionValidator.
    [WSS-332] - Make Spnego Client and Service Actions pluggable
    [WSS-337] - Validate SAML Assertions against schema/specs
    [WSS-340] - support Certificates revocation check before encrypt on sender side

New Feature

    [WSS-336] - Option for checking EncryptedData elements are covered by signature

Release 1.6.4
=============

Bug

    [WSS-319] - NPE when certificate identified by SKI can't be found
    [WSS-320] - ClassCastException when verifying XML signature, multiple WARs deployed to same Tomcat instance
    [WSS-321] - Cannot configure for no password element expected using Spring configuration
    [WSS-323] - WS-Trust 1.3 namespace not supported when looking for a BinarySecret in a SAML KeyInfo
    [WSS-324] - org.apache.ws.security.str.SignatureSTRParser throws ArrayIndexOutOfBoundsException: 0 when crypto returns zero-length array of certificates

Improvement

    [WSS-322] - Add the ability to set DOM Elements directly on a SAMLCallback object
    [WSS-327] - Add support for obtaining and validating SPNEGO tokens.


Release 1.6.3
=============

Bug

    [WSS-304] - WSSecEncryptedKey should initialize cipher using WRAP_MODE instead of ENCRYPT_MODE.
    [WSS-306] - It would be nice to have WSSecEncryptedKey generate secret keys by means of KeyGenerator
    [WSS-317] - SAML Assertions have invalid ID values
    [WSS-318] - WsiBSPCompliant defaults to true

Improvement

    [WSS-305] - Migrate to OpenSaml2 2.5.1 from 2.4.1
    [WSS-307] - Support the ability to sign and encrypt message parts using a Kerberos Ticket
    [WSS-309] - Improve the configurability of the SAML signature creation in AssertionWrapper
    [WSS-310] - Reference and DerivedKeyToken message tokens are missing equals and hashcode methods for logical comparision
    [WSS-312] - Improve logging levels
    [WSS-314] - Add a Merlin configuration option to specify a default password to use to access a private key
    [WSS-315] - jaasLoginModuleName methods in KerberosTokenValidator.java should be renamed to contextName

New Feature

    [WSS-313] - Support UsernameToken validation against JAAS LoginModule


Release 1.6.2
=============

Bug

    * [WSS-294] - Merlin doesn't support physical providers with no keystore file
    * [WSS-295] - org.apache.ws.security.saml.ext.bean.AttributeBean attributeValues is not correct
    * [WSS-296] - SubjectLocality is missing from AuthenticationStatementBean
    * [WSS-297] - Subject Bean is missing NameID Format variable
    * [WSS-299] - UsernameToken Salt Mac/Encryption Flag on Wrong End of Array
    * [WSS-300] - SubjectKeyIidentifier (SKI) incorrectly calculated for 2048-bit RSA key
    * [WSS-301] - WSS4J 1.6 incorrectly using XML-Security ResourceResolvers
    * [WSS-302] - Unable to load keystore/truststore when it cannot be loaded from an InputStream
    * [WSS-303] - Support SKI_KEY_IDENTIFIER, THUMBPRINT_IDENTIFIER, ISSUER_SERIAL when signing "sender vouches" assertions

New Feature

    * [WSS-251] - Support WSS Kerberos Token Profile

Release 1.6.1
=============

Bug

    * [WSS-273] - org.apache.ws.security.transform.STRTransform causes ClassCastException when wss4j is running on IBM 1.6 JVM
    * [WSS-276] - Support signing a SAML Assertion using a derived key
    * [WSS-280] - USE_DERIVED_KEY instead of USE_DERIVED_KEY_FOR_MAC in WSHandler
    * [WSS-283] - ClassCastException when signing message with existing WSSE header containing Text as first child
    * [WSS-285] - Error in SAML1.1 Conditions support
    * [WSS-286] - Evidence element not present in SAML AuthzDecisionStatement
    * [WSS-291] - Default to allowing Timestamps Created up to 60 seconds in the future to avoid clock skew problems

Improvement

    * [WSS-275] - Use SLF4J for logging framework for 1.6
    * [WSS-278] - verifyTrust in Crypto should use CRLs as well
    * [WSS-284] - Improvements to wsse11:EncryptedHeader support
    * [WSS-287] - No longer use keystore for truststore purposes if the latter is explicitly specified.
    * [WSS-288] - Incorporating Colm's Blog entries into WSS4J documentation
    * [WSS-289] - Text improvements to website pages
    * [WSS-290] - Create Principals when processing SAML and BinarySecurityTokens

Release 1.6.0
=============

Bug

    * [WSS-40] - WSSecurityEngine does not support chained certificates
    * [WSS-81] - Compatibility between WSS4J and WebLogic 9 for Encryption
    * [WSS-90] - SamlUtil.java throws XMLSecurityException when SAML SubjectConfirmation element doesn't have KeyInfo child
    * [WSS-99] - JCE provider ordering on solaris
    * [WSS-117] - WSS4J does not supports KeyIdentifiers to reference SAML tokens but this is allowed by the WSS specification. Integration tesitng with owsm failed.
    * [WSS-136] - POM files needed in Maven repository for OpenSAML, WSS4J, and XML Security
    * [WSS-147] - WCF interop issue: Security header ordering constraint
    * [WSS-175] - Remove static class variables from WSHandler
    * [WSS-176] - Problem with WSSecurityUtil.prependChildElement and JBossWS
    * [WSS-178] - signature verification failure of signed saml token due to The Reference for URI (bst-saml-uri) has no XMLSignatureInput
    * [WSS-182] - Encryption with symmetric key with encryptSymmKey set to false generates invalid xml without xenc defined
    * [WSS-185] - NullPointerException on empty UsernameToken
    * [WSS-196] - STRTransform not compatible with Sun's SAAJ implementation
    * [WSS-198] - Problem when body is signed and then an XPath is encrypted
    * [WSS-201] - Some of the processors use the wrong Crypto implementation
    * [WSS-205] - WSS4J Handler passes null to MessageContext.setProperty
    * [WSS-206] - The way referncelist processing of SAML issued tokens doesn't work properly and need to extract necessary information to do algorithm validation
    * [WSS-209] - NPE in AbstractCrypto.getCryptoProvider()
    * [WSS-210] - NPE in CryptoBase.getAliasForX509Cert(Certificate cert) if Keystore does not contain a Certifcate entry for each alias
    * [WSS-211] - WSS4J does not support ThumbprintSHA1 in DerivedKeyTokens
    * [WSS-212] - Replace deprecated references to getSubject/IssuerDN
    * [WSS-219] - empty/blank password not supported in username token. value read by wss4j is null instead of empty string
    * [WSS-220] - WSHandler is using default configuration
    * [WSS-221] - UUIDGenerator generates duplicate identifiers when used in a multi-threaded environment
    * [WSS-222] - SignatureProcessor does not provide correct signature coverage results with STR Dereference Transform
    * [WSS-223] - Incorrect xpath set on WSDataRef when decrypting an EncryptedHeader instance.
    * [WSS-224] - SAMLTokenSignedAction and WSSecSignatureSAML do not honor signature algorithm or digest algorithm from WSSHandler configuration
    * [WSS-225] - 'Unprintable' characters in Distinguished Name causing comparison failure
    * [WSS-226] - Interoperability b/w Java consumer of .NET Web Service with WS-Security on WSE 2.0
    * [WSS-227] - CryptoBase.getPrivateKey() unable to handle empty (null) passwords
    * [WSS-234] - Comment as first element in document causes NPE
    * [WSS-241] - WSS4j needs to export a version in it's Export-Package directive.
    * [WSS-242] - Signing EncryptedData or EncryptedKey elements creates extraneous Id attributes
    * [WSS-243] - Can't use Password Digest on Z/OS
    * [WSS-244] - Loading of Signature and Encryption property files not trimming trailing whitespace - Leads to ClassNotFoundException
    * [WSS-245] - WSHandlerConstants.PW_CALLBACK_REF isn't correctly searched for
    * [WSS-254] - Encryption/signing of multiple message parts with same name not working
    * [WSS-258] - Newer version of SecureConversation not recognised for derived key algorithm
    * [WSS-260] - WSS4J can't process a STR to a SAML Assertion that is not in the SOAP message
    * [WSS-261] - Rampart failing to extract keyinfo from SAML assertion
    * [WSS-262] - WSS4J accepts Timestamps that are "Created" in the future
    * [WSS-270] - No need to ensure Crypto object is non-null for SAML signature verification using a secret key

Improvement

    * [WSS-69] - maven2
    * [WSS-84] - Make the use of the VM-wide keystore (lib/security/cacerts) optional
    * [WSS-131] - no support for extension of SecurityHeader
    * [WSS-146] - Upgrade opensaml dependency to 2.x line
    * [WSS-158] - Upgrade to BouncyCastle 1.43
    * [WSS-169] - Add an EncodingType attribute for a UsernameToken nonce
    * [WSS-170] - SignatureAction does not set DigestAlgorithm on WSSecSignature instance
    * [WSS-171] - Improve XML encryption processing
    * [WSS-173] - Remove unnecessary namespace definitions
    * [WSS-174] - Remove deprecated APIs
    * [WSS-177] - Allow encryption using a symmetric key and EncryptedKeySHA1
    * [WSS-179] - Allow signature using a symmetric key and EncryptedKeySHA1
    * [WSS-180] - Support symmetric signature/encryption via configuration
    * [WSS-183] - Change the UsernameTokenProcessor to validate plaintext passwords
    * [WSS-184] - Specifying alternate cacerts keystore via properties?
    * [WSS-186] - Move TTL validation to the TimestampProcessor
    * [WSS-188] - CallbackHandler behaviour for derived keys
    * [WSS-189] - Refactor signature confirmation code
    * [WSS-190] - Replace all Vector references with Lists.
    * [WSS-191] - Move certificate validation our of WSHandler and into SignatureProcessor
    * [WSS-192] - Share code between the EncryptedKeyProcessor and the ReferenceListProcessor
    * [WSS-195] - More detailed exception thrown from CryptoBase.getPrivateKey()
    * [WSS-199] - Add support for WCF non-standard Username Tokens
    * [WSS-202] - Upgrade to XML Security 1.4.3.
    * [WSS-203] - Move trunk to use JSR-105 APIs instead of custom XML-Security APIs for XML digital signature functionality.
    * [WSS-215] - SignatureProcessor is not reusing results from WSDocInfo for the Reference case.
    * [WSS-216] - SignatureProcessor does not support directly referencing a SecurityContextToken
    * [WSS-217] - Add ability to specify a reference to an absolute URI in the derived key functionality
    * [WSS-229] - UsernameTokenProcessor should be able to act as a UsernameToken parser only and not enforce the validation of passwords
    * [WSS-232] - Performance Improvement in WSSConfig
    * [WSS-233] - Allow configuration of UsernameTokenSpec 1.1 derived key functionality through WSHandler
    * [WSS-236] - Provide signature digest algorithm in signature processor results.
    * [WSS-237] - Provide key transport algorithm in encryption processor results
    * [WSS-238] - Switch to wsse:KeyIdentifier instead of wsse:Reference for SAML references within SOAP:body EncryptedData elements.
    * [WSS-239] - Need ability to handle password "equivalent" between WSPasswordCallback and UsernameToken when it's binary data
    * [WSS-240] - Support KeyValue in SAML subject
    * [WSS-247] - Upgrade to XML Security 1.4.4
    * [WSS-253] - UsernameTokenProcessor logs the password to the log
    * [WSS-257] - Avoid converting the SOAP Body to DOM on the processing side if possible
    * [WSS-259] - Improve outbound DOM element location
    * [WSS-263] - Store secret key from signature processor
    * [WSS-264] - OSGi bundle should NOT specify the universal DynamicImport-Package: *
    * [WSS-266] - Provide better support for pluggable authentication/verification of security tokens
    * [WSS-271] - Add support for custom validation of BinarySecurityTokens
    * [WSS-274] - Add support for allowing future-dated Timestamps

New Feature

    * [WSS-194] - Support overriding KeyStore alias for signature so that it can be different than user name used for UsernameToken
    * [WSS-204] - Support validating SAML 2.0 tokens
    * [WSS-255] - Add support for enforcing a text or digest password type when processing a UsernameToken

Task

    * [WSS-246] - Upgrade to BouncyCastle 1.45
    * [WSS-248] - Remove Axis1 artifacts in WSS4J 1.6
    * [WSS-249] - Parameterize Collections in WSS4J 1.6
    * [WSS-250] - Refactor testing
    * [WSS-256] - Review Basic Security Profile and Reliable Secure Profile spec compliance
    * [WSS-268] - Upload Opensaml2 artifacts, and dependencies, to Maven Central
    * [WSS-269] - Refactor the Crypto interface

Test

    * [WSS-172] - Test encrypted headers

Release 1.5.11
=============

Bug

    * [WSS-258] - Newer version of SecureConversation not recognised for derived key algorithm
    * [WSS-260] - WSS4J can't process a STR to a SAML Assertion that is not in the SOAP message
    * [WSS-261] - Rampart failing to extract keyinfo from SAML assertion
    * [WSS-262] - WSS4J accepts Timestamps that are "Created" in the future

Improvement

    * [WSS-263] - Store secret key from signature processor


Release 1.5.10
=============

** Bug

    * [WSS-40] - WSSecurityEngine does not support chained certificates

** Improvement

    * [WSS-238] - Switch to wsse:KeyIdentifier instead of wsse:Reference for SAML references within SOAP:body EncryptedData elements.
    * [WSS-239] - Need ability to handle password "equivalent" between WSPasswordCallback and UsernameToken when it's binary data
    * [WSS-247] - Upgrade to XML Security 1.4.4
    * [WSS-253] - UsernameTokenProcessor logs the password to the log


Release 1.5.9
=============

** Bug

    * [WSS-205] - WSS4J Handler passes null to MessageContext.setProperty
    * [WSS-206] - The way referncelist processing of SAML issued tokens doesn't work properly and need to extract necessary information to do algorithm validation
    * [WSS-209] - NPE in AbstractCrypto.getCryptoProvider()
    * [WSS-210] - NPE in CryptoBase.getAliasForX509Cert(Certificate cert) if Keystore does not contain a Certifcate entry for each alias
    * [WSS-211] - WSS4J does not support ThumbprintSHA1 in DerivedKeyTokens
    * [WSS-212] - Replace deprecated references to getSubject/IssuerDN
    * [WSS-219] - empty/blank password not supported in username token. value read by wss4j is null instead of empty string
    * [WSS-220] - WSHandler is using default configuration
    * [WSS-221] - UUIDGenerator generates duplicate identifiers when used in a multi-threaded environment
    * [WSS-222] - SignatureProcessor does not provide correct signature coverage results with STR Dereference Transform
    * [WSS-223] - Incorrect xpath set on WSDataRef when decrypting an EncryptedHeader instance.
    * [WSS-224] - SAMLTokenSignedAction and WSSecSignatureSAML do not honor signature algorithm or digest algorithm from WSSHandler configuration
    * [WSS-225] - 'Unprintable' characters in Distinguished Name causing comparison failure
    * [WSS-226] - Interoperability b/w Java consumer of .NET Web Service with WS-Security on WSE 2.0
    * [WSS-227] - CryptoBase.getPrivateKey() unable to handle empty (null) passwords
    * [WSS-234] - Comment as first element in document causes NPE
    * [WSS-241] - WSS4j needs to export a version in it's Export-Package directive.
    * [WSS-242] - Signing EncryptedData or EncryptedKey elements creates extraneous Id attributes
    * [WSS-243] - Can't use Password Digest on Z/OS
    * [WSS-244] - Loading of Signature and Encryption property files not trimming trailing whitespace - Leads to ClassNotFoundException
    * [WSS-245] - WSHandlerConstants.PW_CALLBACK_REF isn't correctly searched for

** Improvement

    * [WSS-180] - Support symmetric signature/encryption via configuration
    * [WSS-214] - SignatureProcessor is not reusing results from BinarySecurityTokenProcessor or DerivedKeyTokenProcessor
    * [WSS-215] - SignatureProcessor is not reusing results from WSDocInfo for the Reference case.
    * [WSS-216] - SignatureProcessor does not support directly referencing a SecurityContextToken
    * [WSS-217] - Add ability to specify a reference to an absolute URI in the derived key functionality
    * [WSS-233] - Allow configuration of UsernameTokenSpec 1.1 derived key functionality through WSHandler
    * [WSS-236] - Provide signature digest algorithm in signature processor results.
    * [WSS-237] - Provide key transport algorithm in encryption processor results
    * [WSS-240] - Support KeyValue in SAML subject

** New Feature

    * [WSS-204] - Support validating SAML 2.0 tokens

** Task

    * [WSS-246] - Upgrade to BouncyCastle 1.45


Release 1.5.8
=============

** Bug

    * [WSS-147] - WCF interop issue: Security header ordering constraint
    * [WSS-176] - Problem with WSSecurityUtil.prependChildElement and JBossWS
    * [WSS-178] - signature verification failure of signed saml token due to The Reference for URI (bst-saml-uri) has no XMLSignatureInput
    * [WSS-182] - Encryption with symmetric key with encryptSymmKey set to false generates invalid xml without xenc defined
    * [WSS-196] - STRTransform not compatible with Sun's SAAJ implementation
    * [WSS-198] - Problem when body is signed and then an XPath is encrypted
    * [WSS-201] - Some of the processors use the wrong Crypto implementation

** Improvement

    * [WSS-131] - no support for extension of SecurityHeader
    * [WSS-158] - Upgrade to BouncyCastle 1.43
    * [WSS-177] - Allow encryption using a symmetric key and EncryptedKeySHA1
    * [WSS-179] - Allow signature using a symmetric key and EncryptedKeySHA1
    * [WSS-195] - More detailed exception thrown from CryptoBase.getPrivateKey()
    * [WSS-199] - Add support for WCF non-standard Username Tokens
    * [WSS-202] - Upgrade to XML Security 1.4.3.

** New Feature

    * [WSS-194] - Support overriding KeyStore alias for signature so that it can be different than user name used for UsernameToken


Release 1.5.7
=============

** Bug

    * [WSS-90] - SamlUtil.java throws XMLSecurityException when SAML SubjectConfirmation element doesn't have KeyInfo child
    * [WSS-99] - JCE provider ordering on solaris
    * [WSS-117] - WSS4J does not supports KeyIdentifiers to reference SAML tokens but this is allowed by the WSS specification. Integration tesitng with owsm failed.
    * [WSS-136] - POM files needed in Maven repository for OpenSAML, WSS4J, and XML Security

** Improvement

    * [WSS-84] - Make the use of the VM-wide keystore (lib/security/cacerts) optional
    * [WSS-169] - Add an EncodingType attribute for a UsernameToken nonce
    * [WSS-170] - SignatureAction does not set DigestAlgorithm on WSSecSignature instance

** Test

    * [WSS-172] - Test encrypted headers


Release 1.5.6
=============

** Bug

    * [WSS-105] - Make WSS4J compliant with X.509 1.1 specification
    * [WSS-162] - With SecureConv tokens, URI reference processing can strip off first char of ID....
    * [WSS-163] - No way to set SC ValueType attribute for references in WSSecEncrypt
    * [WSS-164] - Related to WSS-162, there isn't anyway to create a direct Reference based on identifier
    * [WSS-165] - Problems verifying trusted certs if provider not specified in properties
    * [WSS-168] - Verification/Decryption failure with a DN String from a different provider

** Improvement

    * [WSS-143] - Better management of namespace declarations....
    * [WSS-157] - Remove spurious calls to MessageDigest.reset()
    * [WSS-160] - Add AccessController.doPrivileged blocks to the Loader
    * [WSS-161] - Add JAX-WS handler support
    * [WSS-166] - Refactor unit tests
    * [WSS-167] - Apply PMD to source tree

** New Feature

    * [WSS-156] - Add support for RSAKeyValue tokens/signatures (needed for WS-SecurityPolicy KeyValueToken)


Release 1.5.5
=============

** Bug

    * [WSS-42] - java.lang.NoClassDefFoundError: org/apache/xml/security/encryption/XMLEncryptionException
    * [WSS-60] - Problems when SOAP envelope namespace prefix is null
    * [WSS-62] - the crypto file not being retrieved in the doReceiverAction method for the Saml Signed Token
    * [WSS-86] - CryptoBase.splitAndTrim does not take into account the format of a DN constructed by different providers
    * [WSS-87] - CryptoBase.getAliasForX509Cert(String, BigInteger) fails when issuer string contains OIDs
    * [WSS-94] - Security Breach : The client certificate signature is not verified if the serial number is known in the keystore
    * [WSS-111] - Some work on UsernameToken derived keys
    * [WSS-121] - Bug in default value for SAML issuer class property
    * [WSS-126] - SignatureProcessor:verifyXMLSignature method - Crypto object can have null values in the following scenario but it throws an Exception if the Crypto object is null
    * [WSS-127] - No way of signing with UsernameToken without sending the password
    * [WSS-129] - Couple places where "cause" of WSSecurityException not set
    * [WSS-133] - Method and variable misspellings fixed
    * [WSS-140] - WSSecEncryptedKey produces EncryptedKey element with invalid Id attribute
    * [WSS-141] - handleUsernameToken gives too much information. Can be used to deternine if a username exists or not
    * [WSS-142] - We ship opensaml 1.0.1 even though we use opensaml 1.1 in maven
    * [WSS-149] - AbstractCrypto requires org.apache.ws.security.crypto.merlin.file to be set and point to an existing file
    * [WSS-151] - Password type in UsernameToken not deserialized correctly
    * [WSS-152] - Problem with processing Username Tokens with no password type
    * [WSS-153] - Signature confirmation of multiple signatures doesn't work

** Improvement

    * [WSS-79] - Compatibility issue with weblogic wsse
    * [WSS-85] - Better exception handling in the crypto (e.g. no e.printStackTrace())
    * [WSS-110] - Add OSGi entries to jar manifest.
    * [WSS-118] - Support for SAML 1.1 SecurityTokenReferences in /org/apache/ws/security/processor/DerivedKeyTokenProcessor
    * [WSS-122] - Some fixes for the website
    * [WSS-123] - 1.5.4 requires opensaml jar, older versions did not
    * [WSS-125] - Upgrade BouncyCastle version
    * [WSS-128] - Use xml-sec 1.4.1 version
    * [WSS-135] - Fix for minor checkstyle issues
    * [WSS-137] - "Unexpected number of X509Data: for Signature" error doesn't make sense.
    * [WSS-138] - Add Nabble to site mailing list page
    * [WSS-145] - Problem in upgrading to xml-sec 1.4.2
    * [WSS-150] - Upgrade to XALAN 2.7.1
    * [WSS-154] - Allow WSSConfig injection in WSHandler and improve WSSConfig for injection of Processors instances

** New Feature

    * [WSS-23] - no way to programmatically set crypto.properties

** Task

    * [WSS-124] - Get maven dependencies pushed to central
    * [WSS-132] - TestWSSecurityX509v1 failing
    * [WSS-144] - Remove tab characters from WSS4J files

** Wish

    * [WSS-75] - remove dependency on xalan because it gets in the way of trax resolution
    * [WSS-91] - carriage return/line feed in the security header


Release 1.5.4
=============

** Bug
    * [WSS-51] - Incorrect test for null in WSHandler
    * [WSS-52] - ArrayIndexOutOfBoundsException if certs.length > 1
    * [WSS-54] - UsernameTokenProcessor not processing unhashed UsernameToken
    * [WSS-56] - WSS4j statically inserts Bouncycastle and Juice in list of JCE providers
    * [WSS-66] - Possible security hole when PasswordDigest is used by client.
    * [WSS-68] - No way to create a UsernameToken with absent <Password> element
    * [WSS-70] - WSHandler checkReceiverResults causes security problem
    * [WSS-82] - Add the ability to use a custom-loaded JCE provider instance instead of using the system-provided one
    * [WSS-89] - Error in verifying the signature with encrypted key
    * [WSS-93] - xmlsec NPE on Reference URI and ValueType attributes
    * [WSS-95] - Missing NOTICE file in WSS4J release
    * [WSS-96] - Error when making a signature when containing a WSSecTimestamp
    * [WSS-97] - Merlin passes invalid OID to getExtensionValue
    * [WSS-100] - Bug in wsse11 element creation
    * [WSS-101] - Bug in Encrypted SOAP Header creation
    * [WSS-103] - BinarySecurityToken processor does not allow for custom token types
    * [WSS-105] - Make WSS4J compliant with X.509 1.1 specification
    * [WSS-106] - Certs are expired in wss4j.keystore
    * [WSS-108] - Some work on KeyIdentifiers
    * [WSS-109] - Review of error handling messages
    * [WSS-112] - DerivedKeyProcessor is overwritten if more derivedkeys are present in a Soap Message.
    * [WSS-113] - Bug in WSHandler#getPassword
    * [WSS-114] - Some test reports are deleted by intermediate tasks in the ant build
    * [WSS-116] - EncryptedKeyProcessor fails to record QName of decrypted element
    * [WSS-119] - Error in Singature Processor 

** Improvement
    * [WSS-37] - Make it easier to set key-stores programmatically
    * [WSS-38] - Make it easier to set key-stores programmatically
    * [WSS-74] - Allow Actions and Processors to be customizable
    * [WSS-80] - Doc fixes to main WSS4J page
    * [WSS-88] - SecureRandom.getInstance("SHA1PRNG") is slow on IBM JDK 1.4.2 (And perhaps others)
    * [WSS-92] - Support for Encrypted Header 
    * [WSS-104] - Reference List processor should provide more information
    * [WSS-107] - X509NameTokenizer.java contains Bouncy Castle JCE copyright code


Version prior to 1.5.4
======================

no record
