1# Tink 2 3*A multi-language, cross-platform library that provides cryptographic APIs that 4are secure, easy to use correctly, and hard(er) to misuse. See also: 5https://developers.google.com/tink*. 6 7> **NOTE**: **Tink is moving!** 8> 9> As part of our roadmap we are splitting Tink into 10> [multiple GitHub repositories][split_repo_roadmap_url] that will be hosted at 11> [github.com/tink-crypto](https://github.com/tink-crypto) and will be 12> independently versioned. 13> 14> Roughly, we are going to create one repository per language, library extension 15> such as KMS (except Tink Python), and tools. 16> 17> A few important highlights: 18> 19> - The migration will be done gradually over the course of 2023 with a new 20> release from each of the new repositories. Releases will be announced in 21> our [mailing list][tink_mailing_list_url]. 22> - We will keep updating each implementation/tool in 23> [github.com/google/tink](https://github.com/google/tink) for a specified 24> amount of time; migrated implementations/tools will eventually stop being 25> updated on [github.com/google/tink](https://github.com/google/tink). The 26> support window depends on the specific implementation, as shown in the 27> table below. 28> - New issues and pull requests should be created in the new repos. 29> 30> Below is the list of resulting repositories, migration timeline and expected 31> end of support. 32> 33> Tink implementation/extension | New repository | Migration status | End of support in google/tink 34> ------------------------------------- | ----------------------------------------------------------------------------------------- | ------------------------------ | ----------------------------- 35> Tink Java | [tink-crypto/tink-java](https://github.com/tink-crypto/tink-java) | Complete (Q1 2023) | Q3 2023 36> Tink Java AWS KMS extension | [tink-crypto/tink-java-awskms](https://github.com/tink-crypto/tink-java-awskms) | Complete (Q1 2023) | Q3 2023 37> Tink Java Google Cloud KMS extension | [tink-crypto/tink-java-gcpkms](https://github.com/tink-crypto/tink-java-gcpkms) | Complete (Q1 2023) | Q3 2023 38> Tink Java apps extension | [tink-crypto/tink-java-apps](https://github.com/tink-crypto/tink-java-apps) | Complete (Q1 2023) | Q3 2023 39> Tink C++ | [tink-crypto/tink-cc](https://github.com/tink-crypto/tink-cc) | Complete (Q2 2023) | Q4 2023 40> Tink C++ AWS KMS extension | [tink-crypto/tink-cc-awskms](https://github.com/tink-crypto/tink-cc-awskms) | Complete (Q2 2023) | Q4 2023 41> Tink C++ Google Cloud KMS extension | [tink-crypto/tink-cc-gcpkms](https://github.com/tink-crypto/tink-cc-gcpkms) | Complete (Q2 2023) | Q4 2023 42> Tink Go | [tink-crypto/tink-go](https://github.com/tink-crypto/tink-go) | Complete (Q3 2023) | Q4 2023 43> Tink Go AWS KMS extension | [tink-crypto/tink-go-awskms](https://github.com/tink-crypto/tink-go-awskms) | Complete (Q3 2023) | Q4 2023 44> Tink Go Google Cloud KMS extension | [tink-crypto/tink-go-gcpkms](https://github.com/tink-crypto/tink-go-gcpkms) | Complete (Q3 2023) | Q4 2023 45> Tink Go HashiCorp Vault KMS extension | [tink-crypto/tink-go-hcvault](https://github.com/tink-crypto/tink-go-hcvault) | Complete (Q3 2023) | Q4 2023 46> Tink Python | [tink-crypto/tink-py](https://github.com/tink-crypto/tink-py) | In progress (Q3 2023) | TBA 47> Tink Obj-C | [tink-crypto/tink-objc](https://github.com/tink-crypto/tink-objc) | Not started (expected Q4 2023) | TBA 48> Tink Tinkey | [tink-crypto/tink-tinkey](https://github.com/tink-crypto/tink-tinkey) | Complete (Q2 2023) | Q4 2023 49> Tink cross language tests | [tink-crypto/tink-cross-lang-tests](https://github.com/tink-crypto/tink-cross-lang-tests) | Not started (expected Q4 2023) | TBA 50 51> **NOTE**: **We are removing Tink for JavaScript/TypeScript** 52> 53> We are removing the Tink JavaScript/TypeScript library from our current Github 54> repository (master branch). As part of our effort to migrate Tink to 55> https://github.com/tink-crypto, we will not release an individual 56> JavaScript/Typescript repository. Furthermore, the JavaScript/TypeScript 57> [directory](https://github.com/google/tink/tree/master/javascript) in the 58> current release branch (v1.7.0) will no longer be actively supported. 59> 60> _We aim to remove the JS/TS directory from the current Tink Github repository 61> (master branch) on **June 22, 2023**. We will also deprecate the Tink npm 62> package on this date._ 63> 64> See [this](https://github.com/google/tink/issues/689) tracking issue for more 65> details. 66> 67> Feel free to use our [mailing list][tink_mailing_list_url] to raise any 68> questions, issues or concerns. 69 70[split_repo_roadmap_url]: https://developers.google.com/tink/roadmap#splitting_tink_into_multiple_github_repositories 71[tink_mailing_list_url]: https://groups.google.com/forum/#!forum/tink-users 72 73## Index 74 751. [Introduction](#introduction) 762. [Current status](#current-status) 773. [Getting started](#getting-started) 784. [Learn more](#learn-more) 795. [Contact and mailing list](#contact-and-mailing-list) 806. [Maintainers](#maintainers) 81 82## Introduction 83 84Using crypto in your application [shouldn't have to][devs_are_users_too_slides] 85feel like juggling chainsaws in the dark. Tink is a crypto library written by a 86group of cryptographers and security engineers at Google. It was born out of our 87extensive experience working with Google's product teams, 88[fixing weaknesses in implementations](https://github.com/google/wycheproof), 89and providing simple APIs that can be used safely without needing a crypto 90background. 91 92Tink provides secure APIs that are easy to use correctly and hard(er) to misuse. 93It reduces common crypto pitfalls with user-centered design, careful 94implementation and code reviews, and extensive testing. At Google, Tink is one 95of the standard crypto libraries, and has been deployed in hundreds of products 96and systems. 97 98To get a quick overview of Tink design please take a look at 99[slides][tink_talk_slides] from [a talk about Tink][tink_talk_recording] 100presented at [Real World Crypto 2019](https://rwc.iacr.org/2019/). 101 102[devs_are_users_too_slides]: https://www.usenix.org/sites/default/files/conference/protected-files/hotsec15_slides_green.pdf 103[tink_talk_slides]: docs/Tink-a_cryptographic_library--RealWorldCrypto2019.pdf 104[tink_talk_recording]: https://www.youtube.com/watch?v=pqev9r3rUJs&t=9665 105 106## Current status 107 108[Java/Android](docs/JAVA-HOWTO.md), [C++](docs/CPP-HOWTO.md), 109[Obj-C](docs/OBJC-HOWTO.md), [Go](docs/GOLANG-HOWTO.md), and 110[Python](docs/PYTHON-HOWTO.md) are field tested and ready for production. The 111latest version is [1.7.0](https://github.com/google/tink/releases/tag/v1.7.0), 112released on 2022-08-09. 113 114Javascript/Typescript is in an alpha state and should only be used for testing. 115Please see the intent to remove statement 116[here](https://github.com/google/tink/issues/689). 117 118**`Ubuntu`** | **`macOS`** 119----------------------------------- | --------------------------------- 120[![Kokoro Ubuntu][ubuntu_badge]](#) | [![Kokoro macOS][macos_badge]](#) 121 122[ubuntu_badge]: https://storage.googleapis.com/tink-kokoro-build-badges/tink-ubuntu.png 123[macos_badge]: https://storage.googleapis.com/tink-kokoro-build-badges/tink-macos.png 124 125## Getting started 126 127Documentation for the project is located at https://developers.google.com/tink. 128Currently, it details a variety of common usage scenarios and covers the Java 129and Python implementations. The site will be populated with more content over 130time. 131 132Alternatively, you can look at all of the [`examples`] which demonstrate 133performing simple tasks using Tink in a variety of languages. 134 135[`examples`]: https://github.com/google/tink/tree/master/examples 136 137* Python 138 139```sh 140pip3 install tink 141``` 142 143* Golang 144 145```sh 146go get github.com/google/tink/go/... 147``` 148 149* Java 150 151```xml 152<dependency> 153 <groupId>com.google.crypto.tink</groupId> 154 <artifactId>tink</artifactId> 155 <version>1.7.0</version> 156</dependency> 157``` 158 159* Android 160 161``` 162dependencies { 163 implementation 'com.google.crypto.tink:tink-android:1.7.0' 164} 165``` 166 167* Objective-C/iOS 168 169```sh 170cd /path/to/your/Xcode project/ 171pod init 172pod 'Tink', '1.7.0' 173pod install 174``` 175 176## Learn more 177 178* [Java HOW-TO](docs/JAVA-HOWTO.md) 179* [C++ HOW-TO](docs/CPP-HOWTO.md) 180* [Obj-C HOW-TO](docs/OBJC-HOWTO.md) 181* [Go HOW-TO](docs/GOLANG-HOWTO.md) 182* [Python HOW-TO](docs/PYTHON-HOWTO.md) 183* [Security and Usability Design Goals](docs/SECURITY-USABILITY.md) 184* [Supported Crypto Primitives](docs/PRIMITIVES.md) 185* [Key Management](docs/KEY-MANAGEMENT.md) 186* [Managing keys with Tinkey](docs/TINKEY.md) 187* [Known Issues](docs/KNOWN-ISSUES.md) 188 189## Community-driven ports 190 191Out of the box Tink supports a wide range of languages, but it still doesn't 192support every language. Fortunately, some users like Tink so much that they've 193ported it to their favorite languages! Below you can find notable ports. 194 195**WARNING** While we usually review these ports, until further notice, we do not 196maintain them and have no plan to support them in the foreseeable future. 197 198* [Clojure](https://github.com/perkss/tinklj) 199 200## Contact and mailing list 201 202If you want to contribute, please read [CONTRIBUTING](docs/CONTRIBUTING.md) and 203send us pull requests. You can also report bugs or file feature requests. 204 205If you'd like to talk to the developers or get notified about major product 206updates, you may want to subscribe to our [mailing list][tink_mailing_list_url]. 207 208## Maintainers 209 210Tink is maintained by (A-Z): 211 212- Moreno Ambrosin 213- Taymon Beal 214- Daniel Bleichenbacher 215- William Conner 216- Thai Duong 217- Thomas Holenstein 218- Stefan Kölbl 219- Charles Lee 220- Cindy Lin 221- Fernando Lobato Meeser 222- Atul Luykx 223- Rafael Misoczki 224- Sophie Schmieg 225- Laurent Simon 226- Elizaveta Tretiakova 227- Jürg Wullschleger 228 229Alumni: 230 231- Haris Andrianakis 232- Tanuj Dhir 233- Quan Nguyen 234- Bartosz Przydatek 235- Enzo Puig 236- Veronika Slívová 237- Paula Vidas 238- Cathie Yun 239- Federico Zalcberg 240