Tink is a multi-language, cross-platform library that provides simple and misuse-proof APIs for common cryptographic tasks.
This is Tink 1.6.0.
To get started using Tink, see the installation instructions.
What's new
The complete list of changes since 1.5.0 can be found here.
New documentation website
We've launched a new home for Tink documentation at https://developers.google.com/tink.
The site brings together content currently spread across the HOW-TOs and other markdown files throughout the project repository.
Initially, we've populated the site with instructions and code snippets for the Java and Python implementations. Moving forward, expect additional content covering other language implementations, additional critical path overviews, and more.
Java
Key templates API
Introduced the KeyTemplates class. It has a get(name)
method that facilitates getting any registered key template.
A list of currently registered key templates can be obtained by calling Registry.keyTemplates()
Custom key manager method removals
The following methods have been removed. Except where noted, the methods had been annotated as being deprecated.
- Registry
public static <P> PrimitiveSet<P> getPrimitives(KeysetHandle keysetHandle, final KeyManager<P> customManager, Class<P> primitiveClass)
- not deprecated
public static <P> PrimitiveSet<P> getPrimitives(KeysetHandle keysetHandle, Class<P> primitiveClass)
- not deprecated
public static <P> PrimitiveSet<P> getPrimitives(KeysetHandle keysetHandle, final KeyManager<P> customManager)
public static <P> PrimitiveSet<P> getPrimitives(KeysetHandle keysetHandle)
- KeysetHandle
public <P> P getPrimitive(KeyManager<P> customKeyManager, Class<P> targetClassObject)
- MacFactory
public static Mac getPrimitive(KeysetHandle keysetHandle, final KeyManager<Mac> keyManager)
- HybridDecryptFactory
public static HybridDecrypt getPrimitive(KeysetHandle keysetHandle, final KeyManager<HybridDecrypt> keyManager)
- AeadFactory
public static Aead getPrimitive(KeysetHandle keysetHandle, final KeyManager<Aead> keyManager)
- PublicKeyVerifyFactory
public static PublicKeyVerify getPrimitive(KeysetHandle keysetHandle, final KeyManager<PublicKeyVerify> keyManager)
- PublicKeySignFactory
public static PublicKeySign getPrimitive(KeysetHandle keysetHandle, final KeyManager<PublicKeySign> keyManager)
- DeterministicAeadFactory
public static DeterministicAead getPrimitive(KeysetHandle keysetHandle, final KeyManager<DeterministicAead> keyManager)
- StreamingAeadFactory
public static StreamingAead getPrimitive(KeysetHandle keysetHandle, final KeyManager<StreamingAead> keyManager)
- not deprecated
- HybridEncryptFactory
public static HybridEncrypt getPrimitive(KeysetHandle keysetHandle, final KeyManager<HybridEncrypt> keyManager)
Dependency updates
org.json to GSON
The project has migrated to GSON for JSON serialization/deserialization functionality.
Due to this change, the Java implementation is no longer producing HTML-safe encoding by default. This behavior aligns the Java implementation with the other language implementations of Tink.
C++
FIPS only mode
https://github.com/google/tink/blob/1.6/docs/FIPS.md
Obj-C
Support for serializing keys with non-secret key material
Implemented the serializedKeysetNoSecret method on TINKKeysetHandle. This facilitates exporting public keys.
Known issues
- Tink for Obj-C still does not build with Bazel. However, you can still use it in your apps by installing our prebuilt package.
Hall of Fame
This release includes contributions from the following community members: