Tink Java 1.14.0
Tink is a multi-language, cross-platform library that provides simple and misuse-proof APIs for common cryptographic tasks.
This is Tink Java 1.14.0
To get started using Tink, see the setup guide.
What's new?
API changes
- Removed
PrimitiveWrapper
. We anticipate no impact on users, as this class was already rendered unavailable afterRegistry.registerPrimitiveWrapper
was removed in Tink Java 1.13.0.
Performance improvements
- Improved performance of AES-EAX AEAD.
- Improved performance of AES-SIV Deterministic AEAD.
- Improved performance of AES-CMAC PRF.
- Improved performance of ECIES Hybrid Encryption.
Bug fixes
- Fixed bug in binary keyset parsing that resulted in a
TinkBugException
when parsing invalid input. - Fixed bug in JSON keyset parsing that resulted in a
RuntimeException
when parsing invalid input. - Fixed bug where the channel obtained from
newSeekableDecryptingChannel
falsely returned -1 onread
calls. This only happens ifread
was called with an empty buffer, and if the previous call toread
sucessfully read the end of the stream.
Upgraded dependencies
- protobuf (=> 27.0)
Future work
To see what we're working towards, check our project roadmap.
Getting started
Maven:
<dependency>
<groupId>com.google.crypto.tink</groupId>
<artifactId>tink</artifactId>
<version>1.14.0</version>
</dependency>
Gradle:
dependencies {
implementation 'com.google.crypto.tink:tink-android:1.14.0'
}
Bazel:
The recommended way to use tink-java is as a Maven dependency through rules_jvm_external
.
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()
maven_install(
artifacts = [
"com.google.crypto.tink:tink:1.14.0",
# ... other dependencies ...
],
repositories = [
"https://repo1.maven.org/maven2",
],
)
Alternatively, one can build Tink from source and include it with http_archive
:
http_archive(
name = "com_github_tink_crypto_tink_java",
urls = ["https://github.com/tink-crypto/tink-java/archive/refs/tags/v1.14.0.zip"],
strip_prefix = "tink-java-1.14.0",
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()
# ...
maven_install(
artifacts = TINK_MAVEN_ARTIFACTS + # ... other dependencies ...
repositories = [
"https://repo1.maven.org/maven2",
],
)