Configurer Tink Java

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

Tink Java

La bibliothèque Java principale est tink-java, avec la dernière version 1.16.0. Tink Java est compatible avec Java 8 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.16.0</version>
</dependency>

Bazel

Artefact de version Maven

La méthode recommandée pour les utilisateurs de Bazel 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.16.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 principale d'Android est tink-java, avec la dernière version 1.16.0.

Tink Android est entièrement compatible à partir du niveau d'API 24. La plupart des éléments de Tink devraient fonctionner à partir du niveau d'API 21. Les éléments pour lesquels Tink ne s'exécute pas immédiatement avec le niveau d'API 21 sont les suivants:

  • La bibliothèque JWT nécessite le niveau d'API 24, car elle utilise des classes telles que java.util.Optional. Cette limitation peut être évitée avec le désaccharrage.

  • Les classes de com.google.crypto.tink.integration.android ne sont entièrement testées qu'à partir du niveau d'API 23.

  • 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 à ce sujet, 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.16.0'
}

Extension AWS KMS

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

Maven

Vous pouvez inclure l'extension AWS KMS Java Tink à 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 avec com.google.crypto.tink:tink à l'aide de l'outil rules_jvm_external.

# ...

maven_install(
    artifacts = [
        "com.google.crypto.tink:tink:1.16.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.16.0/tink-java-1.16.0.zip"],
    strip_prefix = "tink-java-1.16.0",
    sha256 = "6bf0bb13281257fdf07d70abfc025f0e3ab18abd22646b1ada3fe297f7feaedb",
)

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, avec la dernière version 1.10.0.

Maven

Vous pouvez inclure l'extension Google Cloud KMS Java Tink à 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 avec com.google.crypto.tink:tink à l'aide de l'outil rules_jvm_external.

# ...

maven_install(
    artifacts = [
        "com.google.crypto.tink:tink:1.16.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.16.0/tink-java-1.16.0.zip"],
    strip_prefix = "tink-java-1.16.0",
    sha256 = "6bf0bb13281257fdf07d70abfc025f0e3ab18abd22646b1ada3fe297f7feaedb",
)

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 le jeton de mode de paiement Google, la vérification côté serveur des annonces avec récompense Google AdMob et la RFC 8291 – Chiffrement des messages pour le Web Push, avec la version  1.11.0 comme dernière version.

Maven

Vous pouvez inclure la bibliothèque d'applications Java Tink à l'aide de 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

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

Étapes suivantes

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

  • Choisir une primitive : décidez de la 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.