Tink C++ 2.4.0
Tink is a multi-language, cross-platform library that provides simple and misuse-proof APIs for common cryptographic tasks.
To get started, see the setup guide.
The complete list of changes since 2.3.0 can be found here.
New Features
- Added APIs to import and export keys for the following key types:
- CECPQ2 (experimental)
- KMS AEAD
- KMS Envelope AEAD
- PRF-Based Key Derivation
- Added ML-DSA-65 to Tink. Note that this uses the key generation seed (32
bytes) to represent private keys, rather than the serialization as defined
by the "skEncode" function in FIPS 204. - Added SLH-DSA-SHA2-128s to Tink, according to the standard described at
https://csrc.nist.gov/pubs/fips/205/final.
Dependency Updates
- Removed rapidjson dependency.
- Use C++17 as minimum C++ version.
- Upgraded protobuf to 29.3.
- Upgraded rules_cc to 0.1.1
- Upgraded rules_proto to 7.1.0
- Upgraded platforms to 0.0.11
- Upgraded googletest to 1.16.0
- Upgraded boringssl to 0.20250415.0
- Upgraded abseil-cpp to 20250127.1
Other Changes
- Make the
Key
class cloneable. Note that each subclass will now have to
implement theClone()
method. - Make the
Parameters
class cloneable. Note that each subclass will have to
implement theClone()
method. - Use proto library to parse JSON serialized keysets, instead of rapidjson.
All valid JSON-encoded keysets are still parsed the same way, but there are
some invalid keysets that may now fail to parse with a different error. - Removed subtle::WycheproofUtil. Its functions use rapidjson objects as input
or output parameters and can't be supported anymore. Users of these
functions should copy WycheproofUtil into their own codebase. - Removed subtle::X25519 and related functions. To the best of our knowledge,
there are no users of this struct and the related functions. In addition, it
is untested. If you need this, please file an issue. - Added
SecretData
accessor method forRestrictedBigInteger
. - Most of the Key classes are now final. These cannot be subclassed as this
would breakoperator==
. - Moved
crypto::tink::util::SecretData
tocrypto:tink
in
tink/secret_data.h
and makecrypto::tink::util::SecretData
a deprecated
alias ofcrypto::tink::SecretData
. - Moved away from the absl-internal
absl::big_endian::Load32
and
absl::big_endian::Store32
. This is needed for Tink to work with future
versions of absl.