Newer
Older
This doc lists known issues in Tink. Please report new issues by opening new
tickets or emailing the maintainers at `tink-users@googlegroups.com`.
## Java
* Tink supports Java 7 or newer. Please file a ticket if you want to support
Java 6.
* Tink is built on top of Java security providers, but, via [Project
Wycheproof](https://github.com/google/wycheproof), we found many security
issues in popular providers. Tink provides countermeasures for most
problems, and we've also helped upstream fix many issues. Still, there are
some issues in old providers that we cannot fix. We recommend use Tink with
the latest version of Conscrypt, Oracle JDK, OpenJDK or Bouncy Castle. If
you cannot use the latest version, you might want to avoid using ECDSA
(alternative: ED21559) or AES-GCM (alternatives: AES-EAX or
AES-CTR-HMAC-AEAD).
## Android
* The minimum API level that Tink supports is 19 (Android KitKat). This covers
more than 90% of all Android phones. Tink hasn't been tested on older
versions. It might or might not work. Drop us a line if you really need to
support ancient Android phones.
* On Android Marshmallow (API level 23) or older, the
`newSeekableDecryptingChannel` method in implementations of `StreamingAead`
doesn't work. It depends on
[SeekableByteChannel](https://developer.android.com/reference/java/nio/channels/SeekableByteChannel.html),
which is only available on API level 24 or newer. Users should use
`newEncryptingStream` instead.
* On Android Lollipop (API level 21) or older, `AndroidKeysetManager` does not
support wrapping keysets with Android Keystore, but it'd store keysets in
cleartext in private preference. This is secure enough for most
applications.
* On Android KitKat (API level 19) without [Google Play
Services](https://developers.google.com/android/guides/overview), `AES-GCM`
does not work properly because KitKat uses Bouncy Castle 1.48 which doesn't
support updateAAD. If Google Play Services is present, `AES-GCM` should work
well. If you want to support all Android versions, without depending on
Google Play Services, please use `CHACHA20-POLY1305`, `AES-EAX`, or
`AES-CTR-HMAC-AEAD`.
## Signature malleability
* ECDSA signatures are malleable. You probably can ignore this issue, unless
you're working on Bitcoin or cryptocurrencies and have to worry about
[transaction
malleability](https://en.bitcoin.it/wiki/Transaction_malleability). In that
case you want to use ED25519 signatures which are non-malleable.