Set up Tink C++

After installing and setting up Tink, continue with Next Steps .

Compatibility

Compatible with all libraries Additionally compatible with Tink C++
Language
C++ >= 17 n/a
OS
UbuntuLTS >= 20.04 (x86_64)
macOS >= 12.5 Monterey (x86_64)
Windows Server >= 2019 (x86_64)
Compiler
GCC >= 7.5.0
Apple Clang >= 14
MSVC >= 2019
Build system
Bazel >= 7 LTS CMake >= 3.22

Installation

Tink C++

The core C++ library is tink-cc with 2.4.0 as the latest release.

Bazel

Bzlmod

Add this to your MODULE.bazel file:

  bazel_dep 
 ( 
 name 
 = 
 "tink_cc" 
 , 
 version 
 = 
 "2.4.0" 
 ) 
 

WORKSPACE

Add this to your WORKSPACE file:

  load 
 ( 
 "@bazel_tools//tools/build_defs/repo:http.bzl" 
 , 
 "http_archive" 
 ) 
 http_archive 
 ( 
 name 
 = 
 "tink_cc" 
 , 
 urls 
 = 
 [ 
 "https://github.com/tink-crypto/tink-cc/archive/refs/tags/v2.4.0.zip" 
 ], 
 strip_prefix 
 = 
 "tink-2.4.0" 
 , 
 sha256 
 = 
 "06c4d49b0b1357f0b8c3abc77a7d920130dc868e4597d432a9ce1cda4f65e382" 
 , 
 ) 
 load 
 ( 
 "@tink_cc//:tink_cc_deps.bzl" 
 , 
 "tink_cc_deps" 
 ) 
 tink_cc_deps 
 () 
 load 
 ( 
 "@tink_cc//:tink_cc_deps_init.bzl" 
 , 
 "tink_cc_deps_init" 
 ) 
 tink_cc_deps_init 
 () 
 

CMake

Add tink-cc as an in-tree dependency.

  cmake_minimum_required 
 ( 
 VERSION 
  
 3.22 
 ) 
 project 
 ( 
 YourProject 
  
 CXX 
 ) 
 set 
 ( 
 CMAKE_CXX_STANDARD_REQUIRED 
  
 ON 
 ) 
 set 
 ( 
 CMAKE_CXX_STANDARD 
  
 14 
 ) 
 include 
 ( 
 FetchContent 
 ) 
 # Import Tink as an in-tree dependency. 
 FetchContent_Declare 
 ( 
  
 tink 
  
 URL 
  
 https://github.com/tink-crypto/tink-cc/archive/refs/tags/v2.4.0.zip 
  
 URL_HASH 
  
 SHA256=06c4d49b0b1357f0b8c3abc77a7d920130dc868e4597d432a9ce1cda4f65e382 
 ) 
 FetchContent_GetProperties 
 ( 
 tink 
 ) 
 if 
 ( 
 NOT 
  
 googletest_POPULATED 
 ) 
  
 FetchContent_Populate 
 ( 
 tink 
 ) 
  
 add_subdirectory 
 ( 
 ${ 
 tink_SOURCE_DIR 
 } 
  
 ${ 
 tink_BINARY_DIR 
 } 
  
 EXCLUDE_FROM_ALL 
 ) 
 endif 
 () 
 add_executable 
 ( 
 your_app 
  
 your_app.cc 
 ) 
 target_link_libraries 
 ( 
 your_app 
  
 tink::static 
 ) 
 

AWS KMS Extension

The Tink C++ AWS KMS extension is tink-cc-awskms with 2.0.1 as the latest release.

Bazel

WORKSPACE

Add this to your WORKSPACE file:

  load 
 ( 
 "@bazel_tools//tools/build_defs/repo:http.bzl" 
 , 
 "http_archive" 
 ) 
 http_archive 
 ( 
 name 
 = 
 "tink_cc" 
 , 
 urls 
 = 
 [ 
 "https://github.com/tink-crypto/tink-cc/archive/refs/tags/v2.4.0.zip" 
 ], 
 strip_prefix 
 = 
 "tink-2.4.0" 
 , 
 sha256 
 = 
 "06c4d49b0b1357f0b8c3abc77a7d920130dc868e4597d432a9ce1cda4f65e382" 
 , 
 ) 
 load 
 ( 
 "@tink_cc//:tink_cc_deps.bzl" 
 , 
 "tink_cc_deps" 
 ) 
 tink_cc_deps 
 () 
 load 
 ( 
 "@tink_cc//:tink_cc_deps_init.bzl" 
 , 
 "tink_cc_deps_init" 
 ) 
 tink_cc_deps_init 
 () 
 http_archive 
 ( 
 name 
 = 
 "tink_cc_awskms" 
 , 
 urls 
 = 
 [ 
 "https://github.com/tink-crypto/tink-cc-awskms/archive/refs/tags/v2.0.1.zip" 
 ], 
 strip_prefix 
 = 
 "tink-cc-awskms-2.0.1" 
 , 
 sha256 
 = 
 "366319b269f62af120ee312ce4c99ce3738ceb23ce3f9491b4859432f8b991a4" 
 , 
 ) 
 load 
 ( 
 "@tink_cc_awskms//:tink_cc_awskms_deps.bzl" 
 , 
 "tink_cc_awskms_deps" 
 ) 
 tink_cc_awskms_deps 
 () 
 

Google Cloud KMS Extension

The Tink C++ Google Cloud KMS extension is tink-cc-gcpkms with 2.4.0 as the latest release.

Bazel

WORKSPACE

Add this to your WORKSPACE file:

  load 
 ( 
 "@bazel_tools//tools/build_defs/repo:http.bzl" 
 , 
 "http_archive" 
 ) 
 http_archive 
 ( 
 name 
 = 
 "tink_cc_gcpkms" 
 , 
 urls 
 = 
 [ 
 "https://github.com/tink-crypto/tink-cc-gcpkms/releases/download/v2.4.0/tink-cc-gcpkms-2.4.0.zip" 
 ], 
 strip_prefix 
 = 
 "tink-cc-gcpkms-2.4.0" 
 , 
 sha256 
 = 
 "b2c7803b03fcce2d52b15e97f871155d477ccf88b2146337d54202defd074418" 
 , 
 ) 
 load 
 ( 
 "@tink_cc_gcpkms//:tink_cc_gcpkms_deps.bzl" 
 , 
 "tink_cc_gcpkms_deps" 
 ) 
 tink_cc_gcpkms_deps 
 () 
 load 
 ( 
 "@tink_cc_gcpkms//:tink_cc_gcpkms_deps_init.bzl" 
 , 
 "tink_cc_gcpkms_deps_init" 
 ) 
 tink_cc_gcpkms_deps_init 
 ( 
 register_go 
 = 
 True 
 ) 
 

Next steps

Once you've finished setting up Tink, continue with the standard Tink usage steps:

  • Choose a primitive – Decide which primitive to use based on your use case
  • Manage keys – Protect your keys with your external KMS, generate keysets, and rotate your keys
Create a Mobile Website
View Site in Mobile | Classic
Share by: