يمكنك إنشاء Tink من المصدر أو استخدام حزم خاصة بلغة. تساعدك التعليمات التالية على البدء.
C++
يوفر Tink مكتبات C++ التالية:
- مكتبة C++ أساسية، tink-cc. أحدث إصدار هو 2.1.3
- إضافة AWS KMS، tink-cc-awskms أحدث إصدار هو 2.0.1.
- إضافة Google Cloud KMS tink-cc-gcpkms. أحدث إصدار هو 2.2.0.
Tink C++ (tink-cc)
يعتمد Tink C++ على:
- Protobuf 21.9
- Abseil LTS 20230802.0
- BoringSSL أو OpenSSL >=1.1.1
- FirebaseJSON 1.1.0
- googletest 1.11.0 (للاختبار فقط)
- Wycheless (للاختبار فقط)
يتوافق Tink C++ مع:
- C++ >= 14
- نظام التشغيل:
- UbuntuLTS >= 20.04 (x86_64)
- macOS >= 12.5 Monterey (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.1.3.zip
URL_HASH SHA256=14a3f64a56d7e9296889d7eba7a3b8787c3281e5bc5791033c54baf810a0b6ef
)
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.1.3")
مساحة العمل
إذا كنت تستخدم 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.1.3.zip"],
strip_prefix = "tink-2.1.3",
sha256 = "14a3f64a56d7e9296889d7eba7a3b8787c3281e5bc5791033c54baf810a0b6ef",
)
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
- الإصدار 1.7.345 من حزمة AAWS C++ SDK
- googletest 1.11.0 (للاختبار فقط)
يتوافق Tink C++ AWS KMS مع ما يلي:
- C++ >= 14
- نظام التشغيل:
- UbuntuLTS >= 20.04 (x86_64)
- macOS >= 12.5 Monterey (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.1.3.zip"],
strip_prefix = "tink-2.1.3",
sha256 = "14a3f64a56d7e9296889d7eba7a3b8787c3281e5bc5791033c54baf810a0b6ef",
)
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 (tink-cc-gcpkms)
يعتمد Tink C++ Google Cloud KMS على ما يلي:
- Tink C++ 2.1.0
- gRPC 1.59.3
- مكتبات عميل Google Cloud C++ الإصدار 2.16.0
- googletest 1.11.0 (للاختبار فقط)
يتوافق Tink C++ Google Cloud KMS مع ما يلي:
- C++ >= 14
- نظام التشغيل:
- UbuntuLTS >= 20.04 (x86_64)
- macOS >= 12.5 Monterey (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.1.0
- إضافة AWS KMS، tink-go-awskms أحدث إصدار هو 2.0.0.
- إضافة Google Cloud KMS tink-go-gcpkms. كان أحدث إصدار هو 2.1.0.
- إضافة HashiCorp Vault tink-go-hcvault. كان أحدث إصدار 2.1.0.
يتم نشر جميع مكتبات Tink Go على شكل وحدات Go يمكن استخدامها مع أدوات Go العادية أو Bazel.
Tink Go (tink-go)
أدوات Going
تشغيل الأمر التالي من دليل المشروع:
go get github.com/tink-crypto/tink-go/v2@v2.1.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",
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",
],
)
TINK_GO_VERSION="2.1.0"
TINK_GO_SHA256="84b4b233fb20b570812e61ccb134d230222b79d2fd765c1d57352a53d439d746"
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()
إضافة Tink Go AWS KMS (tink-go-awskms)
أدوات Going
نفِّذ الأمر التالي من دليل المشروع:
go get github.com/tink-crypto/tink-go-awskms/v2@v2.0.0
اطّلِع على مستندات Go الرسمية.
Bazel
إذا كنت تريد استخدام إضافة Tink Go AWS KMS مع
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.1.0"
# TINK_GO_SHA256="84b4b233fb20b570812e61ccb134d230222b79d2fd765c1d57352a53d439d746"
#
# 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.0.0.zip"],
strip_prefix = "tink-go-awskms-2.0.0",
sha256 = "8f1281ab0f04af4c114b46aeb3a5db5040604225c7797782c1274f75eb6f660c",
)
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)
أدوات Going
نفِّذ الأمر التالي من دليل المشروع:
go get github.com/tink-crypto/tink-go-gcpkms/v2@v2.1.0
اطّلِع على مستندات Go الرسمية.
Bazel
إذا أردت استخدام إضافة Tink Go Google Cloud KMS مع 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.1.0"
# TINK_GO_SHA256="84b4b233fb20b570812e61ccb134d230222b79d2fd765c1d57352a53d439d746"
#
# 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.1.0/tink-go-gcpkms-2.1.0.zip"],
strip_prefix = "tink-go-gcpkms-2.1.0",
sha256 = "77ab16b26b60edb46167c9177ad4081a02de0ed1f431dde9a6b2b9be59926e13",
)
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)
أدوات Going
نفِّذ الأمر التالي من دليل المشروع:
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.1.0"
# TINK_GO_SHA256="84b4b233fb20b570812e61ccb134d230222b79d2fd765c1d57352a53d439d746"
#
# 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 وAndroid الأساسية، tink-java أحدث إصدار هو 1.13.0
- إضافة AWS KMS، tink-java-awskms وآخر إصدار هو 1.9.1.
- إضافة Google Cloud KMS tink-java-gcpkms. آخر إصدار هو 1.10.0
- مكتبة، tink-java-apps التي توفر عمليات تنفيذ للرمز المميز لطريقة دفع Google، والتحقق من جانب الخادم للإعلانات التي تتضمن مكافآت في Google AdMob، وRFC 8291 - تشفير الرسائل على الويب. أحدث إصدار هو 1.10.0.
يتوافق إصدار Java من Tink مع Java 8 أو الإصدارات الأحدث. يمكنك إما تضمين عناصر Tink Java Maven في مشروع 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.13.0</version>
</dependency>
إذا كنت تستهدف Android، يمكنك استخدام tink-android
من
Gradle باستخدام:
dependencies {
implementation 'com.google.crypto.tink:tink-android:1.13.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 = "4.5"
RULES_JVM_EXTERNAL_SHA ="b17d7388feb9bfa7f2fa09031b32707df529f26c91ab9e5d909eb1676badd9a6"
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/archive/refs/tags/%s.zip" % 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.13.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="27b061bb9ed1af1a6f538410bff443290e427e66"
TINK_SHA256="e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855"
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.9.1</version>
</dependency>
</dependencies>
Bazel
يمكنك تثبيت عنصر Maven الذي يضم أدوات com.google.crypto.tink:tink-awskms
إلى جانب com.google.crypto.tink:tink
، باستخدام أداة rules_jvm_external
.
# ...
maven_install(
artifacts = [
"com.google.crypto.tink:tink:1.13.0",
"com.google.crypto.tink:tink-awskms:1.9.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.13.0/tink-java-1.13.0.zip"],
strip_prefix = "tink-java-1.13.0",
sha256 = "d795e05bd264d78f438670f7d56dbe38eeb14b16e5f73adaaf20b6bb2bd11683",
)
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.9.1/tink-java-awskms-1.9.1.zip"],
strip_prefix = "tink-java-awskms-1.9.1",
sha256 = "57bd15391ec949660a8d4f0b0aa3cdd1bba2938a49c2a41f64349312873bcc56",
)
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
يمكنك تثبيت عنصر Maven الذي يضم أدوات com.google.crypto.tink:tink-gcpkms
إلى جانب com.google.crypto.tink:tink
، باستخدام أداة rules_jvm_external
.
# ...
maven_install(
artifacts = [
"com.google.crypto.tink:tink:1.13.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.13.0/tink-java-1.13.0.zip"],
strip_prefix = "tink-java-1.13.0",
sha256 = "d795e05bd264d78f438670f7d56dbe38eeb14b16e5f73adaaf20b6bb2bd11683",
)
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)
Maven
<dependency>
<groupId>com.google.crypto.tink</groupId>
<artifactId>apps-webpush</artifactId>
<version>1.10.0</version>
</dependency>
<dependency>
<groupId>com.google.crypto.tink</groupId>
<artifactId>apps-paymentmethodtoken</artifactId>
<version>1.10.0</version>
</dependency>
<dependency>
<groupId>com.google.crypto.tink</groupId>
<artifactId>apps-rewardedads</artifactId>
<version>1.10.0</version>
</dependency>
Bazel
يمكنك تثبيت أي من عناصر Maven com.google.crypto.tink:apps-*
باستخدام أداة rules_jvm_external
.
# ...
maven_install(
artifacts = [
"com.google.crypto.tink:apps-webpush:1.10.0",
"com.google.crypto.tink:apps-paymentmethodtoken:1.10.0",
"com.google.crypto.tink:apps-rewardedads:1.10.0",
# ... other dependencies ...
],
repositories = [
"https://maven.google.com",
"https://repo1.maven.org/maven2",
],
)
ObjC
يمكنك الاطّلاع على كيفية استخدام 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 وبرنامج Protobuf لإنشاء المشروع بنجاح.
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")