टिंक सेट अप

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

WORKSPACE

अगर 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.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)

शुरू करें

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 का आधिकारिक दस्तावेज़ देखें.

Tink Go AWS KMS एक्सटेंशन (tink-go-awskms)

Go टूल

अपनी प्रोजेक्ट डायरेक्ट्री से यह कमांड चलाएं:

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

Go का आधिकारिक दस्तावेज़ देखें.

Tink Go Google Cloud KMS एक्सटेंशन (tink-go-gcpkms)

Go टूल

अपनी प्रोजेक्ट डायरेक्ट्री से यह कमांड चलाएं:

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

Go का आधिकारिक दस्तावेज़ देखें.

Tink Go HashiCorp Vault एक्सटेंशन (tink-go-hcvault)

Go टूल

अपनी प्रोजेक्ट डायरेक्ट्री से यह कमांड चलाएं:

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

Go का आधिकारिक दस्तावेज़ देखें.

Java

Tink, ये Java लाइब्रेरी उपलब्ध कराता है:

Tink का Java वर्शन, Java 8 या उसके बाद के वर्शन के साथ काम करता है. आपके पास अपने Maven या Gradle प्रोजेक्ट में, Tink Java Maven आर्टफ़ैक्ट शामिल करने या Bazel का इस्तेमाल करने का विकल्प है.

Tink Android, एपीआई लेवल 24 से पूरी तरह काम करता है. उम्मीद है कि एपीआई लेवल 21 से, Tink के ज़्यादातर हिस्से काम करने लगेंगे. एपीआई लेवल 21 के साथ, Tink के ये हिस्से काम नहीं करते:

  • JWT लाइब्रेरी के लिए एपीआई लेवल 24 की ज़रूरत होती है, क्योंकि यह java.util.Optional जैसी क्लास का इस्तेमाल करती है. शुगर हटाने की प्रोसेस से, इस समस्या से बचा जा सकता है.
  • com.google.crypto.tink.integration.android में मौजूद क्लास की पूरी तरह से जांच, एपीआई लेवल 23 से ही की जाती है.
  • com.google.crypto.tink.streamingaead में मौजूद कुछ एपीआई, SeekableByteBufferChannel का इस्तेमाल करते हैं. यह एपीआई, सिर्फ़ एपीआई लेवल 24 से उपलब्ध है.

हमने पाया है कि तकनीकी वजहों से, हम Android पर सिर्फ़ Google के इंटरनल इंफ़्रास्ट्रक्चर पर Tink की जांच करते हैं. हमें उम्मीद है कि इससे कोई समस्या नहीं आएगी. हालांकि, अगर आपको कोई समस्या आती है, तो कृपया समस्या दर्ज करें.

Tink Android के लिए, ProGuard कॉन्फ़िगरेशन की ज़रूरत नहीं होती.

Tink Java (tink-java)

Maven

Maven का इस्तेमाल करके, Tink Java और Tink Android लाइब्रेरी को शामिल किया जा सकता है:

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

अगर Android को टारगेट किया जा रहा है, तो Gradle से tink-android का इस्तेमाल करने के लिए, इनका इस्तेमाल करें:

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

Bazel

Bazel के उपयोगकर्ता, अपनी WORKSPACE फ़ाइल में rules_jvm_external टूल का इस्तेमाल करके, Maven रिलीज़ आर्टफ़ैक्ट को इंस्टॉल करके, Tink Java को डिपेंडेंसी के तौर पर जोड़ सकते हैं. हमारा सुझाव है कि वे ऐसा करें:

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 बनाना है, तो उदाहरण के लिए, किसी खास कमिट को पिन करने के लिए, उसे अपनी 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

Maven का इस्तेमाल करके, Tink Java और Tink Android लाइब्रेरी को शामिल किया जा सकता है:

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

Bazel

rules_jvm_external टूल का इस्तेमाल करके, com.google.crypto.tink:tink के साथ-साथ com.google.crypto.tink:tink-awskms Maven artifact को भी इंस्टॉल किया जा सकता है.

# ...

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 डिपेंडेंसी के तौर पर भी शामिल किया जा सकता है:

# ...

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

rules_jvm_external टूल का इस्तेमाल करके, com.google.crypto.tink:tink के साथ-साथ com.google.crypto.tink:tink-gcpkms Maven आर्टफ़ैक्ट भी इंस्टॉल किया जा सकता है.

# ...

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 डिपेंडेंसी के तौर पर भी शामिल किया जा सकता है:

# ...

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

Tink Java Apps एक्सटेंशन (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 पर HOWTO देखें

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 के साथ इंटिग्रेशन की सुविधा देता है.

पीआईपी

अपने सिस्टम के लिए, 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 या Bazelisk और protobuf compiler इंस्टॉल होना चाहिए.

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 के इस्तेमाल के सामान्य चरणों को पूरा करें:

  • प्राइमिटिव चुनना – इस्तेमाल के उदाहरण के आधार पर तय करें कि किस प्राइमिटिव का इस्तेमाल करना है
  • कुंजियां मैनेज करना – बाहरी केएमएस की मदद से अपनी कुंजियों को सुरक्षित रखना, पासकोड सेट जनरेट करना, और पासकोड बदलना