Cargo features are additive - Cargo presumes that it is safe to
enable a feature if _any_ dependent requires it, and that doing
so will not break crates that do not require it. As a result,
features that reduce the API surface - as no_heap did - violate
Cargo's invariants and can cause spooky failures at a distance.
Converting to a use_heap feature that enables APIs that may
allocate, and enabling it by default, preserves the current
behavior for users who simply depend on *ring* while better
fitting in to the Cargo ecosystem.
I agree to license my contributions to each file under the terms given
at the top of each file I changed.
GCC 4.6 is the default compiler on Ubuntu 12.04 LTS and other LTS
distros so it isn't a complete waste of time to support it. Luckily, it
is easy to do so.
Originally the Rust code used some of the EVP code, but that changed a while
back. As far as the Rust interface is concerned this is dead code. In the
future the EVP interface may get re-implemented on top of the Rust interface.
This HMAC implementation is built on top of |ring::digest| in Rust
instead of using the FFI to call into the C implementation of HMAC.
This also adds constant-time byte slice comparison to |ring::ffi|,
which is used for HMAC verification.
* Fix typo in a comment in mk/top_of_makefile.mk.
* Update ring.sln to mention VS 2015 RTM version.
* Suppress variable shadowing warning on Windows in mk/Common.props.
Travis CI doesn't have a new enough version of CMake readily available,
and I've been wanting to replace the CMake-based build system for other
reasons. This kills the Windows support, but I'm intending to add a
native msbuild build system for Windows soon. Also, this builds in
OPENSSL_NO_ASM mode for now.