يمكنك إنشاء Tink من المصدر أو استخدام حِزم خاصة بلغة معيّنة. يمكنك اتّباع التعليمات التالية للبدء.
بعد الانتهاء من تثبيت Tink وإعداده، تابِع الخطوات التالية في نهاية هذه الصفحة.
C++
توفّر Tink مكتبات C++ التالية:
- مكتبة C++ الأساسية، tink-cc أحدث إصدار هو 2.3.0
- إضافة AWS KMS، tink-cc-awskms أحدث إصدار هو 2.0.1.
- إضافة Google Cloud KMS tink-cc-gcpkms. أحدث إصدار هو 2.2.0.
Tink C++ (tink-cc)
تعتمد حزمة Tink C++ على ما يلي:
- Protobuf 26.1
- Abseil LTS 20230802.0
- BoringSSL أو الإصدار 1.1.1 من OpenSSL أو إصدار أحدث
- RapidJSON 1.1.0
- googletest 1.14.0 (الإصدار التجريبي فقط)
- Wycheproof (اختبار فقط)
تتيح مكتبة Tink C++ ما يلي:
- C++ >= 14
- نظام التشغيل:
- UbuntuLTS >= 20.04 (x86_64)
- الإصدار 12.5 من نظام التشغيل macOS أو الإصدارات الأحدث (x86_64)
- Windows Server >= 2019 (x86_64)
- المُجمِّع:
- GCC >= 7.5.0
- Apple Clang >= 14
- MSVC >= 2019
- نظام الإنشاء:
CMake
يجب إضافة tink-cc
كتبعية داخل الشجرة. على سبيل المثال:
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
إذا كنت تستخدم Bazel مع الوحدات، أضِف
ما يلي في ملف MODULE.bazel
:
bazel_dep(name = "tink_cc", version = "2.3.0")
مساحة العمل
إذا كنت تستخدم Bazel مع ملفات WORKSPACE
، أضِف ما يلي في ملف
WORKSPACE
:
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 (tink-cc-awskms)
تعتمد خدمة Tink C++ Google Cloud KMS على ما يلي:
- Tink C++ 2.1.0
- AWS C++ SDK 1.7.345
- googletest 1.11.0 (للاختبار فقط)
تتوافق خدمة AWS KMS في Tink C++ مع ما يلي:
- C++ >= 14
- نظام التشغيل:
- UbuntuLTS >= 20.04 (x86_64)
- الإصدار 12.5 من نظام التشغيل macOS أو إصدار أحدث (x86_64)
- المُجمِّع:
- GCC >= 7.5.0
- Apple Clang >= 14
- نظام الإنشاء:
- Bazel >= 6 LTS
Bazel
يجب إضافة ما يلي إلى ملف WORKSPACE
في مشروعك:
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()
إضافة Google Cloud KMS لـ Tink C++ (tink-cc-gcpkms)
تعتمد خدمة Tink C++ Google Cloud KMS على ما يلي:
- Tink C++ 2.1.0
- gRPC 1.59.3
- مكتبات Google Cloud C++ Client Libraries 2.16.0
- googletest 1.11.0 (للاختبار فقط)
تتيح مكتبة Tink C++ Google Cloud KMS ما يلي:
- C++ >= 14
- نظام التشغيل:
- UbuntuLTS >= 20.04 (x86_64)
- الإصدار 12.5 من نظام التشغيل macOS أو إصدار أحدث (x86_64)
- المُجمِّع:
- GCC >= 7.5.0
- Apple Clang >= 14
- نظام الإنشاء:
- Bazel >= 6 LTS
Bazel
يجب إضافة ما يلي إلى ملف WORKSPACE
في مشروعك:
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)
البدء
توفّر Tink مكتبات Go التالية:
- مكتبة Tink الأساسية، tink-go: أحدث إصدار هو v2.2.0
- إضافة AWS KMS، tink-go-awskms أحدث إصدار هو 2.1.0.
- إضافة Google Cloud KMS tink-go-gcpkms أحدث إصدار هو 2.2.0.
- إضافة HashiCorp Vault tink-go-hcvault أحدث إصدار هو 2.1.0.
يتم نشر جميع مكتبات Tink Go كوحدات Go يمكن استخدامها مع أدوات Go العادية أو Bazel.
Tink Go (tink-go)
أدوات Go
شغِّل الأمر التالي من دليل مشروعك:
go get github.com/tink-crypto/tink-go/v2@v2.2.0
اطّلِع على مستندات Go الرسمية.
Bazel
إذا كنت تريد استخدام Tink Go مع Bazel،
عليك استخدام
bazel-gazelle
.
يمكنك استخدامها على النحو التالي في WORKSPACE
:
load("@bazel_tools//tools/build_defs/repo:http.bzl", "http_archive")
http_archive(
name = "io_bazel_rules_go",
integrity = "sha256-gKmCd60TEdrNg3+bFttiiHcC6fHRxMn3ltASGkbI4YQ=",
urls = [
"https://mirror.bazel.build/github.com/bazelbuild/rules_go/releases/download/v0.46.0/rules_go-v0.46.0.zip",
"https://github.com/bazelbuild/rules_go/releases/download/v0.46.0/rules_go-v0.46.0.zip",
],
)
http_archive(
name = "bazel_gazelle",
integrity = "sha256-MpOL2hbmcABjA1R5Bj2dJMYO2o15/Uc5Vj9Q0zHLMgk=",
urls = [
"https://mirror.bazel.build/github.com/bazelbuild/bazel-gazelle/releases/download/v0.35.0/bazel-gazelle-v0.35.0.tar.gz",
"https://github.com/bazelbuild/bazel-gazelle/releases/download/v0.35.0/bazel-gazelle-v0.35.0.tar.gz",
],
)
TINK_GO_VERSION="2.2.0"
TINK_GO_SHA256="fea1ff9ed06a7302e3496587834a53f91235085e45e3de03af80b897514b7a1b"
http_archive(
name = "com_github_tink_crypto_tink_go_v2",
urls = ["https://github.com/tink-crypto/tink-go/releases/download/v%s/tink-go-%s.zip" % (TINK_GO_VERSION, TINK_GO_VERSION)],
strip_prefix = "tink-go-%s" % TINK_GO_VERSION,
sha256 = TINK_GO_SHA256,
)
load("@io_bazel_rules_go//go:deps.bzl", "go_register_toolchains", "go_rules_dependencies")
load("@bazel_gazelle//:deps.bzl", "gazelle_dependencies", "go_repository")
load("@com_github_tink_crypto_tink_go_v2//:deps.bzl", tink_go_dependencies="go_dependencies")
tink_go_dependencies()
#######################################
#
# Your project dependencies here.
#
#######################################
go_rules_dependencies()
go_register_toolchains(version = "1.20.10")
gazelle_dependencies()
إضافة AWS KMS في Tink Go (tink-go-awskms)
أدوات Go
نفِّذ الأمر التالي من دليل المشروع:
go get github.com/tink-crypto/tink-go-awskms/v2@2.1.0
اطّلِع على مستندات Go الرسمية.
Bazel
إذا كنت تريد استخدام إضافة AWS KMS في Tink Go مع
Bazel، عليك استخدام
bazel-gazelle
.
يمكنك استخدامها على النحو التالي في WORKSPACE
:
load("@bazel_tools//tools/build_defs/repo:http.bzl", "http_archive")
http_archive(
name = "io_bazel_rules_go",
sha256 = "6dc2da7ab4cf5d7bfc7c949776b1b7c733f05e56edc4bcd9022bb249d2e2a996",
urls = [
"https://mirror.bazel.build/github.com/bazelbuild/rules_go/releases/download/v0.39.1/rules_go-v0.39.1.zip",
"https://github.com/bazelbuild/rules_go/releases/download/v0.39.1/rules_go-v0.39.1.zip",
],
)
http_archive(
name = "bazel_gazelle",
sha256 = "ecba0f04f96b4960a5b250c8e8eeec42281035970aa8852dda73098274d14a1d",
urls = [
"https://mirror.bazel.build/github.com/bazelbuild/bazel-gazelle/releases/download/v0.29.0/bazel-gazelle-v0.29.0.tar.gz",
"https://github.com/bazelbuild/bazel-gazelle/releases/download/v0.29.0/bazel-gazelle-v0.29.0.tar.gz",
],
)
# [Optional]: tink-go is imported as a go_repository by tink_go_awskms_dependencies.
# this is needed only if the user wants to pin to a specific commit/version of tink-go.
# TINK_GO_VERSION="2.2.0"
# TINK_GO_SHA256="fea1ff9ed06a7302e3496587834a53f91235085e45e3de03af80b897514b7a1b"
#
# http_archive(
# name = "com_github_tink_crypto_tink_go_v2",
# urls = ["https://github.com/tink-crypto/tink-go/releases/download/v%s/tink-go-%s.zip" % (TINK_GO_VERSION, TINK_GO_VERSION)],
# strip_prefix = "tink-go-%s" % TINK_GO_VERSION,
# sha256 = TINK_GO_SHA256,
# )
http_archive(
name = "com_github_tink_crypto_tink_go_awskms_v2",
urls = ["https://github.com/tink-crypto/tink-go-awskms/releases/tag/v2.1.0.zip"],
strip_prefix = "tink-go-awskms-2.1.0",
sha256 = "2d99ea5dd0106703385cc12c7a969fca86b338a03e6694dbcf5b273011b5fdba",
)
load("@io_bazel_rules_go//go:deps.bzl", "go_register_toolchains", "go_rules_dependencies")
load("@bazel_gazelle//:deps.bzl", "gazelle_dependencies", "go_repository")
# [Optional]: tink-go is imported as a go_repository by tink_go_awskms_dependencies.
# this is needed only if the user wants to pin to a specific commit/version of tink-go.
# load("@com_github_tink_crypto_tink_go_v2//:deps.bzl", tink_go_dependencies="go_dependencies")
#
# tink_go_dependencies()
load("@com_github_tink_crypto_tink_go_awskms_v2//:deps.bzl", "tink_go_awskms_dependencies")
tink_go_awskms_dependencies()
#######################################
#
# Your project dependencies here.
#
#######################################
go_rules_dependencies()
go_register_toolchains(version = "1.19.9")
gazelle_dependencies()
إضافة Tink Go Google Cloud KMS (tink-go-gcpkms)
أدوات Go
نفِّذ الأمر التالي من دليل المشروع:
go get github.com/tink-crypto/tink-go-gcpkms/v2@v2.2.0
اطّلِع على مستندات Go الرسمية.
Bazel
إذا كنت تريد استخدام إضافة Google Cloud KMS في Tink Go مع
Bazel، عليك استخدام
bazel-gazelle
.
يمكنك استخدامها على النحو التالي في WORKSPACE
:
load("@bazel_tools//tools/build_defs/repo:http.bzl", "http_archive")
# Release X.25.2 from 2024-01-09.
http_archive(
name = "com_google_protobuf",
sha256 = "5e8e2b369a6fcaa24fada21135782eef147aec467cd286c108936a3277e88d2b",
strip_prefix = "protobuf-25.2",
urls = ["https://github.com/protocolbuffers/protobuf/releases/download/v25.2/protobuf-25.2.zip"],
)
# Release from 2023-04-20
http_archive(
name = "io_bazel_rules_go",
sha256 = "6dc2da7ab4cf5d7bfc7c949776b1b7c733f05e56edc4bcd9022bb249d2e2a996",
urls = [
"https://mirror.bazel.build/github.com/bazelbuild/rules_go/releases/download/v0.39.1/rules_go-v0.39.1.zip",
"https://github.com/bazelbuild/rules_go/releases/download/v0.39.1/rules_go-v0.39.1.zip",
],
)
# Release from 2023-01-14
http_archive(
name = "bazel_gazelle",
sha256 = "ecba0f04f96b4960a5b250c8e8eeec42281035970aa8852dda73098274d14a1d",
urls = [
"https://mirror.bazel.build/github.com/bazelbuild/bazel-gazelle/releases/download/v0.29.0/bazel-gazelle-v0.29.0.tar.gz",
"https://github.com/bazelbuild/bazel-gazelle/releases/download/v0.29.0/bazel-gazelle-v0.29.0.tar.gz",
],
)
# [Optional]: tink-go is imported as a go_repository by tink_go_gcpkms_dependencies.
# this is needed only if the user wants to pin to a specific commit/version of tink-go.
# TINK_GO_VERSION="2.2.0"
# TINK_GO_SHA256="fea1ff9ed06a7302e3496587834a53f91235085e45e3de03af80b897514b7a1b"
#
# http_archive(
# name = "com_github_tink_crypto_tink_go_v2",
# urls = ["https://github.com/tink-crypto/tink-go/releases/download/v%s/tink-go-%s.zip" % (TINK_GO_VERSION, TINK_GO_VERSION)],
# strip_prefix = "tink-go-%s" % TINK_GO_VERSION,
# sha256 = TINK_GO_SHA256,
# )
http_archive(
name = "com_github_tink_crypto_tink_go_gcpkms_v2",
urls = ["https://github.com/tink-crypto/tink-go-gcpkms/download/v2.2.0/tink-go-gcpkms-2.2.0.zip"],
strip_prefix = "tink-go-gcpkms-2.2.0",
sha256 = "78177646479314e19c467a9eac90ab96667581b4d6ea5e485c5d2643dfc9b55b",
)
load("@io_bazel_rules_go//go:deps.bzl", "go_register_toolchains", "go_rules_dependencies")
load("@bazel_gazelle//:deps.bzl", "gazelle_dependencies", "go_repository")
# [Optional]: tink-go is imported as a go_repository by tink_go_gcpkms_dependencies.
# this is needed only if the user wants to pin to a specific commit/version of tink-go.
# load("@com_github_tink_crypto_tink_go_v2//:deps.bzl", tink_go_dependencies="go_dependencies")
#
# tink_go_dependencies()
load("@com_github_tink_crypto_tink_go_gcpkms_v2//:deps.bzl", "tink_go_gcpkms_dependencies")
tink_go_awskms_dependencies()
#######################################
#
# Your project dependencies here.
#
#######################################
go_rules_dependencies()
go_register_toolchains(version = "1.20.13")
gazelle_dependencies()
إضافة Tink Go HashiCorp Vault (tink-go-hcvault)
أدوات Go
نفِّذ الأمر التالي من دليل المشروع:
go get github.com/tink-crypto/tink-go-hcvault/v2@v2.1.0
اطّلِع على مستندات Go الرسمية.
Bazel
إذا أردت استخدام إضافة Tink HashiCorp Vault مع
Bazel، عليك استخدام
bazel-gazelle
.
يمكنك استخدامها على النحو التالي في WORKSPACE
:
load("@bazel_tools//tools/build_defs/repo:http.bzl", "http_archive")
http_archive(
name = "io_bazel_rules_go",
sha256 = "6dc2da7ab4cf5d7bfc7c949776b1b7c733f05e56edc4bcd9022bb249d2e2a996",
urls = [
"https://mirror.bazel.build/github.com/bazelbuild/rules_go/releases/download/v0.39.1/rules_go-v0.39.1.zip",
"https://github.com/bazelbuild/rules_go/releases/download/v0.39.1/rules_go-v0.39.1.zip",
],
)
http_archive(
name = "bazel_gazelle",
sha256 = "ecba0f04f96b4960a5b250c8e8eeec42281035970aa8852dda73098274d14a1d",
urls = [
"https://mirror.bazel.build/github.com/bazelbuild/bazel-gazelle/releases/download/v0.29.0/bazel-gazelle-v0.29.0.tar.gz",
"https://github.com/bazelbuild/bazel-gazelle/releases/download/v0.29.0/bazel-gazelle-v0.29.0.tar.gz",
],
)
# [Optional]: tink-go is imported as a go_repository by tink_go_hcvault_dependencies.
# this is needed only if the user wants to pin to a specific commit/version of tink-go.
# TINK_GO_VERSION="2.2.0"
# TINK_GO_SHA256="fea1ff9ed06a7302e3496587834a53f91235085e45e3de03af80b897514b7a1b"
#
# http_archive(
# name = "com_github_tink_crypto_tink_go_v2",
# urls = ["https://github.com/tink-crypto/tink-go/releases/download/v%s/tink-go-%s.zip" % (TINK_GO_VERSION, TINK_GO_VERSION)],
# strip_prefix = "tink-go-%s" % TINK_GO_VERSION,
# sha256 = TINK_GO_SHA256,
# )
http_archive(
name = "com_github_tink_crypto_tink_go_hcvault_v2",
urls = ["https://github.com/tink-crypto/tink-go-hcvault/download/v2.1.0/tink-go-hcvault-2.1.0.zip"],
strip_prefix = "tink-go-hcvault-2.1.0",
sha256 = "b053b67ccc308cfe1cff92d6a74b573d058c5ffe950263026f3d46cb67653def",
)
load("@io_bazel_rules_go//go:deps.bzl", "go_register_toolchains", "go_rules_dependencies")
load("@bazel_gazelle//:deps.bzl", "gazelle_dependencies", "go_repository")
# [Optional]: tink-go is imported as a go_repository by tink_go_hcvault_dependencies.
# this is needed only if the user wants to pin to a specific commit/version of tink-go.
# load("@com_github_tink_crypto_tink_go_v2//:deps.bzl", tink_go_dependencies="go_dependencies")
#
# tink_go_dependencies()
load("@com_github_tink_crypto_tink_go_hcvault_v2//:deps.bzl", "tink_go_hcvault_dependencies")
tink_go_awskms_dependencies()
#######################################
#
# Your project dependencies here.
#
#######################################
go_rules_dependencies()
go_register_toolchains(version = "1.20.14")
gazelle_dependencies()
Java
توفّر Tink مكتبات Java التالية:
- مكتبة Java وAndroid الأساسية، tink-java الإصدار الأحدث هو 1.15.0
- إضافة AWS KMS، tink-java-awskms أحدث إصدار هو 1.10.1.
- إضافة Google Cloud KMS tink-java-gcpkms أحدث إصدار هو 1.10.0.
- مكتبة، tink-java-apps توفّر عمليات تنفيذ Google Payment Method Token والتحقّق من جانب الخادم لإعلانات Google المدفوعة من AdMob وRFC 8291 - Message Encryption for Web Push أحدث إصدار هو 1.11.0.
يتوافق إصدار Java من Tink مع Java 8 أو الإصدارات الأحدث. يمكنك تضمين عناصر Maven لـ Tink Java ضمن مشروع Maven أو Gradle، أو استخدام Bazel.
تتوفّر خدمة Tink Android بالكامل اعتبارًا من المستوى 24 لواجهة برمجة التطبيقات. من المتوقّع أن تعمل معظم أجزاء Tink بدءًا من المستوى 21 من واجهة برمجة التطبيقات. في ما يلي الأجزاء التي لا تعمل فيها أداة Tink بشكل تلقائي مع مستوى واجهة برمجة التطبيقات 21:
- تتطلّب مكتبة JWT مستوى واجهة برمجة التطبيقات 24 لأنّها تستخدِم فئات مثل
java.util.Optional
. يمكن تجنُّب هذا القيد من خلال إزالة السكر. - لا يتم اختبار الفئات في
com.google.crypto.tink.integration.android
بالكامل إلا اعتبارًا من مستوى واجهة برمجة التطبيقات 23. - تستخدِم بعض واجهات برمجة التطبيقات في
com.google.crypto.tink.streamingaead
SeekableByteBufferChannel
التي لا تتوفّر إلا من مستوى واجهة برمجة التطبيقات 24.
يُرجى العِلم أنّنا لا نختبر Tink على Android إلا على البنية الأساسية الداخلية في Google لأسباب فنية. لا نتوقع حدوث أي مشاكل بسبب هذا، ولكن إذا واجهت أي مشاكل، يُرجى إبلاغنا بها.
لا يتطلّب تطبيق Tink لنظام التشغيل Android ضبط أداة Proguard.
Tink Java (tink-java)
Maven
يمكنك تضمين مكتبة Tink Java ومكتبة Tink Android باستخدام Maven:
<dependency>
<groupId>com.google.crypto.tink</groupId>
<artifactId>tink</artifactId>
<version>1.15.0</version>
</dependency>
إذا كنت تستهدِف أجهزة Android، يمكنك استخدام tink-android
من
Gradle باستخدام:
dependencies {
implementation 'com.google.crypto.tink:tink-android:1.15.0'
}
Bazel
الطريقة المقترَحة التي يمكن لمستخدمي 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.15.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 Java AWS KMS (tink-java-awskms)
Maven
يمكنك تضمين مكتبة Tink Java ومكتبة Tink Android باستخدام Maven:
<dependencies>
<dependency>
<groupId>com.google.crypto.tink</groupId>
<artifactId>tink-awskms</artifactId>
<version>1.10.1</version>
</dependency>
</dependencies>
Bazel
يمكنك تثبيت com.google.crypto.tink:tink-awskms
عنصر Maven
مع com.google.crypto.tink:tink
باستخدام أداة
rules_jvm_external
.
# ...
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",
],
)
بدلاً من ذلك، يمكنك تضمينه كتبعية http_archive
:
# ...
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 (tink-java-gcpkms)
Maven
<dependencies>
<dependency>
<groupId>com.google.crypto.tink</groupId>
<artifactId>tink-gcpkms</artifactId>
<version>1.10.0/version>
</dependency>
</dependencies>
Bazel
يمكنك تثبيت com.google.crypto.tink:tink-gcpkms
عنصر Maven
مع com.google.crypto.tink:tink
باستخدام أداة
rules_jvm_external
.
# ...
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",
],
)
بدلاً من ذلك، يمكنك تضمينه كتبعية http_archive
:
# ...
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",
],
)
إضافات تطبيقات Java من Tink (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
يمكنك تثبيت أيّ من عناصر com.google.crypto.tink:apps-*
Maven
باستخدام أداة rules_jvm_external
.
# ...
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
اطّلِع على HOWTO على GitHub.
Python
تتوافق مكتبة Tink Python، tink-py مع Python 3.8 أو إصدار أحدث على نظام التشغيل macOS (x86-64 وARM64) وLinux (x86-64 و ARM64) وWindows (x86-64). أحدث إصدار هو 1.10.0. ويمكن تثبيته على الجهاز باستخدام Pip أو استخدامه مع Bazel.
توفّر حزمة Tink Python عمليات دمج مع AWS KMS وGoogle Cloud KMS وHashiCorp Vault.
بيب
يمكنك تثبيت إصدار Tink Python الثنائي لنظامك من PyPI، من خلال تنفيذ الأمر التالي:
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
إذا لم يتم نشر حزمة ثنائية لبيئة التشغيل، سيلجأ pip
تلقائيًا إلى إنشاء المشروع باستخدام توزيع المصدر
المنشور على PyPI. في هذه الحالة، يجب تثبيت Bazel
أو Bazelisk ومُجمِّع protoc لإنشاء المشروع بنجاح.
Bazel
يمكن لمستخدمي Bazel تضمين Tink Python في ملف
WORKSPACE
على النحو التالي:
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")
الخطوات التالية
بعد الانتهاء من إعداد Tink، تابِع الخطوات العادية لاستخدام Tink:
- اختيار عنصر أساسي: حدِّد العنصر الأساسي الذي تريد استخدامه استنادًا إلى حالة الاستخدام.
- إدارة المفاتيح: يمكنك حماية مفاتيحك باستخدام تدبير إدارة مفاتيح التشفير (KMS) الخارجي، وإنشاء مجموعات مفاتيح، وتبديل مفاتيحك.