คุณสามารถสร้าง Tink จากต้นทางหรือใช้แพ็กเกจเฉพาะภาษาได้ วิธีการต่อไปนี้ช่วยให้คุณเริ่มต้นได้
C++
Tink มีไลบรารี C++ ต่อไปนี้
- ไลบรารีหลักของ C++ tink-cc รุ่นล่าสุดคือ 2.1.3
- ส่วนขยาย AWS KMS tink-cc-awskms รุ่นล่าสุดคือ 2.0.1
- ส่วนขยาย Google Cloud KMS tink-cc-gcpkms รุ่นล่าสุดคือ 2.2.0
Tink C++ (tink-cc)
Tink C++ ขึ้นอยู่กับสิ่งต่อไปนี้
- โปรโตคอล 21.9
- Abseil LTS 20230802.0
- BoringSSL หรือ OpenSSL >=1.1.1
- RapidJSON 1.1.0
- googletest 1.11.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
เป็นทรัพยากร 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++ 2.1.0
- AWS C++ SDK 1.7.345
- 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.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++ 2.1.0
- gRPC 1.59.3
- ไลบรารีของไคลเอ็นต์ Google Cloud C++ 2.16.0
- 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)
Go
Tink มีไลบรารี Go ต่อไปนี้
- ไลบรารีหลักของ Tink อย่าง tink-go รุ่นล่าสุดคือ v2.1.0
- ส่วนขยาย AWS KMS, tink-go-awskms รุ่นล่าสุด คือ 2.0.0
- ส่วนขยาย Google Cloud KMS tink-go-gcpkms รุ่นล่าสุดคือ 2.1.0
- ส่วนขยาย HashiCorp Vault tink-go-hcvault รุ่นล่าสุดคือ 2.1.0
ไลบรารี 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 ต่อไปนี้:
- ไลบรารีหลักของ Java และ Android tink-java รุ่นล่าสุดคือ 1.13.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.10.0
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
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")