Expand description

Protocol buffer message definitions for Tink.

Almost all of the code in this crate is auto-generated (using prost) from the protocol buffer message definitions in the proto/ subdirectory. These .proto files are copies from the upstream Tink project.


pub use prost;



Manual keyset serialization implementations that map enums onto strings rather than the i32 values used by prost.

Nested message and enum types in JwtHmacKey.

Nested message and enum types in KeyData.

Nested message and enum types in Keyset.

Nested message and enum types in KeysetInfo.


key_type: type.googleapis.com/google.crypto.tink.AesCmacKey

key_type: type.googleapis.com/google.crypto.tink.AesCmacPrfKey

key_type: type.googleapis.com/google.crypto.tink.AesCtrHmacAeadKey

key_type: type.googleapis.com/google.crypto.tink.AesCtrHmacStreamingKey

key_type: type.googleapis.com/google.crypto.tink.AesCtrKey

key_type: type.googleapis.com/google.crypto.tink.AesEaxKey

only allowing tag size in bytes = 16

key_type: type.googleapis.com/google.crypto.tink.AesGcmHkdfStreamingKey

key_type: type.googleapis.com/google.crypto.tink.AesGcmKey

only allowing IV size in bytes = 12 and tag size in bytes = 16 Thus, accept no params.

key_type: type.googleapis.com/google.crypto.tink.AesGcmSivKey

The only allowed IV size is 12 bytes and tag size is 16 bytes. Thus, accept no params.

key_type: type.googleapis.com/google.crypto.tink.AesSivKey

key_type: type.googleapis.com/google.crypto.tink.ChaCha20Poly1305. This key type actually implements ChaCha20Poly1305 as described at https://tools.ietf.org/html/rfc7539#section-2.8.

Protos for Ecdsa.

key_type: type.googleapis.com/google.crypto.tink.EcdsaPrivateKey

key_type: type.googleapis.com/google.crypto.tink.EcdsaPublicKey

Parameters of AEAD DEM (Data Encapsulation Mechanism).

EciesKdfAeadPrivateKey represents HybridDecryption primitive. key_type: type.googleapis.com/google.crypto.tink.EciesAeadHkdfPrivateKey

EciesAeadHkdfPublicKey represents HybridEncryption primitive. key_type: type.googleapis.com/google.crypto.tink.EciesAeadHkdfPublicKey

Parameters of KEM (Key Encapsulation Mechanism)

key_type: type.googleapis.com/google.crypto.tink.Ed25519PrivateKey

key_type: type.googleapis.com/google.crypto.tink.Ed25519PublicKey

Represents a keyset that is encrypted with a master key.

key_type: type.googleapis.com/google.crypto.tink.HmacKey

key_type: type.googleapis.com/google.crypto.tink.HmacPrfKey

key_type: type.googleapis.com/google.crypto.tink.JwtHmacKey

The actual *Key-proto is wrapped in a KeyData message, which in addition to this serialized proto contains also type_url identifying the definition of *Key-proto (as in KeyFormat-message), and some extra metadata about the type key material.

An entry that describes a key type to be used with Tink library, specifying the corresponding primitive, key manager, and deprecation status. All fields are required.

A Tink user works usually not with single keys, but with keysets, to enable key rotation. The keys in a keyset can belong to different implementations/key types, but must all implement the same primitive. Any given keyset (and any given key) can be used for one primitive only.

Represents a “safe” Keyset that doesn’t contain any actual key material, thus can be used for logging or monitoring. Most fields are copied from Keyset.

There is no actual key material in the key.

There is no actual key material in the key.

key_type: type.googleapis.com/google.crypto.tink.PrfBasedDeriverKey

A complete configuration of Tink library: a list of key types to be available via the Registry after initialization. All fields are required.

key_type: type.googleapis.com/google.crypto.tink.RsaSsaPkcs1PrivateKey

key_type: type.googleapis.com/google.crypto.tink.RsaSsaPkcs1PublicKey

key_type: type.googleapis.com/google.crypto.tink.RsaSsaPssPrivateKey

key_type: type.googleapis.com/google.crypto.tink.RsaSsaPssPublicKey

key_type: type.googleapis.com/google.crypto.tink.XChaCha20Poly1305Key


Tink produces and accepts ciphertexts or signatures that consist of a prefix and a payload. The payload and its format is determined entirely by the primitive, but the prefix has to be one of the following 4 types: