Tink 설정

소스에서 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.2.0.zip
  URL_HASH  SHA256=88e1442182452caa16d0954ceaf73e17b0aa30837ee6c0cc16bf0112313ce753
)
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.2.0")

작업공간

WORKSPACE 파일과 함께 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.2.0.zip"],
    strip_prefix = "tink-2.2.0",
    sha256 = "88e1442182452caa16d0954ceaf73e17b0aa30837ee6c0cc16bf0112313ce753",
)

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.2.0.zip"],
    strip_prefix = "tink-2.2.0",
    sha256 = "88e1442182452caa16d0954ceaf73e17b0aa30837ee6c0cc16bf0112313ce753",
)

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 도구 또는 Bazel과 함께 사용할 수 있는 Go 모듈로 게시됩니다.

Tink Go (tink-go)

Go 도구

프로젝트 디렉터리에서 다음 명령어를 실행합니다.

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

공식 Go 문서를 참고하세요.

Bazel

Bazel과 함께 Tink Go를 사용하려면 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

Bazel과 함께 Tink Go AWS KMS 확장 프로그램을 사용하려면 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

Bazel과 함께 Tink Go Google Cloud KMS 확장 프로그램을 사용하려면 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 Vault 확장 프로그램 (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 또는 Gradle 프로젝트 내에 Tink Java Maven 아티팩트를 포함하거나 Bazel을 사용할 수 있습니다.

Tink Android는 API 수준 24부터 완전히 지원됩니다. Tink의 대부분은 API 수준 21부터 작동할 것으로 예상됩니다. API 수준 21에서 Tink를 즉시 사용할 수 있는 부분은 다음과 같습니다.

  • JWT 라이브러리는 java.util.Optional와 같은 클래스를 사용하므로 API 수준 24가 필요합니다. 이러한 제한은 디슈가링을 통해 피할 수 있습니다.
  • com.google.crypto.tink.integration.android의 클래스는 API 수준 23부터 완전히 테스트됩니다.
  • com.google.crypto.tink.streamingaead의 일부 API는 API 수준 24에서만 사용할 수 있는 SeekableByteBufferChannel를 사용합니다.

기술적인 이유로 Google은 Google 내부 인프라의 Android에서만 Tink를 테스트합니다. 이로 인해 문제가 발생하지는 않을 것으로 예상되지만 문제가 발생하면 문제를 신고해 주세요.

Tink Android에는 proguard 구성이 필요하지 않습니다.

Tink Java (tink-java)

Maven

Maven을 사용하여 Tink 자바 및 Tink Android 라이브러리를 포함할 수 있습니다.

<dependency>
  <groupId>com.google.crypto.tink</groupId>
  <artifactId>tink</artifactId>
  <version>1.13.0</version>
</dependency>

Android를 타겟팅하는 경우 다음을 사용하여 Gradletink-android를 사용할 수 있습니다.

dependencies {
  implementation 'com.google.crypto.tink:tink-android:1.13.0'
}

Bazel

Bazel 사용자가 Tink Java를 종속 항목으로 추가할 수 있는 권장 방법은 WORKSPACE 파일의 rules_jvm_external 도구를 사용하여 Maven 출시 아티팩트를 설치하는 것입니다.

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를 빌드하려면 WORKSPACE 파일에 http_archive로 포함하면 됩니다.

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

Maven을 사용하여 Tink 자바 및 Tink Android 라이브러리를 포함할 수 있습니다.

<dependencies>
  <dependency>
    <groupId>com.google.crypto.tink</groupId>
    <artifactId>tink-awskms</artifactId>
    <version>1.9.1</version>
  </dependency>
</dependencies>

Bazel

rules_jvm_external 도구를 사용하여 com.google.crypto.tink:tink과 함께 com.google.crypto.tink:tink-awskms Maven 아티팩트를 설치할 수 있습니다.

# ...

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

또는 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

rules_jvm_external 도구를 사용하여 com.google.crypto.tink:tink과 함께 com.google.crypto.tink:tink-gcpkms Maven 아티팩트를 설치할 수 있습니다.

# ...

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

또는 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 앱 확장 프로그램 (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

rules_jvm_external 도구를 사용하여 com.google.crypto.tink:apps-* Maven 아티팩트를 설치할 수 있습니다.

# ...

maven_install(
    artifacts = [
        "com.google.crypto.tink:apps-webpush:1.11.0",
        "com.google.crypto.tink:apps-paymentmethodtoken:1.11.0",
        "com.google.crypto.tink:apps-rewardedads:1.11.0",
        # ... other dependencies ...
    ],
    repositories = [
        "https://maven.google.com",
        "https://repo1.maven.org/maven2",
    ],
)

ObjC

GitHub의 방법론을 참고하세요.

Python

Tink Python 라이브러리 tink-py는 macOS (x86-64 및 ARM64), Linux (x86-64 및 ARM64), Windows (x86-64)에서 Python 3.8 이상을 지원합니다. 최신 버전은 1.10.0입니다. Pip를 사용하여 로컬에 설치하거나 Bazel과 함께 사용할 수 있습니다.

Tink Python은 AWS KMS, Google Cloud KMS, HashiCorp Vault와의 통합을 제공합니다.

PIP

다음 명령어를 실행하여 PyPI에서 시스템에 맞는 Tink Python 바이너리 출시 버전을 설치할 수 있습니다.

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 또는 Bazeliskprotobuf 컴파일러가 설치되어 있어야 합니다.

Bazel

Bazel 사용자는 다음과 같이 WORKSPACE 파일에 Tink Python을 포함할 수 있습니다.

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로 키를 보호하고 키 세트를 생성하고 키를 순환합니다.