אחרי שמתקינים ומגדירים את Tink, ממשיכים אל השלבים הבאים.
Tink Java
ספריית הליבה של Java היא tink-java, והגרסה האחרונה שלה היא 1.18.0. Tink Java תומך ב-Java 11 ומעלה.
Maven
אפשר לכלול את Tink Java באמצעות Maven:
<dependency>
<groupId>com.google.crypto.tink</groupId>
<artifactId>tink</artifactId>
<version>1.18.0</version>
</dependency>
Bazel
פריט מידע שנוצר בתהליך פיתוח (Artifact) של גרסת Maven
הדרך המומלצת למשתמשי Bazel להוסיף את Tink Java כתלות היא להתקין את ארטיפקט הגרסה של Maven באמצעות הכלי rules_jvm_external
בקובץ WORKSPACE
:
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.18.0",
# ... other dependencies ...
],
repositories = [
"https://maven.google.com",
"https://repo1.maven.org/maven2",
],
)
בנייה ממקור
אם רוצים ליצור tink-java
ממקור, למשל כדי להצמיד קומיט ספציפי, אפשר לכלול אותו כ-http_archive
בקובץ WORKSPACE
:
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 Android
ספריית הליבה של Android היא tink-java, והגרסה העדכנית ביותר היא 1.18.0.
Tink Android נתמך באופן מלא החל מרמת API 24. רוב החלקים של Tink אמורים לפעול החל מרמת API 23. החלקים שבהם Tink לא פועל מחוץ לקופסה עם רמת API 23 הם:
ספריית ה-JWT דורשת רמת API 24 כי היא משתמשת במחלקות כמו
java.util.Optional
. אפשר לעקוף את המגבלה הזו באמצעות desugaring.חלק מממשקי ה-API ב-
com.google.crypto.tink.streamingaead
משתמשים ב-SeekableByteBufferChannel
שזמין רק מרמת API 24.
מסיבות טכניות, אנחנו בודקים את Tink ב-Android רק בתשתית פנימית של Google. אנחנו לא צופים בעיות בעקבות השינוי הזה, אבל אם נתקלת בבעיות, אפשר לדווח על בעיה.
לא צריך להגדיר את proguard ב-Tink Android.
Gradle
אפשר להשתמש ב-tink-android
מ-Gradle:
dependencies {
implementation 'com.google.crypto.tink:tink-android:1.18.0'
}
AWS KMS Extension
התוסף Tink Java AWS KMS הוא tink-java-awskms והגרסה העדכנית ביותר שלו היא 1.11.0.
Maven
אפשר לכלול את התוסף Tink Java AWS KMS באמצעות Maven:
<dependencies>
<dependency>
<groupId>com.google.crypto.tink</groupId>
<artifactId>tink-awskms</artifactId>
<version>1.11.0</version>
</dependency>
</dependencies>
Bazel
פריט מידע שנוצר בתהליך פיתוח (Artifact) של גרסת Maven
אפשר להתקין את ארטיפקט Maven com.google.crypto.tink:tink-awskms
לצד com.google.crypto.tink:tink
באמצעות הכלי rules_jvm_external
.
# ...
maven_install(
artifacts = [
"com.google.crypto.tink:tink:1.18.0",
"com.google.crypto.tink:tink-awskms:1.11.0",
# ... other dependencies ...
],
repositories = [
"https://maven.google.com",
"https://repo1.maven.org/maven2",
],
)
בנייה ממקור
אם רוצים ליצור tink-awskms
ממקור, למשל כדי להצמיד קומיט ספציפי, אפשר לכלול אותו כ-http_archive
בקובץ WORKSPACE
:
# ...
http_archive(
name = "tink_java",
urls = ["https://github.com/tink-crypto/tink-java/releases/download/v1.18.0/tink-java-1.18.0.zip"],
strip_prefix = "tink-java-1.18.0",
sha256 = "f74f0b8fa8a6edc129ce6b369764e176d7047d87d8f77cec06a8880f00498571",
)
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.11.0/tink-java-awskms-1.11.0.zip"],
strip_prefix = "tink-java-awskms-1.11.0",
sha256 = "18f8faa7ba0019fc584f9e03f94221ebbcc83f059568d2277a4866003153e151",
)
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",
],
)
Google Cloud KMS Extension
התוסף Tink Java Google Cloud KMS הוא tink-java-gcpkms והגרסה העדכנית ביותר שלו היא 1.10.0.
Maven
אפשר לכלול את התוסף Tink Java Google Cloud KMS באמצעות Maven:
<dependencies>
<dependency>
<groupId>com.google.crypto.tink</groupId>
<artifactId>tink-gcpkms</artifactId>
<version>1.10.0/version>
</dependency>
</dependencies>
Bazel
פריט מידע שנוצר בתהליך פיתוח (Artifact) של גרסת Maven
אפשר להתקין את ארטיפקט Maven com.google.crypto.tink:tink-gcpkms
לצד com.google.crypto.tink:tink
באמצעות הכלי rules_jvm_external
.
# ...
maven_install(
artifacts = [
"com.google.crypto.tink:tink:1.18.0",
"com.google.crypto.tink:tink-gcpkms:1.10.0",
# ... other dependencies ...
],
repositories = [
"https://maven.google.com",
"https://repo1.maven.org/maven2",
],
)
בנייה ממקור
אם רוצים ליצור tink-gcpkms
ממקור, למשל כדי להצמיד קומיט ספציפי, אפשר לכלול אותו כ-http_archive
בקובץ WORKSPACE
:
# ...
http_archive(
name = "tink_java",
urls = ["https://github.com/tink-crypto/tink-java/releases/download/v1.18.0/tink-java-1.18.0.zip"],
strip_prefix = "tink-java-1.18.0",
sha256 = "f74f0b8fa8a6edc129ce6b369764e176d7047d87d8f77cec06a8880f00498571",
)
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
הספרייה Tink Java Apps מספקת הטמעות של Google Payment Method Token, Server-Side Verification of Google AdMob Rewarded Ads ו-RFC 8291 - Message Encryption for Web Push, והגרסה האחרונה שלה היא 1.12.2.
Maven
אפשר לכלול את ספריית Tink Java Apps באמצעות Maven:
<dependency>
<groupId>com.google.crypto.tink</groupId>
<artifactId>apps-webpush</artifactId>
<version>1.12.2</version>
</dependency>
<dependency>
<groupId>com.google.crypto.tink</groupId>
<artifactId>apps-paymentmethodtoken</artifactId>
<version>1.12.2</version>
</dependency>
<dependency>
<groupId>com.google.crypto.tink</groupId>
<artifactId>apps-rewardedads</artifactId>
<version>1.12.2</version>
</dependency>
Bazel
אפשר להתקין כל אחד מפריטי ה-com.google.crypto.tink:apps-*
Maven באמצעות הכלי rules_jvm_external
.
# ...
maven_install(
artifacts = [
"com.google.crypto.tink:apps-webpush:1.12.2",
"com.google.crypto.tink:apps-paymentmethodtoken:1.12.2",
"com.google.crypto.tink:apps-rewardedads:1.12.2",
# ... other dependencies ...
],
repositories = [
"https://maven.google.com",
"https://repo1.maven.org/maven2",
],
)
השלבים הבאים
אחרי שמסיימים להגדיר את Tink, ממשיכים לשלבים הרגילים לשימוש ב-Tink:
- בחירת פרימיטיב – מחליטים באיזה פרימיטיב להשתמש בהתאם לתרחיש לדוגמה
- ניהול מפתחות – הגנה על המפתחות באמצעות KMS חיצוני, יצירת קבוצות מפתחות והחלפת מפתחות