راه اندازی تینک

می توانید Tink را از منبع بسازید یا از بسته های خاص زبان استفاده کنید. دستورالعمل های زیر شما را شروع می کند.

پس از اتمام نصب و راه اندازی Tink، مراحل بعدی را در انتهای این صفحه ادامه دهید.

C++

Tink کتابخانه های C++ زیر را ارائه می دهد:

Tink C++ (tink-cc)

Tink C++ به موارد زیر بستگی دارد:

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
  • سیستم ساخت:

بازل

شما باید موارد زیر را به فایل 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
  • سیستم ساخت:

بازل

شما باید موارد زیر را به فایل 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 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 از جاوا 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 خارجی خود محافظت کنید، مجموعه کلیدها را ایجاد کنید و کلیدهای خود را بچرخانید.