Skip to content
This repository has been archived by the owner on Apr 17, 2024. It is now read-only.

Tink 1.6.0

Compare
Choose a tag to compare
@chuckx chuckx released this 18 May 06:16
· 4253 commits to master since this release

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: