Tink को सोर्स से बनाया जा सकता है या भाषा के हिसाब से बने पैकेज का इस्तेमाल किया जा सकता है. यहां दिए गए निर्देशों का पालन करके, इस सुविधा का इस्तेमाल शुरू किया जा सकता है.
Tink को इंस्टॉल और सेट अप करने के बाद, इस पेज के आखिर में दिए गए अगले चरण पर जाएं.
C++
Tink, C++ की ये लाइब्रेरी उपलब्ध कराता है:
- C++ की मुख्य लाइब्रेरी, tink-cc. सबसे नई रिलीज़ 2.3.0 है
- AWS KMS एक्सटेंशन, tink-cc-awskms इसका नया वर्शन 2.0.1 है.
- Google Cloud KMS एक्सटेंशन, tink-cc-gcpkms. नया वर्शन 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")
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++ 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++ क्लाइंट लाइब्रेरी 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)
शुरू करें
Tink, Go की ये लाइब्रेरी उपलब्ध कराता है:
- Tink की मुख्य लाइब्रेरी, tink-go. इसका सबसे नया वर्शन, v2.2.0 है
- AWS KMS एक्सटेंशन, tink-go-awskms. इसका सबसे नया वर्शन 2.1.0 है.
- Google Cloud KMS एक्सटेंशन, tink-go-gcpkms. सबसे नई रिलीज़ 2.2.0 है.
- HashiCorp Vault एक्सटेंशन, tink-go-hcvault. सबसे नई रिलीज़ 2.2.0 है.
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 लाइब्रेरी उपलब्ध कराता है:
- मुख्य Java और Android लाइब्रेरी, tink-java इसका सबसे नया वर्शन 1.15.0 है
- AWS KMS एक्सटेंशन, tink-java-awskms. इसका सबसे नया वर्शन 1.10.1 है.
- Google Cloud KMS एक्सटेंशन, tink-java-gcpkms. सबसे नया रिलीज़ वर्शन 1.10.0 है
- tink-java-apps एक लाइब्रेरी है, जो Google के पेमेंट के तरीके के टोकन, Google AdMob के इनाम वाले विज्ञापनों की सर्वर-साइड की पुष्टि, और RFC 8291 - वेब पुश के लिए मैसेज एन्क्रिप्शन को लागू करने की सुविधा देती है. इसका सबसे नया वर्शन 1.11.0 है.
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 के इस्तेमाल के सामान्य चरणों को पूरा करें:
- प्राइमिटिव चुनना – इस्तेमाल के उदाहरण के आधार पर तय करें कि किस प्राइमिटिव का इस्तेमाल करना है
- कुंजियां मैनेज करना – बाहरी केएमएस की मदद से अपनी कुंजियों को सुरक्षित रखना, पासकोड सेट जनरेट करना, और पासकोड बदलना