Class ApnsVerificationKey

java.lang.Object
com.eatthepath.pushy.apns.auth.ApnsVerificationKey
All Implemented Interfaces:
Serializable, ECKey, ECPublicKey, Key, PublicKey

public class ApnsVerificationKey extends Object implements ECPublicKey

A public key used to verify authentication tokens. Signing keys are associated with a developer team (in Apple's parlance), and can be used to sign authentication tokens for any topic associated with that team.

Callers generally won't need to use this class outside of the context of integration tests. In almost all cases, callers will want to use an ApnsSigningKey to provide signing credentials to an ApnsClient.

Verification keys are immutable and thread-safe.

Since:
0.10
Author:
Jon Chambers
See Also:
  • Field Details

  • Constructor Details

    • ApnsVerificationKey

      public ApnsVerificationKey(String keyId, String teamId, ECPublicKey key) throws NoSuchAlgorithmException, InvalidKeyException
      Constructs a new verification key with the given key identifier, team identifier, and elliptic curve private key.
      Parameters:
      keyId - the ten-character, Apple-issued identifier for the key itself
      teamId - the ten-character, Apple-issued identifier for the team to which the key belongs
      key - the elliptic curve private key underpinning this signing key
      Throws:
      NoSuchAlgorithmException - if the "SHA256withECDSA" algorith is not supported by the JVM
      InvalidKeyException - if the given elliptic curve private key is invalid for any reason
  • Method Details

    • getKey

      public ECPublicKey getKey()
    • getAlgorithm

      public String getAlgorithm()
      Specified by:
      getAlgorithm in interface Key
    • getFormat

      public String getFormat()
      Specified by:
      getFormat in interface Key
    • getEncoded

      public byte[] getEncoded()
      Specified by:
      getEncoded in interface Key
    • getW

      public ECPoint getW()
      Specified by:
      getW in interface ECPublicKey
    • loadFromPkcs8File

      public static ApnsVerificationKey loadFromPkcs8File(File pkcs8File, String teamId, String keyId) throws IOException, NoSuchAlgorithmException, InvalidKeyException
      Loads a verification key from the given PKCS#8 file.
      Parameters:
      pkcs8File - the file from which to load the key
      teamId - the ten-character, Apple-issued identifier for the team to which the key belongs
      keyId - the ten-character, Apple-issued identitifier for the key itself
      Returns:
      an APNs verification key with the given key ID and associated with the given team
      Throws:
      IOException - if a key could not be loaded from the given file for any reason
      NoSuchAlgorithmException - if the JVM does not support elliptic curve keys
      InvalidKeyException - if the loaded key is invalid for any reason
    • loadFromInputStream

      public static ApnsVerificationKey loadFromInputStream(InputStream inputStream, String teamId, String keyId) throws IOException, NoSuchAlgorithmException, InvalidKeyException
      Loads a verification key from the given input stream.
      Parameters:
      inputStream - the input stream from which to load the key
      teamId - the ten-character, Apple-issued identifier for the team to which the key belongs
      keyId - the ten-character, Apple-issued identitifier for the key itself
      Returns:
      an APNs verification key with the given key ID and associated with the given team
      Throws:
      IOException - if a key could not be loaded from the given file for any reason
      NoSuchAlgorithmException - if the JVM does not support elliptic curve keys
      InvalidKeyException - if the loaded key is invalid for any reason
    • getKeyId

      public String getKeyId()
      Returns the Apple-issued identifier for this key.
      Returns:
      the Apple-issued identifier for this key
    • getTeamId

      public String getTeamId()
      Returns the Apple-issued identifier for the team that owns this key.
      Returns:
      the Apple-issued identifier for the team that owns this key
    • getParams

      public ECParameterSpec getParams()
      Specified by:
      getParams in interface ECKey