يمكنك إنشاء Tink من المصدر أو استخدام حزم بلغات معينة. ستساعدك التعليمات التالية على البدء.
بعد الانتهاء من تثبيت Tink وإعداده، تابِع الخطوات التالية في نهاية هذه الصفحة.
C++
يوفر Tink مكتبات C++ التالية:
- مكتبة C++ أساسية، tink-cc. أحدث إصدار هو 2.2.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 أو OpenSSL >=1.1.1
- RapidJSON 1.1.0
- googletest 1.14.0 (للاختبار فقط)
- Wycheshield (للاختبار فقط)
يدعم 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.2.0.zip
URL_HASH SHA256=88e1442182452caa16d0954ceaf73e17b0aa30837ee6c0cc16bf0112313ce753
)
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
بزلمود
إذا كنت تستخدم Bazel مع الوحدات، أضِف
ما يلي في ملف MODULE.bazel
:
bazel_dep(name = "tink_cc", version = "2.2.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.2.0.zip"],
strip_prefix = "tink-2.2.0",
sha256 = "88e1442182452caa16d0954ceaf73e17b0aa30837ee6c0cc16bf0112313ce753",
)
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 من حزمة تطوير البرامج (SDK) لـ AWS C++
- 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.2.0.zip"],
strip_prefix = "tink-2.2.0",
sha256 = "88e1442182452caa16d0954ceaf73e17b0aa30837ee6c0cc16bf0112313ce753",
)
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
- الإصدار 2.16.0 من مكتبات عملاء Google Cloud C++
- 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.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 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()
إضافة Tink Go AWS KMS (tink-go-awskms)
بدء استخدام الأدوات
شغّل الأمر التالي من دليل المشروع:
go get github.com/tink-crypto/tink-go-awskms/v2@2.1.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.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 get github.com/tink-crypto/tink-go-gcpkms/v2@v2.2.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.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 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.14.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 - Message Encryption for Web Push. أحدث إصدار هو 1.11.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.14.0</version>
</dependency>
إذا كنت تستهدف Android، يمكنك استخدام tink-android
من
Gradle باستخدام:
dependencies {
implementation 'com.google.crypto.tink:tink-android:1.14.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.14.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
يمكنك تثبيت com.google.crypto.tink:tink-awskms
عناصر Maven إلى جانب com.google.crypto.tink:tink
باستخدام أداة rules_jvm_external
.
# ...
maven_install(
artifacts = [
"com.google.crypto.tink:tink:1.14.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.14.0/tink-java-1.14.0.zip"],
strip_prefix = "tink-java-1.14.0",
sha256 = "54316e74f759bf7562d7a63c0340c66fe63917310433e547ad6d37acb75fa7c8",
)
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
يمكنك تثبيت com.google.crypto.tink:tink-gcpkms
عناصر Maven إلى جانب com.google.crypto.tink:tink
باستخدام أداة rules_jvm_external
.
# ...
maven_install(
artifacts = [
"com.google.crypto.tink:tink:1.14.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.14.0/tink-java-1.14.0.zip"],
strip_prefix = "tink-java-1.14.0",
sha256 = "54316e74f759bf7562d7a63c0340c66fe63917310433e547ad6d37acb75fa7c8",
)
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 (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
يمكنك تثبيت أي من عناصر Maven الـ com.google.crypto.tink:apps-*
باستخدام الأداة 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 ومجمّع النماذج الأولية لإنشاء المشروع بنجاح.
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 الخارجية، وإنشاء مجموعات مفاتيح، وتدوير المفاتيح