คุณสามารถสร้าง Tink จากซอร์สโค้ดหรือใช้แพ็กเกจเฉพาะภาษาก็ได้ วิธีการต่อไปนี้จะช่วยคุณเริ่มต้นใช้งาน
หลังจากติดตั้งและตั้งค่า Tink เสร็จแล้ว ให้ทำตามขั้นตอนถัดไปที่ท้ายหน้านี้
C++
Tink มีไลบรารี C++ ต่อไปนี้
- ไลบรารี C++ หลัก tink-cc รุ่นล่าสุดคือ 2.3.0
- ส่วนขยาย AWS KMS tink-cc-awskms เวอร์ชันล่าสุดคือ 2.0.1
- ส่วนขยาย tink-cc-gcpkms ของ Google Cloud KMS รุ่นล่าสุดคือ 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
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++ 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.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++ 2.1.0
- gRPC 1.59.3
- Google Cloud C++ Client Libraries 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.2.0
- ส่วนขยาย AWS KMS tink-go-awskms เวอร์ชันล่าสุดคือ 2.1.0
- ส่วนขยาย tink-go-gcpkms สำหรับ Google Cloud KMS รุ่นล่าสุดคือ 2.2.0
- ส่วนขยาย tink-go-hcvault ของ HashiCorp Vault เวอร์ชันล่าสุดคือ 2.1.0
ไลบรารี 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 ต่อไปนี้
- ไลบรารีหลักของ Java และ Android อย่าง tink-java เวอร์ชันล่าสุดคือ 1.15.0
- ส่วนขยาย AWS KMS นั่นคือ tink-java-awskms เวอร์ชันล่าสุดคือ 1.10.1
- ส่วนขยาย tink-java-gcpkms ของ Google Cloud KMS เวอร์ชันล่าสุดคือ 1.10.0
- ไลบรารี tink-java-apps ที่ให้บริการติดตั้งใช้งานโทเค็นการชำระเงินของ Google, การยืนยันฝั่งเซิร์ฟเวอร์ของโฆษณาที่มีการให้รางวัลของ Google AdMob และ RFC 8291 - การเข้ารหัสข้อความสําหรับ Web Push รุ่นล่าสุดคือ 1.11.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.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
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 ภายนอก สร้างชุดคีย์ และหมุนเวียนคีย์