টিঙ্ক সেটআপ

আপনি উৎস থেকে Tink তৈরি করতে পারেন বা ভাষা-নির্দিষ্ট প্যাকেজ ব্যবহার করতে পারেন। নিম্নলিখিত নির্দেশাবলী আপনাকে শুরু করে।

আপনি Tink ইনস্টল এবং সেট আপ করা শেষ করার পরে, এই পৃষ্ঠার শেষে পরবর্তী পদক্ষেপগুলি চালিয়ে যান৷

সি++

Tink নিম্নলিখিত C++ লাইব্রেরি প্রদান করে:

টিঙ্ক সি++ (টিঙ্ক-সিসি)

টিঙ্ক C++ এর উপর নির্ভর করে:

Tink C++ সমর্থন করে:

  • C++ >= ১৪
  • ওএস:
    • উবুন্টুএলটিএস >= 20.04 (x86_64)
    • macOS >= 12.5 মন্টেরি (x86_64)
    • উইন্ডোজ সার্ভার >= 2019 (x86_64)
  • কম্পাইলার:
    • GCC >= 7.5.0
    • আপেল ঝনঝন >= 14
    • MSVC >= 2019
  • সিস্টেম তৈরি করুন:

সিমেক

আপনি একটি ইন-ট্রি নির্ভরতা হিসাবে 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)

বাজেল

Bzlmod

আপনি যদি মডিউল সহ Bazel ব্যবহার করেন তাহলে আপনার MODULE.bazel ফাইলে নিম্নলিখিত যোগ করুন:

bazel_dep(name = "tink_cc", version = "2.3.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.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++ >= ১৪
  • ওএস:
    • উবুন্টুএলটিএস >= 20.04 (x86_64)
    • macOS >= 12.5 মন্টেরি (x86_64)
  • কম্পাইলার:
    • GCC >= 7.5.0
    • আপেল ঝনঝন >= 14
  • সিস্টেম তৈরি করুন:

বাজেল

আপনার প্রকল্পের 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++ >= ১৪
  • ওএস:
    • উবুন্টুএলটিএস >= 20.04 (x86_64)
    • macOS >= 12.5 মন্টেরি (x86_64)
  • কম্পাইলার:
    • GCC >= 7.5.0
    • আপেল ঝনঝন >= 14
  • সিস্টেম তৈরি করুন:

বাজেল

আপনার প্রকল্পের 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 এর সাথে ব্যবহার করা যেতে পারে।

টিঙ্ক গো (টিঙ্ক-গো)

টুলিং যান

আপনার প্রকল্প ডিরেক্টরি থেকে নিম্নলিখিত কমান্ড চালানো হচ্ছে:

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

অফিসিয়াল গো ডকুমেন্টেশন দেখুন।

Tink Go AWS KMS এক্সটেনশন (tink-go-awskms)

টুলিং যান

আপনার প্রকল্প ডিরেক্টরি থেকে নিম্নলিখিত কমান্ড চালান:

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

অফিসিয়াল গো ডকুমেন্টেশন দেখুন।

Tink Go Google Cloud KMS এক্সটেনশন (tink-go-gcpkms)

টুলিং যান

আপনার প্রকল্প ডিরেক্টরি থেকে নিম্নলিখিত কমান্ড চালান:

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

অফিসিয়াল গো ডকুমেন্টেশন দেখুন।

Tink Go HashiCorp ভল্ট এক্সটেনশন (tink-go-hcvault)

টুলিং যান

আপনার প্রকল্প ডিরেক্টরি থেকে নিম্নলিখিত কমান্ড চালান:

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

অফিসিয়াল গো ডকুমেন্টেশন দেখুন।

জাভা

Tink নিম্নলিখিত জাভা লাইব্রেরি প্রদান করে:

Tink এর জাভা সংস্করণ জাভা 8 বা নতুন সমর্থন করে। আপনি হয় আপনার Maven বা Gradle প্রকল্পের মধ্যে Tink Java Maven আর্টিফ্যাক্ট অন্তর্ভুক্ত করতে পারেন, অথবা Bazel ব্যবহার করতে পারেন।

টিঙ্ক অ্যান্ড্রয়েড এপিআই লেভেল 24 থেকে শুরু করে সম্পূর্ণভাবে সমর্থিত। টিঙ্কের বেশিরভাগ অংশই এপিআই লেভেল 21 থেকে শুরু করে কাজ করবে বলে আশা করা হচ্ছে। যে অংশগুলো এপিআই লেভেল 21 এর সাথে টিঙ্কের বাক্সের বাইরে চলে না তা হল:

  • JWT লাইব্রেরির API লেভেল 24 প্রয়োজন কারণ এটি java.util.Optional এর মতো ক্লাস ব্যবহার করে। ডিসুগারিং দিয়ে এই সীমাবদ্ধতা এড়ানো যায়।
  • com.google.crypto.tink.integration.android এর ক্লাসগুলি শুধুমাত্র API স্তর 23 থেকে শুরু করে সম্পূর্ণভাবে পরীক্ষা করা হয়।
  • com.google.crypto.tink.streamingaead এ কিছু APIs SeekableByteBufferChannel ব্যবহার করে যা শুধুমাত্র API স্তর 24 থেকে উপলব্ধ।

আমরা নোট করি যে প্রযুক্তিগত কারণে আমরা শুধুমাত্র Google অভ্যন্তরীণ পরিকাঠামোতে Android-এ Tink পরীক্ষা করি। এই কারণে আমরা কোনো সমস্যা আশা করি না, কিন্তু আপনি যদি কোনো সমস্যার সম্মুখীন হন তাহলে অনুগ্রহ করে একটি সমস্যা ফাইল করুন।

টিঙ্ক অ্যান্ড্রয়েডের কোনো প্রোগার্ড কনফিগারেশনের প্রয়োজন নেই।

টিঙ্ক জাভা (টিঙ্ক-জাভা)

মাভেন

আপনি Maven ব্যবহার করে Tink Java এবং Tink Android লাইব্রেরি অন্তর্ভুক্ত করতে পারেন:

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

আপনি যদি অ্যান্ড্রয়েডকে লক্ষ্য করে থাকেন তবে আপনি গ্রেডল থেকে tink-android ব্যবহার করতে পারেন:

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

বাজেল

Bazel ব্যবহারকারীরা নির্ভরতা হিসাবে Tink Java যোগ করতে পারে এমন প্রস্তাবিত উপায় হল তাদের WORKSPACE ফাইলের rules_jvm_external টুল ব্যবহার করে Maven রিলিজ আর্টিফ্যাক্ট ইনস্টল করা:

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 ব্যবহার করে Tink Java এবং Tink Android লাইব্রেরি অন্তর্ভুক্ত করতে পারেন:

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

বাজেল

আপনি rules_jvm_external টুল ব্যবহার করে com.google.crypto.tink: com.google.crypto.tink:tink com.google.crypto.tink:tink-awskms Maven আর্টিফ্যাক্ট ইনস্টল করতে পারেন।

# ...

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)

মাভেন

<dependencies>
  <dependency>
    <groupId>com.google.crypto.tink</groupId>
    <artifactId>tink-gcpkms</artifactId>
    <version>1.10.0/version>
  </dependency>
</dependencies>

বাজেল

আপনি rules_jvm_external টুল ব্যবহার করে com.google.crypto.tink: 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)

মাভেন

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

বাজেল

আপনি rules_jvm_external টুল ব্যবহার করে com.google.crypto.tink:apps-* মাভেন আর্টিফ্যাক্টগুলির যেকোনো একটি ইনস্টল করতে পারেন।

# ...

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 দেখুন

পাইথন

Tink Python লাইব্রেরি, tink-py ম্যাকওএস (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 ভল্টের সাথে ইন্টিগ্রেশন প্রদান করে।

পিপ

আপনি নিম্নলিখিত কমান্ডটি চালিয়ে 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 এবং প্রোটোবাফ কম্পাইলার ইনস্টল করা দরকার।

বাজেল

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 দিয়ে আপনার কীগুলিকে সুরক্ষিত করুন, কীসেট তৈরি করুন এবং আপনার কীগুলি ঘোরান