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

คุณสามารถสร้าง 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

Bzlmod

หากคุณใช้ 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
  • ระบบบิลด์:

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.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
  • ระบบบิลด์:

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.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

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

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

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

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 ห้องนิรภัย (tink-go-hcvault)

เครื่องมือ Go

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

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 ต่อไปนี้

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.15.0</version>
</dependency>

หากกําหนดเป้าหมายเป็น Android คุณสามารถใช้ tink-android จาก Gradle โดยใช้สิ่งต่อไปนี้

dependencies {
  implementation 'com.google.crypto.tink:tink-android:1.15.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 = "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 จากซอร์สโค้ด เช่น การปักหมุดการคอมมิตที่เฉพาะเจาะจง คุณสามารถรวม tink-java ไว้ในไฟล์ WORKSPACE ได้โดยทำดังนี้http_archive

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)

Maven

คุณรวม Tink Java และไลบรารี Tink สำหรับ Android ได้โดยใช้ Maven ดังนี้

<dependencies>
  <dependency>
    <groupId>com.google.crypto.tink</groupId>
    <artifactId>tink-awskms</artifactId>
    <version>1.10.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.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 Dependency ก็ได้ โดยทำดังนี้

# ...

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)

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.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 Dependency ก็ได้ โดยทำดังนี้

# ...

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

ส่วนขยายแอป Java ของ Tink (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

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

ดูวิธีการใน 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 และคอมไพเลอร์ 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")

ขั้นตอนถัดไป

เมื่อตั้งค่า Tink เสร็จแล้ว ให้ทำตามขั้นตอนการใช้งาน Tink มาตรฐานต่อไปนี้

  • เลือกพรอมต์ - เลือกพรอมต์ที่จะใช้ตามกรณีการใช้งาน
  • จัดการคีย์ - ปกป้องคีย์ด้วย KMS ภายนอก สร้างชุดคีย์ และหมุนเวียนคีย์