This change adds a new Windows user-mode module, symcrypt.dll. We plan to integrate this module into a future release of Windows as our primary FIPS-certified cryptographic module. Until that happens, we're making the module publicly available for the convenience of other projects that build on top of SymCrypt, such as our [rust-symcrypt crate](https://github.com/microsoft/rust-symcrypt).
Tested: dynamic unit tests run locally against the new module, ADO pipeline CI tests
An error in the JSON file for package.py caused the symcryptk.lib import library to overwrite the symcryptk.dll implementation library. This change fixes the error. Also re-enables CheckCFlags, as the reason it was failing was due to it correctly recognizing that the import library is not a valid PE file.
The SymCrypt kernel mode module is not technically a driver in that it does not interface with hardware devices, does not create a device object, and in fact does not use any WDF functionality. As such, we've been advised by the kernel team that it should use the .dll extension instead of .sys, as e.g. ci.dll does. It turns out that this is not just a convention, but actually a requirement, because certain system components assume that .sys files will always be found under `%SystemRoot%\System32\drivers`, but we don't want to put SymCrypt there (since it's not a driver).
We still build the project with the `WindowsKernelModeDriver10.0` toolset to get access to KMDF headers and libraries.
## Description:
+ Add SymCryptEntropyAccumulator to Windows kernel module
+ This is a very Windows kernel specific implementation so it resides entirely in the modules/windows/kernel directory
+ The intent is to integrate this with our Windows test branch to do full end-to-end testing in Windows, but it might be good to refactor a little to test this logic directly in user mode in symcryptunittest in future.
## Admin Checklist:
- [X] You have updated documentation in symcrypt.h to reflect any changes in behavior
- [X] You have updated CHANGELOG.md to reflect any changes in behavior
- [ ] You have updated symcryptunittest to exercise any new functionality
- [X] If you have introduced any symbols in symcrypt.h you have updated production and test dynamic export symbols (exports.ver / exports.def / symcrypt.src) and tested the updated dynamic modules with symcryptunittest
- [X] If you have introduced functionality that varies based on CPU features, you have manually tested with and without relevant features
- [X] If you have made significant changes to a particular algorithm, you have checked that performance numbers reported by symcryptunittest are in line with expectations
- [ ] If you have added new algorithms/modes, you have updated the status indicator text for the associated modules if necessary
Related work items: #42154756
`package.json` is used by NPM and causes automated tooling to flag our repo as missing required files for NPM projects. Of course, we don't use NPM and our `package.json` is used to configure which build outputs are included in which SymCrypt packages. The simple fix is to just rename the file.