diff options
author | thaidn <thaidn@google.com> | 2020-10-13 09:18:29 -0700 |
---|---|---|
committer | Copybara-Service <copybara-worker@google.com> | 2020-10-13 09:19:09 -0700 |
commit | 6550e7982b90d17ddd20ac7a5f251bd92d89ca61 (patch) | |
tree | f2a0e5e45bd66f9d83426c3722b520ddf6b564a3 /README.md | |
parent | 57e821a61e52d305c7156c65c9f3cec458322e69 (diff) | |
download | tink-6550e7982b90d17ddd20ac7a5f251bd92d89ca61.tar.gz |
Bump version to 1.5.0 and clean up README.
PiperOrigin-RevId: 336889984
Diffstat (limited to 'README.md')
-rw-r--r-- | README.md | 117 |
1 files changed, 27 insertions, 90 deletions
@@ -8,13 +8,11 @@ ## Index -1. [Introduction](#introduction) -2. [Getting started](#getting-started) -3. [Overview](#overview) -3. [Current status](#current-status) -4. [Learn more](#learn-more) -5. [Contact and mailing list](#contact-and-mailing-list) -6. [Maintainers](#maintainers) +1. [Introduction](#introduction) +2. [Current status](#current-status) +3. [Learn more](#learn-more) +4. [Contact and mailing list](#contact-and-mailing-list) +5. [Maintainers](#maintainers) ## Introduction @@ -29,90 +27,28 @@ background. Tink provides secure APIs that are easy to use correctly and hard(er) to misuse. It reduces common crypto pitfalls with user-centered design, careful -implementation and code reviews, and extensive testing. At Google, Tink is -already being used to secure data of many products such as AdMob, Google Pay, -Google Assistant, Firebase, the Android Search App, etc. +implementation and code reviews, and extensive testing. At Google, Tink is one +of the standard crypto libraries, and has been deployed in hundreds of products +and systems. To get a quick overview of Tink design please take a look at [slides](docs/Tink-a_cryptographic_library--RealWorldCrypto2019.pdf) from [a talk about Tink](https://www.youtube.com/watch?v=pqev9r3rUJs&t=9665) presented at [Real World Crypto 2019](https://rwc.iacr.org/2019/). -## Getting started - -Tink primarily uses [Bazel](https://bazel.build) to manage building and testing -the project. - -The recommended way to get started with Tink is to use -[Bazelisk](https://github.com/bazelbuild/bazelisk). This tool is developed by -the Bazel team and makes it easy to ensure usage of a version of Bazel that's -compatible with the project. - -As a starting point, the -[`examples`](https://github.com/google/tink/tree/master/examples) demonstrate -performing simple tasks using Tink in a variety of languages. - -## Overview - -Tink performs cryptographic tasks via so-called [primitives](docs/PRIMITIVES.md), -each of which is defined via a corresponding interface that specifies the -functionality of the primitive. For example, _symmetric key encryption_ is -offered via an [_AEAD-primitive_ (Authenticated Encryption with Associated -Data)](docs/PRIMITIVES.md#authenticated-encryption-with-associated-data), that -supports two operations: - -* `encrypt(plaintext, associated_data)`, which encrypts the given `plaintext` - (using `associated_data` as additional AEAD-input) and returns the resulting - ciphertext -* `decrypt(ciphertext, associated_data)`, which decrypts the given - `ciphertext` (using `associated_data` as additional AEAD-input) and returns - the resulting plaintext - -Before implementations of primitives can be used, they must be registered at -runtime with Tink, so that Tink "knows" the desired implementations. Here's how -you can register all implementations of all primitives in Tink: - -```java - import com.google.crypto.tink.config.TinkConfig; - - TinkConfig.register(); -``` - -After implementations of primitives have been registered, the basic use of Tink -proceeds in three steps: - -1. Load or generate the cryptographic key material (a `Keyset` in Tink terms). -2. Use the key material to get an instance of the chosen primitive. -3. Use that primitive to accomplish the cryptographic task. - -Here is how these steps would look like when encrypting or decrypting with an -AEAD primitive in Java: - -```java - import com.google.crypto.tink.Aead; - import com.google.crypto.tink.KeysetHandle; - import com.google.crypto.tink.aead.AeadKeyTemplates; - - // 1. Generate the key material. - KeysetHandle keysetHandle = KeysetHandle.generateNew( - AeadKeyTemplates.AES128_GCM); - - // 2. Get the primitive. - Aead aead = keysetHandle.getPrimitive(Aead.class); - - // 3. Use the primitive. - byte[] ciphertext = aead.encrypt(plaintext, associatedData); -``` - ## Current status -* The latest version is - [1.4.0](https://github.com/google/tink/releases/tag/v1.4.0), released on - 2020-07-13. -* [Java and Android](docs/JAVA-HOWTO.md), [C++](docs/CPP-HOWTO.md), - [Obj-C](docs/OBJC-HOWTO.md), [Go](docs/GOLANG-HOWTO.md), and - [Python](docs/PYTHON-HOWTO.md) are field tested and ready for production. -* Tink for JavaScript is in active development. +[Java/Android](docs/JAVA-HOWTO.md), [C++](docs/CPP-HOWTO.md), +[Obj-C](docs/OBJC-HOWTO.md), [Go](docs/GOLANG-HOWTO.md), and +[Python](docs/PYTHON-HOWTO.md) are field tested and ready for production. The +latest version is [1.5.0](https://github.com/google/tink/releases/tag/v1.5.0), +released on 2020-10-13. + +Javascript/Typescript is alpha, ready for testing. Check out +[Tink NPM 0.0.1](https://www.npmjs.com/package/tink-crypto)! We are unaware of +any problems -- in fact Tink for Javascript/Typescript has been running in +production for years at Google -- it's just that we have not finalized the +public APIs. ## Learn more @@ -124,10 +60,9 @@ AEAD primitive in Java: * [Security and Usability Design Goals](docs/SECURITY-USABILITY.md) * [Supported Crypto Primitives](docs/PRIMITIVES.md) * [Key Management](docs/KEY-MANAGEMENT.md) -* [Tinkey](docs/TINKEY.md) +* [Managing keys with Tinkey](docs/TINKEY.md) * [Known Issues](docs/KNOWN-ISSUES.md) * [Feature Roadmap](docs/ROADMAP.md) -* [Java Hacking Guide](docs/JAVA-HACKING.md) ## Community-driven ports @@ -138,7 +73,6 @@ ported it to their favorite languages! Below you can find notable ports. **WARNING** While we usually review these ports, until further notice, we do not maintain them and have no plan to support them in the foreseeable future. -* [C# (with JNI)](https://github.com/google-pay/tink-jni-examples) * [Clojure](https://github.com/perkss/tinklj) ## Contact and mailing list @@ -154,17 +88,20 @@ updates, you may want to subscribe to our Tink is maintained by (A-Z): -- Haris Andrianakis - Daniel Bleichenbacher -- Tanuj Dhir - Thai Duong - Thomas Holenstein - Stefan Kölbl - Charles Lee +- Sophie Schmieg +- Jürg Wullschleger + +Alumni + +- Haris Andrianakis +- Tanuj Dhir - Quan Nguyen - Bartosz Przydatek - Enzo Puig -- Sophie Schmieg - Veronika Slívová - Paula Vidas -- Jürg Wullschleger |