Description
We have had some thread safety issues in both our crypto and dispatch machinery for what appears to be have been a long time - if not forever.
This patch locks down access to the DefaultKeystoreService, synchronizes the creation and initialization of dispatches and removes most of the state in the ConfigurableEncryptor class. It also moves the responsibility of query string encryption and decryption into the SecureQueryEncrypt/DecryptProcessors themselves rather than leveraging the CryptoService by creating member variables for the required ConfigurableEncryptor.