Class EciesPublicKey
- java.lang.Object
-
- com.google.crypto.tink.Key
-
- com.google.crypto.tink.hybrid.HybridPublicKey
-
- com.google.crypto.tink.hybrid.EciesPublicKey
-
@Immutable public final class EciesPublicKey extends HybridPublicKey
Represents the encryption function for an ECIES hybrid encryption primitive.
-
-
Method Summary
All Methods Static Methods Instance Methods Concrete Methods Modifier and Type Method Description static EciesPublicKeycreateForCurveX25519(EciesParameters parameters, Bytes publicPointBytes, java.lang.Integer idRequirement)Creates a new ECIES public key using Curve25519.static EciesPublicKeycreateForNistCurve(EciesParameters parameters, java.security.spec.ECPoint publicPoint, java.lang.Integer idRequirement)Creates a new ECIES public key using a NIST Curve.booleanequalsKey(Key o)Returns true if the key is guaranteed to be equal toother.java.lang.IntegergetIdRequirementOrNull()Returns null if this key has no id requirement, otherwise the required id.java.security.spec.ECPointgetNistCurvePoint()Returns the underlying public point if the curve is a NIST curve.BytesgetOutputPrefix()Returns aBytesinstance, which is prefixed to every ciphertext.EciesParametersgetParameters()Returns aParametersobject containing all the information about the key which is not randomly chosen.BytesgetX25519CurvePointBytes()Returns the underlying public point as EC Point in case the curve is a NIST curve.
-
-
-
Method Detail
-
createForCurveX25519
public static EciesPublicKey createForCurveX25519(EciesParameters parameters, Bytes publicPointBytes, @Nullable java.lang.Integer idRequirement) throws java.security.GeneralSecurityException
Creates a new ECIES public key using Curve25519.- Parameters:
parameters- ECIES parameters for the public keypublicPointBytes- public point coordinates in bytes.idRequirement- key id requirement, which must be null forNO_PREFIXvariant and non-null for all other variants- Throws:
java.security.GeneralSecurityException
-
createForNistCurve
public static EciesPublicKey createForNistCurve(EciesParameters parameters, java.security.spec.ECPoint publicPoint, @Nullable java.lang.Integer idRequirement) throws java.security.GeneralSecurityException
Creates a new ECIES public key using a NIST Curve.- Parameters:
parameters- ECIES parameters for the public keypublicPoint- public point as aECPoint.idRequirement- key id requirement, which must be null forNO_PREFIXvariant and non-null for all other variants- Throws:
java.security.GeneralSecurityException
-
getNistCurvePoint
@Nullable public java.security.spec.ECPoint getNistCurvePoint()
Returns the underlying public point if the curve is a NIST curve.Returns null if the curve used for this key is not a NIST curve.
-
getX25519CurvePointBytes
@Nullable public Bytes getX25519CurvePointBytes()
Returns the underlying public point as EC Point in case the curve is a NIST curve.Returns null for X25519 curves.
-
getOutputPrefix
public Bytes getOutputPrefix()
Description copied from class:HybridPublicKeyReturns aBytesinstance, which is prefixed to every ciphertext.- Specified by:
getOutputPrefixin classHybridPublicKey
-
getParameters
public EciesParameters getParameters()
Description copied from class:KeyReturns 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.- Specified by:
getParametersin classHybridPublicKey
-
getIdRequirementOrNull
@Nullable public java.lang.Integer getIdRequirementOrNull()
Description copied from class:KeyReturns 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.- Specified by:
getIdRequirementOrNullin classKey
-
equalsKey
public boolean equalsKey(Key o)
Description copied from class:KeyReturns 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.
-
-