การตั้งค่าซิงก์

คุณสามารถสร้าง 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 เป็นทรัพยากร Dependency ในทรี เช่น

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++ AWS KMS รองรับสิ่งต่อไปนี้

  • C++ >= 14
  • ระบบปฏิบัติการ:
    • UbuntuLTS >= 20.04 (x86_64)
    • macOS >= 12.5 Monterey (x86_64)
  • ผู้รวบรวม:
    • GCC >= 7.5.0
    • Apple Clang >= 14
  • สร้างระบบ

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++ Google Cloud KMS รองรับสิ่งต่อไปนี้

  • C++ >= 14
  • ระบบปฏิบัติการ:
    • UbuntuLTS >= 20.04 (x86_64)
    • macOS >= 12.5 Monterey (x86_64)
  • ผู้รวบรวม:
    • GCC >= 7.5.0
    • Apple Clang >= 14
  • สร้างระบบ

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)

Go

Tink มีไลบรารี Go ต่อไปนี้

ไลบรารี Tink Go ทั้งหมดได้รับการเผยแพร่เป็นโมดูล Go ซึ่งใช้กับเครื่องมือ Go แบบมาตรฐานหรือ Bazel ได้

Tink Go (tink-go)

เครื่องมือ Go

เรียกใช้คำสั่งต่อไปนี้จากไดเรกทอรีโปรเจ็กต์ของคุณ

go get github.com/tink-crypto/tink-go/v2@v2.1.0

ดูเอกสารประกอบของ Go อย่างเป็นทางการ

Bazel

หากต้องการใช้ Tink Go กับ Bazel คุณควรใช้ bazel-gazelle คุณใช้ URL ตามด้านล่างนี้ใน 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)

เครื่องมือ Go

เรียกใช้คำสั่งต่อไปนี้จากไดเรกทอรีโปรเจ็กต์ของคุณ

go get github.com/tink-crypto/tink-go-awskms/v2@v2.0.0

ดูเอกสารประกอบของ Go อย่างเป็นทางการ

Bazel

หากต้องการใช้ส่วนขยาย Tink Go AWS KMS กับ Bazel คุณควรใช้ bazel-gazelle คุณใช้ URL ตามด้านล่างนี้ใน 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)

เครื่องมือ Go

เรียกใช้คำสั่งต่อไปนี้จากไดเรกทอรีโปรเจ็กต์ของคุณ

go get github.com/tink-crypto/tink-go-gcpkms/v2@v2.1.0

ดูเอกสารประกอบของ Go อย่างเป็นทางการ

Bazel

หากต้องการใช้ส่วนขยาย Tink Go ของ Google Cloud KMS กับ Bazel คุณควรใช้ bazel-gazelle คุณใช้ URL ตามด้านล่างนี้ใน 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 ห้องนิรภัย (tink-go-hcvault)

เครื่องมือ Go

เรียกใช้คำสั่งต่อไปนี้จากไดเรกทอรีโปรเจ็กต์ของคุณ

go get github.com/tink-crypto/tink-go-hcvault/v2@v2.1.0

ดูเอกสารประกอบของ Go อย่างเป็นทางการ

Bazel

หากต้องการใช้ส่วนขยาย Tink HashiCorp ห้องนิรภัยกับ Bazel คุณควรใช้ bazel-gazelle คุณใช้ URL ตามด้านล่างนี้ใน 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 ต่อไปนี้:

Tink เวอร์ชัน Java รองรับ Java 8 หรือใหม่กว่า คุณจะรวมอาร์ติแฟกต์ Maven ของ Tink Java ไว้ในโปรเจ็กต์ Maven หรือ Gradle หรือใช้ Bazel ก็ได้

รองรับ Tink Android อย่างเต็มรูปแบบตั้งแต่ API ระดับ 24 ส่วนต่างๆ ของ Tink ส่วนใหญ่จะทำงานได้ตั้งแต่ API ระดับ 21 ส่วนที่ Tink ไม่ออกจากกล่องด้วย API ระดับ 21 ได้แก่

  • ไลบรารี JWT ต้องใช้ API ระดับ 24 เนื่องจากใช้คลาส เช่น java.util.Optional ข้อจำกัดนี้หลีกเลี่ยงได้ด้วยการกรองน้ำตาล
  • คลาสใน com.google.crypto.tink.integration.android จะได้รับการทดสอบอย่างสมบูรณ์โดยเริ่มจาก API ระดับ 23 เท่านั้น
  • API บางรายการใน com.google.crypto.tink.streamingaead ใช้ SeekableByteBufferChannel ซึ่งพร้อมใช้งานจาก API ระดับ 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 เป็นทรัพยากร Dependency คือการติดตั้งอาร์ติแฟกต์รุ่น 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

คุณติดตั้งอาร์ติแฟกต์ com.google.crypto.tink:tink-awskms Maven ควบคู่ไปกับ 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",
    ],
)

หรือจะระบุเป็นทรัพยากร Dependency 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

คุณติดตั้งอาร์ติแฟกต์ com.google.crypto.tink:tink-gcpkms Maven ควบคู่ไปกับ 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",
    ],
)

หรือจะระบุเป็นทรัพยากร Dependency 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 Apps (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

คุณติดตั้งอาร์ติแฟกต์ของ com.google.crypto.tink:apps-* Maven ได้โดยใช้เครื่องมือ 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

ดู 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

PIP

คุณติดตั้งรุ่นไบนารี 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 และคอมไพเลอร์ masterbuf จึงจะสร้างโปรเจ็กต์ได้สำเร็จ

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")