می توانید 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 یا OpenSSL >=1.1.1
- RapidJSON 1.1.0
- googletest 1.14.0 (فقط تست)
- Wycheproof (فقط تست)
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.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 با ماژول ها استفاده می کنید موارد زیر را در فایل 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++ AWS KMS پشتیبانی می کند:
- C++ >= 14
- سیستم عامل:
- UbuntuLTS >= 20.04 (x86_64)
- macOS >= 12.5 Monterey (x86_64)
- کامپایلر:
- GCC >= 7.5.0
- Apple Clang >= 14
- سیستم ساخت:
- بازل >= 6 LTS
بازل
شما باید موارد زیر را به فایل 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()
پسوند Tink C++ Google Cloud KMS (tink-cc-gcpkms)
Tink C++ Google Cloud KMS به موارد زیر بستگی دارد:
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
- سیستم ساخت:
- بازل >= 6 LTS
بازل
شما باید موارد زیر را به فایل 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 زیر را ارائه می دهد:
- یک کتابخانه اصلی تینک، تین-گو . آخرین نسخه نسخه 2.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.2.0 است.
همه کتابخانه های Tink Go به عنوان ماژول های Go منتشر شده اند که می توانند با ابزار استاندارد Go یا Bazel استفاده شوند.
تینک گو (تینک گو)
برو ابزار سازی
اجرای دستور زیر از پوشه پروژه شما:
go get github.com/tink-crypto/tink-go/v2@v2.2.0
مستندات رسمی Go را ببینید.
پسوند Tink Go AWS KMS (tink-go-awskms)
برو ابزار سازی
دستور زیر را از دایرکتوری پروژه خود اجرا کنید:
go get github.com/tink-crypto/tink-go-awskms/v2@2.1.0
مستندات رسمی Go را ببینید.
برنامه افزودنی Tink Go Google Cloud KMS (tink-go-gcpkms)
برو ابزار سازی
دستور زیر را از دایرکتوری پروژه خود اجرا کنید:
go get github.com/tink-crypto/tink-go-gcpkms/v2@v2.2.0
مستندات رسمی Go را ببینید.
پسوند Tink Go HashiCorp Vault (tink-go-hcvault)
برو ابزار سازی
دستور زیر را از دایرکتوری پروژه خود اجرا کنید:
go get github.com/tink-crypto/tink-go-hcvault/v2@v2.2.0
مستندات رسمی Go را ببینید.
جاوا
Tink کتابخانه های جاوا زیر را ارائه می دهد:
- یک کتابخانه اصلی جاوا و اندروید، tink-java آخرین نسخه 1.15.0 است
- یک برنامه افزودنی AWS KMS ، tink-java-awskms آخرین نسخه 1.10.1 است.
- یک برنامه افزودنی Google Cloud KMS ، tink-java-gcpkms . آخرین نسخه 1.10.0 است
- یک کتابخانه، برنامههای tink-java که پیادهسازیهایی را برای توکن روش پرداخت Google ، تأیید سمت سرور تبلیغات پاداشدهی شده Google AdMob ، و RFC 8291 - رمزگذاری پیام برای Web Push ارائه میکند. آخرین نسخه 1.11.0 است.
نسخه جاوا Tink از جاوا 8 یا جدیدتر پشتیبانی می کند. می توانید مصنوعات Tink Java Maven را در پروژه Maven یا Gradle خود قرار دهید یا از Bazel استفاده کنید.
Tink Android از سطح API 24 به طور کامل پشتیبانی میشود. انتظار میرود اکثر قسمتهای Tink از سطح API 21 شروع به کار کنند. قسمتهایی که Tink با سطح API 21 تمام نمیشود عبارتند از:
- کتابخانه JWT به سطح 24 API نیاز دارد زیرا از کلاس هایی مانند
java.util.Optional
استفاده می کند. این محدودیت را می توان با شکر زدایی اجتناب کرد. - کلاسها در
com.google.crypto.tink.integration.android
فقط از سطح API 23 به طور کامل آزمایش میشوند. - برخی از APIها در
com.google.crypto.tink.streamingaead
ازSeekableByteBufferChannel
استفاده می کنند که فقط از سطح 24 API در دسترس است.
توجه داریم که به دلایل فنی ما فقط Tink را در اندروید در زیرساخت داخلی گوگل آزمایش می کنیم. به این دلیل انتظار هیچ مشکلی نداریم، اما اگر با مشکلی مواجه شدید، لطفاً مشکلی را مطرح کنید.
Tink Android نیازی به پیکربندی proguard ندارد.
Tink Java (tink-java)
ماون
می توانید Tink Java و کتابخانه Tink Android را با استفاده از Maven اضافه کنید:
<dependency>
<groupId>com.google.crypto.tink</groupId>
<artifactId>tink</artifactId>
<version>1.15.0</version>
</dependency>
اگر اندروید را هدف قرار می دهید، می توانید از tink-android
از Gradle با استفاده از:
dependencies {
implementation 'com.google.crypto.tink:tink-android:1.15.0'
}
بازل
روشی که کاربران 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
از منبع بسازید، به عنوان مثال برای پین کردن یک commit خاص، می توانید آن را به عنوان 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)
ماون
می توانید Tink Java و کتابخانه Tink Android را با استفاده از Maven اضافه کنید:
<dependencies>
<dependency>
<groupId>com.google.crypto.tink</groupId>
<artifactId>tink-awskms</artifactId>
<version>1.10.1</version>
</dependency>
</dependencies>
بازل
می توانید با استفاده از ابزار rules_jvm_external
مصنوع com.google.crypto.tink:tink-awskms
Maven را در کنار com.google.crypto.tink:tink
نصب کنید.
# ...
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)
ماون
<dependencies>
<dependency>
<groupId>com.google.crypto.tink</groupId>
<artifactId>tink-gcpkms</artifactId>
<version>1.10.0/version>
</dependency>
</dependencies>
بازل
می توانید با استفاده از ابزار rules_jvm_external
مصنوع com.google.crypto.tink:tink-gcpkms
Maven را در کنار com.google.crypto.tink:tink
نصب کنید.
# ...
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",
],
)
برنامه های افزودنی Tink Java Apps (tink-java-apps)
ماون
<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>
بازل
می توانید با استفاده از ابزار rules_jvm_external
، هر یک از مصنوعات com.google.crypto.tink:apps-*
Maven را نصب کنید.
# ...
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 ببینید
پایتون
کتابخانه Tink Python، tin-py از Python 3.8 یا جدیدتر در macOS (x86-64 و ARM64)، لینوکس (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 می توانند تینک پایتون را به صورت زیر در فایل 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 را ادامه دهید:
- یک primitive را انتخاب کنید - بر اساس مورد استفاده خود تصمیم بگیرید که از کدام بدوی استفاده کنید
- مدیریت کلیدها - از کلیدهای خود با KMS خارجی خود محافظت کنید، مجموعه کلیدها را ایجاد کنید و کلیدهای خود را بچرخانید.