Configurer Tink Java

Après avoir installé et configuré Tink, passez à Étapes suivantes.

Tink Java

La bibliothèque Java principale est tink-java, dont la dernière version est 1.18.0. Tink Java est compatible avec Java 11 ou une version ultérieure.

Maven

Vous pouvez inclure Tink Java à l'aide de Maven :

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

Bazel

Artefact de version Maven

La méthode recommandée pour les utilisateurs de Bazel afin d'ajouter Tink Java en tant que dépendance consiste à installer l'artefact de version Maven à l'aide de l'outil rules_jvm_external dans leur fichier 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.18.0",
        # ... other dependencies ...
    ],
    repositories = [
        "https://maven.google.com",
        "https://repo1.maven.org/maven2",
    ],
)

Créer à partir de la source

Si vous souhaitez compiler tink-java à partir de la source, par exemple pour épingler un commit spécifique, vous pouvez l'inclure en tant que http_archive dans votre fichier WORKSPACE :

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 Android

La bibliothèque Android principale est tink-java, dont la dernière version est 1.18.0.

Tink Android est entièrement compatible à partir du niveau d'API 24. La plupart des composants de Tink devraient fonctionner à partir du niveau d'API 23. Voici les parties où Tink ne fonctionne pas prêt à l'emploi avec le niveau d'API 23 :

  • La bibliothèque JWT requiert le niveau d'API 24, car elle utilise des classes telles que java.util.Optional. Cette limitation peut être évitée grâce au desugaring.

  • Certaines API de com.google.crypto.tink.streamingaead utilisent SeekableByteBufferChannel, qui n'est disponible qu'à partir du niveau d'API 24.

Pour des raisons techniques, nous ne testons Tink sur Android que sur l'infrastructure interne de Google. Nous ne prévoyons aucun problème, mais si vous en rencontrez, veuillez en signaler un.

Tink Android ne nécessite aucune configuration ProGuard.

Gradle

Vous pouvez utiliser tink-android à partir de Gradle :

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

Extension AWS KMS

L'extension Tink Java AWS KMS est tink-java-awskms, dont la dernière version est 1.11.0.

Maven

Vous pouvez inclure l'extension Tink Java AWS KMS à l'aide de Maven :

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

Bazel

Artefact de version Maven

Vous pouvez installer l'artefact Maven com.google.crypto.tink:tink-awskms aux côtés de com.google.crypto.tink:tink à l'aide de l'outil rules_jvm_external.

# ...

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

Créer à partir de la source

Si vous souhaitez compiler tink-awskms à partir de la source, par exemple pour épingler un commit spécifique, vous pouvez l'inclure en tant que http_archive dans votre fichier WORKSPACE :

# ...

http_archive(
    name = "tink_java",
    urls = ["https://github.com/tink-crypto/tink-java/releases/download/v1.18.0/tink-java-1.18.0.zip"],
    strip_prefix = "tink-java-1.18.0",
    sha256 = "f74f0b8fa8a6edc129ce6b369764e176d7047d87d8f77cec06a8880f00498571",
)

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.11.0/tink-java-awskms-1.11.0.zip"],
    strip_prefix = "tink-java-awskms-1.11.0",
    sha256 = "18f8faa7ba0019fc584f9e03f94221ebbcc83f059568d2277a4866003153e151",
)

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

Extension Google Cloud KMS

L'extension Tink Java Google Cloud KMS est tink-java-gcpkms, dont la dernière version est 1.10.0.

Maven

Vous pouvez inclure l'extension Tink Java Google Cloud KMS à l'aide de Maven :

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

Bazel

Artefact de version Maven

Vous pouvez installer l'artefact Maven com.google.crypto.tink:tink-gcpkms aux côtés de com.google.crypto.tink:tink à l'aide de l'outil rules_jvm_external.

# ...

maven_install(
    artifacts = [
        "com.google.crypto.tink:tink:1.18.0",
        "com.google.crypto.tink:tink-gcpkms:1.10.0",
        # ... other dependencies ...
    ],
    repositories = [
        "https://maven.google.com",
        "https://repo1.maven.org/maven2",
    ],
)

Créer à partir de la source

Si vous souhaitez compiler tink-gcpkms à partir de la source, par exemple pour épingler un commit spécifique, vous pouvez l'inclure en tant que http_archive dans votre fichier WORKSPACE :

# ...

http_archive(
    name = "tink_java",
    urls = ["https://github.com/tink-crypto/tink-java/releases/download/v1.18.0/tink-java-1.18.0.zip"],
    strip_prefix = "tink-java-1.18.0",
    sha256 = "f74f0b8fa8a6edc129ce6b369764e176d7047d87d8f77cec06a8880f00498571",
)

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

Applications Java Tink

La bibliothèque Tink Java Apps fournit des implémentations pour Google Payment Method Token, Server-Side Verification of Google AdMob Rewarded Ads et RFC 8291 – Message Encryption for Web Push, avec 1.12.2 comme dernière version.

Maven

Vous pouvez inclure la bibliothèque Tink Java Apps à l'aide de Maven :

<dependency>
  <groupId>com.google.crypto.tink</groupId>
  <artifactId>apps-webpush</artifactId>
  <version>1.12.2</version>
</dependency>

<dependency>
  <groupId>com.google.crypto.tink</groupId>
  <artifactId>apps-paymentmethodtoken</artifactId>
  <version>1.12.2</version>
</dependency>

<dependency>
  <groupId>com.google.crypto.tink</groupId>
  <artifactId>apps-rewardedads</artifactId>
  <version>1.12.2</version>
</dependency>

Bazel

Vous pouvez installer n'importe quel artefact Maven com.google.crypto.tink:apps-* à l'aide de l'outil rules_jvm_external.

# ...

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

Étapes suivantes

Une fois que vous avez terminé de configurer Tink, suivez les étapes d'utilisation standard de Tink :

  • Choisir une primitive : décidez quelle primitive utiliser en fonction de votre cas d'utilisation.
  • Gérer les clés : protégez vos clés avec votre KMS externe, générez des ensembles de clés et effectuez une rotation de vos clés.