Releases: tink-crypto/tink-cc
v2.2.0
Tink C++ 2.2.0
Tink is a multi-language, cross-platform library that provides simple and misuse-proof APIs for common cryptographic tasks.
This is Tink C++ 2.2.0.
To get started using Tink, see the setup guide.
CMake
You can import Tink C++ as an in-tree dependency.
cmake_minimum_required(VERSION 3.13)
project(Example CXX)
set(CMAKE_CXX_STANDARD 14)
set(CMAKE_CXX_STANDARD_REQUIRED ON)
set(CMAKE_BUILD_TYPE Release)
# Import Tink as an in-tree dependency.
# Option 1: tink-cc is in third_party.
add_subdirectory(third_party/tink-cc tink)
# Option 2: Use FetchContent
# include(FetchContent)
#
# FetchContent_Declare(
# tink
# URL https://github.com/tink-crypto/tink-cc/archive/refs/tags/v2.2.0.zip
# URL_HASH SHA256=88e1442182452caa16d0954ceaf73e17b0aa30837ee6c0cc16bf0112313ce753
# )
# FetchContent_GetProperties(tink)
# if(NOT googletest_POPULATED)
# FetchContent_Populate(tink)
# add_subdirectory(${tink_SOURCE_DIR} ${tink_BINARY_DIR} EXCLUDE_FROM_ALL)
# endif()
add_executable(example_app example_app.cc)
target_link_libraries(example_app tink::static)
Bazel
workspace(name = "example")
load("@bazel_tools//tools/build_defs/repo:http.bzl", "http_archive")
http_archive(
name = "com_github_tink_crypto_tink_cc",
urls = ["https://github.com/tink-crypto/tink-cc/archive/refs/tags/v2.2.0.zip"],
strip_prefix = "tink-cc-2.2.0",
sha256 = "88e1442182452caa16d0954ceaf73e17b0aa30837ee6c0cc16bf0112313ce753",
)
# Load Tink dependencies.
load("@com_github_tink_crypto_tink_cc//:tink_cc_deps.bzl", "tink_cc_deps")
tink_cc_deps()
load("@com_github_tink_crypto_tink_cc//:tink_cc_deps_init.bzl", "tink_cc_deps_init")
tink_cc_deps_init()
# ... Your dependencies here ...
What's new
The complete list of changes since 2.1.0 can be found here.
-
Added APIs to import and export keys for the following key types:
- AES-CTR-HMAC-AEAD
- AES-EAX
- ECDSA
- ECIES
- JWT ECDSA
- JWT HMAC
- XChaCha20-Poly1305
-
Removed the method
HmacPrfKeyManager::MaxOutputLength
from the public
API. This method was never intended to be public and there is no reason
to assume anyone uses it. -
Enabled building against pre-installed protobuf with CMake.
-
Moved Bazel test-only deps to
tink_cc_testonly_deps()
. -
Dependency upgrades:
- protobuf (=> 26.1)
- googletest (=> 1.14)
- absl (=> 20230802.1)
- BoringSSL (=> 07fa2780386fbbc001937fabf116c1fe4ddd2705)
- bazel_skylib (=> 1.5.0)
- Bazel (=> 6.4.0)
-
Added class to represent elliptic curve points.
-
Added
SecretDataEquals
.SecretData::operator==
is currently not
constant time, and should not be called by users. Tink 3.0 will change
this, but in the mean time, it should not be called and SecretDataEquals
should be used instead.
Future
To see what we're working towards, check our project roadmap.
v2.1.3
Tink is a multi-language, cross-platform library that provides simple and misuse-proof APIs for common cryptographic tasks.
This is Tink C++ 2.1.3
To get started using Tink, see the setup guide.
What's new?
This is a patch release.
The complete list of changes since 2.1.2 can be found here.
- Bug-fixes:
- Use
rapidjson::kParseIterativeFlag
when parsing JSON keysets to make sure the stack size remains constant - Use the correct version in
MODULE.bazel
- Use
Future work
To see what we're working towards, check our project roadmap.
Getting started
CMake
You can import Tink C++ as an in-tree dependency.
cmake_minimum_required(VERSION 3.13)
project(Example CXX)
set(CMAKE_CXX_STANDARD 14)
set(CMAKE_CXX_STANDARD_REQUIRED ON)
set(CMAKE_BUILD_TYPE Release)
# Assumes tink-cc is in third_party.
add_subdirectory(third_party/tink-cc tink)
add_executable(example_app example_app.cc)
target_link_libraries(example_app tink::static)
Bazel
workspace(name = "example")
load("@bazel_tools//tools/build_defs/repo:http.bzl", "http_archive")
http_archive(
name = "com_github_tink_crypto_tink_cc",
urls = ["https://github.com/tink-crypto/tink-cc/releases/download/v2.1.3/tink-cc-2.1.3.zip"],
strip_prefix = "tink-cc-2.1.3",
sha256 = "14a3f64a56d7e9296889d7eba7a3b8787c3281e5bc5791033c54baf810a0b6ef",
)
# Load Tink dependencies.
load("@com_github_tink_crypto_tink_cc//:tink_cc_deps.bzl", "tink_cc_deps")
tink_cc_deps()
load("@com_github_tink_crypto_tink_cc//:tink_cc_deps_init.bzl", "tink_cc_deps_init")
tink_cc_deps_init()
# ... Your dependencies here ...
Tink C++ 2.1.2
Tink is a multi-language, cross-platform library that provides simple and misuse-proof APIs for common cryptographic tasks.
This is Tink C++ v2.1.2
To get started using Tink, see the setup guide.
What's new?
This is a patch release.
The complete list of changes since 2.1.1 can be found here.
- Bug-fixes:
- Fixed
JsonKeysetReader::Read()
making the process crash if the input JSON is valid but not an object.
- Fixed
Future work
To see what we're working towards, check our project roadmap.
Getting started
CMake
You can import Tink C++ as an in-tree dependency.
cmake_minimum_required(VERSION 3.13)
project(Example CXX)
set(CMAKE_CXX_STANDARD 14)
set(CMAKE_CXX_STANDARD_REQUIRED ON)
set(CMAKE_BUILD_TYPE Release)
# Assumes tink-cc is in third_party.
add_subdirectory(third_party/tink-cc tink)
# Alternatively using FetchContent:
# include(FetchContent)
# FetchContent_Declare(
# tink
# URL https://github.com/tink-crypto/tink-cc/archive/refs/tags/v2.1.2.zip
# URL_HASH SHA256=d0fefc61e3bde758c8773f1348e6a64fc4fd6ecafe62c4adc0df8957ce800757
# )
# FetchContent_GetProperties(tink)
# if(NOT googletest_POPULATED)
# FetchContent_Populate(tink)
# add_subdirectory(${tink_SOURCE_DIR} ${tink_BINARY_DIR} EXCLUDE_FROM_ALL)
# endif()
add_executable(example_app example_app.cc)
target_link_libraries(example_app tink::static)
Bazel
workspace(name = "example")
load("@bazel_tools//tools/build_defs/repo:http.bzl", "http_archive")
http_archive(
name = "com_github_tink_crypto_tink_cc",
strip_prefix = "tink-cc-2.1.2",
urls = ["https://github.com/tink-crypto/tink-cc/releases/download/v2.1.2/tink-cc-2.1.2.zip"],
sha256 = "d0fefc61e3bde758c8773f1348e6a64fc4fd6ecafe62c4adc0df8957ce800757",
)
# Load Tink dependencies.
load("@com_github_tink_crypto_tink_cc//:tink_cc_deps.bzl", "tink_cc_deps")
tink_cc_deps()
load("@com_github_tink_crypto_tink_cc//:tink_cc_deps_init.bzl", "tink_cc_deps_init")
tink_cc_deps_init()
# ... Your dependencies here ...
Tink C++ 2.1.1
Tink is a multi-language, cross-platform library that provides simple and misuse-proof APIs for common cryptographic tasks.
This is Tink C++ 2.1.1
To get started using Tink, see the setup guide.
CMake
You can import Tink C++ as an in-tree dependency.
cmake_minimum_required(VERSION 3.13)
project(Example CXX)
set(CMAKE_CXX_STANDARD 14)
set(CMAKE_CXX_STANDARD_REQUIRED ON)
set(CMAKE_BUILD_TYPE Release)
# Assumes tink-cc is in third_party.
add_subdirectory(third_party/tink-cc tink)
add_executable(example_app example_app.cc)
target_link_libraries(example_app tink::static)
Bazel
workspace(name = "example")
load("@bazel_tools//tools/build_defs/repo:http.bzl", "http_archive")
http_archive(
name = "com_github_tink_crypto_tink_cc",
urls = ["https://github.com/tink-crypto/tink-cc/archive/refs/tags/v2.1.1.zip"],
strip_prefix = "tink-cc-2.1.1",
sha256 = "3080600b6c38421ebaca5bfc460aa965afc88c877695c080019a8905f0f1c1b8",
)
# Load Tink dependencies.
load("@com_github_tink_crypto_tink_cc//:tink_cc_deps.bzl", "tink_cc_deps")
tink_cc_deps()
load("@com_github_tink_crypto_tink_cc//:tink_cc_deps_init.bzl", "tink_cc_deps_init")
tink_cc_deps_init()
# ... Your dependencies here ...
What's new
This is a patch release.
The complete list of changes since 2.1.0 can be found here.
- Bug-fixing:
- Parsing a keyset with an invalid HMAC key (which has an invalid hash
type) can cause a binary compiled without "NDEBUG" to crash. This is now
fixed.
- Parsing a keyset with an invalid HMAC key (which has an invalid hash
ConfigGlobalRegistry
is now publicly visible.
Future work
To see what we're working towards, check our project roadmap.
Tink C++ 2.1.0
Tink is a multi-language, cross-platform library that provides simple and misuse-proof APIs for common cryptographic tasks.
This is Tink C++ 2.1.0
To get started using Tink, see the setup guide.
CMake
You can import Tink C++ as an in-tree dependency.
cmake_minimum_required(VERSION 3.13)
project(Example CXX)
set(CMAKE_CXX_STANDARD 14)
set(CMAKE_CXX_STANDARD_REQUIRED ON)
set(CMAKE_BUILD_TYPE Release)
# Assumes tink-cc is in third_party.
add_subdirectory(third_party/tink-cc tink)
add_executable(example_app example_app.cc)
target_link_libraries(example_app tink::static)
Bazel
workspace(name = "example")
load("@bazel_tools//tools/build_defs/repo:http.bzl", "http_archive")
http_archive(
name = "com_github_tink_crypto_tink_cc",
urls = ["https://github.com/tink-crypto/tink-cc/archive/refs/tags/v2.1.0.zip"],
strip_prefix = "tink-cc-2.1.0",
sha256 = "3804afecbe7096d3786b660e9cd5f365f064743eec52d76984abb9da38dd0fb3",
)
# Load Tink dependencies.
load("@com_github_tink_crypto_tink_cc//:tink_cc_deps.bzl", "tink_cc_deps")
tink_cc_deps()
load("@com_github_tink_crypto_tink_cc//:tink_cc_deps_init.bzl", "tink_cc_deps_init")
tink_cc_deps_init()
# ... Your dependencies here ...
What's new
The complete list of changes since 2.0.0 can be found here.
- Tink now supports building with OpenSSL 3.0 (commit)
- Tink now supports key derivation (commit)
- For the following key types, an API to import and export keys has been added:
(When exporting, this can be used with KeysetHandle::operator[]
and a dynamic cast. When importing keys, this can be used with the KeysetHandleBuilder
)
- Methods
KeysetHandle::GetPrimitive
,KeysetHandle::GenerateNew
, andKeysetHandle::GetPublicKeysetHandle
now take a configuration argument - Tink defines
crypto::tink::ConfigV0()
andcrypto::tink::ConfigFips140_2()
- Upgraded dependencies:
- The abseil dependency has been upgraded to LTS 20230802.0
- Bug-fixing
- Calling
RandomAccessStream::size()
forRandomAccessStream
objects obtained fromStreamingAead::NewDecryptingRandomAccessStream
now attempts to find the correct key in the keyset. Previously, users had to first callPRead
to make sure callingsize
works. (commit)
- Calling
Future work
To see what we're working towards, check our project roadmap.
Tink C++ 2.0.0
Tink is a multi-language, cross-platform library that provides simple and misuse-proof APIs for common cryptographic tasks.
This is Tink C++ 2.0.0
To get started using Tink, see the setup guide.
CMake
You can import Tink C++ as an in-tree dependency.
cmake_minimum_required(VERSION 3.13)
project(Example CXX)
set(CMAKE_CXX_STANDARD 14)
set(CMAKE_CXX_STANDARD_REQUIRED ON)
set(CMAKE_BUILD_TYPE Release)
# Assumes tink-cc is in third_party.
add_subdirectory(third_party/tink-cc tink)
add_executable(example_app example_app.cc)
target_link_libraries(example_app tink::static)
Bazel
workspace(name = "example")
load("@bazel_tools//tools/build_defs/repo:http.bzl", "http_archive")
http_archive(
name = "com_github_tink_crypto_tink_cc",
urls = ["https://github.com/tink-crypto/tink-cc/archive/refs/tags/v2.0.0.zip"],
strip_prefix = "tink-cc-2.0.0",
sha256 = "103ddfce800e77f3b3b6b2c808a8611bc734b31ddb12fbcfd8bebc1b96a7e963",
)
# Load Tink dependencies.
load("@com_github_tink_crypto_tink_cc//:tink_cc_deps.bzl", "tink_cc_deps")
tink_cc_deps()
load("@com_github_tink_crypto_tink_cc//:tink_cc_deps_init.bzl", "tink_cc_deps_init")
tink_cc_deps_init()
# ... Your dependencies here ...
WARNING: Different from 1.7.0, labels are now prefixed by
tink
: for example@tink_cc
becomes@tink_cc//tink:tink_cc
, or@tink_cc//aead/...
becomes
@tink_cc//tink/aead/...
.Bazel users of Tink can use the script
tools/update_build_files_for_tink_2_0_bazel.sh
to apply the necessary Bazel changes to their > BUILD files:cd <path/to/tink_cc> bazel run //tools:update_build_files_for_tink_2_0_bazel -- <path/to/you/project/root> \ <tink-cc repository name>
WARNING: KMS extensions are now published in separate repositories:
What's new
This is the first release from https://github.com/tink-crypto/tink-cc.
The complete list of changes since 1.7.0 can be found here.
- Upgraded to use Bazel 6.0.0
- Changed minimum C++ version to C++14
- Changed minimum version of CMake to 3.13
- Changed the structure of the repository adding sources to
tink
. As a consequence, target labels are now prefixed withtink
, for example@tink_cc
becomes@tink_cc//tink:tink_cc
, or@tink_cc//aead/...
becomes@tink_cc//tink/aead/...
. - KMS extensions are now published to separate repositories:
- Upgraded dependencies:
- Abseil LTS 20230125
- BoringSSL (Commit from 2023-02-15)
- Protobuf X.21.9
- Added support for building on Windows with Microsoft Visual Studio 2019 version 16.10.4.0 or later with CMake and Bazel
- Added walkthrough examples and ability to build examples with CMake
- Added new keyset handle APIs (experimental)
- Added/upgraded CI test scripts
- Removed deprecated APIs:
- Make
util::Status
an alias ofabsl::Status
(commits: #1, #2)