Sie können Tink aus der Quelle erstellen oder sprachspezifische Pakete verwenden. Folgen Sie der Anleitung unten, um loszulegen.
Nachdem Sie Tink installiert und eingerichtet haben, fahren Sie mit den Nächsten Schritten am Ende dieser Seite fort.
C++
Tink bietet die folgenden C++-Bibliotheken:
- Eine C++-Kernbibliothek, tink-cc. Die neueste Version ist 2.3.0.
- Eine AWS KMS-Erweiterung, tink-cc-awskms. Die neueste Version ist 2.0.1.
- Eine Google Cloud KMS-Erweiterung, tink-cc-gcpkms. Die neueste Version ist 2.2.0.
Tink C++ (tink-cc)
Tink C++ setzt Folgendes voraus:
- Protobuf 26.1
- Abseil LTS 20230802.0
- BoringSSL oder OpenSSL >=1.1.1
- RapidJSON 1.1.0
- googletest 1.14.0 (nur Test)
- Wycheproof (nur Test)
Tink C++ unterstützt:
- C++ >= 14
- Betriebssystem:
- UbuntuLTS >= 20.04 (x86_64)
- macOS >= 12.5 Monterey (x86_64)
- Windows Server 2019 und höher (x86_64)
- Compiler:
- GCC >= 7.5.0
- Apple Clang >= 14
- MSVC >= 2019
- Build-System:
CMake
Sie sollten tink-cc
als In-Tree-Abhängigkeit hinzufügen. Beispiel:
cmake_minimum_required(VERSION 3.13)
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.3.0.zip
URL_HASH SHA256=363ce671ab5ce0b24f279d3647185597a25f407c3608db007315f79f151f436b
)
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)
Bazel
Bzlmod
Wenn Sie Bazel mit Modulen verwenden, fügen Sie der Datei MODULE.bazel
Folgendes hinzu:
bazel_dep(name = "tink_cc", version = "2.3.0")
ARBEITSBEREICH
Wenn Sie Bazel mit WORKSPACE
-Dateien verwenden, fügen Sie Ihrer WORKSPACE
-Datei Folgendes hinzu:
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.3.0.zip"],
strip_prefix = "tink-2.3.0",
sha256 = "363ce671ab5ce0b24f279d3647185597a25f407c3608db007315f79f151f436b",
)
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()
Tink C++ AWS KMS-Erweiterung (tink-cc-awskms)
Tink C++ Google Cloud KMS setzt Folgendes voraus:
- Tink C++ 2.1.0
- AWS C++ SDK 1.7.345
- googletest 1.11.0 (nur Test)
Tink C++ AWS KMS unterstützt:
- C++ >= 14
- Betriebssystem:
- UbuntuLTS >= 20.04 (x86_64)
- macOS >= 12.5 Monterey (x86_64)
- Compiler:
- GCC >= 7.5.0
- Apple Clang >= 14
- Build-System:
- Bazel >= 6 LTS
Bazel
Fügen Sie der Datei WORKSPACE
Ihres Projekts Folgendes hinzu:
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.3.0.zip"],
strip_prefix = "tink-2.3.0",
sha256 = "363ce671ab5ce0b24f279d3647185597a25f407c3608db007315f79f151f436b",
)
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()
Tink C++ Google Cloud KMS-Erweiterung (tink-cc-gcpkms)
Tink C++ Google Cloud KMS setzt Folgendes voraus:
Tink C++ Google Cloud KMS unterstützt:
- C++ >= 14
- Betriebssystem:
- UbuntuLTS >= 20.04 (x86_64)
- macOS >= 12.5 Monterey (x86_64)
- Compiler:
- GCC >= 7.5.0
- Apple Clang >= 14
- Build-System:
- Bazel >= 6 LTS
Bazel
Fügen Sie der Datei WORKSPACE
Ihres Projekts Folgendes hinzu:
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.2.0/tink-cc-gcpkms-2.2.0.zip"],
strip_prefix = "tink-cc-gcpkms-2.2.0",
sha256 = "ffb9d05c64ca28b5eb54fe79e7c3f93fad68f00e45f74f6b9ce1bd3a32b3d6fd",
)
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)
Ok
Tink bietet die folgenden Go-Bibliotheken:
- Eine zentrale Tink-Bibliothek, tink-go. Der aktuelle Release ist v2.2.0.
- Eine AWS KMS-Erweiterung, tink-go-awskms. Die neueste Version ist 2.1.0.
- Eine Google Cloud KMS-Erweiterung, tink-go-gcpkms. Die neueste Version ist 2.2.0.
- Eine HashiCorp Vault-Erweiterung, tink-go-hcvault. Die neueste Version ist 2.2.0.
Alle Tink-Go-Bibliotheken werden als Go-Module veröffentlicht, die mit Standard-Go-Tools oder Bazel verwendet werden können.
Tink Go (tink-go)
Go-Tools
Führen Sie im Projektverzeichnis den folgenden Befehl aus:
go get github.com/tink-crypto/tink-go/v2@v2.2.0
Weitere Informationen finden Sie in der offiziellen Go-Dokumentation.
Tink Go AWS KMS-Erweiterung (tink-go-awskms)
Go-Tools
Führen Sie den folgenden Befehl im Projektverzeichnis aus:
go get github.com/tink-crypto/tink-go-awskms/v2@2.1.0
Weitere Informationen finden Sie in der offiziellen Go-Dokumentation.
Tink Go Google Cloud KMS-Erweiterung (tink-go-gcpkms)
Go-Tools
Führen Sie den folgenden Befehl im Projektverzeichnis aus:
go get github.com/tink-crypto/tink-go-gcpkms/v2@v2.2.0
Weitere Informationen finden Sie in der offiziellen Go-Dokumentation.
Tink Go HashiCorp Vault-Erweiterung (tink-go-hcvault)
Go-Tools
Führen Sie den folgenden Befehl im Projektverzeichnis aus:
go get github.com/tink-crypto/tink-go-hcvault/v2@v2.2.0
Weitere Informationen finden Sie in der offiziellen Go-Dokumentation.
Java
Tink stellt die folgenden Java-Bibliotheken bereit:
- Eine Java- und Android-Kernbibliothek, tink-java. Die neueste Version ist 1.15.0.
- Eine AWS KMS-Erweiterung, tink-java-awskms. Die neueste Version ist 1.10.1.
- Eine Google Cloud KMS-Erweiterung, tink-java-gcpkms. Die neueste Version ist 1.10.0.
- Eine Bibliothek, tink-java-apps, die Implementierungen für Google-Zahlungsmethode-Token, serverseitige Überprüfung von Google AdMob-Anzeigen mit Prämie und RFC 8291 – Nachrichtenverschlüsselung für Web-Push bietet. Die neueste Version ist 1.11.0.
Die Java-Version von Tink unterstützt Java 8 oder höher. Sie können die Tink Java-Maven-Artefakte entweder in Ihr Maven- oder Gradle-Projekt einbinden oder Bazel verwenden.
Tink Android wird ab API-Level 24 vollständig unterstützt. Die meisten Teile von Tink sollten ab API-Level 21 funktionieren. In den folgenden Fällen funktioniert Tink mit API-Level 21 nicht ohne Anpassungen:
- Für die JWT-Bibliothek ist API-Ebene 24 erforderlich, da sie Klassen wie
java.util.Optional
verwendet. Diese Einschränkung kann durch Entzuckerung vermieden werden. - Die Klassen in
com.google.crypto.tink.integration.android
werden erst ab API-Level 23 vollständig getestet. - Einige APIs in
com.google.crypto.tink.streamingaead
verwendenSeekableByteBufferChannel
, das erst ab API-Ebene 24 verfügbar ist.
Hinweis: Aus technischen Gründen testen wir Tink auf Android-Geräten nur in der internen Google-Infrastruktur. Wir gehen nicht davon aus, dass es dadurch zu Problemen kommt. Sollten sie dennoch auftreten, erstellen Sie bitte eine Anfrage.
Für Tink Android ist keine ProGuard-Konfiguration erforderlich.
Tink Java (tink-java)
Maven
Sie können Tink Java und die Tink-Android-Bibliothek mit Maven einbinden:
<dependency>
<groupId>com.google.crypto.tink</groupId>
<artifactId>tink</artifactId>
<version>1.15.0</version>
</dependency>
Wenn Sie Ihr Targeting auf Android-Geräte ausrichten, können Sie tink-android
über Gradle verwenden:
dependencies {
implementation 'com.google.crypto.tink:tink-android:1.15.0'
}
Bazel
Bazel-Nutzern wird empfohlen, Tink Java als Abhängigkeit hinzuzufügen, indem sie das Maven-Release-Artefakt mit dem Tool rules_jvm_external
in ihrer WORKSPACE
-Datei installieren:
load("@bazel_tools//tools/build_defs/repo:http.bzl", "http_archive")
RULES_JVM_EXTERNAL_TAG = "6.1"
RULES_JVM_EXTERNAL_SHA ="d31e369b854322ca5098ea12c69d7175ded971435e55c18dd9dd5f29cc5249ac"
http_archive(
name = "rules_jvm_external",
strip_prefix = "rules_jvm_external-%s" % RULES_JVM_EXTERNAL_TAG,
sha256 = RULES_JVM_EXTERNAL_SHA,
url = "https://github.com/bazelbuild/rules_jvm_external/releases/download/%s/rules_jvm_external-%s.tar.gz" % (RULES_JVM_EXTERNAL_TAG, RULES_JVM_EXTERNAL_TAG)
)
load("@rules_jvm_external//:repositories.bzl", "rules_jvm_external_deps")
rules_jvm_external_deps()
load("@rules_jvm_external//:setup.bzl", "rules_jvm_external_setup")
rules_jvm_external_setup()
load("@rules_jvm_external//:defs.bzl", "maven_install")
maven_install(
artifacts = [
"com.google.crypto.tink:tink:1.15.0",
# ... other dependencies ...
],
repositories = [
"https://maven.google.com",
"https://repo1.maven.org/maven2",
],
)
Wenn Sie tink-java
aus der Quelle erstellen möchten, um beispielsweise ein bestimmtes Commit anpinnen zu können, können Sie es als http_archive
in Ihre WORKSPACE
-Datei aufnehmen:
load("@bazel_tools//tools/build_defs/repo:http.bzl", "http_archive")
TINK_COMMIT="f4127f6b6ab9c367d41ade1f50db6f0ef9909044"
TINK_SHA256="e246f848f7749e37f558955ecb50345b04d79ddb9d8d1e8ae19f61e8de530582"
http_archive(
name = "tink_java",
urls = ["https://github.com/tink-crypto/tink-java/archive/%s.zip" % TINK_COMMIT],
strip_prefix = "tink-%s" % TINK_COMMIT,
sha256 = TINK_SHA256
)
load("@tink_java//:tink_java_deps.bzl", "TINK_MAVEN_ARTIFACTS", "tink_java_deps")
tink_java_deps()
load("@tink_java//:tink_java_deps_init.bzl", "tink_java_deps_init")
tink_java_deps_init()
# rules_jvm_external is imported and initialized by tink_java_deps and
# tink_java_deps_init.
load("@rules_jvm_external//:defs.bzl", "maven_install")
maven_install(
artifacts = TINK_MAVEN_ARTIFACTS + # ... other dependencies ...
repositories = [
"https://maven.google.com",
"https://repo1.maven.org/maven2",
],
)
Tink Java AWS KMS-Erweiterung (tink-java-awskms)
Maven
Sie können Tink Java und die Tink-Android-Bibliothek mit Maven einbinden:
<dependencies>
<dependency>
<groupId>com.google.crypto.tink</groupId>
<artifactId>tink-awskms</artifactId>
<version>1.10.1</version>
</dependency>
</dependencies>
Bazel
Sie können das com.google.crypto.tink:tink-awskms
-Maven-Artefakt mit dem Tool rules_jvm_external
neben com.google.crypto.tink:tink
installieren.
# ...
maven_install(
artifacts = [
"com.google.crypto.tink:tink:1.15.0",
"com.google.crypto.tink:tink-awskms:1.10.1",
# ... other dependencies ...
],
repositories = [
"https://maven.google.com",
"https://repo1.maven.org/maven2",
],
)
Alternativ können Sie sie als http_archive
-Abhängigkeit einschließen:
# ...
http_archive(
name = "tink_java",
urls = ["https://github.com/tink-crypto/tink-java/releases/download/v1.15.0/tink-java-1.15.0.zip"],
strip_prefix = "tink-java-1.15.0",
sha256 = "e246f848f7749e37f558955ecb50345b04d79ddb9d8d1e8ae19f61e8de530582",
)
load("@tink_java//:tink_java_deps.bzl", "TINK_MAVEN_ARTIFACTS", "tink_java_deps")
tink_java_deps()
load("@tink_java//:tink_java_deps_init.bzl", "tink_java_deps_init")
tink_java_deps_init()
http_archive(
name = "tink_java_awskms",
urls = ["https://github.com/tink-crypto/tink-java-awskms/releases/download/v1.10.1/tink-java-awskms-1.10.1.zip"],
strip_prefix = "tink-java-awskms-1.10.1",
sha256 = "5f08f3a343fb2028784ee2344e102cf4f753b4d23252318b3f8ac48208d3e2fa",
)
load("@tink_java_awskms//:tink_java_awskms_deps.bzl", "TINK_JAVA_AWSKMS_MAVEN_ARTIFACTS")
maven_install(
artifacts = TINK_MAVEN_ARTIFACTS + TINK_JAVA_AWSKMS_MAVEN_ARTIFACTS + [
# ... other dependencies ...
],
repositories = [
"https://maven.google.com",
"https://repo1.maven.org/maven2",
],
)
Tink Java Google Cloud KMS-Erweiterung (tink-java-gcpkms)
Maven
<dependencies>
<dependency>
<groupId>com.google.crypto.tink</groupId>
<artifactId>tink-gcpkms</artifactId>
<version>1.10.0/version>
</dependency>
</dependencies>
Bazel
Sie können das com.google.crypto.tink:tink-gcpkms
-Maven-Artefakt mit com.google.crypto.tink:tink
über das Tool rules_jvm_external
installieren.
# ...
maven_install(
artifacts = [
"com.google.crypto.tink:tink:1.15.0",
"com.google.crypto.tink:tink-gcpkms:1.10.0",
# ... other dependencies ...
],
repositories = [
"https://maven.google.com",
"https://repo1.maven.org/maven2",
],
)
Alternativ können Sie sie als http_archive
-Abhängigkeit einschließen:
# ...
http_archive(
name = "tink_java",
urls = ["https://github.com/tink-crypto/tink-java/releases/download/v1.15.0/tink-java-1.15.0.zip"],
strip_prefix = "tink-java-1.15.0",
sha256 = "e246f848f7749e37f558955ecb50345b04d79ddb9d8d1e8ae19f61e8de530582",
)
load("@tink_java//:tink_java_deps.bzl", "TINK_MAVEN_ARTIFACTS", "tink_java_deps")
tink_java_deps()
load("@tink_java//:tink_java_deps_init.bzl", "tink_java_deps_init")
tink_java_deps_init()
http_archive(
name = "tink_java_gcpkms",
urls = ["https://github.com/tink-crypto/tink-java-gcpkms/releases/download/v1.10.0/tink-java-gcpkms-1.10.0.zip"],
strip_prefix = "tink-java-gcpkms-1.10.0",
sha256 = "ad85625cc4409f2f6ab13a8eef39c965501585e9323d59652cce322b3d2c09a2",
)
load("@tink_java_gcpkms//:tink_java_gcpkms_deps.bzl", "TINK_JAVA_GCPKMS_MAVEN_ARTIFACTS")
maven_install(
artifacts = TINK_MAVEN_ARTIFACTS + TINK_JAVA_GCPKMS_MAVEN_ARTIFACTS + [
# ... other dependencies ...
],
repositories = [
"https://maven.google.com",
"https://repo1.maven.org/maven2",
],
)
Tink Java Apps-Erweiterungen (tink-java-apps)
Maven
<dependency>
<groupId>com.google.crypto.tink</groupId>
<artifactId>apps-webpush</artifactId>
<version>1.11.0</version>
</dependency>
<dependency>
<groupId>com.google.crypto.tink</groupId>
<artifactId>apps-paymentmethodtoken</artifactId>
<version>1.11.0</version>
</dependency>
<dependency>
<groupId>com.google.crypto.tink</groupId>
<artifactId>apps-rewardedads</artifactId>
<version>1.11.0</version>
</dependency>
Bazel
Sie können alle com.google.crypto.tink:apps-*
-Maven-Artefakte mit dem Tool rules_jvm_external
installieren.
# ...
maven_install(
artifacts = [
"com.google.crypto.tink:apps-webpush:1.11.0",
"com.google.crypto.tink:apps-paymentmethodtoken:1.11.0",
"com.google.crypto.tink:apps-rewardedads:1.11.0",
# ... other dependencies ...
],
repositories = [
"https://maven.google.com",
"https://repo1.maven.org/maven2",
],
)
ObjC
Python
Die Tink-Python-Bibliothek tink-py unterstützt Python 3.8 oder höher auf macOS (x86-64 und ARM64), Linux (x86-64 und ARM64) und Windows (x86-64). Die neueste Version ist 1.10.0. Sie kann lokal mit Pip installiert oder mit Bazel verwendet werden.
Tink Python bietet Integrationen mit AWS KMS, Google Cloud KMS und HashiCorp Vault.
Pippin
Sie können die Tink-Python-Binärversion für Ihr System über PyPI installieren. Führen Sie dazu den folgenden Befehl aus:
pip3 install tink==1.10.0
# Core Tink + Google Cloud KMS extension.
pip3 install tink[gcpkms]==1.10.0
# Core Tink + AWS KMS extension.
pip3 install tink[awskms]==1.10.0
# Core Tink + HashiCorp Vault KMS extension.
pip3 install tink[hcvault]==1.10.0
# Core Tink + all the KMS extensions.
pip3 install tink[all]==1.10.0
Wenn für Ihre Umgebung kein Binärpaket veröffentlicht wird, baut pip
das Projekt automatisch mit der in PyPI veröffentlichten Quellverteilung. In diesem Fall müssen Bazel oder Bazelisk und der Protobuf-Compiler installiert sein, damit das Projekt erfolgreich erstellt werden kann.
Bazel
Bazel-Nutzer können Tink Python so in ihre WORKSPACE
-Datei aufnehmen:
load("@bazel_tools//tools/build_defs/repo:http.bzl", "http_archive")
http_archive(
name = "tink_py",
urls = ["https://github.com/tink-crypto/tink-py/releases/download/v1.10.0/tink-py-1.10.0.zip"],
strip_prefix = "tink-py-1.10.0",
sha256 = "767453aae4aad6de4fbb4162992184aa427b7b27864fe9912c270b24c673e1cc",
)
load("@tink_py//:tink_py_deps.bzl", "tink_py_deps")
tink_py_deps()
load("@rules_python//python:repositories.bzl", "py_repositories")
py_repositories()
load("@tink_py//:tink_py_deps_init.bzl", "tink_py_deps_init")
tink_py_deps_init("tink_py")
Nächste Schritte
Nachdem Sie die Einrichtung von Tink abgeschlossen haben, fahren Sie mit den Standardschritten zur Verwendung von Tink fort:
- Primitive auswählen: Entscheiden Sie anhand Ihres Anwendungsfalls, welche Primitive Sie verwenden möchten.
- Schlüssel verwalten: Schützen Sie Ihre Schlüssel mit Ihrem externen KMS, generieren Sie Schlüsselsätze und rotieren Sie Ihre Schlüssel.