Class EciesPublicKey


  • @Immutable
    public final class EciesPublicKey
    extends HybridPublicKey
    Represents the encryption function for an ECIES hybrid encryption primitive.
    • 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 key
        publicPointBytes - public point coordinates in bytes.
        idRequirement - key id requirement, which must be null for NO_PREFIX variant 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 key
        publicPoint - public point as a ECPoint.
        idRequirement - key id requirement, which must be null for NO_PREFIX variant 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.

      • getParameters

        public EciesParameters getParameters()
        Description copied from class: Key
        Returns a Parameters object containing all the information about the key which is not randomly chosen.

        Implementations need to ensure that getParameters().hasIdRequirement() returns true if and only if getIdRequirementOrNull is non-null.

        Specified by:
        getParameters in class HybridPublicKey
      • getIdRequirementOrNull

        @Nullable
        public java.lang.Integer getIdRequirementOrNull()
        Description copied from class: Key
        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.

        Specified by:
        getIdRequirementOrNull in class Key
      • equalsKey

        public boolean equalsKey​(Key o)
        Description copied from class: Key
        Returns true if the key is guaranteed to be equal to other.

        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 Key objects should typically not override hashCode (because it could risk leaking key material). Hence, they typically also should not override equals.

        Specified by:
        equalsKey in class Key