Class Key
- java.lang.Object
-
- com.google.crypto.tink.Key
-
- Direct Known Subclasses:
AeadKey,DeterministicAeadKey,HybridPrivateKey,HybridPublicKey,JwtMacKey,JwtSignaturePrivateKey,JwtSignaturePublicKey,KeyDerivationKey,LegacyProtoKey,MacKey,PrfKey,SignaturePrivateKey,SignaturePublicKey,StreamingAeadKey
@Immutable public abstract class Key extends java.lang.ObjectRepresents a cryptographic object.In Tink,
Keyobjects are objects which represent some cryptographic functions. For example, aMacKeyrepresents the two functionscomputeMacandverifyMac. The functioncomputeMacmaps a byte sequence (possibly with additional randomness) to another byte sequence, called the tag. The functionverifyMacverifies the tag. A subclassHmacKeythen contains all the information one needs to properly compute an HMAC (including e.g. the hash function and tag length used).Key objects are light weight, i.e., they should have almost no dependencies, except what is needed to represent the function. This allows key objects to be used in contexts where dependencies need to be kept at a minimum.
-
-
Constructor Summary
Constructors Constructor Description Key()
-
Method Summary
All Methods Instance Methods Abstract Methods Modifier and Type Method Description abstract booleanequalsKey(Key other)Returns true if the key is guaranteed to be equal toother.abstract java.lang.IntegergetIdRequirementOrNull()Returns null if this key has no id requirement, otherwise the required id.abstract ParametersgetParameters()Returns aParametersobject containing all the information about the key which is not randomly chosen.
-
-
-
Method Detail
-
getParameters
public abstract Parameters getParameters()
Returns aParametersobject containing all the information about the key which is not randomly chosen.Implementations need to ensure that
getParameters().hasIdRequirement()returns true if and only ifgetIdRequirementOrNullis non-null.
-
getIdRequirementOrNull
@Nullable public abstract java.lang.Integer getIdRequirementOrNull()
Returns null if this key has no id requirement, otherwise the required id.Some keys, when they are in a keyset, are required to have a certain ID to work properly. This comes from the fact that Tink in some cases prefixes ciphertexts or signatures with the string
0x01<id>, where the ID is encoded in big endian (see the documentation of the key type for details), in which case the key requires a certain ID.
-
equalsKey
public abstract boolean equalsKey(Key other)
Returns true if the key is guaranteed to be equal toother.Implementations are required to do this in constant time.
Note: this is allowed to return false even if two keys are guaranteed to represent the same function, but are represented differently. For example, a key is allowed to internally store the number of zero-bytes used as padding when a large number is represented as a byte array, and use this in the comparison.
Note: Tink
Keyobjects should typically not overridehashCode(because it could risk leaking key material). Hence, they typically also should not overrideequals.
-
-